Multi-physics problems

OOFEM solves a multi-physics problem in one of two ways, and this section covers both.

A partitioned (staggered) problem is a sequence of sub-problems, each a complete analysis with its own input file, run one after another in every time step; the fields one sub-problem computes are exported and picked up by the next. Staggered problem, FluidStructure problem and Additive manufacturing problem work this way.

A monolithic problem is stated as a single weak form, assembled and solved as one system. Stationary symbolic MPM problem and Non-stationary symbolic MPM problem work this way, with the weak form written symbolically in the input file out of variables, terms and integrals.

Staggered problem

Note

This problem type is part of the transport module and can be used only when that module is configured.

Represents a so-called staggered analysis: a sequence of sub-problems in which the result of one sub-problem may depend on the results of those before it. The typical example is a heat transfer analysis followed by a mechanical analysis that takes the computed temperature field into account. A similar analysis couples moisture transport with the drying strain of concrete.

The current implementation supports a sequence of two sub-problems. The sub-problems are described by their own input files, whose syntax is the same as for a standalone problem; the only addition is that a sub-problem must export its solution fields so that they become available to the subsequent sub-problem — see Exporting fields to a subsequent analysis.

Note

All material models derived from the StructuralMaterial base class take an externally registered temperature field into account when one is provided.

Record syntax

StaggeredProblem prob1 (s) prob2 (s) ((nsteps (in) deltaT (rn)) | timeDefinedByProb (in)) [stepMultiplier (rn)]

Parameters

prob1 (s), prob2 (s)

Paths to the sub-problem input files. prob1 runs first in each solution step, prob2 second.

timeDefinedByProb (in)

Take the time sequence from the given sub-problem. The sub-problem may then specify arbitrary loading steps, which allows a great deal of flexibility. Use either this parameter or the nsteps / deltaT pair below.

nsteps (in), deltaT (rn)

Let the staggered problem control the time instead. Any time-stepping parameters of the sub-problems are then ignored — even where the sub-problem input syntax requires them — and only these parameters matter. nsteps is the number of time steps to solve and deltaT the time step length used for integration.

[stepMultiplier (rn)]

Multiplies all times by this constant. Default 1.

FluidStructure problem

Note

This problem type is part of the PFEM module and can be used only when that module is configured.

Warning

The record keyword is fluidstuctureproblem — the spelling in the OOFEM sources is missing an “r”, and the input file must match it.

Represents a fluid-structure analysis based on the staggered problem, but with iterative synchronization of the sub-problems. The implementation uses the PFEM model (Transient incompressible flow — PFEM algorithm) for the fluid part, and for the structural part a full dynamic analysis by implicit direct integration (DIIDynamic).

The coupling of the two phases enforces compatibility on the interface. Special fluid particles are attached to every structural node on the interface that the fluid can reach. These particles have no degrees of freedom of their own, so no equations are solved on them; their movement is determined entirely by the associated structural nodes, and their velocities — governed by the solid part — affect the fluid equations naturally.

The iterative procedure follows the Dirichlet-Neumann approach: prescribed velocities on the fluid side of the interface are the Dirichlet conditions, while applied forces on the structural side are the Neumann conditions. The convergence criterion is based on the difference of the pressure and velocity values on the interface between successive iterations; once these are smaller than the prescribed tolerance the iteration stops and the solution proceeds to the next step.

Record syntax

fluidstuctureproblem nsteps (in) deltaT (rn) prob1 (s) prob2 (s) [maxiter (in)] [rtolv (rn)] [rtolp (rn)]

Parameters

nsteps (in), deltaT (rn)

Number of time steps and the time step length.

prob1 (s), prob2 (s)

Paths to the sub-problem input files. prob1 runs first in each solution step, prob2 second.

[maxiter (in)]

Maximum number of iterations. Default 50.

[rtolv (rn)], [rtolp (rn)]

Relative norms for the velocity and pressure difference between two successive iterations. Defaults 1.e-3.

Additive manufacturing problem

