FAQ

overview of frequently asked questions and hints for solution

Short URL to this page: https://meshfree.pages.fraunhofer.de/docu/faq

General

Why are there two types of InputFiles?
The split into the two types of input files, i.e. USER_common_variables and common_variables, is based on the idea that the definition of the physical model (geometry, boundary conditions, material parameters, etc) should be decoupled from the specification of numerical parameters that are used mainly for development and debugging.

Especially for first-time users, USER_common_variables should be the main focus.
How can I access point cloud quantities?
These can be accessed and used, e.g. in equations, with the Y-syntax and the use of the desired index variable, cf. __Indices__. See Variables for an example.
What happens when I call an equation inside an equation?
Starting from the topmost level in the hierarchy, the evaluation of Equations is executed. The location, from which an equation is called, determines if the equation is evaluated with respect to the point cloud, the MONITORPOINTS, the boundary elements etc.
# level 0 SAVE_ITEM = ( %SAVE_scalar%, equn{$EQ_angle$}, "angle" ) # level 1 begin_equation{$EQ_angle$} atan( equn($EQ_vn$)/equn(EQ_vt) )*180.0/3.141592653589793 end_equation # level 2 begin_equation{$EQ_vn$} abs( equn($vx$)*Y%ind_n(1)% + equn($vy$)*Y%ind_n(2)% + equn($vz$)*Y%ind_n(3)% ) end_equation # level 2 begin_equation{$EQ_vt$} sqrt( equn($vt_x$)^2 + equn($vt_y$)^2 + equn($vt_z$)^2 ) end_equation ...
In the above example, in level 0 the equation is called in a SAVE_ITEM which triggers the evaluation with respect to the point cloud. From there, the successive levels are run through. It is important that all involved levels refer to point cloud quantities in this example.
Which settings are required for the simulation of free surfaces?
  • Switch on the detection of free surfaces by setting the parameter compute_FS to 'YES' for the corresponding chamber.
  • Switch on the additional free surface check by setting the parameter ORGANIZE_CheckPointsAtFS_PerformPreCheck adequately, if the free surface is not present at the start of the simulation and develops at a later time.
  • Set free surface boundary conditions for the relevant boundary geometry as well as for the default free surface with index 0, e.g.
    BC_v($BCfree$) = (%BND_free%, 0, 0, 0, 0.3) BC_p($BCfree$) = (%BND_free%, p0_hyd) BCON($BCfree$,%ind_p_dyn%) = (%BND_free%, p0_dyn) BC_v(0) = (%BND_free%, 0, 0, 0, 0.3) BC_p(0) = (%BND_free%, p0_hyd) BCON(0,%ind_p_dyn%) = (%BND_free%, p0_dyn)

Debugging & Co.

What bracketing rules should be followed in USER_common_variables?
What are the rules regarding commas and spaces in USER_common_variables?
A comma has to be used as delimiter for multiple arguments on the right hand side (RHS) and left hand side (LHS) in assignments (cf. __GeneralRemarks__), e.g.
BCON($BCindex$,%ind_p_dyn%) = ( %BND_DIRICH%, Value )

Spaces are allowed in most places except
  • on the right hand side of an alias defined in a ConstructClause when it is referenced in the first column of Curves, e.g.
    begin_construct{} "T_Start" = "&T_1&+&T_2&" "T_End" = "&T_1&+&T_2&+&T_3&" end_construct begin_curve{$CV_rotate$} 0.0 0.0 &T_Start& 0.0 &T_Start& equn{$EQ_RotationVelocity$} &T_End& equn{$EQ_RotationVelocity$} &T_End& 0.0 1000.0 0.0 end_curve
A simulation crashes while reading USER_common_variables without any meaningful error message. How can I still find out which line in the input file is the problematic one?
Add the parameter CONTROL_writeUcvLines with the desired value to common_variables to write all lines read from USER_common_variables and possibly stop after each completed entity.
How can I interrupt the initial filling process of the point cloud and visualize the intermediate status?
The number of filling iterations can be restricted by setting the parameters SimCut and SimCutBoundary. This can help to detect incorrect orientations of parts of a geometry (boundary elements) in addition to checking the normals visually. The value of SimCut can also be overwritten with the command line parameter --model-check or -mc, see ModelCheck.

Geometry

