Dynamic mesh refinement/unrefinement based on volScalarField values. More...
Public Member Functions | |
TypeName ("refiner") | |
Runtime type information. More... | |
refiner (fvMesh &mesh, const dictionary &dict) | |
Construct from fvMesh and dictionary. More... | |
refiner (const refiner &)=delete | |
Disallow default bitwise copy construction. More... | |
virtual | ~refiner () |
Destructor. More... | |
const hexRef8 & | meshCutter () const |
Direct access to the refinement engine. More... | |
const PackedBoolList & | protectedCell () const |
Cells which should not be refined/unrefined. More... | |
PackedBoolList & | protectedCell () |
Cells which should not be refined/unrefined. More... | |
virtual bool | update () |
Update the mesh for both mesh motion and topology change. More... | |
virtual void | topoChange (const polyTopoChangeMap &) |
Update corresponding to the given map. More... | |
virtual void | mapMesh (const polyMeshMap &) |
Update from another mesh using the given map. More... | |
virtual void | distribute (const polyDistributionMap &) |
Update corresponding to the given distribution map. More... | |
virtual bool | write (const bool write=true) const |
Write using given format, version and compression. More... | |
void | operator= (const refiner &)=delete |
Disallow default bitwise assignment. More... | |
Public Member Functions inherited from fvMeshTopoChanger | |
TypeName ("fvMeshTopoChanger") | |
Runtime type information. More... | |
declareRunTimeSelectionTable (autoPtr, fvMeshTopoChanger, fvMesh,(fvMesh &mesh, const dictionary &dict),(mesh, dict)) | |
fvMeshTopoChanger (fvMesh &) | |
Construct from fvMesh. More... | |
fvMeshTopoChanger (const fvMeshTopoChanger &)=delete | |
Disallow default bitwise copy construction. More... | |
virtual | ~fvMeshTopoChanger () |
Destructor. More... | |
fvMesh & | mesh () |
Return the fvMesh. More... | |
const fvMesh & | mesh () const |
Return the fvMesh. More... | |
virtual bool | dynamic () const |
Is mesh dynamic, i.e. might it change? More... | |
void | operator= (const fvMeshTopoChanger &)=delete |
Disallow default bitwise assignment. More... | |
Additional Inherited Members | |
Static Public Member Functions inherited from fvMeshTopoChanger | |
static autoPtr< fvMeshTopoChanger > | New (fvMesh &, const dictionary &dict) |
Select, construct and return the fvMeshTopoChanger. More... | |
static autoPtr< fvMeshTopoChanger > | New (fvMesh &) |
Select, construct and return the fvMeshTopoChanger. More... | |
Dynamic mesh refinement/unrefinement based on volScalarField values.
Refinement can optionally be specified in a cellZone or in multiple regions, each controlled by a different volScalarField.
topoChanger { type refiner; libs ("libfvMeshTopoChangers.so"); // How often to refine refineInterval 1; // Field to be refinement on field alpha.water; // Refine field in between lower..upper lowerRefineLevel 0.001; upperRefineLevel 0.999; // Have slower than 2:1 refinement nBufferLayers 1; // Refine cells only up to maxRefinement levels maxRefinement 2; // Stop refinement if maxCells reached maxCells 200000; // Flux field and corresponding velocity field. Fluxes on changed // faces get recalculated by interpolating the velocity. Use 'none' // on surfaceScalarFields that do not need to be reinterpolated. correctFluxes ( (phi none) (nHatf none) (rhoPhi none) (alphaPhi.water none) (ghf none) ); // Write the refinement level as a volScalarField dumpLevel true; }
Example of single field based refinement in two regions:
topoChanger { type refiner; // How often to refine refineInterval 1; refinementRegions { region1 { cellZone refinementRegion1; // Field to be refinement on field alpha.water; // Refine field in between lower..upper lowerRefineLevel 0.001; upperRefineLevel 0.999; // Refine cells only up to maxRefinement levels maxRefinement 1; // If value < unrefineLevel unrefine unrefineLevel 10; } region2 { cellZone refinementRegion2; // Field to be refinement on field alpha.water; // Refine field in between lower..upper lowerRefineLevel 0.001; upperRefineLevel 0.999; // Refine cells only up to maxRefinement levels maxRefinement 2; // If value < unrefineLevel unrefine unrefineLevel 10; } } // If value < unrefineLevel (default=great) unrefine // unrefineLevel 10; // Have slower than 2:1 refinement nBufferLayers 1; // Stop refinement if maxCells reached maxCells 200000; // Flux field and corresponding velocity field. Fluxes on changed // faces get recalculated by interpolating the velocity. Use 'none' // on surfaceScalarFields that do not need to be reinterpolated. correctFluxes ( (phi none) (nHatf none) (rhoPhi none) (alphaPhi.water none) (ghf none) ); // Write the refinement level as a volScalarField dumpLevel true; }
Definition at line 175 of file fvMeshTopoChangersRefiner.H.
refiner | ( | fvMesh & | mesh, |
const dictionary & | dict | ||
) |
Construct from fvMesh and dictionary.
Definition at line 1280 of file fvMeshTopoChangersRefiner.C.
References hexRef8::cellLevel(), primitiveMesh::cells(), PackedList< nBits >::clear(), Foam::endl(), f(), polyMesh::faceNeighbour(), polyMesh::faceOwner(), polyMesh::faces(), forAll, PackedList< nBits >::get(), Foam::Info, HashSet< Key, Hash >::insert(), Foam::max(), IOobject::name(), primitiveMesh::nCells(), primitiveMesh::nFaces(), primitiveMesh::nInternalFaces(), primitiveMesh::pointCells(), hexRef8::pointLevel(), Foam::returnReduce(), PackedBoolList::set(), List< T >::size(), syncTools::swapFaceList(), syncTools::syncFaceList(), and regIOobject::write().
|
virtual |
Destructor.
Definition at line 1475 of file fvMeshTopoChangersRefiner.C.
TypeName | ( | "refiner" | ) |
Runtime type information.
|
inline |
Direct access to the refinement engine.
Definition at line 358 of file fvMeshTopoChangersRefiner.H.
Referenced by refiner::update().
|
inline |
Cells which should not be refined/unrefined.
Definition at line 364 of file fvMeshTopoChangersRefiner.H.
|
inline |
Cells which should not be refined/unrefined.
Definition at line 370 of file fvMeshTopoChangersRefiner.H.
References refiner::distribute(), refiner::mapMesh(), refiner::operator=(), refiner::topoChange(), refiner::update(), and refiner::write().
|
virtual |
Update the mesh for both mesh motion and topology change.
Implements fvMeshTopoChanger.
Definition at line 1481 of file fvMeshTopoChangersRefiner.C.
References hexRef8::cellLevel(), forAll, forAllConstIter, PackedList< nBits >::get(), hexRef8::history(), dictionary::isDict(), Foam::max(), fvMeshTopoChanger::mesh(), refiner::meshCutter(), Foam::returnReduce(), List< T >::size(), dictionary::subDict(), fvMesh::time(), timeIndex, TimeState::timeIndex(), PackedBoolList::transfer(), and PackedBoolList::unset().
Referenced by refiner::protectedCell().
|
virtual |
Update corresponding to the given map.
Implements fvMeshTopoChanger.
Definition at line 1659 of file fvMeshTopoChangersRefiner.C.
References hexRef8::topoChange().
Referenced by refiner::protectedCell().
|
virtual |
Update from another mesh using the given map.
Implements fvMeshTopoChanger.
Definition at line 1666 of file fvMeshTopoChangersRefiner.C.
References refiner::distribute(), and NotImplemented.
Referenced by refiner::protectedCell().
|
virtual |
Update corresponding to the given distribution map.
Implements fvMeshTopoChanger.
Definition at line 1676 of file fvMeshTopoChangersRefiner.C.
References hexRef8::distribute().
Referenced by refiner::mapMesh(), and refiner::protectedCell().
Write using given format, version and compression.
Reimplemented from fvMeshTopoChanger.
Definition at line 1685 of file fvMeshTopoChangersRefiner.C.
References IOobject::AUTO_WRITE, hexRef8::cellLevel(), Foam::dimless, forAll, fvMeshTopoChanger::mesh(), IOobject::NO_READ, fvMesh::time(), timeName, Time::timeName(), regIOobject::write(), and hexRef8::write().
Referenced by refiner::protectedCell().
|
delete |
Disallow default bitwise assignment.
Referenced by refiner::protectedCell().