54Foam::displacementComponentLaplacianFvMotionSolver::
55displacementComponentLaplacianFvMotionSolver
67 "cellDisplacement" + cmptName_,
75 cellMotionBoundaryTypes<scalar>(pointDisplacement_.boundaryField())
77 pointLocation_(nullptr),
80 coeffDict().
found(
"interpolation")
90 coeffDict().
found(
"frozenPointsZone")
91 ? fvMesh_.pointZones().findZoneID
93 coeffDict().get<
word>(
"frozenPointsZone")
118 Info<<
"displacementComponentLaplacianFvMotionSolver :"
119 <<
" Read pointVectorField "
120 << pointLocation_().name()
121 <<
" to be used for boundary conditions on points."
123 <<
"Boundary conditions:"
124 << pointLocation_().boundaryField().types() <<
endl;
142 interpolationPtr_->interpolate
152 Info<<
"displacementComponentLaplacianFvMotionSolver : applying "
153 <<
" boundary conditions on " << pointLocation_().name()
154 <<
" to new point location."
160 pointLocation_().primitiveFieldRef() = fvMesh_.points();
162 pointLocation_().primitiveFieldRef().replace
165 points0_ + pointDisplacement_.primitiveField()
168 pointLocation_().correctBoundaryConditions();
171 if (frozenPointsZone_ != -1)
173 const pointZone& pz = fvMesh_.pointZones()[frozenPointsZone_];
177 label pointi = pz[i];
179 pointLocation_()[pointi][cmpt_] = points0_[pointi];
195 points0_ + pointDisplacement_.primitiveField()
199 if (frozenPointsZone_ != -1)
201 const pointZone& pz = fvMesh_.pointZones()[frozenPointsZone_];
205 label pointi = pz[i];
207 curPoints[pointi][cmpt_] = points0_[pointi];
211 twoDCorrectPoints(curPoints);
222 movePoints(fvMesh_.points());
224 diffusivityPtr_->correct();
225 pointDisplacement_.boundaryFieldRef().updateCoeffs();
236 *diffusivityPtr_->operator()(),
238 "laplacian(diffusivity,cellDisplacement)"
259 diffusivityPtr_.reset(
nullptr);
263 coeffDict().
lookup(
"diffusivity")
Macros for easy insertion into run-time selection tables.
#define addToRunTimeSelectionTable(baseType, thisType, argNames)
Add to construction table with typeName as the key.
void replace(const direction, const UList< cmptType > &)
Replace a component field of the field.
IOdictionary is derived from dictionary and IOobject to give the dictionary automatic IO functionalit...
Defines the attributes of an object for which implicit objectRegistry management is supported,...
static autoPtr< Time > New()
Construct (dummy) Time - no functionObjects or libraries.
static word timeName(const scalar t, const int precision=precision_)
Virtual base class for displacement motion solver.
A list of keyword definitions, which are a keyword followed by a number of values (eg,...
T getOrDefault(const word &keyword, const T &deflt, enum keyType::option matchOpt=keyType::REGEX) const
Mesh motion solver for an fvMesh. Based on solving the cell-centre Laplacian for the given component ...
virtual tmp< pointField > curPoints() const
Return point location obtained from the current motion field.
~displacementComponentLaplacianFvMotionSolver()
Destructor.
virtual void solve()
Solve for motion.
A special matrix type and solver, designed for finite volume solutions of scalar equations....
SolverPerformance< Type > solveSegregatedOrCoupled(const dictionary &)
Solve segregated or coupled returning the solution statistics.
const dictionary & solverDict() const
Return the solver dictionary taking into account finalIteration.
const Time & time() const
Return the top-level database.
Base class for fvMesh based motionSolvers.
const fvMesh & fvMesh_
The fvMesh to be moved.
void constrain(fvMatrix< Type > &eqn)
Apply constraints to equation.
void correct(GeometricField< Type, fvPatchField, volMesh > &field)
Apply correction to field.
Class containing mesh-to-mesh mapping information after a change in polyMesh topology.
Abstract base class for cell-centre mesh motion diffusivity.
Base class for interpolation of cell displacement fields, generated by fvMotionSolvers,...
void updateMesh()
Update for new mesh topology.
Virtual base class for mesh motion solver.
const dictionary & coeffDict() const
Const access to the coefficients dictionary.
Mesh consisting of general polyhedral cells.
Lookup type of boundary radiation properties.
A class for managing temporary objects.
A class for handling words, derived from Foam::string.
#define defineTypeNameAndDebug(Type, DebugSwitch)
Define the typeName and debug information.
Calculate the matrix for the laplacian of the field.
fvScalarMatrix TEqn(fvm::ddt(T)+fvm::div(phi, T) - fvm::laplacian(alphaEff, T)==radiation->ST(rhoCpRef, T)+fvOptions(T))
tmp< fvMatrix< Type > > laplacian(const GeometricField< Type, fvPatchField, volMesh > &vf, const word &name)
const dimensionSet dimViscosity
dimensioned< scalar > dimensionedScalar
Dimensioned scalar obtained from generic dimensioned type.
messageStream Info
Information stream (stdout output on master, null elsewhere)
vectorField pointField
pointField is a vectorField.
Ostream & endl(Ostream &os)
Add newline and flush stream.
tmp< DimensionedField< TypeR, GeoMesh > > New(const tmp< DimensionedField< TypeR, GeoMesh > > &tdf1, const word &name, const dimensionSet &dimensions)
Global function forwards to reuseTmpDimensionedField::New.
constexpr char nl
The newline '\n' character (0x0a)
#define forAll(list, i)
Loop across all elements in list.
conserve primitiveFieldRef()+