Represents an additive manufacturing analysis, performed as a sequence of sub-problems in each time step over a time-evolving domain defined by a G-code file.

The time-evolving computational domain is defined by the G-code file (gcode), which is interpreted by a built-in G-code processor. The processor emulates the machine G-code precisely in a virtual domain represented by a structured grid, with user-defined resolution in space (stepx, stepy, stepz) and in time. It tracks the evolution of the Representative Volume of Deposited Material (RVOM) in the individual elements of the grid, taking into account the realistic extruder path, speed and deposition profile defined by the G-code.

Note

G-code units are millimetres and mm/s, but they are converted internally to the basic units of metres and m/s.

Initially the RVOM of every element is zero, so all elements are empty and defined as inactive. In each step the updated computational domain is identified as the set of elements whose RVOM exceeds the threshold given by minvof. Active nodes are then the nodes shared by at least one active element. The boundary conditions — ambient temperature and prescribed bottom temperature — are generated by the G-code processor.

See the tests/am directory for example input files.

Record syntax

AdditiveManufacturingProblem gcode (s) prob1 (s) prob2 (s) stepx (rn) stepy (rn) stepz (rn) (nsteps (in) deltaT (rn) | timeDefinedByProb (in) | dtf (in) | prescribedtimes (ra)) [prob3 (s)] [coupling (ia)] [minvof (rn)] [skipsm (in)] [maxcommands (in)] [stepMultiplier (rn)] [adaptivesteplength] [minsteplength (rn)] [maxsteplength (rn)] [reqIterations (in)] [endoftimeofinterest (rn)] [adaptivestepsince (rn)] [layerheight (rn)] [extrusionwidth (rn)] [chambertemperature (rn)] [depositiontemperature (rn)] [heatbedtemperature (rn)] [heattransferfilmcoefficient (rn)] [depositedmaterialheatpower (rn)]

Parameters

gcode (s)

Path to the G-code file defining the time-evolving domain.

prob1 (s), prob2 (s)

Paths to the sub-problem input files, run in a staggered manner for each solution step. prob1 is typically a transient heat analysis, followed by the mechanical analysis in prob2.

[prob3 (s)]

Path to an optional third sub-problem input file.

[coupling (ia)]

Numbers of the coupled sub-problems, used to resolve which sub-problem supplies a field to which.

stepx (rn), stepy (rn), stepz (rn)

Spatial resolution of the structured grid representing the virtual domain.

nsteps (in), deltaT (rn)

Number of time steps and the time step length.

timeDefinedByProb (in)

Take the time sequence from the given sub-problem instead.

dtf (in)

Number of a time function determining the time step length instead.

prescribedtimes (ra)

Explicit array of solution times instead.

[minvof (rn)]

Threshold RVOM value above which an element counts as active and becomes part of the computational domain.

[skipsm (in)]

Skip the structural (mechanical) sub-problem, running the thermal analysis alone.

[maxcommands (in)]

Maximum number of G-code commands to process, which limits how far into the print the emulation runs.

[stepMultiplier (rn)]

Multiplies all times by this constant. Default 1.

Adaptive step length

[adaptivesteplength]

A flag; when present, the time step length is adapted during the analysis. The remaining parameters in this group are read only when it is given.

[minsteplength (rn)]

Minimum time step length. Default 0..

[maxsteplength (rn)]

Maximum time step length.

[reqIterations (in)]

Approximate number of iterations, maintained by adjusting the step length. Default 1.

[endoftimeofinterest (rn)]

Time at which the analysis stops. Default 1.e32.

[adaptivestepsince (rn)]

Time from which the step length starts being adapted. Default 0..

Printer process parameters

[layerheight (rn)]

Layer height, in millimetres.

[extrusionwidth (rn)]

Extrusion width, in millimetres.

[chambertemperature (rn)]

Ambient temperature in the printer chamber.

[depositiontemperature (rn)]

Temperature of the deposited material.

[heatbedtemperature (rn)]

