KindOfProblem
Solver Selection for a simulation chamber
For each simulation
CHAMBER the
KindOfProblem (or
KOP) selects the numerical solver to be used for numerical integration.
All parameters need to be specified per chamber (i.e. per flow phase).
The general form of the statement is
Example:
This selects:
-
- the LIQUID solver
- applies Lagrangian movement of the point cloud and
- solves the equations implicitly using the segregated v-- solver.
- Additionally, the k-epsilon turbulence model is turned on, see KepsilonAlgorithm.
Except for the turbulence these are the default parameters which will be assumed if one parameter is not specified. The order of the parameters is not relevant.
Advanced setting
If an integer is provided on the right hand side, then on can determine for example time dependent KOP-definitions, such as
begin_alias{}
"KOP_LAG" = " LIQUID LAGRANGE V:IMPLICIT v-- TURBULENCE:k-epsilon "
"KOP_EUL" = " LIQUID EULERIMPL V:IMPLICIT v-- TURBULENCE:k-epsilon "
end_alias
# after 1 second, switch from EULER to LAGRANGE
KOP(1) = [ if( real(
%RealTimeSimulation%) < 1 ) :: indexA('KOP_EUL') else indexA('KOP_EUL') endif ]
The number on the right hand side determines the alias index to be used as KOP .
The advantage is, that, on the right hand side, one can use all any valid
RightHandSideExpression in order to define the alias index.
Another option is to use re-interpretable strings. The have to be put inbetween quotes in order to keep the original string (avoid an immediate interpretation suring startup)
begin_alias{}
"KOP___1___" = " LIQUID EULERIMPL V:IMPLICIT v-- TURBULENCE:k-epsilon "
"KOP___2___" = " LIQUID LAGRANGE V:IMPLICIT v-- TURBULENCE:k-epsilon "
end_alias
# first use KOP_1, after 1 second, choose KOP_2
KOP(1) = " &KOP___@[if( real(%RealTimeSimulation%) < 1 ) :: 1 else :: 2 endif]@___& "
# of course, that is MESHFREE hard core programming
Hint: Remember, that the construct @[...]@ allows the evaluation of equations in strings, see
Variables
Another option, that results in the same thing, would be (another hard core programming):
KOP(1) = >> @alias( @[ if( real(
%RealTimeSimulation%) < 1 ) :: indexA('KOP___1___') else :: indexA('KOP___2___') endif ]@ )@ <<
Hint: Remember, that the construct @alias(index)@ provides the alias name of the alias definition with the integer 'index', see
Variables and see
indexA() .
Hint: Be aware, that >> ... << means a string, that is not processed/parsed during read-in. It can be parsed only during execution, see
__GeneralRemarks__ .