61#ifndef hexMeshSmootherMotionSolver_H
62#define hexMeshSmootherMotionSolver_H
79class hexMeshSmootherMotionSolver
102 autoPtr<pointSmoother> pointSmoother_;
105 const label nPointSmootherIter_;
130 const autoPtr<Function1<scalar>> snapScale_;
134 const bitSet isMasterPoint_;
137 const autoPtr<indirectPrimitivePatch> bnd0Ptr_;
147 static autoPtr<indirectPrimitivePatch> makePatch
149 const polyMesh&
mesh,
158 const pointField& currentPoints,
159 const vectorField& fCtrs,
160 const vectorField& fAreas,
161 const vectorField& cellCtrs,
163 labelHashSet& markedFaces,
169 void constrainDisplacement(pointField&
points)
const;
174 const scalarList& relaxationFactors,
175 const bitSet& pointsToRelax,
176 const pointField& initialPoints,
177 const pointField& wantedPoints,
178 pointField& relaxedPoints,
179 labelList& relaxationLevel
181 label countPos(
const labelList& elems)
const;
182 labelList countZeroOrPos(
const label size,
const labelList& lst)
const;
185 void select(
const labelUList&,
const label val, bitSet& isVal)
const;
190 const pointField& initialPoints,
191 pointField& newPoints
193 void featLaplaceSmooth
195 const indirectPrimitivePatch&
pp,
196 const pointField& initialPoints,
197 pointField& newPoints
200 void snapBoundaryPoints
203 const pointField& initialPoints,
204 pointField& newPoints
208 void emptyCorrectPoints(pointVectorField& pointDisplacement)
const;
220 hexMeshSmootherMotionSolver
227 hexMeshSmootherMotionSolver
229 const polyMesh&
mesh,
230 const IOdictionary&
dict,
231 const pointVectorField& pointDisplacement,
237 virtual ~hexMeshSmootherMotionSolver();
243 virtual tmp<pointField> curPoints()
const;
246 virtual void solve();
uindirectPrimitivePatch pp(UIndirectList< face >(mesh.faces(), faceLabels), mesh.points())
Virtual base class for displacement motion solver.
Abstract base class for point smoothing methods. Handles parallel communication via reset and average...
const labelIOList & zoneIDs
List< bool > select(const label n, const labelUList &locations)
Construct a selection list of bools (all false) with the given pre-size, subsequently add specified l...
List< label > labelList
A List of labels.
vectorField pointField
pointField is a vectorField.
List< scalar > scalarList
List of scalar.
const scalarField & cellVols
#define TypeName(TypeNameString)
Declare a ClassName() with extra virtual type info.
pointField points0(pointIOField(IOobject("points", mesh.time().constant(), polyMesh::meshSubDir, mesh, IOobject::MUST_READ, IOobject::NO_WRITE, IOobject::NO_REGISTER)))