36 #ifndef LagrangianModel_H
37 #define LagrangianModel_H
49 class polyTopoChangeMap;
51 class polyDistributionMap;
139 template<
class AlphaRhoFieldType,
class ... AlphaRhoFieldTypes>
142 const AlphaRhoFieldType& alphaRhoField,
143 const AlphaRhoFieldTypes& ... alphaRhoFields
148 template<
class AlphaRhoFieldType>
149 static word fieldName(
const AlphaRhoFieldType& alphaRhoField);
153 template<
class AlphaRhoFieldType,
class ... AlphaRhoFieldTypes>
156 const AlphaRhoFieldType& alphaRhoField,
157 const AlphaRhoFieldTypes& ... alphaRhoFields
162 template<
class AlphaRhoFieldType>
249 template<
class Type,
template<
class>
class PrimitiveField>
#define DEFINE_LAGRANGIAN_MODEL_ADD_M_FIELD_SUP(Type, nullArg)
#define DEFINE_LAGRANGIAN_MODEL_ADD_FIELD_SUP(Type, nullArg)
Field with dimensions and associated with geometry type GeoMesh which is used to size the field and a...
A 1D vector of objects of type <T> that resizes itself as necessary to accept the new objects.
An Istream is an abstract base class for all input systems (streams, files, token lists etc)....
This class stores the coefficients of a Lagrangian equation, and facilitates solving that equation an...
Class to hold element-group indices, and associate the group.
Class containing Lagrangian geometry and topology.
iNew(const word &name, const LagrangianMesh &mesh)
autoPtr< LagrangianModel > operator()(Istream &is) const
Base class for Lagrangian models.
virtual ~LagrangianModel()
Destructor.
virtual wordList addSupFields() const
Return the list of fields for which the LagrangianModel adds.
virtual void addSup(const LagrangianSubScalarField &deltaT, LagrangianSubScalarField &S) const
Add a fractional source term.
virtual void postConstruct()
Do post construction steps which require access to other models.
modification
Enumeration of the types of instantaneous modification.
void addSupType(const LagrangianSubScalarField &deltaT, const LagrangianSubSubField< Type > &field, LagrangianEqn< Type > &eqn) const
Add a source term to an equation.
virtual void preModify(const LagrangianMesh &mesh, DynamicList< elementModification > &elementModifications) const
Identify elements in the Lagrangian mesh which are to be.
virtual void correct()
Correct the LagrangianModel.
virtual bool addsSupToField(const word &) const
Return true if the LagrangianModel adds a source term to the.
declareRunTimeSelectionTable(autoPtr, LagrangianModel, dictionary,(const word &name, const LagrangianMesh &mesh, const dictionary &modelDict, const dictionary &stateDict),(name, mesh, modelDict, stateDict))
Declare run-time constructor selection table.
virtual void topoChange(const polyTopoChangeMap &)
Add a source term to an equation.
virtual void distribute(const polyDistributionMap &)
Redistribute or update using the given distribution map.
const objectRegistry & db() const
The database.
void operator=(const LagrangianModel &)=delete
Disallow default bitwise assignment.
TypeName("LagrangianModel")
Runtime type information.
virtual void mapMesh(const polyMeshMap &)
Update from another mesh using the given map.
autoPtr< LagrangianModel > clone() const
Clone.
virtual bool read(const dictionary &modelDict)
Read dictionary.
static word fieldsName(const AlphaRhoFieldType &alphaRhoField, const AlphaRhoFieldTypes &... alphaRhoFields)
Return the name of the product of the fields associated with a.
const LagrangianMesh & mesh() const
The mesh.
virtual bool write(const bool write) const
Write data.
LagrangianModel(const word &name, const LagrangianMesh &mesh)
Construct from components.
virtual LagrangianSubMesh modify(LagrangianMesh &mesh, const LagrangianSubMesh &modifiedMesh) const
Instantaneously modify and/or create and remove elements in the.
static word fieldName(const AlphaRhoFieldType &alphaRhoField, const AlphaRhoFieldTypes &... alphaRhoFields)
Return the name of the field associated with a source term.
const word & name() const
The source name.
LagrangianMesh::elementGroup< modification > elementModification
Class containing an element-index and a modification-enumeration.
virtual void calculate(const LagrangianSubScalarField &deltaT, const bool final)
Solve equations and/or update continually changing properties.
static autoPtr< LagrangianModel > New(const word &name, const LagrangianMesh &mesh, const dictionary &modelDict)
Selector.
Mesh that relates to a sub-section of a Lagrangian mesh. This is used to construct fields that relate...
An auto-pointer similar to the STL auto_ptr but with automatic casting to a reference to the type and...
A list of keywords followed by any number of values (e.g. words and numbers) or sub-dictionaries.
Registry of regIOobjects.
Class containing mesh-to-mesh mapping information after a mesh distribution where we send parts of me...
Class containing mesh-to-mesh mapping information.
Class containing mesh-to-mesh mapping information after a change in polyMesh topology.
Base class for models with state.
static dictionary stateDict(const word &name, const objectRegistry &db)
Construct and return the state dictionary for reading.
A class for handling words, derived from string.
#define NotImplemented
Issue a FatalErrorIn for a function not currently implemented.
tmp< fvMatrix< Type > > S(const Pair< tmp< volScalarField::Internal >> &, const VolField< Type > &)
intWM_LABEL_SIZE_t label
A label is an int32_t or int64_t as specified by the pre-processor macro WM_LABEL_SIZE.
FOR_ALL_FIELD_TYPES(makeFieldSourceTypedef)