75 class fvMeshLduAddressing;
77 template<
class Type>
class fvMatrix;
131 mutable std::unique_ptr<surfaceScalarField>
phiPtr_;
205 const bool syncPar =
true 217 const bool syncPar =
true 228 const bool syncPar =
true 241 const bool syncPar =
true 253 const bool syncPar =
true 266 virtual bool init(
const bool doInit);
272 const bool validBoundary =
true 279 const bool validBoundary =
true 296 virtual bool hasDb()
const 302 virtual const objectRegistry&
thisDb()
const 310 const word&
name()
const 322 virtual const lduAddressing&
lduAddr()
const;
329 virtual label
comm()
const 453 const DimensionedField<scalar, volMesh>&
V()
const;
456 const DimensionedField<scalar, volMesh>&
V0()
const;
498 void clearOut(
const bool isMeshUpdate =
false);
536 const bool writeOnProc
540 virtual bool write(
const bool writeOnProc =
true)
const;
555 fvMesh::validComponents<sphericalTensor>()
const;
label comm() const noexcept
The communicator used for parallel communication.
std::unique_ptr< surfaceScalarField > phiPtr_
Face motion fluxes.
slicedVolVectorField * CPtr_
Cell centres.
void operator=(const fvMesh &)=delete
No copy assignment.
const surfaceVectorField & Sf() const
Return cell face area vectors.
void clearAddressing()
Clear topological data.
void removeFvBoundary()
Remove boundary patches. Warning: fvPatchFields hold ref to these fvPatches.
void clearMeshPhi()
Clear cell face motion fluxes.
const fvSchemes & schemes() const
Read-access to the fvSchemes controls.
virtual bool writeObject(IOstreamOption streamOpt, const bool writeOnProc) const
Write the underlying polyMesh and other data.
Specialisation of DimensionedField that holds a slice of a given field so that it acts as a Dimension...
Forwards and collection of common volume field types.
A list of keyword definitions, which are a keyword followed by a number of values (eg...
const surfaceVectorField & Cf() const
Return face centres as surfaceVectorField.
const word & name() const noexcept
Return the object name.
GeometricField< tensor, fvPatchField, volMesh > volTensorField
void clearOutLocal(const bool isMeshUpdate=false)
Clear local-only storage (geometry, addressing etc)
DimensionedField< scalar, volMesh > * V0Ptr_
Cell volumes old time level.
const surfaceScalarField & phi() const
Return cell face motion fluxes.
A traits class, which is primarily used for primitives and vector-space.
Abstract base class for meshes which provide LDU addressing for the construction of lduMatrix and LDU...
virtual bool movePoints()
Do what is necessary if the mesh has moved.
void storeOldVol(const scalarField &)
Preserve old volume(s)
const DimensionedField< scalar, volMesh > & V00() const
Return old-old-time cell volumes.
const fvSolution & solution() const
Read-access to the fvSolution controls.
fvBoundaryMesh BoundaryMesh
The boundary type associated with the mesh.
const cellList & cells() const
Forwards and collection of common point field types.
A simple container for options an IOstream can normally have.
Cell to surface interpolation scheme. Included in fvMesh.
DimensionedField< scalar, volMesh > & setV0()
Return old-time cell volumes.
const Time & time() const
Return the top-level database.
virtual void interpolate(volScalarField &) const
Interpolate interpolationCells only.
const DimensionedField< scalar, volMesh > & V() const
Return cell volumes.
fvSchemes(const fvSchemes &)=delete
No copy construct.
label curTimeIndex_
Current time index for cell volumes.
virtual const labelUList & lowerAddr() const =0
Return lower addressing.
Class to control time during OpenFOAM simulations that is also the top-level objectRegistry.
GeometricField< sphericalTensor, fvPatchField, volMesh > volSphericalTensorField
A class for managing references or pointers (no reference counting)
Class containing mesh-to-mesh mapping information after a change in polyMesh topology.
virtual const objectRegistry & thisDb() const
Return the object registry - resolve conflict polyMesh/lduMesh.
const labelUList & neighbour() const
Internal face neighbour.
fvMesh Mesh
The mesh type.
virtual const pointField & points() const
Return raw points.
void clearGeomNotOldVol()
Clear geometry but not the old-time cell volumes.
virtual ~fvMesh()
Destructor.
GeometricField< scalar, fvPatchField, volMesh > volScalarField
virtual label comm() const
Return communicator used for parallel communication.
tmp< DimensionedField< scalar, volMesh > > Vsc() const
Return sub-cycle cell volumes.
virtual void updateMesh(const mapPolyMesh &mpm)
Update mesh corresponding to the given map.
virtual readUpdateState readUpdate()
Update the mesh based on the mesh files saved in time.
const DimensionedField< scalar, volMesh > & V0() const
Return old-time cell volumes.
const Time & time() const noexcept
Return time registry.
virtual const labelUList & upperAddr() const =0
Return upper addressing.
pTraits< Type >::labelType validComponents() const
Return a labelType of valid component indicators.
bool operator!=(const fvMesh &rhs) const
Compares addresses.
virtual const lduAddressing & lduAddr() const
Return ldu addressing.
UPtrList< const lduInterface > lduInterfacePtrsList
Store lists of lduInterface as a UPtrList.
void clearGeom()
Clear local geometry.
fvSolution(const fvSolution &)=delete
No copy construct.
A special matrix type and solver, designed for finite volume solutions of scalar equations. Face addressing is used to make all matrix assembly and solution loops vectorise.
refPtr< surfaceScalarField > setPhi()
Return cell face motion fluxes, if any (can be nullptr)
virtual const faceList & faces() const
Return raw faces.
virtual SolverPerformance< scalar > solve(fvMatrix< scalar > &, const dictionary &) const
Solve returning the solution statistics given convergence tolerance. Use the given solver controls...
fvMesh(const fvMesh &)=delete
No copy construct.
virtual bool write(const bool writeOnProc=true) const
Write mesh using IO settings from time.
tmp< DimensionedField< scalar, volMesh > > Vsc0() const
Return sub-cycle old-time cell volumes.
DimensionedField< scalar, volMesh > * V00Ptr_
Cell volumes old-old time level.
bool operator==(const fvMesh &rhs) const
Compares addresses.
const surfaceScalarField & magSf() const
Return cell face area magnitudes.
Foam::fvMeshLduAddressing.
virtual bool hasDb() const
Return true if thisDb() is a valid DB.
tmp< surfaceVectorField > delta() const
Return face deltas as surfaceVectorField.
void addFvPatches(polyPatchList &plist, const bool validBoundary=true)
Add boundary patches. Constructor helper.
fvMeshLduAddressing * lduPtr_
const labelUList & owner() const
Internal face owner. Note bypassing virtual mechanism so.
surfaceScalarField * magSfPtr_
Mag face area vectors.
fvBoundaryMesh boundary_
Boundary mesh.
const fvSchemes * hasSchemes() const
Non-null if fvSchemes exists (can test as bool).
const word & name() const
Return reference to name.
virtual lduInterfacePtrsList interfaces() const
Return a list of pointers for each patch.
void clearOut()
Clear all geometry and addressing.
Selector class for finite volume solution solution. fvMesh is derived from fvSolution so that all fie...
A list of pointers to objects of type <T>, with allocation/deallocation management of the pointers...
Selector class for finite volume differencing schemes. fvMesh is derived from fvSchemes so that all f...
Macro definitions for declaring ClassName(), NamespaceName(), etc.
Mesh data needed to do the Finite Volume discretisation.
const fvSolution * hasSolution() const
Non-null if fvSolution exists (can test as bool).
virtual bool init(const bool doInit)
Initialise all non-demand-driven data.
Field with dimensions and associated with geometry type GeoMesh which is used to size the field and a...
slicedSurfaceVectorField * SfPtr_
Face area vectors.
void updateGeomNotOldVol()
Clear geometry like clearGeomNotOldVol but recreate any.
const objectRegistry & thisDb() const noexcept
Return the object registry.
const fvBoundaryMesh & boundary() const noexcept
Return reference to boundary mesh.
A class representing the concept of 0 (zero) that can be used to avoid manipulating objects known to ...
Field< vector > vectorField
Specialisation of Field<T> for vector.
virtual void updateGeom()
Update all geometric data. This gets redirected up from primitiveMesh level.
SlicedDimensionedField< scalar, volMesh > * VPtr_
Cell volumes.
Mesh consisting of general polyhedral cells.
const volVectorField & C() const
Return cell centres as volVectorField.
readUpdateState
Enumeration defining the state of the mesh after a read update.
IOobject io("surfaceFilmProperties", mesh.time().constant(), mesh, IOobject::READ_IF_PRESENT, IOobject::NO_WRITE, IOobject::NO_REGISTER)
A class for managing temporary objects.
Specialization of GeometricField which holds slices of given complete fields in a form that they act ...
Defines the attributes of an object for which implicit objectRegistry management is supported...
tmp< surfaceVectorField > unitSf() const
Return cell face unit normals.
slicedSurfaceVectorField * CfPtr_
Face centres.
virtual void mapFields(const mapPolyMesh &mpm)
Map all fields in time using given map.