====== MATC Examples ====== Here some hints on how to deploy Elmer's internal scripting language MATC are shown. For a deeper introduction to MATC, see the [[ftp://ftp.funet.fi/index/elmer/doc/MATCManual.pdf|MATC manual]]. ===== General structure of a MATC function ===== A MATC function can be used if there is the need for a more complex syntax (like if-cases) that would render an in-line MATC directive too complicated. Functions are declared outside any section in the SIF with the general syntax: $ function name(argument){\ contents of function;\ _name = result;\ } The syntax is very close to C. The argument can also be an array of variables. The call within, for instance, a boundary condition section in the SIF then would be: DependentVariableName = Variable FirstDependency, SecondDependency Real MATC "name(tx)" One can also pass a MATC constant, which is defined outside any section block in the SIF by the syntax "$ RHO = 910.0" to the function using the ''import'' argument: $ RHO = 910.0 $ function overburden(depth) import RHO {\ _overburden = RHO * depth * 9.81;\ } ===== Passing time or time step size to a function ===== Time as well as time step size are both accessible as variables in Elmer. Dependency of a variable on these could look like DependentVariable = Variable Time, Timestep Size Real ... }