Variables

variables used in the USER_common_variables input file

There are currently four types of variables that the user may use in the USER_common_variables file:
  • &AliasVariableName& references an alias variable, to be defined in the alias section (pure string replacement definitions), see ALIAS and ConstructClause
  • $AcronymVariableName$ refers to an acronym; MESHFREE assigns consecutive integer values to the $...$-variables given by the user
  • %MFvariableName% refers to a variable predefined by MESHFREE, also representing integer values; among others, the index variables (see __Indices__) and the constant (see __Constants__) are of this type. The user cannot define these variables, with the exception of UserDefinedIndices.
  • @SYSTEMvariable@ contain system or software information
  • ScalarVariable scalar variable, that can be evaluated in every timestep, see valA().

Variable Types

Alias Variable: &AliasVariableName&

Alias variables are defined by the user in the alias section of the USER_common_variables file. The values of these variables are strings. At any position where the variable is referenced by &AliasVariableName&, the string is placed. Example 1: Define the scaler alias variable v_inflow to be "10.0".
begin_alias{"ModelParameter"} #giving an intuitive name - no further meaning "v_inflow" = "10.0" #defines the alias variable begin_alias{"ModelParameter"}
This definition can be used, for example in a boundary condition:
BC_v($inflow$) = (%BND_inflow%, &v_inflow&)
&v_inflow& is then string-replaced with the definition "10.0" and becomes:
BC_v($inflow$) = (%BND_inflow%, 10.0 )
Example 2: Define the vectorial alias variable Class and use it to define different geometry parts (see AliasForGeometryItems).
begin_alias{} "Class" = "inflow, wall, outflow" # definition of geometry class ... "&Class(1)&" = " BC$BC_in$ ..." # definition of inflow alias "&Class(2)&" = " BC$BC_wall$ ..." # definition of wall alias "&Class(3)&" = " BC$BC_out$ ..." # definition of outflow alias end_alias
Good to know:
  • The alias definition plays a central role in connecting the definition of model parameters to boundary elements: see AliasForGeometryItems.
  • The alias definition can contain nested statements, in particular, an alias definition can contain a reference to another alias variable. It is important that these definitions can be uniquely resolved.
  • Execution control for statements in the USER_common_variables can be done based on the value of an alias variable, see Selection.
  • The usage of wildcards in the name of the alias variable is also possible in AliasForGeometryItems.

Acronym Variable: $AcronymVariableName$

Acronym variables (or soft variables) are defined by the user by using them in a left hand side expression. They can then be referred to by $AcronymVariableName$. Internally, in MESHFREE they are handled as integers, but for the user their actual value is not of importance as these variables are used as labels. Example 3: Defines an integration to determine the total mass. The soft variable $MassTotal$ is also automatically initialized then.
INTEGRATION($MassTotal$) = (%INTEGRATION_INT%, [Y%ind_r%], $MatUSER$, %INTEGRATION_Header%, "Total Mass")
If one now wants to use the integration in another place, e.g. an equation, then it can be referred to using the soft variable $MassTotal$:
... [ ... integ($MassTotal$) ... ] ...
Attention: An acronym can only be with one type of statement, e.g. equations, curve, boundary condition or material. The following definition is not allowed:
begin_equation{$ACRONYM$} # having an equation and ... end_equation BC_p($ACRONYM$) = ... # a boundary condition with the same acronym will conflict!

MESHFREE Internal Variable: %MFvariableName%

MESHFREE internal variables are predefined in MESHFREE, also internally stored as integer values. These are Example 4: In an equation accessing the attribute density of a point in an equation, by using the index %ind_r% :
... [ ... Y%ind_r% ... ] ...

System Variable: @SYSTEMvariable@

A system variable contains system or software information. Currently, the following features are implemented:
  • @VERSION@ - returns a string with the version number of MESHFREE
  • @DATE@, @DATEb@, @DATE.@ - returns a string with the date at MESHFREE startup in the format yyyy-mm-dd, yyyymmdd (ISO 8601 extended and basic calendar date formats), or yyyy.mm.dd, respectively.
  • @TIME@, @TIMEb@, @TIME.@ - returns a string with the time at MESHFREE startup in the format hh:mm:ss, hhmmss (ISO 8601 extended and basic time formats), or hh.mm.ss, respectively.
  • @TIMESTAMP@ - returns a string with the date and time at MESHFREE startup in the format yyyymmddThhmmss, for example 20210721T133005 (ISO 8601 basic format)
  • @CLPARAM@ - returns the string passed via the CommandLine option --clparam or -clp
  • @ENV(NameOfEnvironmentVariable)@ - returns the value of the environment variable with the given name
  • @nMPI@ - returns the number of MPI-proceses the simulation is launched with
  • @CV(cv_variable)@ - returns the status of a variable from common_variables
  • @[equation_strng]@ - evaluates the given equation, see Equations
  • @"AliasVariable"@ - returns the number of elements in an alias variable
    begin_alias{} "MyVariable" = "M,E,S,H,F,R,E,E" end_alias
    @"MyVariable"@ would deliver the number of 8
  • @alias(i)@ - delivers the alias variable name of the i-th alias enclosed in &. If in the example above, "MyVariable" would be the first alias, then "@alias(1)@" would represent "&MyVariable&" .
Example 5: if USER is the environment variable for the user, then one could incorporate system information in the following way in the save path SAVE_path in the following way:
SAVE_path = 'results___version=@VERSION@___user=@ENV(USER)@___MPI=@[real(%MPI_NbProcesses%)]@_OMP= @[real(%OMP_NbProcesses%)]@___' # save path containing the user name, # the MESHFREE-version # the number of MPI and OMP processes

Scalar Variables

see valA().

Warnings

In the file 'warnings___SIM_ID_IDOfRun.log' (where IDOfRun = iFPM_process_ID), all warnings are collected (with ascending numbering). In addition, the MESHFREE version used and the number of MPI processes are documented at the beginning of this file.

Logging

At the startup of MESHFREE, the log folder 'log___SIM_ID_IDOfRun' (where IDOfRun = iFPM_process_ID) is created and information on the values assigned to the variables is stored in the following files therein:
File Contents
Acronyms.log Contains the integer values for user-defined acronyms, ordered by usage: BCON, MOVE, MAT, SMOO (SmoothingLength), POSTBND (PostProcessing), ACTIVE, TOUCH, EQUN and CURV.
Aliases.log Contains the alias section. As nested definitions of alias section are also possible, this file contains the completely resolved definitions.
Variables.log Contains all identifiers of the form %...% (indices, constants and others). Can be used to decode the integer value Y%ind_kob% to a boundary flag like %IDENT_none% (interior point), %IDENT_wall% (wall), %IDENT_free% (free surface), ...
Indices.log Contains all indices that can be used to reference entries of the Y-array (point cloud). Some of these indices might be sharing an integer value if they belong to different solvers (due to memory reasons).
GeometryNames.log Contains the geometry names, the corresponding alias integer values, and associated integer values (e.g. for MOVE).
MPI_config Contains information on the MPI configuration of the simulation: MPI process id, number of MPI processes, MPI communicatior, shared MPI process id, number of shared MPI processes, shared MPI communicator
RIGIDBODY_interaction.log Contains information on the RIGIDBODY interaction.
Version.log Contains the MESHFREE version number used in the simulation run.