Go to the documentation of this file.
54 #include "uindirectPrimitivePatch.H"
70 const scalar level0Coeff,
71 const scalar sizeCoeff
74 return round(::
log(level0Coeff/sizeCoeff)/::
log(2));
83 const label gapLevelIncrement,
84 const scalar level0Coeff
93 const word& geomName = allGeometry.
names()[geomI];
95 if (surfacesDict.
found(geomName))
122 const word& geomName = allGeometry.
names()[geomI];
131 names[surfI] = geomName;
132 surfaces[surfI] = geomI;
139 const word scsFuncName =
140 shapeDict.
lookup(
"surfaceCellSizeFunction");
142 shapeDict.
subDict(scsFuncName +
"Coeffs");
144 const scalar surfaceCellSize =
153 globalMinLevel[surfI] = refLevel;
154 globalMaxLevel[surfI] = refLevel;
155 globalLevelIncr[surfI] = gapLevelIncrement;
162 if (shapeDict.
found(
"patchInfo"))
174 if (shapeDict.
found(
"regions"))
178 allGeometry[surfaces[surfI]].regions();
180 forAll(regionNames, regionI)
182 Info <<
"patchInfo regionName is "<< regionNames[regionI]<<
endl;
183 if (regionsDict.
found(regionNames[regionI]))
191 if (regionDict.
found(
"patchInfo"))
193 regionPatchInfo[surfI].insert
204 if (shapeDict.
found(
"regions"))
209 allGeometry[surfaces[surfI]].regions();
211 forAll(regionNames, regionI)
213 Info <<
"cellSize regionName is "<< regionNames[regionI]<<
endl;
214 if (shapeControlRegionsDict.
found(regionNames[regionI]))
217 shapeControlRegionsDict.
subDict
222 const word scsFuncName =
223 shapeControlRegionDict.
lookup
225 "surfaceCellSizeFunction"
230 scsFuncName +
"Coeffs"
233 const scalar surfaceCellSize =
236 scsDict.
lookup(
"surfaceCellSizeCoeff")
245 regionMinLevel[surfI].insert(regionI, refLevel);
246 regionMaxLevel[surfI].insert(regionI, refLevel);
247 regionLevelIncr[surfI].insert(regionI, 0);
261 regionOffset[surfI] = nRegions;
262 nRegions += allGeometry[surfaces[surfI]].regions().
size();
271 forAll(globalMinLevel, surfI)
273 label nRegions = allGeometry[surfaces[surfI]].regions().
size();
276 for (
label i = 0; i < nRegions; i++)
278 label globalRegionI = regionOffset[surfI] + i;
279 minLevel[globalRegionI] = globalMinLevel[surfI];
280 maxLevel[globalRegionI] = globalMaxLevel[surfI];
281 gapLevel[globalRegionI] =
282 maxLevel[globalRegionI]
283 + globalLevelIncr[surfI];
285 if (globalPatchInfo.
set(surfI))
290 globalPatchInfo[surfI].clone()
298 label globalRegionI = regionOffset[surfI] + iter.key();
300 minLevel[globalRegionI] = iter();
301 maxLevel[globalRegionI] = regionMaxLevel[surfI][iter.key()];
302 gapLevel[globalRegionI] =
303 maxLevel[globalRegionI]
304 + regionLevelIncr[surfI][iter.key()];
310 label globalRegionI = regionOffset[surfI] + iter.key();
311 patchInfo.
set(globalRegionI, iter()().clone());
341 forAll(regionNames, regionI)
349 <<
setw(10) <<
"Min Level"
350 <<
setw(10) <<
"Max Level"
351 <<
setw(10) <<
"Gap Level" <<
nl
352 <<
setw(maxLen) <<
"------"
353 <<
setw(10) <<
"---------"
354 <<
setw(10) <<
"---------"
365 forAll(regionNames, regionI)
369 Info<<
setw(maxLen) << regionNames[regionI]
409 compactZoneID.
insert(iter.key(), sz);
421 patchToCompactZone[patchI] = iter();
434 compactZones.
append(patchToCompactZone[pp.
index()]);
488 gatheredPoints.
clear();
490 faceList allFaces = ListListOps::combine<faceList>
495 gatheredFaces.
clear();
497 labelList allZones = ListListOps::combine<labelList>
502 gatheredZones.
clear();
510 Info<<
"surfZone " << iter() <<
" : " << surfZones[iter()].name()
528 ? runTime.
path()/
".."/outFileName
529 : runTime.
path()/outFileName
532 Info<<
"Writing merged surface to " << globalCasePath <<
endl;
534 sortedFace.
write(globalCasePath);
543 scalar mergeDist = mergeTol *
meshBb.mag();
546 <<
"Overall mesh bounding box : " <<
meshBb <<
nl
547 <<
"Relative tolerance : " << mergeTol <<
nl
548 <<
"Absolute matching distance : " << mergeDist <<
nl
560 if (mergeTol < writeTol)
563 <<
"Your current settings specify ASCII writing with "
565 <<
"Your merging tolerance (" << mergeTol
566 <<
") is finer than this." <<
nl
567 <<
"Change to binary writeFormat, "
568 <<
"or increase the writePrecision" <<
endl
569 <<
"or adjust the merge tolerance (mergeTol)."
607 Info<<
"Wrote mesh in = "
612 int main(
int argc,
char *argv[])
618 "check all surface geometry for quality"
624 "simplify the surface using snappyHexMesh starting from a boundBox"
629 "(patch0 .. patchN)",
630 "only triangulate selected patches (wildcards supported)"
636 "name of the file to save the simplified surface to"
763 <<
"Create mesh for time = "
783 Info<<
"Read mesh in = "
830 if (
isDir(decompDictFile))
832 decompDictFile = decompDictFile/
"decomposeParDict";
854 decomposeDict.
add(
"method",
"none");
855 decomposeDict.
add(
"numberOfSubdomains", 1);
888 meshRefinement::debug = debugLevel;
889 autoRefineDriver::debug = debugLevel;
890 autoSnapDriver::debug = debugLevel;
891 autoLayerDriver::debug = debugLevel;
958 Info<<
"Reading refinement surfaces." <<
endl;
977 "geometryToConformTo"
981 foamyHexMeshDict.
subDict(
"motionControl");
984 motionDict.
subDict(
"shapeControlFunctions");
987 const scalar defaultCellSize =
990 const scalar initialCellSize =
::pow(
meshPtr().V()[0], 1.0/3.0);
1004 initialCellSize/defaultCellSize
1014 refineDict.
subDict(
"refinementSurfaces"),
1019 Info<<
"Read refinement surfaces in = "
1035 forAll(surfaceGeometry, surfI)
1037 label geomI = surfaceGeometry[surfI];
1041 forAll(regNames, regionI)
1047 if (patchInfo.
set(globalRegionI))
1050 word(patchInfo[globalRegionI].
lookup(
"type"));
1054 patchTypes[geomI][regionI] = wallPolyPatch::typeName;
1081 Info<<
"Reading refinement shells." <<
endl;
1085 refineDict.
subDict(
"refinementRegions")
1087 Info<<
"Read refinement shells in = "
1091 Info<<
"Setting refinement level of surface to be consistent"
1092 <<
" with shells." <<
endl;
1094 Info<<
"Checked shell refinement in = "
1103 if (!limitDict.empty())
1105 Info<<
"Reading limit shells." <<
endl;
1110 if (!limitDict.empty())
1112 Info<<
"Read refinement shells in = "
1121 Info<<
"Reading features." <<
endl;
1125 refineDict.
lookup(
"features")
1127 Info<<
"Read features in = "
1136 <<
"Determining initial surface intersections" <<
nl
1137 <<
"-----------------------------------------" <<
nl
1151 Info<<
"Calculated surface intersections in = "
1208 <<
"Adding patches for surface regions" <<
nl
1209 <<
"----------------------------------" <<
nl
1217 <<
setw(6) <<
"Patch"
1218 <<
setw(20) <<
"Type"
1219 <<
setw(30) <<
"Region" <<
nl
1220 <<
setw(6) <<
"-----"
1221 <<
setw(20) <<
"----"
1228 forAll(surfaceGeometry, surfI)
1230 label geomI = surfaceGeometry[surfI];
1239 const word& fzName = surfaces.
surfZones()[surfI].faceZoneName();
1247 std::string tmps=regNames[i];
1248 regNames[i]=tmps.substr(0,tmps.find(
".stl"));
1254 if (surfacePatchInfo.
set(globalRegionI))
1259 surfacePatchInfo[globalRegionI]
1265 patchInfo.
set(
"type", wallPolyPatch::typeName);
1279 globalToMasterPatch[globalRegionI] = patchI;
1280 globalToSlavePatch[globalRegionI] = patchI;
1295 if (surfacePatchInfo.
set(globalRegionI))
1300 surfacePatchInfo[globalRegionI]
1306 patchInfo.
set(
"type", wallPolyPatch::typeName);
1320 globalToMasterPatch[globalRegionI] = patchI;
1324 const word slaveName = regNames[i] +
"_slave";
1327 if (surfacePatchInfo.
set(globalRegionI))
1332 surfacePatchInfo[globalRegionI]
1338 patchInfo.
set(
"type", wallPolyPatch::typeName);
1352 globalToSlavePatch[globalRegionI] = patchI;
1358 if (regNames.
size())
1360 Info <<
"regNames.size() is not ==0" <<
endl;
1366 pbm[globalToMasterPatch[globalRegionI]].
name(),
1367 pbm[globalToSlavePatch[globalRegionI]].
name(),
1375 Info<<
"Added patches in = "
1398 if (i != string::npos)
1400 word cz0 = fzName.substr(0, i);
1401 word cz1 = fzName.substr(i+4, fzName.size()-i+4);
1402 word slaveName(cz1 +
"_to_" + cz0);
1408 const word slaveName = fzName +
"_slave";
1414 if (faceZoneToPatches.
size())
1436 nFaces += pbm[adaptPatchIDs[i]].
size();
1443 const polyPatch& pp = pbm[adaptPatchIDs[i]];
1446 faceLabels[nFaces++] = pp.
start()+i;
1471 <<
"You have selected decomposition method "
1472 << decomposer.typeName
1473 <<
" which is not parallel aware." <<
endl
1474 <<
"Please select one that is (hierarchical, ptscotch)"
1488 const Switch wantRefine(meshDict.
lookup(
"castellatedMesh"));
1499 Info<<
"Not merging patch-faces of cell to preserve"
1500 <<
" (split)hex cell shape."
1514 globalToMasterPatch,
1519 if (!overwrite && !debugLevel)
1536 if (!keepPatches && !wantSnap && !wantLayers)
1549 Info<<
"Mesh refined in = "
1550 <<
timer.cpuTimeIncrement() <<
" s." <<
endl;
1560 globalToMasterPatch,
1564 if (!overwrite && !debugLevel)
1570 scalar curvature = refineParams.
curvature();
1584 if (!keepPatches && !wantLayers)
1597 Info<<
"Mesh snapped in = "
1598 <<
timer.cpuTimeIncrement() <<
" s." <<
endl;
1611 globalToMasterPatch,
1623 if (!overwrite && !debugLevel)
1653 Info<<
"Layers added in = "
1654 <<
timer.cpuTimeIncrement() <<
" s." <<
endl;
1661 Info<<
"Checking final mesh ..." <<
endl;
1672 Info<<
"Finished meshing with " << nErrors <<
" illegal faces"
1673 <<
" (concave, zero area or negative cell pyramid volume)"
1679 Info<<
"Finished meshing without any errors" <<
endl;
1684 if (surfaceSimplify)
1692 includePatches =
bMesh.patchSet
1703 if (!isA<processorPolyPatch>(patch))
1705 includePatches.
insert(patchI);
1715 "constant/triSurface/simplifiedSurface.stl"
1731 "internalCellCentres",
1740 cellCentres.
write();
1744 Info<<
"Finished meshing in = "
static void mapCombineGather(const List< commsStruct > &comms, Container &Values, const CombineOp &cop, const int tag, const label comm)
A keyword and a list of tokens is an 'entry'.
Starts timing CPU usage and return elapsed time from start.
Smanip< ios_base::fmtflags > setf(const ios_base::fmtflags flags)
vectorField pointField
pointField is a vectorField.
IOdictionary is derived from dictionary and IOobject to give the dictionary automatic IO functionalit...
virtual const pointField & points() const
Return raw points.
void extractSurface(const polyMesh &mesh, const Time &runTime, const labelHashSet &includePatches, const fileName &outFileName)
Field< scalar > scalarField
Specialisation of Field<T> for scalar.
IOobject defines the attributes of an object for which implicit objectRegistry management is supporte...
Xfer< List< T > > xfer()
Transfer contents to the Xfer container as a plain List.
A simple wrapper around bool so that it can be read as a word: true/false, on/off,...
void doLayers(const dictionary &shrinkDict, const dictionary &motionDict, const layerParameters &layerParams, const bool mergePatchFaces, const bool preBalance, decompositionMethod &decomposer, fvMeshDistribute &distributor)
Add layers according to the dictionary settings.
Class to control time during OpenFOAM simulations that is also the top-level objectRegistry.
const labelList & maxLevel() const
From global region number to refinement level.
faceZoneType
What to do with faceZone faces.
A class for handling words, derived from string.
static void addFaceZones(meshRefinement &meshRefiner, const refinementParameters &refineParams, const HashTable< Pair< word > > &faceZoneToPatches)
Helper: add faceZones and patches.
A class for handling file names.
T returnReduce(const T &Value, const BinaryOp &bop, const int tag=Pstream::msgType(), const label comm=UPstream::worldComm)
const keyType & keyword() const
Return keyword.
static void addOption(const word &opt, const string ¶m="", const string &usage="")
Add to an option to validOptions with usage information.
static word defaultRegion
Return the default region name.
double cpuTimeIncrement() const
Return CPU time (in seconds) since last call to cpuTimeIncrement()
#define forAll(list, i)
Loop across all elements in list.
bool readIfPresent(const word &, T &, bool recursive=false, bool patternMatch=true) const
Find an entry if present, and assign to T.
static autoPtr< decompositionMethod > New(const dictionary &decompositionDict)
Return a reference to the selected decomposition method.
const labelList & surfaces() const
scalar planarAngle() const
Angle when two intersections are considered to be planar.
IOstream::streamFormat writeFormat() const
Default write format.
static label nProcs(const label communicator=0)
Number of processes in parallel run.
static writeType writeLevel()
Get/set write level.
void printMeshInfo(const bool, const string &) const
Print some mesh stats.
label addFaceZone(const word &fzName, const word &masterPatch, const word &slavePatch, const surfaceZonesInfo::faceZoneType &fzType)
Add/lookup faceZone and update information. Return index of.
label checkTopology(const bool report) const
All topological checks. Return number of failed checks.
static bool & parRun()
Is this a parallel run?
static IOobject selectIO(const IOobject &, const fileName &)
Helper: return IOobject with optionally absolute path provided.
List< wordRe > wordReList
A List of wordRe (word or regular expression)
ITstream & lookup(const word &, bool recursive=false, bool patternMatch=true) const
Find and return an entry data stream.
static void addBoolOption(const word &opt, const string &usage="")
Add to a bool option to validOptions with usage information.
T lookupOrDefault(const word &, const T &, bool recursive=false, bool patternMatch=true) const
Find and return a T,.
const functionObjectList & functionObjects() const
Return the list of function objects.
bool insert(const Key &, const T &newElmt)
Insert a new hashedEntry.
label checkGeometry(const polyMesh &mesh, const bool allGeometry, const autoPtr< surfaceWriter > &)
static const NamedEnum< IOoutputType, 1 > IOoutputTypeNames
virtual bool write() const
Write using setting from DB.
static labelList getNamedSurfaces(const PtrList< surfaceZonesInfo > &surfList)
Get indices of named surfaces (surfaces with faceZoneName)
static const NamedEnum< IOwriteType, 4 > IOwriteTypeNames
const polyBoundaryMesh & boundaryMesh() const
Return boundary mesh.
Ostream & endl(Ostream &os)
Add newline and flush stream.
void writeStats(const List< wordList > &, Ostream &) const
Write some stats.
A HashTable with keys but without contents.
const fvMesh & mesh() const
Reference to mesh.
List< treeBoundBox > meshBb(1, treeBoundBox(boundBox(coarseMesh.points(), false)).extend(rndGen, 1e-3))
const labelList & gapLevel() const
From global region number to small gap refinement level.
faceList mergePatchFaces(const List< DynList< label > > &pfcs, const pointField &polyPoints)
Mesh consisting of general polyhedral cells.
An identifier for a surface zone on a meshed surface.
static const NamedEnum< IOdebugType, 5 > IOdebugTypeNames
wordList patchTypes(nPatches)
forAllConstIter(PtrDictionary< phaseModel >, mixture.phases(), phase)
const faceZoneMesh & faceZones() const
Return face zone mesh.
bool set(const Key &, const T &newElmt, bool protect)
Assign a new hashedEntry to a possibly already existing key.
autoPtr< globalIndex > mergePoints(labelList &pointToGlobal, labelList &uniquePoints) const
Helper for merging (collocated!) mesh point data.
void inplaceRenumber(const labelUList &oldToNew, ListType &)
Inplace renumber the values of a list.
const word dictName("particleTrackDict")
static void write(const fileName &, const MeshedSurface< Face > &)
Write to file.
Simple container to keep together snap specific information.
virtual bool parallelAware() const =0
Is method parallel aware (i.e. does it synchronize domains across.
const PtrList< surfaceZonesInfo > & surfZones() const
bool checkParallelSync(const bool report=false) const
Check whether all procs have all patches and in same order. Return.
Encapsulates queries for volume refinement ('refine all cells within shell').
bool set(const label) const
Is element set.
word timeName() const
Replacement for Time::timeName() : return oldInstance (if.
const wordList & names() const
Names of surfaces.
intWM_LABEL_SIZE_t label
A label is an int32_t or int64_t as specified by the pre-processor macro WM_LABEL_SIZE.
bool found(const word &, bool recursive=false, bool patternMatch=true) const
Search dictionary for given keyword.
Pre-declare SubField and related Field type.
static void checkCoupledFaceZones(const polyMesh &)
Helper function: check that face zones are synced.
const word & system() const
Return system name.
label maxLocalCells() const
Per processor max number of cells.
virtual void off()
Switch the function objects off.
A surface geometry mesh, in which the surface zone information is conveyed by the 'zoneId' associated...
A patch is a list of labels that address the faces in the global face list.
label sizeCoeffToRefinement(const scalar level0Coeff, const scalar sizeCoeff)
Base class of (analytical or triangulated) surface. Encapsulates all the search routines....
labelList meshedPatches() const
Get patchIDs for patches added in addMeshedPatch.
void set(T *)
Set pointer to that given.
const labelList & minLevel() const
From global region number to refinement level.
autoPtr< refinementSurfaces > createRefinementSurfaces(const searchableSurfaces &allGeometry, const dictionary &surfacesDict, const dictionary &shapeControlDict, const label gapLevelIncrement, const scalar level0Coeff)
Istream and Ostream manipulators taking arguments.
Simple container to keep together refinement specific information.
bool erase(const iterator &)
Erase a hashedEntry specified by given iterator.
A templated 1D list of pointers to objects of type <T>, where the size of the array is known and used...
graph_traits< Graph >::vertices_size_type size_type
scalar curvature() const
Curvature.
dimensionedScalar pow(const dimensionedScalar &ds, const dimensionedScalar &expt)
Simple container to keep together layer specific information.
double elapsedCpuTime() const
Return CPU time (in seconds) from the start.
T optionLookupOrDefault(const word &opt, const T &deflt) const
Read a value from the named option if present.
A list of keyword definitions, which are a keyword followed by any number of values (e....
label size() const
Return number of elements in table.
static int readFlags(const Enum &namedEnum, const wordList &)
Helper: convert wordList into bit pattern using provided.
label globalRegion(const label surfI, const label regionI) const
From surface and region on surface to global region.
dimensionedScalar log(const dimensionedScalar &ds)
Abstract base class for decomposition.
Base class for graphics format writing. Entry points are.
Mesh data needed to do the Finite Volume discretisation.
bool isDir(const fileName &)
Does the name exist as a DIRECTORY in the file system?
Omanip< int > setw(const int i)
scalar getMergeDistance(const polyMesh &mesh, const scalar mergeTol)
const double e
Elementary charge.
virtual const dictionary & dict() const =0
Return dictionary if this entry is a dictionary.
label start() const
Return start label of this patch in the polyMesh face list.
const List< wordList > & regionNames() const
bool handleSnapProblems() const
DynamicList< T, SizeInc, SizeMult, SizeDiv > & append(const T &)
Append an element at the end of the list.
const PtrList< dictionary > & patchInfo() const
From global region number to patch type.
errorManipArg< error, int > exit(error &err, const int errNo=1)
static int myProcNo(const label communicator=0)
Number of this process (starting from masterNo() = 0)
static bool master(const label communicator=0)
Am I the master process.
dimensioned< Type > max(const dimensioned< Type > &, const dimensioned< Type > &)
const boundBox & bounds() const
Return mesh bounding box.
All to do with adding layers.
void setSize(const label)
Reset size of List.
An auto-pointer similar to the STL auto_ptr but with automatic casting to a reference to the type and...
const vectorField & cellCentres() const
const entry * lookupEntryPtr(const word &, bool recursive, bool patternMatch) const
Find and return an entry data stream pointer if present.
virtual const faceList & faces() const
Return raw faces.
#define FatalErrorInFunction
Report an error message using Foam::FatalError.
static void gatherList(const List< commsStruct > &comms, List< T > &Values, const int tag, const label comm)
Gather data but keep individual values separate.
All to do with snapping to surface.
Xfer< T > xferMove(T &)
Construct by transferring the contents of the arg.
fileName path() const
Return path.
static void mapCombineScatter(const List< commsStruct > &comms, Container &Values, const int tag, const label comm)
Scatter data. Reverse of combineGather.
bool readScalar(const char *buf, doubleScalar &s)
Read whole of buf as a scalar. Return true if succesful.
static unsigned int defaultPrecision()
Return the default precision.
Encapsulates queries for features.
static bool checkMesh(const bool report, const polyMesh &mesh, const dictionary &dict, labelHashSet &wrongFaces)
Check mesh with mesh settings in dict. Collects incorrect faces.
static word timeName(const scalar, const int precision=precision_)
Return time name of given scalar time.
A 1D array of objects of type <T>, where the size of the vector is known and used for subscript bound...
Container for searchableSurfaces.
const word & constant() const
Return constant name.
Implements a timeout mechanism via sigalarm.
void doRefine(const dictionary &refineDict, const refinementParameters &refineParams, const snapParameters &snapParams, const bool prepareForSnapping, const bool mergePatchFaces, const dictionary &motionDict)
Do all the refinement.
Helper class which maintains intersections of (changing) mesh with (static) surfaces.
autoPtr< dictionary > clone() const
Construct and return clone.
dictionary subOrEmptyDict(const word &, const bool mustRead=false) const
Find and return a sub-dictionary as a copy, or.
bool write() const
Write mesh and all data.
void clear()
Clear the list, i.e. set size to zero.
label size() const
Return the number of elements in the PtrList.
bool insert(const Key &key)
Insert a new entry.
label addMeshedPatch(const word &name, const dictionary &)
Add patch originating from meshing. Update meshedPatches_.
bool optionFound(const word &opt) const
Return true if the named option is found.
void setMinLevelFields(const shellSurfaces &shells)
Calculate minLevelFields.
static outputType outputLevel()
Get/set output level.
A bounding box defined in terms of the points at its extremities.
const Time & time() const
Return the top-level database.
const List< Face > & localFaces() const
Return patch faces addressing into local point list.
A List with indirect addressing.
int main(int argc, char *argv[])
void updateIntersections(const labelList &changedFaces)
Find any intersection of surface. Store in surfaceIndex_.
wordList toc() const
Return the table of contents.
const wordList & names() const
void size(const label)
Override size to be inconsistent with allocated storage.
const globalMeshData & globalData() const
Return parallel info.
const Map< label > & meshPointMap() const
Mesh point map. Given the global point index find its.
void doSnap(const dictionary &snapDict, const dictionary &motionDict, const bool mergePatchFaces, const scalar featureCos, const scalar planarAngle, const snapParameters &snapParams)
labelList addCellZonesToMesh(polyMesh &) const
Add cellZones to mesh. Return indices of cellZones (or -1)
bool processorCase() const
Return true if this is a processor case.
const labelList & meshPoints() const
Return labelList of mesh points in patch.
const dictionary & subDict(const word &) const
Find and return a sub-dictionary.
Foam::argList args(argc, argv)
Container for data on surfaces used for surface-driven refinement. Contains all the data about the le...
label checkGeometry(const scalar maxRatio, const scalar tolerance, const autoPtr< writer< scalar > > &setWriter, const scalar minQuality, const bool report) const
All geometric checks. Return number of failed checks.
bool optionReadIfPresent(const word &opt, T &) const
Read a value from the named option if present.
const word & name() const
Return name.
Sends/receives parts of mesh+fvfields to neighbouring processors. Used in load balancing.
label index() const
Return the index of this patch in the boundaryMesh.
IOobject dictIO(dictName, runTime.constant(), mesh, IOobject::MUST_READ_IF_MODIFIED, IOobject::NO_WRITE)
word name(const complex &)
Return a string representation of a complex.
bool getFaceZoneInfo(const word &fzName, label &masterPatchID, label &slavePatchID, surfaceZonesInfo::faceZoneType &fzType) const
Lookup faceZone information. Return false if no information.
bool add(entry *, bool mergeEntry=false)
Add a new entry.
IStringStream optionLookup(const word &opt) const
Return an IStringStream from the named option.
void writeMesh(const string &msg, const meshRefinement &meshRefiner, const meshRefinement::debugType debugLevel, const meshRefinement::writeType writeLevel)
A list of faces which address into the list of points.
stressControl lookup("compactNormalStress") >> compactNormalStress
static labelList addCellZonesToMesh(const PtrList< surfaceZonesInfo > &surfList, const labelList &namedSurfaces, polyMesh &mesh)
void set(entry *)
Assign a new entry, overwrite any existing entry.