67#ifndef displacementSmartPointSmoothingMotionSolver_H
68#define displacementSmartPointSmoothingMotionSolver_H
149 TypeName(
"displacementSmartPointSmoothing");
181 virtual void solve();
IOdictionary is derived from dictionary and IOobject to give the dictionary automatic IO functionalit...
Pointer management similar to std::unique_ptr, with some additional methods and type checking.
A list of keyword definitions, which are a keyword followed by a number of values (eg,...
Virtual base class for displacement motion solver.
pointVectorField & pointDisplacement() noexcept
Return reference to the point motion displacement field.
displacementMotionSolver(const displacementMotionSolver &)=delete
No copy construct.
Quality-based under-relaxation for run-time selectable point smoothing. WIP.
autoPtr< pointSmoother > pointSmoother_
Point smoothing method.
virtual tmp< pointField > curPoints() const
Return point location obtained from the current motion field.
labelHashSet facesToMove_
Set of the faces which are to be moved.
polyMeshGeometry meshGeometry_
Part-updatable mesh geometry.
autoPtr< pointSmoother > pointUntangler_
Point untangler method.
pointField relaxedPoints_
Relaxed point field.
bool relax()
Relax the points.
const scalar untangleQ_
Minimum allowed quality.
scalarList relaxationFactors_
Relaxation factors to use in each iteration.
void markAffectedFaces(const labelHashSet &changedFaces, labelHashSet &affectedFaces)
Mark affected faces.
dictionary meshQualityDict_
Mesh quality dictionary.
virtual ~displacementSmartPointSmoothingMotionSolver()=default
Destructor.
TypeName("displacementSmartPointSmoothing")
Runtime type information.
const label nPointSmootherIter_
Number of point smoother iterations per timestep.
const scalar minQ_
Minimum allowed quality.
void emptyCorrectPoints(pointVectorField &pointDisplacement)
Handle 2D & empty bcs. Assume in both cases the starting mesh.
virtual void setFacesToMove(const dictionary &)
Set all the faces to be moved.
displacementSmartPointSmoothingMotionSolver(const polyMesh &, const IOdictionary &)
Construct from a polyMesh and an IOdictionary.
virtual void solve()
Solve for motion.
const polyMesh & mesh() const
Return reference to mesh.
pointField & points0() noexcept
Return reference to the reference ('0') pointField.
Updateable mesh geometry and checking routines.
Mesh consisting of general polyhedral cells.
A class for managing temporary objects.
tmp< GeometricField< Type, faPatchField, areaMesh > > laplacian(const GeometricField< Type, faPatchField, areaMesh > &vf, const word &name)
HashSet< label, Hash< label > > labelHashSet
A HashSet of labels, uses label hasher.
GeometricField< vector, pointPatchField, pointMesh > pointVectorField
vectorIOField pointIOField
pointIOField is a vectorIOField.
vectorField pointField
pointField is a vectorField.
List< scalar > scalarList
List of scalar.
#define TypeName(TypeNameString)
Declare a ClassName() with extra virtual type info.