38 #ifndef interfaceTrackingFvMesh_H 39 #define interfaceTrackingFvMesh_H 74 wordList nonReflectingFreeSurfacePatches_;
77 wordList pointNormalsCorrectionPatches_;
97 Switch correctContactLineNormals_;
109 mutable std::unique_ptr<areaVectorField> UsPtr_;
113 mutable std::unique_ptr<vectorIOField> controlPointsPtr_;
117 mutable std::unique_ptr<labelList> motionPointsMaskPtr_;
120 mutable std::unique_ptr<vectorField> pointsDisplacementDirPtr_;
123 mutable std::unique_ptr<vectorField> facesDisplacementDirPtr_;
126 mutable std::unique_ptr<areaScalarField> fsNetPhiPtr_;
129 mutable std::unique_ptr<edgeScalarField> phisPtr_;
132 mutable std::unique_ptr<areaScalarField> surfactConcPtr_;
135 mutable std::unique_ptr<volScalarField> bulkSurfactConcPtr_;
138 mutable std::unique_ptr<areaScalarField> surfaceTensionPtr_;
141 mutable std::unique_ptr<surfactantProperties> surfactantPtr_;
144 mutable std::unique_ptr<areaScalarField> contactAnglePtr_;
155 void makeControlPoints();
158 void makeMotionPointsMask();
161 void makeDirections();
164 void makeFsNetPhi()
const;
170 void makeBulkSurfactConc()
const;
173 void makeSurfactConc()
const;
176 void makeSurfaceTension()
const;
179 void makeSurfactant()
const;
182 void makeContactAngle();
191 void initializeData();
194 void updateDisplacementDirections();
197 void initializeControlPointsPosition();
212 void smoothFreeSurfaceMesh();
215 void updateSurfaceFlux();
218 void updateSurfactantConcentration();
221 vector totalPressureForce()
const;
224 vector totalViscousForce()
const;
227 vector totalSurfaceTensionForce()
const;
230 scalar maxCourantNumber();
233 void updateProperties();
236 void correctContactLinePointNormals();
239 void correctPointDisplacement
248 TypeName(
"interfaceTrackingFvMesh");
276 virtual bool init(
const bool doInit);
302 return fsPatchIndex_;
308 return pureFreeSurface_;
314 return rigidFreeSurface_;
320 return rigidFreeSurface_;
326 return correctContactLineNormals_;
332 return correctContactLineNormals_;
392 return normalMotionDir_;
428 controlPointsPtr_.reset(
nullptr);
edgeScalarField & Phis()
Return free-surface fluid flux field.
Finite area mesh (used for 2-D non-Euclidian finite area method) defined using a patch of faces on a ...
vectorField & facesDisplacementDir()
Return reference to control points displacement direction field.
const areaScalarField & fsNetPhi() const
Return free-surface net flux.
tmp< scalarField > freeSurfacePressureJump()
Return free surface pressure jump.
bool normalMotionDir() const
Motion direction swithc.
vectorField & pointsDisplacementDir()
Return reference to point displacement direction field.
void updateUs()
Update free-surface velocity field.
A simple wrapper around bool so that it can be read as a word: true/false, on/off, yes/no, any/none. Also accepts 0/1 as a string and shortcuts t/f, y/n.
const volVectorField & U() const
Return constant reference to velocity field.
void correctUsBoundaryConditions()
Correct surface velocity boundary conditions.
faMesh & aMesh()
Return reference to finite area mesh.
virtual const pointField & points() const
Return raw points.
volScalarField & bulkSurfactantConcentration()
Return volume surfactant concentration field.
const label & fsPatchIndex() const
virtual bool init(const bool doInit)
Initialise all non-demand-driven data.
TypeName("interfaceTrackingFvMesh")
Runtime type information.
* ~interfaceTrackingFvMesh()
Destructor.
areaVectorField & Us()
Return free-surface velocity field.
const dimensionedScalar & sigma() const
Surface tension coefficient of pure free-surface.
vectorField & controlPoints()
Return control points.
virtual bool update()
Update the mesh for both mesh motion and topology change.
areaScalarField & surfactantConcentration()
Return free-surface surfactant concentration field.
Switch correctContactLineNormals() const noexcept
Correct contact line point normals.
A Vector of values with scalar precision, where scalar is float/double depending on the compilation f...
const volScalarField & p() const
Return constant reference to pressure field.
const surfaceScalarField & phi() const
Return constant reference to velocity field.
labelList & motionPointsMask()
Return reference to motion points mask field.
Switch pureFreeSurface() const noexcept
Pure free-surface.
const surfactantProperties & surfactant() const
Return surfactant properties.
void clearControlPoints()
Clear control points.
Mesh data needed to do the Finite Volume discretisation.
void writeVTKControlPoints()
Write VTK freeSurface control points.
tmp< scalarField > freeSurfaceSnGradUn()
Return free surface normal derivative of normal velocity comp.
Pointer management similar to std::unique_ptr, with some additional methods and type checking...
tmp< areaVectorField > surfaceTensionGrad()
Return surface tension gradient.
The dynamicMotionSolverFvMesh.
void writeVTK() const
Write VTK freeSurface mesh.
IOobject io("surfaceFilmProperties", mesh.time().constant(), mesh, IOobject::READ_IF_PRESENT, IOobject::NO_WRITE, IOobject::NO_REGISTER)
A class for managing temporary objects.
tmp< vectorField > freeSurfaceSnGradU()
Return free surface normal derivative of velocity.
Defines the attributes of an object for which implicit objectRegistry management is supported...
Switch rigidFreeSurface() const noexcept
Rigid free-surface.
areaScalarField & surfaceTension()
Return surface tension field.
The interfaceTrackingFvMesh.