Symbolic MPM records¶
The symbolic mpm module lets a problem be defined by writing its weak form
in terms of variables, terms and integrals. The counts of these records
are declared by nvariables, nterms and nintegrals in
the analysis record, and the records themselves follow the export module
records; see Analysis record and Stationary symbolic MPM problem.
The three record kinds build on one another:
a Variable is an unknown field, or the test (weighting) function of one;
a Term is an integrand, written in terms of a variable and a test variable;
an Integral integrates one term over a set of elements.
Variable records¶
Describes a variable, that is a field appearing in the weak form.
Record syntax
Variable name (s)
interpolation (s) type (et)
quantity (et) size (in)
dofs (ia) [dualto (s)]
Parameters
name(s)Name of the variable. Terms refer to variables by this name.
interpolation(s)Interpolation of the variable. The supported values are:
feiconstConstant interpolation.
feilinLinear interpolation.
feiquadQuadratic interpolation. It needs the inner nodes of the cells, which can be given in the cell records or are generated; see Cell records.
fei1dlin_x,fei1dlin_y,fei1dlin_zLinear interpolation on a 1D cell aligned with the given global axis.
type(et)Rank of the variable:
scalar(0) orvector(1). Either the name or the number may be written.quantity(et)What the variable physically is, as a
FieldTypevalue. Either the name or the number may be written, and theFT_prefix may be dropped — soquantity "Temperature"andquantity 5are the same thing. A name has to be quoted: names are matched case-sensitively and the parser lower-cases everything outside double quotes. The values are defined insrc/core/field.h:Value
Name
Meaning
0
FT_UnknownUnspecified
1
FT_VelocityVelocity field
2
FT_DisplacementsDisplacement field
3
FT_VelocityPressureCombined velocity and pressure field
4
FT_PressurePressure field
5
FT_TemperatureTemperature field
6
FT_HumidityConcentrationHumidity or concentration field
7
FT_TransportProblemUnknownsGeneric transport problem unknowns
8
FT_TemperatureAmbientAmbient temperature
9
FT_EigenStrainEigenstrain field
10
FT_VOFVolume of fluid
11
FT_Pressure2Pressure of the second phase
12
FT_Concentration1Mass concentration of the first constituent
13
FT_Concentration2Mass concentration of the second constituent
size(in)Size, that is the dimension, of the variable.
dofs(ia)Physical meaning of the variable’s DOFs, as
DofIDItemvalues; see the table under Dof manager records. The size of the array should equalsize.- [
dualto(s)] Name of the unknown field that this variable is the test (weighting) function of. This is the only thing that distinguishes an unknown from its weighting function: the two are declared as two Variable records that differ by name, and they may even carry different interpolations, which is what a non-symmetric Petrov-Galerkin formulation looks like.
Declaring it matters because assembly has to read the nodal unknowns through the unknown field’s interpolation rather than through its weighting function’s.
Example
Variable name "u" interpolation "feilin" type 1 quantity "Temperature" \
size 1 dofs 1 10
Variable name "w" interpolation "feilin" type 1 quantity "Temperature" \
size 1 dofs 1 10 dualto "u"
Here u is the temperature unknown and w its test function. See
tests/regression/mpm/mpms06.in for a complete input file.
Term records¶
A term is what an integral in the weak form integrates.
Record syntax common to all terms
TermType num (in) variable (s)
testvariable (s) mmode (et)
Parameters
variable(s)Name of the unknown variable (field) of the term.
testvariable(s)Name of the test variable (field) of the term.
mmode(et)Material mode used to evaluate the term, as a
MaterialModevalue; seesrc/core/materialmode.h.
Individual term types may introduce further parameters of their own.
Notation¶
Symbol |
Meaning |
|---|---|
\(q\), \(p\) |
Scalar valued functions |
\(\mathbf{w}\), \(\mathbf{u}\) |
Vector valued functions |
Supported term types¶
BTSigmaTerm\(\int_\Omega \nabla^s \mathbf{w}\ \mathbf{\sigma}(\nabla^s \mathbf{u})\), where \(\mathbf{\sigma}\) is the (nonlinear) operator evaluated by the constitutive model.
Supported material modes:
_3dMat,_3dUP,_2dUP,_PlaneStress.Optional parameter: [
lhsmatmode(in)].BTamNTerm\(\int_\Omega \nabla^s \mathbf{w}\ a\mathbf{m}\ p\), where
ais a material parameter defined by the constitutive model whose meaning is fixed by theatypeparameter, and \(\mathbf{m}^T=[1,1,1,0,0,0]^T\).Note that \(\mathbf{\sigma}_{D}=\mathbf{\sigma}-\mathbf{m}p\).
NTamTBTermThe transposed version of
BTamNTerm: \(\int_\Omega w\ \alpha\mathbf{m}\ \nabla^s \mathbf{u}\).NTcN\(\int_\Omega q c p\), where
cis a constant defined by the material model whose meaning is fixed by thectypeparameter.NTfTerm\(\int_\Omega \mathbf{w}\cdot\bar{\mathbf{t}}\), where \(\bar{\mathbf{t}}\) is a given flux vector supplied by the
flux(ra) parameter.SymbolicTermA term whose integrand is written directly in the input file, in a symbolic mathematical language that is compiled to bytecode during initialization.
It adds two mandatory string parameters:
lexpression(s), the left-hand side expression evaluated to the tangent/stiffness matrix contribution, andrexpression(s), the right-hand side expression evaluated to the internal force or residual vector contribution.The expression language — its functions
Grad_s,Grad,Div,N,Sig,Sig_dev,MDer,MVec,MPropand the rest, and the full list of attributes — is documented in SymbolicTerm expression language.
Integral records¶
An integral integrates one term over a set of elements.
Record syntax
Integral num (in) domain (in)
set (in) term (in)
Parameters
domain(in)Number of the domain in which the integral is defined.
set(in)Number of the set of elements over which the integration is performed; see Set records.
Note
Boundary integrals require the boundary elements to be present.
term(in)Number of the term to integrate.
The integrals contributing to the left- and right-hand sides of the problem are
selected by the lhsterms and rhsterms arrays of the analysis
record; see Stationary symbolic MPM problem.
Note
Despite their names, lhsterms and rhsterms list
integral numbers, not term numbers.
Cell records¶
The integrals are evaluated on generic cells, ordinary element records of the domain (see Element records) that carry no fields of their own: the variables acting on a cell decide its unknowns and dofs.
Record syntax
l1 num (in) nodes (ia) …
q1 num (in) nodes (ia) …
l1Line cell.
nodeslists either the two end nodes, or three nodes: the two end nodes followed by the inner node.q1Quadrilateral cell.
nodeslists either the four corner nodes, in counter-clockwise order, or eight nodes: the corners followed by the inner nodes of the edges, node \(4+i\) lying on the edge from corner \(i\) to corner \(i \bmod 4 + 1\).
A quadratic variable (feiquad) has an unknown at the inner nodes as well.
Inner nodes given in the cell record are used as given. An inner node not
given, or given as 0, is generated: at the midpoint of an l1 cell, or at
the midpoint of a q1 edge, where it is shared with the neighbouring cell.
An edge node of q1 cells is therefore given in all the cells sharing the
edge, or in none. Generated nodes are numbered after the nodes of the input
file, in the order of the cells; they are not known when the input is read, so
sets, boundary conditions and loads cannot refer to them. To prescribe, load or
select an inner node, give it in the cell record.
The geometry of a cell follows its nodes:
An
l1cell given with its inner node has a quadratic geometry through all three nodes, and the inner node can lie anywhere between the end nodes (not only at the midpoint). The gradients of all variables, linear ones included, and the integration over the cell follow this geometry.An
l1cell given by its end nodes, and everyq1cell, has a linear geometry through the end (corner) nodes; the inner nodes of aq1cell are therefore to be placed at the edge midpoints.
Example
node 1 coords 3 0.0 0.0 0.0
node 2 coords 3 1.0 0.0 0.0
node 3 coords 3 2.0 0.0 0.0
node 4 coords 3 1.3 0.0 0.0
l1 1 nodes 2 1 2 mat 1 crosssect 1
l1 2 nodes 3 2 3 4 mat 1 crosssect 1
A quadratic variable gets a generated inner node at \(x=0.5\) on cell 1,
and uses node 4, at \(x=1.3\), on cell 2, whose geometry is quadratic. See
tests/regression/mpm/mpms_l1inner.in for a complete input file, and
tests/regression/mpm/mpms02.in for a q1 cell with one edge node given
and the others generated.