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

Classical setting

Example:
KOP(1) = LIQUID LAGRANGE V:IMPLICIT v-- TURBULENCE:k-epsilon
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__ .
List of members:
Solvers Select the solver base on a physical model
MotionOfPointcloud Movement of point cloud
TimeIntegration Order of time integration
IntegrationType Numerical Scheme used for time integration
TurbulenceModel Selection of turbulence model