Load and boundary condition records¶
These records describe the boundary conditions, including loads and contact
conditions. They are all counted by nbc in the
Components size record.
Record syntax common to all boundary conditions
EntType num (in)
loadTimeFunction (in) [set (in)]
[valType (in)] [dofs (ia)]
[isImposedTimeFunction (in)]
The order of the records is arbitrary and the number is given by num.
The numbering must start at one and end at n, where n is the number of
records.
Common parameters
loadTimeFunction(in)Number of the time function whose value multiplies every component of the condition, so describing its variation in time. See (Time) function records.
- [
set(in)] Number of the set (see Set records) of entities the condition is applied to. This is the usual way of attaching a condition; the alternative is to reference the condition from a dof manager’s
bcorloadarray, or from an element’sbodyLoadsorboundaryLoadsarray.- [
dofs(ia)] Which DOFs the condition acts upon, using the
DofIDItemvalues listed under Dof manager records. Not relevant to every condition type.- [
valType(in)] Physical meaning of the condition’s value, which some formulations require:
1temperature,2force/traction,3pressure,4humidity,5velocity,6displacement.- [
isImposedTimeFunction(in)] Number of a time function controlling whether the condition exists at all. A nonzero value means the condition is active, zero means it is inactive — it does not exist — at that time. By default the condition applies at all times.
Dirichlet boundary conditions¶
BoundaryCondition¶
Prescribes a value on the selected DOFs. The physical meaning of the value follows from the DOF it is applied to.
Record syntax
BoundaryCondition num (in)
loadTimeFunction (in) [set (in)]
[dofs (ia)]
(values (ra) | prescribedvalue (rn) |
d (rn))
Parameters
values(ra)Vector of prescribed values, one per DOF listed in
dofs. This is the preferred form.prescribedvalue(rn)A single value prescribed on all the selected DOFs. Used only when
valuesis absent.d(rn)An alternative spelling of
prescribedvalue, retained for compatibility. It is read only when neithervaluesnorprescribedvalueis present.
Example
BoundaryCondition 1 loadTimeFunction 1 dofs 2 1 2 values 2 0.0 0.0 set 2
PrescribedGradient¶
Prescribes \(v_i = d_{ij}(x_j-\bar{x}_j)\), or
\(s = d_{1j}(x_j - \bar{x}_j)\) for a scalar field, where \(v_i\) are
the primary unknowns, \(x_j\) the coordinate of the node, \(\bar x\) is
ccoord and \(d\) is gradient.
This is the typical boundary condition of multiscale analysis, where \(d = \partial_x s\) would be a macroscopic gradient at the integration point — that is, it is a boundary condition for prolongation. It is also convenient for testing an arbitrary specimen in shear.
Record syntax
PrescribedGradient num (in)
loadTimeFunction (in) gradient (rm)
[set (in)] [ccoord (ra)]
Parameters
gradient(rm)The prescribed gradient \(d\).
- [
ccoord(ra)] Centre coordinate \(\bar x\). Defaults to zero.
Mixed gradient / pressure conditions¶
These conditions ensure that the deviatoric gradient and the pressure are at least weakly fulfilled on the prescribed domain. They are used for the computational homogenization of incompressible flow or elasticity problems.
MixedGradientPressureDirichlet¶
Prescribes
\(v_i = d_{\mathrm{dev},ij}(x_j-\bar{x}_j) + d_\mathrm{vol}(x_i-\bar{x}_i)\)
together with a pressure \(p\), where \(v_i\) are the primary unknowns,
\(x_j\) the coordinate of the node, \(\bar x\) is ccoord and
\(d_\mathrm{dev}\) is devGradient.
An additional unknown appears, \(d_\mathrm{vol}\), which the boundary condition handles itself with no control from the input file; it is related to the applied pressure. This is useful in multiscale computations of RVEs that behave incompressibly, typically fluid problems, and is convenient for testing an arbitrary specimen in shear with a free volumetric part — in which case the pressure is set to zero.
Record syntax
MixedGradientPressureDirichlet num (in)
loadTimeFunction (in) devGradient (ra)
pressure (rn) [set (in)]
[ccoord (ra)]
Parameters
devGradient(ra)The prescribed deviatoric gradient.
pressure(rn)The prescribed pressure.
- [
ccoord(ra)] Centre coordinate \(\bar x\). Defaults to zero.
MixedGradientPressureNeumann¶
Prescribes a constant, unknown deviatoric stress tensor along the specified
boundaries. The additional unknown
\(\boldsymbol{\sigma}_\mathrm{dev}\) is handled by the boundary condition
itself, with no control from the input file, and the input
devGradient is fulfilled weakly, homogenized over the element sides.
As with the Dirichlet variant the volumetric gradient is free. This is useful in multiscale computations of RVEs that behave incompressibly, typically fluid problems, in which case the element sides should cover the entire RVE boundary. Symmetry is not assumed, so rigid body rotations are removed, but translations must be prescribed separately.
Record syntax
MixedGradientPressureNeumann num (in)
loadTimeFunction (in) devGradient (ra)
pressure (rn) [set (in)]
MixedGradientPressureWeakPeriodic¶
Prescribes a periodic constant, unknown stress tensor along the specified
boundaries. With order set to 1 the results are the same as for the
Neumann boundary condition.
Note
The record keyword is mixedgradientpressureweakperiodic.
Record syntax
MixedGradientPressureWeakPeriodic num (in)
loadTimeFunction (in) devGradient (ra)
pressure (rn) order (in)
[set (in)]
Parameters
order(in)Order of the periodic stress approximation.
Nodal loads¶
NodalLoad¶
A concentrated nodal load.
Record syntax
NodalLoad num (in)
loadTimeFunction (in) components (ra)
[set (in)] [dofs (ia)]
[cstype (in)]
Parameters
components(ra)Components of the nodal load vector. Its size corresponds to the total number of nodal DOFs, and the i-th value to the i-th DOF of the associated dof manager.
- [
cstype(in)] Coordinate system of the load:
0global,1the entity-specific local system (the default).
PrescribedTractionPressureBC¶
A pressure boundary condition of Dirichlet type arising from prescribed tractions. In the CBS algorithm formulation a prescribed traction boundary condition leads indirectly to a pressure boundary condition in the corresponding nodes, and this condition implements that pressure condition. Its value follows from the applied tractions, which should be specified on element edges or surfaces using suitable boundary loads.
Record syntax
PrescribedTractionPressureBC num (in)
loadTimeFunction (in) [set (in)]
Body loads¶
DeadWeight¶
Dead weight loading applied to the element volume, for structural elements. For transport problems it represents the internal source, that is the rate of heat generated per unit volume.
The magnitude of the load for the i-th DOF is the product of the material
density, the corresponding volume, and the i-th member of
components.
Record syntax
DeadWeight num (in)
loadTimeFunction (in) components (ra)
[set (in)]
StructTemperatureLoad¶
Temperature loading imposed on elements. The members of
components represent the change of temperature, or the change of the
temperature gradient, corresponding to the individual element strain
components. See the Element Library Manual for details.
Record syntax
StructTemperatureLoad num (in)
loadTimeFunction (in) components (ra)
[set (in)]
StructEigenstrainLoad¶
Prescribes an eigenstrain — a stress-free strain — on a structural element.
components is defined in the global coordinate system, and the number
of components corresponds to the material mode: plane stress has three
components, 3D has six.
Record syntax
StructEigenstrainLoad num (in)
loadTimeFunction (in) components (ra)
[set (in)]
Periodic boundary conditions through eigenstrains
Periodic boundary conditions can be imposed using eigenstrains together with master-slave nodes. Consider the decomposition of strain into an average and a fluctuating part,
where \(\langle \boldsymbol{\varepsilon} \rangle\) can be imposed as an eigenstrain over the domain, and the solution then gives the fluctuating part \(\boldsymbol{\varepsilon}^*(\boldsymbol{x})\). The master-slave nodes have to interconnect the opposing boundary nodes of the unit cell.
Boundary loads¶
Load types¶
The edge and surface loads share the loadType parameter, which
distinguishes the kind of boundary condition. The supported values are defined
in src/core/bctype.h:
loadType= 2Prescribed flux input, that is a Neumann boundary condition.
loadType= 3Uniform distributed load, or the convection (Newton) boundary condition. In the latter case
componentsholds the environmental values — the temperature of the environment — corresponding to the element unknowns, and thepropertiesdictionary should hold the transfer (convection) coefficient, assumed constant, under the keya.loadType= 7Radiative boundary condition (Stefan-Boltzmann). It requires the emissivity \(\varepsilon\in\langle 0,1\rangle\), and
componentsholds the environmental values — the temperature of the environment. Default units are degrees Celsius; settemperOffsetto 0 to compute in Kelvin.
If the boundary condition corresponds to a distributed force load,
components holds the components of the distributed load corresponding
to the element unknowns. If it corresponds to a prescribed flux input,
components holds the components of the prescribed input flux.
ConstantEdgeLoad¶
A constant edge load or boundary condition.
Record syntax
ConstantEdgeLoad num (in)
loadTimeFunction (in) loadType (in)
components (ra) [set (in)]
[dofexcludemask (ia)] [csType (in)]
[properties (dc)] [propertytf (dc)]
[temperOffset (rn)]
ConstantSurfaceLoad¶
A constant surface load or boundary condition.
Record syntax
ConstantSurfaceLoad num (in)
loadTimeFunction (in) loadType (in)
components (ra) [set (in)]
[dofexcludemask (ia)] [csType (in)]
[properties (dc)] [propertytf (dc)]
[temperOffset (rn)] [loadoffset (rn)]
Additional parameter
- [
loadoffset(rn)] Offset of the load application point from the surface, along the surface normal.
LinearEdgeLoad¶
A linearly varying edge load. components holds the load components
for the unknowns at the beginning of the edge, followed by the values valid at
the end of the edge. csType and loadType mean the same as
for ConstantEdgeLoad.
Record syntax
LinearEdgeLoad num (in)
loadTimeFunction (in) loadType (in)
components (ra) [set (in)]
[dofexcludemask (ia)] [csType (in)]
[formulation (in)] [sc (ra)]
[ec (ra)]
Additional parameters
- [
formulation(in)] Whether the load is given in terms of the entity’s local parametric coordinates or of global coordinates.
- [
sc(ra)], [ec(ra)] Start and end coordinates used by the global formulation.
UserDefinedBoundaryLoad¶
A user-defined boundary flux, whose intensity is given by a configured function.
PythonExpression (see (Time) function records) makes this completely
configurable.
Note
The record keyword is usrdefboundaryload.
Record syntax
usrdefboundaryload num (in)
loadTimeFunction (in) dofs (ia)
set (in) intensityfunction (in)
components (ra) [geomtype (in)]
[approxorder (in)]
Parameters
intensityfunction(in)Number of the function defining the flux intensity. The function is defined in the global coordinate system as a function of position — the
xarray variable — and time — thetvariable.- [
geomtype(in)] Type of geometry the flux is applied to:
4for a surface flux (the default),3for an edge flux.- [
approxorder(in)] Approximate order of the intensity function, used to set up the integration rule on the boundary.
dofs(ia)The DOFs the flux is applied to.
set(in)The set of element boundary entities the flux is applied to.
Note
loadTimeFunction and components have no effect here, but
they still have to be provided. Write components 0 for an empty array.
InteractionLoad¶
A fluid-pressure-induced load in the solid part of the fluid-structure problem
(see FluidStructure problem). ndofs, csType and
loadType mean the same as for LinearEdgeLoad.
components holds the load components for the unknowns at the beginning
of the edge — ndofs values — followed by the values valid at the end of
the edge, another ndofs values. The load should be defined in the
global coordinate system (csType = 0), since it acts in the direction
normal to the edge.
Record syntax
InteractionLoad num (in)
loadTimeFunction (in) ndofs (in)
loadType (in) components (ra)
coupledparticles (ia) [set (in)]
[csType (in)]
Parameters
coupledparticles(ia)The PFEM particles from the fluid part of the problem that supply the fluid pressure.
Constraints and couplings¶
LinearConstraintBC¶
Implements a linear constraint of the form \(\sum_i w_i r_i = c\), where
\(r_i\) are the unknowns of the DOFs selected by dofmans and
dofs.
The condition is introduced as an additional stationary condition through a Lagrange multiplier, which is itself an additional degree of freedom introduced by this boundary condition.
Record syntax
LinearConstraintBC num (in)
loadTimeFunction (in) weights (ra)
dofmans (ia) dofs (ia)
rhs (rn) lhstype (ia)
rhstype (ia) [weightsLtf (ia)]
[rhsLtf (in)]
Parameters
dofmans(ia),dofs(ia)Dof manager numbers and the corresponding DOF indices identifying the participating DOFs.
weights(ra)Weights of the participating DOFs. By default all weights are 1.
- [
weightsLtf(ia)] Number of a time function associated with each individual weight; each weight is multiplied by the value that function returns.
rhs(rn)The constant \(c\).
- [
rhsLtf(in)] Number of the time function multiplying
rhs. Defaults to 1.lhstype(ia),rhstype(ia)The characteristic components this condition contributes to, as
CharTypeenumeration values. The left-hand side contribution is assembled into the terms identified bylhstype, the right-hand side contribution into the term identified byrhstype. Multiple values are allowed, which makes it possible to select all variants of the stiffness matrix, for example.
Important
The dofmans, dofs, weights and
weightsLtf arrays must all have the same size.
InteractionBoundaryCondition¶
A special boundary condition prescribed on interaction PFEM particles (see Interaction PFEM particle) in the PFEM part of the fluid-structure problem. Particles of this sort are treated as if they had prescribed velocities, but the values change dynamically as the solid part deforms; the velocities are obtained from the coupled structural nodes.
Record syntax
InteractionBoundaryCondition num (in)
loadTimeFunction (in)
LatticeNeumannCoupling¶
Note
Part of the lattice module; compile with USE_LM.
An active boundary condition coupling a transport (pore-pressure) lattice to a
mechanical lattice in a staggered analysis. For each mechanical node listed in
smnodes it reads the fluid pressure \(P_f\) from the corresponding
transport node in tmnodes, in the coupled transport slave problem of a
StaggeredProblem, and applies a nodal force
\(f = P_f\, l\, \mathbf{n}\), where \(l\) is the distance between the
mechanical node and its transport counterpart and \(\mathbf{n}\) is the
unit direction.
This implements Approach 1 of Grassl, Fahy, Gallipoli and Wheeler (2015). The
transport slave problem is identified by the coupling field of the driving
StaggeredProblem.
Record syntax
LatticeNeumannCoupling num (in)
loadTimeFunction (in) smnodes (ia)
tmnodes (ia) direction (ra)
Parameters
smnodes(ia),tmnodes(ia)Mechanical and transport node numbers. The two arrays must have the same length.
direction(ra)Unit direction vector \(\mathbf{n}\) of the applied force.
LatticeDirichletCoupling¶
Note
Part of the lattice module; compile with USE_LM.
Prescribes the pore pressure \(P_f\) at a transport lattice node as the
distance-weighted average of the compression-only normal stress of the
mechanical lattice elements listed in couplingelements, read from the
coupled mechanical slave problem of a StaggeredProblem. Tensile normal
stress is clamped to zero.
The coupling is explicit, lagged by one step: the pressure prescribed at step
\(n\) uses the mechanical stress of step \(n-1\), and the first step
prescribes zero. This implements Approach 2 of Grassl, Fahy, Gallipoli and
Wheeler (2015). The mechanical slave problem is identified by the coupling
field of the driving StaggeredProblem.
The node the condition acts on is given through the associated set and
dofs — DOF 11, \(P_f\) — as for a standard BoundaryCondition.
Record syntax
LatticeDirichletCoupling num (in)
loadTimeFunction (in) couplingelements (ia)
[set (in)] [dofs (ia)]
Contact boundary conditions¶
Contact boundary conditions pair two contact surfaces (see Contact surface records), which must both be defined before the condition that references them.
Structural penalty contact¶
A penalty-based contact boundary condition for modelling contact between
deformable bodies. The formulation enforces normal and tangential constraints
between the surfaces defined by StructuralFEContactSurface records and their
underlying StructuralContactElement_* elements.
It follows Konyukhov and Schweizerhof, Computational Contact Mechanics: Geometrically Exact Theory for Arbitrary Shaped Bodies (Springer, LNACM 67, 2013): closest-point projection (Ch. 3), penalty/friction evolution and return mapping (Sec. 6.1), and consistent tangents (Sec. 7.1).
The contact is enforced by the penalty method and contributes to the residual and to the tangent system of equations at each iteration.
Record syntax
structuralpenaltycontactbc num (in)
loadTimeFunction (in) dofs (ia)
pn (rn) pt (rn) friction (rn)
mastersurface (in) slavesurface (in)
nsd (in) [frictiontransition (rn)]
[frictionhardening (rn)] [algo (in)]
[searchpadding (rn)] [searchtol (rn)]
[facethysteresis (rn)]
[generalizedfeatures (in)]
[directionalprojection (in)]
[autopenalty (in)] [tangentmode (in)]
[fdcheck (in)] [fdperturbation (rn)]
[fdoutputprefix (s)] [fdtolerance (rn)]
Required parameters
pn(rn)Normal penalty stiffness, controlling the resistance against penetration between the contacting surfaces. Still required as a placeholder when
autopenaltyis1, in which case its value is ignored.pt(rn)Tangential penalty stiffness, controlling the tangential response. The same placeholder rule as
pnapplies whenautopenaltyis1.friction(rn)Coulomb coefficient of friction. Set it to
0.0for frictionless contact.Warning
The frictional branch of this boundary condition is an experimental, unverified development feature. Use
friction 0for production analyses until it has been validated.mastersurface(in),slavesurface(in)Identifiers of the master and slave contact surfaces, defined by the corresponding
StructuralFEContactSurfacerecords; see Contact surface records.dofs(ia)The affected degrees of freedom, typically
2 1 2in 2D problems or3 1 2 3in 3D.nsd(in)Number of spatial dimensions:
2for plane strain or plane stress,3for 3D problems.
Friction parameters
- [
frictiontransition(rn)] Smoothness of the differentiable stick/slip projection used by the experimental friction model. Default
0.0, range[0, 1); zero recovers the sharp Coulomb return map. Requirestangentmode0,2or3.- [
frictionhardening(rn)] Dimensionless post-yield tangential-slip hardening ratio used by the experimental friction model. Default
0.0, range[0, 1); zero is perfect Coulomb friction. Positive values require a positiveptandtangentmode0,2or3.
Contact search parameters
- [
algo(in)] Contact search algorithm. Default
0, a plain surface-to-surface search;1selects a sweep-and-prune broad-phase search, 3D only (nsd 3), recommended for larger numbers of contact elements.- [
searchpadding(rn)] Absolute broad-phase bounding-box padding used by the contact search. A negative value, or omitting the field, selects the automatic, geometry-based default.
- [
searchtol(rn)] Parametric-domain margin used by the “is this point still inside this facet” test. Default
1.e-10. Comparable to other codes’ sliding-elastic-interface search tolerance, whose typical default is0.01.- [
facethysteresis(rn)] Relative distance-squared margin a competing master facet must exceed before it may replace the facet currently owned by a contact pair. Default
0.0, which disables the hysteresis. A small positive value, for example1.e-6, suppresses Newton chattering caused by a slave point sitting near a shared edge between two adjacent facets, where the true closest facet would otherwise flip every iteration.- [
generalizedfeatures(in)] Default
0. Set to1to extend the closest-point search from plain facet (surface) projection to also consider the edge and vertex features of the master surface. Mutually exclusive withdirectionalprojection.- [
directionalprojection(in)] Default
0. Set to1to project each slave point onto the master surface along the slave surface’s own normal direction, instead of a general closest-point search. Currently requiresnsd 3. Mutually exclusive withgeneralizedfeatures.
Penalty and tangent parameters
- [
autopenalty(in)] Default
0. Set to1to ignore thepnandptvalues and compute the normal and tangential penalty stiffnesses automatically for each slave contact element, from the contacting materials’ initial Young’s modulus and the element geometry, through an \(E_n A/V\) factor.- [
tangentmode(in)] Contact tangent formulation. Default
0, automatic selection;1rate-form analytical, for diagnostic use;2branch-frozen finite-difference;3exact finite-step analytical tangent, including facet-history columns, with a finite-difference fallback for the projection features it does not yet support.
Finite-difference verification
- [
fdcheck(in)] Default
0. Set to1to enable an internal finite-difference verification of the analytical contact tangent on every call. A development and debugging aid only; it adds significant runtime cost.- [
fdperturbation(rn)] Relative perturbation size used by
fdcheck. Default1.e-7.- [
fdoutputprefix(s)] Filename prefix for the diagnostic output written by
fdcheck. Default"contact_fd".- [
fdtolerance(rn)] Relative tolerance used by
fdcheckwhen comparing the analytical and finite-difference tangents. Default0.0.
Example
structuralpenaltycontactbc 3 loadTimeFunction 1 dofs 2 1 2 \
pn 1.e8 pt 1.e8 friction 0.0 mastersurface 1 slavesurface 2 nsd 2
This defines a frictionless penalty contact condition between master surface 1 and slave surface 2, with normal and tangential stiffness equal to 1.e8. The condition acts on degrees of freedom 1 and 2 — displacement in the x and y directions — in a 2D plane strain or plane stress domain.
For bidirectional, two-pass contact, two such conditions can be defined with the master and slave surfaces swapped:
structuralpenaltycontactbc 6 loadTimeFunction 3 dofs 3 1 2 3 \
pn 0.01 pt 0.01 friction 0 autopenalty 1 \
mastersurface 2 slavesurface 1 nsd 3 algo 1 directionalprojection 1
structuralpenaltycontactbc 7 loadTimeFunction 3 dofs 3 1 2 3 \
pn 0.01 pt 0.01 friction 0 autopenalty 1 \
mastersurface 1 slavesurface 2 nsd 3 algo 1 directionalprojection 1
This frictionless two-pass example uses automatic penalty stiffness and the sweep-and-prune search with directional projection, each surface acting as master for the other.
Thermal surface-to-surface contact¶
A surface-to-surface thermal contact boundary condition modelling heat transfer across the interface between two bodies. It couples the temperature degrees of freedom on the surfaces defined by the corresponding thermal contact surface records, and contributes to the residual vector and the tangent matrix of the thermal problem.
Record syntax
S2SThermalContact num (in)
loadTimeFunction (in) dofs (ia)
mastersurface (in) slavesurface (in)
gapConductivityFunction (in)
Parameters
loadTimeFunction(in)Identifier of the time/load scaling function applied to the thermal contact contribution.
dofs(ia)The affected degrees of freedom. In a standard thermal analysis this is typically the single temperature DOF, number
10.mastersurface(in),slavesurface(in)Identifiers of the master and slave thermal contact surfaces.
gapConductivityFunction(in)Identifier of a function giving the effective interface conductivity, or conductance, as a function of the gap.
Example
S2SThermalContact 2 loadTimeFunction 1 dofs 1 10 \
mastersurface 1 slavesurface 2 gapConductivityFunction 2
This defines a thermal surface-to-surface contact condition between master
surface 1 and slave surface 2. The condition acts on the temperature degree of
freedom, numbered 10, and uses gapConductivityFunction 2 to prescribe a
gap-dependent thermal conductivity across the interface.
The gap conductivity function itself may be defined as, for example:
PiecewiseLinFunction 2 npoints 2 \
t 2 0 0.1 \
f(t) 2 10000 0
Here the variable t is the distance — the gap — between the master and slave
surfaces, and f(t) is the gap-dependent thermal conductivity. A high
conductivity is prescribed for zero gap, that is perfect contact, decreasing
linearly to zero as the gap grows to 0.1.
Other registered boundary conditions¶
OOFEM registers considerably more boundary condition types than are documented
above. The following are available in input files but not yet described here;
their attributes can be read off the _IFT_ definitions in the corresponding
header.
Multiscale and homogenization
prescribedgradientbcneumann, prescribedgradientperiodic,
prescribedgradientbcweakdirichlet, prescribedgradientbcweakperiodic,
prescribedgradientmultiple, weakperiodicbc, prescribedmean,
solutionbasedshapefunction, transversereinforcementconstraint,
prescribeddispslipbcdirichletrc, prescribeddispslipbcneumannrc,
prescribeddispslipmultiple
Transport gradient conditions
tmgraddirichlet, tmgradneumann, tmgradperiodic
Loads
pointload, momentload, constantpressureload,
freeconstantsurfaceload, gravitypressure, surfacetension,
reinforcement, depositedheatsource
Temperature fields
externaltempfieldload, usrdeftempfield, tf1
Other
rotatingboundary, userdefdirichletbc,
PrescribedGenStrainShell7