writeFields.C
Go to the documentation of this file.
1 #include "writeFields.H"
2 #include "volFields.H"
3 #include "surfaceFields.H"
4 #include "polyMeshTools.H"
6 #include "syncTools.H"
7 #include "tetPointRef.H"
8 #include "regionSplit.H"
9 #include "wallDist.H"
10 
11 using namespace Foam;
12 
13 void maxFaceToCell
14 (
15  const scalarField& faceData,
16  volScalarField& cellData
17 )
18 {
19  const cellList& cells = cellData.mesh().cells();
20 
21  scalarField& cellFld = cellData.ref();
22 
23  cellFld = -GREAT;
24  forAll(cells, cellI)
25  {
26  const cell& cFaces = cells[cellI];
27  forAll(cFaces, i)
28  {
29  cellFld[cellI] = max(cellFld[cellI], faceData[cFaces[i]]);
30  }
31  }
32 
33  forAll(cellData.boundaryField(), patchI)
34  {
35  fvPatchScalarField& fvp = cellData.boundaryFieldRef()[patchI];
36 
37  fvp = fvp.patch().patchSlice(faceData);
38  }
39  cellData.correctBoundaryConditions();
40 }
41 
42 
43 void minFaceToCell
44 (
45  const scalarField& faceData,
46  volScalarField& cellData
47 )
48 {
49  const cellList& cells = cellData.mesh().cells();
50 
51  scalarField& cellFld = cellData.ref();
52 
53  cellFld = GREAT;
54  forAll(cells, cellI)
55  {
56  const cell& cFaces = cells[cellI];
57  forAll(cFaces, i)
58  {
59  cellFld[cellI] = min(cellFld[cellI], faceData[cFaces[i]]);
60  }
61  }
62 
63  forAll(cellData.boundaryField(), patchI)
64  {
65  fvPatchScalarField& fvp = cellData.boundaryFieldRef()[patchI];
66 
67  fvp = fvp.patch().patchSlice(faceData);
68  }
69  cellData.correctBoundaryConditions();
70 }
71 
72 
73 void minFaceToCell
74 (
75  const surfaceScalarField& faceData,
76  volScalarField& cellData,
77  const bool correctBoundaryConditions
78 )
79 {
80  scalarField& cellFld = cellData.ref();
81 
82  cellFld = GREAT;
83 
84  const labelUList& own = cellData.mesh().owner();
85  const labelUList& nei = cellData.mesh().neighbour();
86 
87  // Internal faces
88  forAll(own, facei)
89  {
90  cellFld[own[facei]] = min(cellFld[own[facei]], faceData[facei]);
91  cellFld[nei[facei]] = min(cellFld[nei[facei]], faceData[facei]);
92  }
93 
94  // Patch faces
95  forAll(faceData.boundaryField(), patchi)
96  {
97  const fvsPatchScalarField& fvp = faceData.boundaryField()[patchi];
98  const labelUList& fc = fvp.patch().faceCells();
99 
100  forAll(fc, i)
101  {
102  cellFld[fc[i]] = min(cellFld[fc[i]], fvp[i]);
103  }
104  }
105 
106  volScalarField::Boundary& bfld = cellData.boundaryFieldRef();
107 
108  forAll(bfld, patchi)
109  {
110  bfld[patchi] = faceData.boundaryField()[patchi];
111  }
113  {
114  cellData.correctBoundaryConditions();
115  }
116 }
117 
118 
120 (
121  const fvMesh& mesh,
122  const wordHashSet& selectedFields
123 )
124 {
125  if (selectedFields.empty())
126  {
127  return;
128  }
129 
130  Info<< "Writing fields with mesh quality parameters" << endl;
131 
132  if (selectedFields.found("nonOrthoAngle"))
133  {
134  //- Face based orthogonality
135  const scalarField faceOrthogonality
136  (
138  (
139  mesh,
140  mesh.faceAreas(),
141  mesh.cellCentres()
142  )
143  );
144 
145  //- Face based angle
146  const scalarField nonOrthoAngle
147  (
148  radToDeg
149  (
150  Foam::acos(min(scalar(1), faceOrthogonality))
151  )
152  );
153 
154  //- Cell field - max of either face
155  volScalarField cellNonOrthoAngle
156  (
157  IOobject
158  (
159  "nonOrthoAngle",
160  mesh.time().timeName(),
161  mesh,
164  false
165  ),
166  mesh,
168  calculatedFvPatchScalarField::typeName
169  );
170  //- Take max
171  maxFaceToCell(nonOrthoAngle, cellNonOrthoAngle);
172  Info<< " Writing non-orthogonality (angle) to "
173  << cellNonOrthoAngle.name() << endl;
174  cellNonOrthoAngle.write();
175  }
176 
177  if (selectedFields.found("faceWeight"))
178  {
179  volScalarField cellWeights
180  (
181  IOobject
182  (
183  "faceWeight",
184  mesh.time().timeName(),
185  mesh,
188  false
189  ),
190  mesh,
192  wordList // wanted bc types
193  (
194  mesh.boundary().size(),
195  calculatedFvPatchScalarField::typeName
196  ),
197  mesh.weights().boundaryField().types() // current bc types
198  );
199  //- Take min
200  minFaceToCell(mesh.weights(), cellWeights, false);
201  Info<< " Writing face interpolation weights (0..0.5) to "
202  << cellWeights.name() << endl;
203  cellWeights.write();
204  }
205 
206 
207  // Skewness
208  // ~~~~~~~~
209 
210  if (selectedFields.found("skewness"))
211  {
212  //- Face based skewness
213  const scalarField faceSkewness
214  (
216  (
217  mesh,
218  mesh.points(),
219  mesh.faceCentres(),
220  mesh.faceAreas(),
221  mesh.cellCentres()
222  )
223  );
224 
225  //- Cell field - max of either face
226  volScalarField cellSkewness
227  (
228  IOobject
229  (
230  "skewness",
231  mesh.time().timeName(),
232  mesh,
235  false
236  ),
237  mesh,
239  calculatedFvPatchScalarField::typeName
240  );
241  //- Take max
242  maxFaceToCell(faceSkewness, cellSkewness);
243  Info<< " Writing face skewness to " << cellSkewness.name() << endl;
244  cellSkewness.write();
245  }
246 
247 
248  // cellDeterminant
249  // ~~~~~~~~~~~~~~~
250 
251  if (selectedFields.found("cellDeterminant"))
252  {
253  volScalarField cellDeterminant
254  (
255  IOobject
256  (
257  "cellDeterminant",
258  mesh.time().timeName(),
259  mesh,
262  false
263  ),
264  mesh,
266  zeroGradientFvPatchScalarField::typeName
267  );
268  cellDeterminant.primitiveFieldRef() =
270  (
271  mesh,
272  mesh.geometricD(),
273  mesh.faceAreas(),
275  );
276  cellDeterminant.correctBoundaryConditions();
277  Info<< " Writing cell determinant to "
278  << cellDeterminant.name() << endl;
279  cellDeterminant.write();
280  }
281 
282 
283  // Aspect ratio
284  // ~~~~~~~~~~~~
285 
286  if (selectedFields.found("aspectRatio"))
287  {
288  volScalarField aspectRatio
289  (
290  IOobject
291  (
292  "aspectRatio",
293  mesh.time().timeName(),
294  mesh,
297  false
298  ),
299  mesh,
301  zeroGradientFvPatchScalarField::typeName
302  );
303 
304 
305  scalarField cellOpenness;
307  (
308  mesh,
309  mesh.geometricD(),
310  mesh.faceAreas(),
311  mesh.cellVolumes(),
312  cellOpenness,
313  aspectRatio.ref()
314  );
315 
316  aspectRatio.correctBoundaryConditions();
317  Info<< " Writing aspect ratio to " << aspectRatio.name() << endl;
318  aspectRatio.write();
319  }
320 
321 
322  // cell type
323  // ~~~~~~~~~
324 
325  if (selectedFields.found("cellShapes"))
326  {
327  volScalarField shape
328  (
329  IOobject
330  (
331  "cellShapes",
332  mesh.time().timeName(),
333  mesh,
336  false
337  ),
338  mesh,
340  zeroGradientFvPatchScalarField::typeName
341  );
343  forAll(cellShapes, cellI)
344  {
345  const cellModel& model = cellShapes[cellI].model();
346  shape[cellI] = model.index();
347  }
348  shape.correctBoundaryConditions();
349  Info<< " Writing cell shape (hex, tet etc.) to " << shape.name()
350  << endl;
351  shape.write();
352  }
353 
354  if (selectedFields.found("cellVolume"))
355  {
357  (
358  IOobject
359  (
360  "cellVolume",
361  mesh.time().timeName(),
362  mesh,
365  false
366  ),
367  mesh,
369  calculatedFvPatchScalarField::typeName
370  );
371  V.ref() = mesh.V();
372  Info<< " Writing cell volume to " << V.name() << endl;
373  V.write();
374  }
375 
376  if (selectedFields.found("cellVolumeRatio"))
377  {
378  const scalarField faceVolumeRatio
379  (
381  (
382  mesh,
383  mesh.V()
384  )
385  );
386 
387  volScalarField cellVolumeRatio
388  (
389  IOobject
390  (
391  "cellVolumeRatio",
392  mesh.time().timeName(),
393  mesh,
396  false
397  ),
398  mesh,
400  calculatedFvPatchScalarField::typeName
401  );
402  //- Take min
403  minFaceToCell(faceVolumeRatio, cellVolumeRatio);
404  Info<< " Writing cell volume ratio to "
405  << cellVolumeRatio.name() << endl;
406  cellVolumeRatio.write();
407  }
408 
409  // minTetVolume
410  if (selectedFields.found("minTetVolume"))
411  {
412  volScalarField minTetVolume
413  (
414  IOobject
415  (
416  "minTetVolume",
417  mesh.time().timeName(),
418  mesh,
421  false
422  ),
423  mesh,
424  dimensionedScalar("minTetVolume", dimless, GREAT),
425  zeroGradientFvPatchScalarField::typeName
426  );
427 
428 
429  const labelList& own = mesh.faceOwner();
430  const labelList& nei = mesh.faceNeighbour();
431  const pointField& p = mesh.points();
432  forAll(own, facei)
433  {
434  const face& f = mesh.faces()[facei];
435  const point& fc = mesh.faceCentres()[facei];
436 
437  {
438  const point& ownCc = mesh.cellCentres()[own[facei]];
439  scalar& ownVol = minTetVolume[own[facei]];
440  forAll(f, fp)
441  {
442  scalar tetQual = tetPointRef
443  (
444  p[f[fp]],
445  p[f.nextLabel(fp)],
446  ownCc,
447  fc
448  ).quality();
449  ownVol = min(ownVol, tetQual);
450  }
451  }
452  if (mesh.isInternalFace(facei))
453  {
454  const point& neiCc = mesh.cellCentres()[nei[facei]];
455  scalar& neiVol = minTetVolume[nei[facei]];
456  forAll(f, fp)
457  {
458  scalar tetQual = tetPointRef
459  (
460  p[f[fp]],
461  p[f.nextLabel(fp)],
462  fc,
463  neiCc
464  ).quality();
465  neiVol = min(neiVol, tetQual);
466  }
467  }
468  }
469 
470  minTetVolume.correctBoundaryConditions();
471  Info<< " Writing minTetVolume to " << minTetVolume.name() << endl;
472  minTetVolume.write();
473  }
474 
475  // minPyrVolume
476  if (selectedFields.found("minPyrVolume"))
477  {
478  volScalarField minPyrVolume
479  (
480  IOobject
481  (
482  "minPyrVolume",
483  mesh.time().timeName(),
484  mesh,
487  false
488  ),
489  mesh,
490  dimensionedScalar("minPyrVolume", dimless, GREAT),
491  zeroGradientFvPatchScalarField::typeName
492  );
493 
494  // Get owner and neighbour pyr volumes
495  scalarField ownPyrVol(mesh.nFaces());
496  scalarField neiPyrVol(mesh.nInternalFaces());
498  (
499  mesh,
500  mesh.points(),
501  mesh.cellCentres(),
502 
503  ownPyrVol,
504  neiPyrVol
505  );
506 
507  // Get min pyr vol per cell
508  scalarField& cellFld = minPyrVolume.ref();
509  cellFld = GREAT;
510 
511  const labelUList& own = mesh.owner();
512  const labelUList& nei = mesh.neighbour();
513 
514  // Internal faces
515  forAll(own, facei)
516  {
517  cellFld[own[facei]] = min(cellFld[own[facei]], ownPyrVol[facei]);
518  cellFld[nei[facei]] = min(cellFld[nei[facei]], neiPyrVol[facei]);
519  }
520 
521  // Patch faces
522  for (const auto& fvp : minPyrVolume.boundaryField())
523  {
524  const labelUList& fc = fvp.patch().faceCells();
525 
526  forAll(fc, i)
527  {
528  const label meshFacei = fvp.patch().start();
529  cellFld[fc[i]] = min(cellFld[fc[i]], ownPyrVol[meshFacei]);
530  }
531  }
532 
533  minPyrVolume.correctBoundaryConditions();
534  Info<< " Writing minPyrVolume to " << minPyrVolume.name() << endl;
535  minPyrVolume.write();
536  }
537 
538  if (selectedFields.found("cellRegion"))
539  {
540  volScalarField cellRegion
541  (
542  IOobject
543  (
544  "cellRegion",
545  mesh.time().timeName(),
546  mesh,
549  false
550  ),
551  mesh,
553  calculatedFvPatchScalarField::typeName
554  );
555 
556  regionSplit rs(mesh);
557  forAll(rs, celli)
558  {
559  cellRegion[celli] = rs[celli];
560  }
561  cellRegion.correctBoundaryConditions();
562  Info<< " Writing cell region to " << cellRegion.name() << endl;
563  cellRegion.write();
564  }
565 
566  if (selectedFields.found("wallDistance"))
567  {
568  // See if wallDist.method entry in fvSchemes before calling factory
569  // method of wallDist. Have 'failing' version of wallDist::New instead?
570  const dictionary& schemesDict =
571  static_cast<const fvSchemes&>(mesh).schemesDict();
572  if (schemesDict.found("wallDist"))
573  {
574  if (schemesDict.subDict("wallDist").found("method"))
575  {
576  // Wall distance
577  volScalarField y("wallDistance", wallDist::New(mesh).y());
578  Info<< " Writing wall distance to " << y.name() << endl;
579  y.write();
580 
581  // Wall-reflection vectors
582  //const volVectorField& n = wallDist::New(mesh).n();
583  //Info<< " Writing wall normal to " << n.name() << endl;
584  //n.write();
585  }
586  }
587  }
588 
589  if (selectedFields.found("cellZone"))
590  {
592  (
593  IOobject
594  (
595  "cellZone",
596  mesh.time().timeName(),
597  mesh,
600  false
601  ),
602  mesh,
603  dimensionedScalar(scalar(-1)),
604  calculatedFvPatchScalarField::typeName
605  );
606 
607  const cellZoneMesh& czs = mesh.cellZones();
608  for (const auto& zone : czs)
609  {
611  }
612 
613  cellZone.correctBoundaryConditions();
614  Info<< " Writing cell zoning to " << cellZone.name() << endl;
615  cellZone.write();
616  }
617  if (selectedFields.found("faceZone"))
618  {
620  (
621  IOobject
622  (
623  "faceZone",
624  mesh.time().timeName(),
625  mesh,
628  false
629  ),
630  mesh,
631  dimensionedScalar(scalar(-1)),
632  calculatedFvsPatchScalarField::typeName
633  );
634 
635  const faceZoneMesh& czs = mesh.faceZones();
636  for (const auto& zone : czs)
637  {
639  }
640 
641  //faceZone.correctBoundaryConditions();
642  Info<< " Writing face zoning to " << faceZone.name() << endl;
643  faceZone.write();
644  }
645 
646  Info<< endl;
647 }
Foam::fvPatchField< scalar >
wallDist.H
volFields.H
Foam::polyMesh::points
virtual const pointField & points() const
Return raw points.
Definition: polyMesh.C:1038
Foam::primitiveMeshTools::cellDeterminant
static tmp< scalarField > cellDeterminant(const primitiveMesh &mesh, const Vector< label > &directions, const vectorField &faceAreas, const bitSet &internalOrCoupledFace)
Generate cell determinant field. Normalised to 1 for an internal cube.
Definition: primitiveMeshTools.C:457
Foam::IOobject
Defines the attributes of an object for which implicit objectRegistry management is supported,...
Definition: IOobject.H:104
p
volScalarField & p
Definition: createFieldRefs.H:8
Foam::IOobject::AUTO_WRITE
Definition: IOobject.H:129
Foam::dimless
const dimensionSet dimless(0, 0, 0, 0, 0, 0, 0)
Dimensionless.
Definition: dimensionSets.H:50
Foam::syncTools::getInternalOrCoupledFaces
static bitSet getInternalOrCoupledFaces(const polyMesh &mesh)
Get per face whether it is internal or coupled.
Definition: syncTools.C:176
Foam::Zero
static constexpr const zero Zero
Global zero (0)
Definition: zero.H:131
Foam::dictionary::found
bool found(const word &keyword, enum keyType::option matchOpt=keyType::REGEX) const
Search for an entry (const access) with the given keyword.
Definition: dictionary.C:364
Foam::fvPatch::start
virtual label start() const
Return start label of this patch in the polyMesh face list.
Definition: fvPatch.H:169
Foam::primitiveMesh::nInternalFaces
label nInternalFaces() const
Number of internal faces.
Definition: primitiveMeshI.H:78
Foam::fvSchemes
Selector class for finite volume differencing schemes. fvMesh is derived from fvShemes so that all fi...
Definition: fvSchemes.H:52
Foam::primitiveMesh::nFaces
label nFaces() const
Number of mesh faces.
Definition: primitiveMeshI.H:90
Foam::polyMeshTools::volRatio
static tmp< scalarField > volRatio(const polyMesh &mesh, const scalarField &vol)
Generate volume ratio field.
Definition: polyMeshTools.C:234
Foam::MeshObject< fvMesh, UpdateableMeshObject, wallDist >::New
static const wallDist & New(const fvMesh &mesh, Args &&... args)
Get existing or create a new MeshObject.
Definition: MeshObject.C:48
Foam::Time::timeName
static word timeName(const scalar t, const int precision=precision_)
Definition: Time.C:785
Foam::fvsPatchField
An abstract base class with a fat-interface to all derived classes covering all possible ways in whic...
Definition: fvsPatchField.H:68
Foam::zone
Base class for mesh zones.
Definition: zone.H:63
Foam::polyMesh::cellZones
const cellZoneMesh & cellZones() const
Return cell zone mesh.
Definition: polyMesh.H:483
tetPointRef.H
Foam::endl
Ostream & endl(Ostream &os)
Add newline and flush stream.
Definition: Ostream.H:350
surfaceFields.H
Foam::surfaceFields.
Foam::polyMeshTools::faceSkewness
static tmp< scalarField > faceSkewness(const polyMesh &mesh, const pointField &points, const vectorField &fCtrs, const vectorField &fAreas, const vectorField &cellCtrs)
Generate skewness field.
Definition: polyMeshTools.C:91
Foam::HashSet< word >
Foam::polyMesh::geometricD
const Vector< label > & geometricD() const
Return the vector of geometric directions in mesh.
Definition: polyMesh.C:827
syncTools.H
Foam::min
label min(const labelHashSet &set, label minValue=labelMax)
Find the min value in labelHashSet, optionally limited by second argument.
Definition: hashSets.C:33
Foam::tetPointRef
tetrahedron< point, const point & > tetPointRef
Definition: tetPointRef.H:46
Foam::fvPatch::patchSlice
const List< T >::subList patchSlice(const List< T > &l) const
Slice list to patch.
Definition: fvPatch.H:206
forAll
#define forAll(list, i)
Loop across all elements in list.
Definition: stdFoam.H:296
Foam::cellZone
A subset of mesh cells.
Definition: cellZone.H:62
Foam::polyMesh::faceZones
const faceZoneMesh & faceZones() const
Return face zone mesh.
Definition: polyMesh.H:477
correctBoundaryConditions
cellMask correctBoundaryConditions()
Foam::zone::write
virtual void write(Ostream &os) const
Write.
Definition: zone.C:228
Foam::Field< scalar >
Foam::faceZone
A subset of mesh faces organised as a primitive patch.
Definition: faceZone.H:65
Foam::Info
messageStream Info
Information stream (uses stdout - output is on the master only)
Foam::writeFields
void writeFields(const fvMesh &mesh, const wordHashSet &selectedFields)
Foam::polyMesh::faceOwner
virtual const labelList & faceOwner() const
Return face owner.
Definition: polyMesh.C:1076
regionSplit.H
Foam::dictionary::subDict
const dictionary & subDict(const word &keyword, enum keyType::option matchOpt=keyType::REGEX) const
Find and return a sub-dictionary.
Definition: dictionary.C:528
Foam::ZoneMesh< cellZone, polyMesh >
Foam::dimensionedScalar
dimensioned< scalar > dimensionedScalar
Dimensioned scalar obtained from generic dimensioned type.
Definition: dimensionedScalarFwd.H:43
Foam::radToDeg
constexpr scalar radToDeg(const scalar rad) noexcept
Conversion from radians to degrees.
Definition: unitConversion.H:54
Foam::regionSplit
This class separates the mesh into distinct unconnected regions, each of which is then given a label ...
Definition: regionSplit.H:140
Foam::max
label max(const labelHashSet &set, label maxValue=labelMin)
Find the max value in labelHashSet, optionally limited by second argument.
Definition: hashSets.C:47
writeFields.H
Foam::dictionary
A list of keyword definitions, which are a keyword followed by a number of values (eg,...
Definition: dictionary.H:121
Foam::fvMesh::neighbour
const labelUList & neighbour() const
Internal face neighbour.
Definition: fvMesh.H:384
mesh
dynamicFvMesh & mesh
Definition: createDynamicFvMesh.H:6
Foam::Ostream::write
virtual bool write(const token &tok)=0
Write token to stream or otherwise handle it.
Foam::fvMesh
Mesh data needed to do the Finite Volume discretisation.
Definition: fvMesh.H:84
Foam
Namespace for OpenFOAM.
Definition: atmBoundaryLayer.C:33
Foam::primitiveMesh::cellVolumes
const scalarField & cellVolumes() const
Definition: primitiveMeshCellCentresAndVols.C:186
Foam::zone::name
const word & name() const
Return name.
Definition: zone.H:158
Foam::primitiveMesh::cellShapes
const cellShapeList & cellShapes() const
Return cell shapes.
Definition: primitiveMesh.C:316
Foam::fvMesh::owner
const labelUList & owner() const
Internal face owner. Note bypassing virtual mechanism so.
Definition: fvMesh.H:378
Foam::GeometricField::primitiveFieldRef
Internal::FieldType & primitiveFieldRef(const bool updateAccessTime=true)
Return a reference to the internal field.
Definition: GeometricField.C:766
Foam::GeometricField::correctBoundaryConditions
void correctBoundaryConditions()
Correct boundary field.
Definition: GeometricField.C:940
Foam::fvMesh::boundary
const fvBoundaryMesh & boundary() const
Return reference to boundary mesh.
Definition: fvMesh.C:555
polyMeshTools.H
Foam::primitiveMesh::cellCentres
const vectorField & cellCentres() const
Definition: primitiveMeshCellCentresAndVols.C:175
Foam::polyMesh::faces
virtual const faceList & faces() const
Return raw faces.
Definition: polyMesh.C:1063
Foam::fvsPatchField::patch
const fvPatch & patch() const
Return patch.
Definition: fvsPatchField.H:281
f
labelList f(nPoints)
Foam::GeometricField::ref
Internal & ref(const bool updateAccessTime=true)
Return a reference to the dimensioned internal field.
Definition: GeometricField.C:749
Foam::GeometricField::boundaryFieldRef
Boundary & boundaryFieldRef(const bool updateAccessTime=true)
Return a reference to the boundary field.
Definition: GeometricField.C:783
Foam::Vector< scalar >
Foam::List< cell >
Foam::primitiveMeshTools::cellClosedness
static void cellClosedness(const primitiveMesh &mesh, const Vector< label > &meshD, const vectorField &areas, const scalarField &vols, scalarField &openness, scalarField &aratio)
Generate cell openness and cell ascpect ratio field.
Definition: primitiveMeshTools.C:243
Foam::primitiveMesh::isInternalFace
bool isInternalFace(const label faceIndex) const
Return true if given face label is internal to the mesh.
Definition: primitiveMeshI.H:102
Foam::acos
dimensionedScalar acos(const dimensionedScalar &ds)
Definition: dimensionedScalar.C:268
Foam::surfaceInterpolation::weights
const surfaceScalarField & weights() const
Return reference to linear difference weighting factors.
Definition: surfaceInterpolation.C:79
Foam::primitiveMesh::faceCentres
const vectorField & faceCentres() const
Definition: primitiveMeshFaceCentresAndAreas.C:144
Foam::UList< label >
Foam::fvPatch::faceCells
virtual const labelUList & faceCells() const
Return faceCells.
Definition: fvPatch.C:107
Foam::fvMesh::time
const Time & time() const
Return the top-level database.
Definition: fvMesh.H:248
Foam::UIndirectList
A List with indirect addressing.
Definition: fvMatrix.H:109
Foam::face
A face is a list of labels corresponding to mesh vertices.
Definition: face.H:72
cellShapes
cellShapeList cellShapes
Definition: createBlockMesh.H:3
Foam::faceZone::write
virtual void write(Ostream &os) const
Write.
Definition: faceZone.C:619
Foam::HashTable::empty
bool empty() const noexcept
True if the hash table is empty.
Definition: HashTableI.H:59
cells
const cellShapeList & cells
Definition: gmvOutputHeader.H:3
Foam::cellModel
Maps a geometry to a set of cell primitives.
Definition: cellModel.H:72
Foam::fvPatchField::patch
const fvPatch & patch() const
Return patch.
Definition: fvPatchField.H:343
Foam::HashTable::found
bool found(const Key &key) const
Return true if hashed entry is found in table.
Definition: HashTableI.H:100
Foam::dimVolume
const dimensionSet dimVolume(pow3(dimLength))
Definition: dimensionSets.H:61
Foam::GeometricField< scalar, fvPatchField, volMesh >
Foam::IOobject::NO_READ
Definition: IOobject.H:123
Foam::cellModel::index
label index() const
Return index of model in the model list.
Definition: cellModelI.H:36
Foam::zone::index
label index() const
Return the index of this zone in zone list.
Definition: zone.H:169
zeroGradientFvPatchFields.H
Foam::cell
A cell is defined as a list of faces with extra functionality.
Definition: cell.H:54
Foam::polyMesh::faceNeighbour
virtual const labelList & faceNeighbour() const
Return face neighbour.
Definition: polyMesh.C:1082
Foam::GeometricField::boundaryField
const Boundary & boundaryField() const
Return const-reference to the boundary field.
Definition: GeometricFieldI.H:62
y
scalar y
Definition: LISASMDCalcMethod1.H:14
Foam::fvMesh::V
const DimensionedField< scalar, volMesh > & V() const
Return cell volumes.
Definition: fvMeshGeometry.C:179
Foam::primitiveMeshTools::facePyramidVolume
static void facePyramidVolume(const primitiveMesh &mesh, const pointField &points, const vectorField &cellCtrs, scalarField &ownPyrVol, scalarField &neiPyrVol)
Generate face pyramid volume fields.
Definition: primitiveMeshTools.C:204
Foam::polyMeshTools::faceOrthogonality
static tmp< scalarField > faceOrthogonality(const polyMesh &mesh, const vectorField &fAreas, const vectorField &cellCtrs)
Generate orthogonality field. (1 for fully orthogonal, < 1 for.
Definition: polyMeshTools.C:36
Foam::primitiveMesh::faceAreas
const vectorField & faceAreas() const
Definition: primitiveMeshFaceCentresAndAreas.C:155