How can I check the movement of my geometry (boundary elements) without simulating the point cloud?
This can be achieved by switching on the parameter CONTROL_StopAfterReadingGeometry, see there for details. The value of CONTROL_StopAfterReadingGeometry can also be overwritten with the command line parameter --model-check or -mc, see ModelCheck.
How can I check the normals of the geometry (boundary elements)?
Adapt the MainFormat and the FourFormatLetters in the SAVE_format and, optionally, stop the simulation after reading the geometry. Saving of the normals is only possible for the EnSight6 binary format.
SAVE_format(1) = 'ENSIGHT6 BINARY NN--' CONTROL_StopAfterReadingGeometry = 1 # comment if the simulation should run until the specified end time
The value of CONTROL_StopAfterReadingGeometry can also be overwritten with the command line parameter --model-check or -mc, see ModelCheck.
What is the difference between the used IDENT identifier and the specified BoundaryConditions for a geometry part?
The IDENT identifier that has to be specified for AliasForGeometryItems only influences the numerical point cloud organization. It does not define a physical boundary condition. These have to be specified separately for each physical quantity, see BoundaryConditions for details.

Saving and Postprocessing

Which quantities should be saved at minimum?
## general/organizational quantities SAVE_ITEM = ( %SAVE_scalar%, [Y%ind_kob%], "KOB") # kind of boundary: enables filtering of interior, free surface, wall points etc SAVE_ITEM = ( %SAVE_scalar%, [Y%ind_h%], "SmoothingLength") # smoothing length/interaction radius of point cloud SAVE_ITEM = ( %SAVE_scalar%, [Y%ind_proc%], "MPIprocess") # domain decomposition by MPI
## quantities for LIQUID solver SAVE_ITEM = ( %SAVE_vector%, [Y%ind_v(1)%], [Y%ind_v(2)%], [Y%ind_v(3)%], "Velocity") # velocity SAVE_ITEM = ( %SAVE_scalar%, [Y%ind_p%], "HydrostaticPressure") # hydrostatic pressure SAVE_ITEM = ( %SAVE_scalar%, [Y%ind_p_dyn%], "DynamicPressure") # dynamic pressure SAVE_ITEM = ( %SAVE_scalar%, [Y%ind_T%], "Temperature") # temperature (if computation is switched on) SAVE_ITEM = ( %SAVE_scalar%, [Y%ind_k%], "Turbulent_k") # turbulent kinetic energy (if computation is switched on) SAVE_ITEM = ( %SAVE_scalar%, [Y%ind_eps%], "Turbulent_eps") # turbulent dissipation (if computation is switched on)
## quantities for DROPLETPHASE solver SAVE_ITEM = ( %SAVE_vector%, [Y%ind_v(1)%], [Y%ind_v(2)%], [Y%ind_v(3)%], "Velocity") # velocity SAVE_ITEM = ( %SAVE_scalar%, [Y%ind_d30%], "d30") # droplet diameter
What are the recommendations regarding the choice of the SAVE_path?
Please make sure that you have write access to the specified SAVE_path and that there is enough disk space available.

Furthermore, clarity for later post-processing can be increased if additional information is integrated into the SAVE_path, such as the employed MESHFREE version, the date, specific parameters of the simulation etc. See Variables for the options concerning system variables.

In the following example, the MESHFREE version number as well as the specified value of the alias "run" is automatically incorporated in the SAVE_path.
SAVE_path = 'results___version=@VERSION@___run=&run&___' begin_alias{} "run" = "1" end_alias begin_selection{"run"} case{"1"} ... case{"2"} ... end_selection
How can simulation quantities be evaluated on measurement surfaces (e.g. planes) if the point cloud is fixed by EULER or EULERIMPL as MotionOfPointcloud?
In this case, an INTEGRATION with %INTEGRATION_FLUX% or the like for an %IDENT_BlindAndEmpty% boundary is not applicable since this approach necessarily requires the movement of the point cloud.

Instead, you have to work with a %IDENT_void% boundary. For this, the usual INTEGRATION statements can then be used, e.g. %AVERAGE_BND% to determine an average value on the measurement surface.

Efficiency

What is the recommended relation between MESHFREE points and number of MPI processes?
According to experience, good performance is achieved by choosing the number of MPI processes such that approximately 10000 MESHFREE points per MPI process exist.
How can a MESHFREE simulation run be terminated automatically if a specified criterion is satisfied?
This can be realized by the definition of an appropriate EVENT. For example, terminate the simulation if the time step size becomes too small.
EVENT($EV_Stop$) = ( equn{$EQ_stop$}, %EVENT_StopFPM%, $MSG_stop$ ) begin_equation{$EQ_stop$} if ( Y%ind_dt% < 1e-8 ) :: 1.0 else :: 0.0 endif end_equation EventMessage($MSG_stop$) = "MESHFREE was stopped: time step size falls below given minimum."
Can changes in the InputFiles be included in an already active MESHFREE simulation run?
This can be realized by the ComputationalSteering options reread_Ucv and reread_cv, see there for details.