Prescribed temperature of the heat bed.

[heattransferfilmcoefficient (rn)]

Heat transfer film coefficient between the deposited material and the air surrounding it in the printer chamber.

[depositedmaterialheatpower (rn)]

Heat power of the deposited material, defined as the product of the material’s specific heat and its density.

Stationary symbolic MPM problem

The stationary symbolic multiphysics problem lets the problem be formulated symbolically, by giving its weak form in terms of variables, terms and integrals.

Warning

The record keyword is mpmsymbolicstationaryproblem, not the class name StationaryMPMSProblem.

The problem is defined by its weak form as a set of integrals of specific, predefined terms, which are themselves functions of the defined variables. The resulting nonlinear system is solved with the Newton-Raphson solver (NRSolver).

Record syntax

mpmsymbolicstationaryproblem nsteps (in) nvariables (in) nterms (in) nintegrals (in) lhsterms (ia) rhsterms (ia) [smtype (in)]

Parameters

nsteps (in)

Number of solution steps.

nvariables (in), nterms (in), nintegrals (in)

Numbers of Variable, Term and Integral records that follow. See Variable records, Term records and Integral records.

lhsterms (ia)

Numbers of the integrals contributing to the left-hand side of the nonlinear problem.

rhsterms (ia)

Numbers of the integrals contributing to the right-hand side.

[smtype (in)]

Sparse matrix storage scheme. Default 0, the symmetric skyline. See Sparse linear solver parameters.

Example

See tests/regression/mpm/mpms06.in for a complete input file, and the commented up-formulation example on the OOFEM blog.

Non-stationary symbolic MPM problem

The transient counterpart of the stationary symbolic MPM problem. Time is discretized with the generalized midpoint rule using the parameter alpha, as in Transient transport problem.

Unlike the stationary problem, this model has three formulations, selected by ptype. Only symbolic reads the integral lists; the other two are built-in formulations retained for compatibility.

Note

The keyword is mpmnonstationaryproblem. The alias mpmproblem is also accepted, for compatibility with older input files.

Record syntax

mpmnonstationaryproblem nsteps (in) alpha (rn) (deltat (rn) | deltatfunction (in) | prescribedtimes (ra)) [ptype (s)] [nvariables (in)] [nterms (in)] [nintegrals (in)] [lhsterms (ia)] [lhsdotterms (ia)] [rhsterms (ia)] [initt (rn)] [keeptangent] [exportfields (ia)] [smtype (in)] [debug (in)]

Parameters

nsteps (in)

Number of solution steps.

alpha (rn)

The \(\alpha\) parameter of the generalized midpoint rule.

deltat (rn)

Time step length. Exactly one of deltat, deltatfunction or prescribedtimes must be given; the analysis stops with “Time step not defined” if none is.

deltatfunction (in)

Number of a time function returning the time step length.

prescribedtimes (ra)

Explicit array of solution times.

[ptype (s)]

Problem formulation: up (the default, for compatibility) for the displacement-pressure formulation, tm for the thermo-mechanical one, or symbolic for the symbolic weak form. Any other value is rejected.

[lhsterms (ia)], [lhsdotterms (ia)], [rhsterms (ia)]

Numbers of the integrals contributing to the left-hand side, to the left-hand side time-derivative term, and to the right-hand side. All three are mandatory when ptype is symbolic, and unused otherwise.

[nvariables (in)], [nterms (in)], [nintegrals (in)]

Numbers of Variable, Term and Integral records that follow; needed for the symbolic formulation. See Variable records, Term records and Integral records.

[initt (rn)]

Initial time for the integration.

[keeptangent]

A flag; when present, the tangent is assembled once and reused in every step.

[exportfields (ia)]

Fields to export to a subsequent analysis; see Exporting fields to a subsequent analysis. Displacement and pressure fields are supported.

[smtype (in)]

Sparse matrix storage scheme. Default 0, the symmetric skyline.

[debug (in)]

A nonzero value turns on additional diagnostic output.