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
152 template<
class>
class PrimitiveField
165 template<
class>
class PrimitiveField
177 template<
class>
class PrimitiveField
186 template<
class AlphaRhoFieldType,
class ... AlphaRhoFieldTypes>
189 const AlphaRhoFieldType& alphaRhoField,
190 const AlphaRhoFieldTypes& ... alphaRhoFields
195 template<
class AlphaRhoFieldType>
284 const word& eqnFieldName
292 template<
class>
class PrimitiveField,
293 template<
class>
class PrimitiveEqnField
396 #include "LagrangianModelI.H"
#define DEFINE_LAGRANGIAN_MODEL_ADD_V_OR_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.
Generic GeometricField class.
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 void addSup(const LagrangianSubScalarField &deltaT, LagrangianEqn< scalar > &eqn) const
Add a fractional source term.
virtual wordList addSupFields() const
Return the list of fields for which the LagrangianModel adds.
const Time & time() const
Return time.
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.
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 &)
Update topology using the given map.
virtual void distribute(const polyDistributionMap &)
Redistribute or update using the given distribution map.
virtual bool addsSupToField(const word &fieldName, const word &eqnFieldName) const =0
Return true if the LagrangianModel adds a source term to the.
const objectRegistry & db() const
The database.
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 void preAddSup(const LagrangianSubScalarField &deltaT, const bool final)
Hook before source evaluation.
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 postAddSup(const LagrangianSubScalarField &deltaT, const bool final)
Add a source term to an equation.
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...
Class to control time during OpenFOAM simulations that is also the top-level objectRegistry.
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.
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(makeDimensionedPointFieldFunctions)