ccmReader.H
Go to the documentation of this file.
1 /*---------------------------------------------------------------------------*\
2  ========= |
3  \\ / F ield | OpenFOAM: The Open Source CFD Toolbox
4  \\ / O peration |
5  \\ / A nd | www.openfoam.com
6  \\/ M anipulation |
7 -------------------------------------------------------------------------------
8  Copyright (C) 2016-2025 OpenCFD Ltd.
9 -------------------------------------------------------------------------------
10 License
11  This file is part of OpenFOAM.
12 
13  OpenFOAM is free software: you can redistribute it and/or modify it
14  under the terms of the GNU General Public License as published by
15  the Free Software Foundation, either version 3 of the License, or
16  (at your option) any later version.
17 
18  OpenFOAM is distributed in the hope that it will be useful, but WITHOUT
19  ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
20  FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
21  for more details.
22 
23  You should have received a copy of the GNU General Public License
24  along with OpenFOAM. If not, see <http://www.gnu.org/licenses/>.
25 
26 Class
27  Foam::ccm::reader
28 
29 Description
30  Reads CCM files as written by PROSTAR/STARCCM
31 
32  - arbitrary polyhedral meshs
33  - writes interfaces (baffles) to constant/polymesh/interfaces
34  - experimental handling of monitoring (internal) boundaries
35  - does not handle cyclics. Use createPatch to recreate these
36  - does patch names only if they are in the problem description
37  - reads cell and face solution data
38  - reads Lagrangian data
39 
40  The Default_Boundary_Region (region 0) is a special region that serves
41  two purposes:
42  -# it contains all wall and baffle boundaries that have not otherwise
43  been assigned.
44  -# it holds the outer bounds of flow domains (fluid/porous/solid)
45 
46  The CCM node \c Meshes/FaceBasedTopology/Cells/Interfaces holds the mapping
47  of the corresponding mesh faces, which can be used to merge these internal
48  boundaries.
49 
50  If solid cells exist, there are three possible courses of action:
51  -# Remove all solid cells for subsequent flow calculations.
52  This is the default.
53  -# Treat solid cells like fluid cells, but convert the corresponding
54  Default_Boundary_Region to Default_Boundary_Solid for easier
55  identification.
56  This treatment is useful for visualization purposes.
57  -# Move solid cells to a separate mesh region.
58  This would be useful for conjugate heat transfer, but
59  is not implemented.
60 
61  \par Files
62 
63  The <tt>constant/remapping</tt> file is an \c IOdictionary that is
64  \c READ_IF_PRESENT and can be used to remap certain information. eg,
65 
66  \verbatim
67  // rename/combine cellTable entries
68  // newName ( listOldNames );
69  cellTable
70  {
71  fluid ( inletRegion outletRegion );
72  cat1 ( CAT1 "cat1_(Back|Front|Gamma)" );
73  }
74 
75  // rename boundary regions
76  // newName oldName;
77  boundaryRegion
78  {
79  inlet_4 inlet_1;
80  inlet_5 inlet_2;
81  inlet_6 inlet_3;
82  }
83  \endverbatim
84 
85  The <tt>constant/boundaryRegion</tt> file is an \c IOMap<dictionary>
86  that is written. It contains the boundary type and names. eg,
87 
88  \verbatim
89  (
90  0
91  {
92  BoundaryType wall;
93  Label Default_Boundary_Region;
94  }
95  1
96  {
97  BoundaryType inlet;
98  Label inlet_1;
99  }
100  ...
101 
102  4
103  {
104  BoundaryType pressure;
105  Label outlet;
106  }
107  )
108  \endverbatim
109 
110  The <tt>constant/cellTable</tt> file is an \c IOMap<dictionary> that is
111  written. It contains the cellTable information.
112  eg,
113 
114  \verbatim
115  (
116  1
117  {
118  Label inletRegion;
119  MaterialType fluid;
120  MaterialId 1;
121  }
122  2
123  {
124  Label cat1;
125  MaterialType fluid;
126  MaterialId 1;
127  PorosityId 1;
128  }
129  3
130  {
131  Label outletRegion;
132  MaterialType fluid;
133  MaterialId 1;
134  }
135  )
136  \endverbatim
137 
138 Note
139  this class is still under development
140  - any/all of the class names and members may change
141 
142 SourceFiles
143  ccmReader.C
144  ccmReaderAux.C
145  ccmReaderMesh.C
146  ccmReaderSolution.C
147 
148 \*---------------------------------------------------------------------------*/
149 
150 #ifndef Foam_ccmReader_H
151 #define Foam_ccmReader_H
152 
153 #include "ccmBase.H"
154 #include "STARCDCore.H"
155 
156 #include "labelList.H"
157 #include "ListOps.H"
158 #include "polyMesh.H"
159 #include "boundaryRegion.H"
160 #include "cellTable.H"
161 #include "ccmInterfaceDefinitions.H"
162 #include "ccmSolutionTable.H"
163 
164 // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
165 
166 namespace Foam
167 {
168 namespace ccm
169 {
170 
171 // * * * * * * * * * * * * * Forward Declarations * * * * * * * * * * * * * //
172 
173 class ccmID;
174 class ccmNODE;
175 class ccmGlobalState;
176 class reader;
177 
178 // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
180 /*---------------------------------------------------------------------------*\
181  Class ccm::reader Declaration
182 \*---------------------------------------------------------------------------*/
183 
184 class reader
185 :
186  public base,
187  protected fileFormats::STARCDCore
188 {
189 public:
190 
191  // Forward Declarations
192  class options;
193 
194 
195 private:
196 
197  // Static Data
198 
199  //- cellTable integer options
200  static const char* cellTableOpti[];
201 
202  //- cellTable string options
203  static const char* cellTableOptstr[];
204 
205 
206  // Private Data
207 
208  //- Reader options
209  const std::unique_ptr<options> options_;
210 
211 
212  //- Enumeration defining the status of a ccmio node
213  enum nodeStatus
214  {
215  UNKNOWN, BAD, OKAY, READ
216  };
217 
218 
219  //- status of the geometry (topology) information
220  nodeStatus geometryStatus_;
221 
222  //- status of the solution (field) information
223  nodeStatus solutionStatus_;
224 
225  // Persistent data
226 
227  //- ccm node: /InterfaceDefinitions
228  interfaceDefinitions interfaceDefinitions_;
229 
230  //- ccm node: ProblemDescriptions/boundaryRegion
231  boundaryRegion boundaryRegion_;
232 
233  //- ccm node: ProblemDescriptions/cellType
234  cellTable cellTable_;
235 
236  //- Number of points
237  label nPoints_;
238 
239  //- Number of internal faces
240  label nInternalFaces_;
241 
242  //- Number of faces
243  label nFaces_;
244 
245  //- Number of cells
246  label nCells_;
247 
248  //- Minimum mesh data
249 
250  //- Points
251  pointField points_;
252 
253  //- Faces
254  faceList faces_;
255 
256  //- Face-owner cells
257  labelList faceOwner_;
258 
259  //- Face-neighbour cells
260  labelList faceNeighbour_;
261 
262  // List of interface pairs (baffles)
263  List<labelPair> bafInterfaces_;
264 
265  //- List of interface pairs between mesh regions (domains)
266  List<labelPair> domInterfaces_;
267 
268  //- Face sets for monitoring
269  HashTable<labelList> monitoringSets_;
270 
271 
272  // Mesh Maps
273 
274  //- Map to original face id
275  labelList origFaceId_;
276 
277  //- Map to original cell id
278  labelList origCellId_;
279 
280  //- Cell table id for each cell
281  labelList cellTableId_;
282 
283  //- List of the original ccm boundary region number
284  labelList origBndId_;
285 
286  //- Patching and region info
287  labelList patchSizes_;
288 
289  //- Solution information
290  solutionTable solutionTable_;
291 
292  //- Field information
293  fieldTable fieldTable_;
294 
295  //- Field information
296  fieldTable lagrangianTable_;
297 
298 
299  // Private Member Functions
300 
301  //- No copy construct
302  reader(const reader&) = delete;
303 
304  //- No copy assignment
305  void operator=(const reader&) = delete;
306 
307 
308  //- Calculate patch starts from given index with current patch sizes
309  inline labelList patchStartList(label initial) const;
310 
311  //- Report mesh sizes to stdout
312  void printSizes() const;
313 
314  //- Simulate CCMIOGetEntityIndex for Nodes (not ids)
315  int ccmGetEntityIndex(ccmNODE node);
316 
317  //- Read string option from specified ccm node
318  // return empty string on failure
319  std::string ccmReadNodestr(const char* opt, ccmNODE node);
320 
321  //- Read string option from specified ccm node
322  // return empty string on failure
323  std::string ccmReadOptstr(const char* opt, ccmID node);
324 
325  //- Read map data and check error
326  void readMap(const ccmID& mapId, labelList& data);
327 
328  //- Determine if the geometry looks good
329  bool detectGeometry();
330 
331  //- Get interfaces, cellTable and boundaryRegion information
332  void readProblemDescription(const ccmID& probNode);
333 
334  //- Get /InterfaceDefinitions, used by STARCCM to define in-place
335  // interfaces, etc.
336  // Only handle in-place (IN_PLACE) ones at the moment
337  void readInterfaceDefinitions();
338 
339  //- Get boundaryRegion information
340  void readProblemDescription_boundaryRegion(const ccmID& probNode);
341 
342  //- Get cellTable information
343  void readProblemDescription_cellTable(const ccmID& probNode);
344 
345  //- Read the geometry without any sorting or renumbering
346  void readMeshTopology(const scalar scaleFactor=1.0);
347 
348  //- Read the vertices
349  labelList readVertices
350  (
351  const ccmID& verticesNode,
352  const scalar scaleFactor = 1.0
353  );
354 
355  //- Read the cells
356  void readCells(const ccmID& topoNode);
357 
358  //- Read the interfaces
359  void readInterfaces(const ccmID& cellsNode);
360 
361  //- Read the monitoring
362  void readMonitoring(const ccmID& topoId);
363 
364  //- Move solid faces from 'Default_Boundary_Region'
365  //- to 'Default_Boundary_Solid'
366  void juggleSolids();
367 
368  //- Remove unwanted fluid/porous/solid regions
369  void removeUnwanted();
370 
371  //- Remove interfaces with face >= nFace
372  void validateInterface(List<labelPair>&);
373 
374  //- Renumber interface faces
375  void renumberInterfaces(const labelUList& oldToNew);
376 
377  //- Remove interfaces between domains (fluid/porosity; fluid/solid, etc)
378  // reorganize baffle interfaces into [0-N/2; N/2-N] lists at the
379  // beginning of the corresponding patch
380  void cleanupInterfaces();
381 
382  //- Merge the points and faces of in-place conformal interfaces
383  void mergeInplaceInterfaces();
384 
385  //- Re-order mesh and ensure upper-triangular order
386  void reorderMesh();
387 
388  //- Write interface (baffle) mapping
389  void writeInterfaces(const objectRegistry&) const;
390 
391  //- Write List<label> in constant/polyMesh
392  void writeMeshLabelList
393  (
394  const objectRegistry& registry,
395  const word& propertyName,
396  const labelUList& list,
397  IOstreamOption streamOpt
398  ) const;
399 
400  // polyMesh Friend Functions
401  void addPatches(polyMesh& mesh) const;
402 
403  //- Add faceZones based on monitoring boundary conditions
404  void addFaceZones(polyMesh& mesh) const;
405 
406  //- Get information about all available solutions
407  bool detectSolution();
408 
409  //- Get information about available fields
410  // assume that all fields are available for all solution intervals
411  void determineFieldInfo
412  (
413  const ccmID& fieldSetNode,
414  fieldTable& table
415  );
416 
417 
418  // Static Members
419 
420  //- Get map of porous regions
421  static Map<word> selectPorous(const Map<dictionary>& table);
422 
423 
424 public:
425 
426  // Static Members
427 
428  //- Warn about repeated name
430  static void warnDuplicates(const word& context, const wordList& lst);
431 
432 
433  // Constructors
434 
435  //- Open a file for reading
437  reader(const fileName& file, const reader::options& opts);
438 
439 
440  //- Destructor (closes file)
442  ~reader();
443 
444 
445  // Member Functions
446 
447  // Access
448 
449  //- Reference to the reader options
451  const reader::options& option() const;
452 
453 
454  //- Construct the polyMesh from the read geometry
455  // provide optional remapping dictionary
458  (
459  const objectRegistry& registry,
460  const fileName& remappingDictName = fileName::null
461  );
462 
463 
464  // label nPoints() const { return nPoints_; }
465  // label nInternalFaces() const { return nInternalFaces_; }
466  // label nFaces() const { return nFaces_; }
467  // label nCells() const { return nCells_; }
468 
469  // const faceList& faces() const { return faces_; }
470  // const labelList& faceOwner() const { return faceOwner_; }
471  // const labelList& faceNeighbour() const { return faceNeighbour_; }
472  // const pointField& points() const { return points_; }
473 
474 
475  // Check
476 
477  //- Return true if file has geometry associated with it
479  bool hasGeometry();
480 
481  //- Return true if file has solutions associated with it
483  bool hasSolution();
484 
485 
486  // Edit
487 
488  //- Remap cellTable and boundaryRegion according to dictionary
490  bool remapMeshInfo
491  (
492  const objectRegistry& registry,
493  const fileName& remappingDictName = fileName::null
494  );
495 
496 
497  // Write
498 
499  //- Write the polyMesh
501  void writeMesh
502  (
503  const polyMesh& mesh,
505  ) const;
506 
507  //- Write cellTable, boundaryRegion and interface information
509  void writeAux(const objectRegistry& registry) const;
510 
511  //- Detect and read geometry if possible
513  bool readGeometry(const scalar scaleFactor = 1.0);
514 
515  //- Print general information about the mesh
517  void printInfo() const;
518 
519  //- Clear out some information after obtaining a polyMesh
521  void clearGeom();
522 
523  //- Map to original cell Id
524  const labelList& origCellId() const noexcept
525  {
526  return origCellId_;
527  }
528 
529  //- Map to original face Id
530  const labelList& origFaceId() const noexcept
531  {
532  return origFaceId_;
533  }
534 
535  //- Return interface definitions map
537  {
538  return interfaceDefinitions_;
539  }
540 
541  //- Return boundaryRegion table
543  {
544  return boundaryRegion_;
545  }
546 
547  //- Return cell table
548  const cellTable& cellTableInfo() const noexcept
549  {
550  return cellTable_;
551  }
552 
553  //- Return a list of names corresponding to fluids
554  Map<word> fluids() const
555  {
556  return cellTable_.fluids();
557  }
558 
559  //- Return a list of names corresponding to solids
560  Map<word> solids() const
561  {
562  return cellTable_.solids();
563  }
564 
565  //- Return table of available solutions
566  const solutionTable& solutions()
567  {
568  detectSolution();
569  return solutionTable_;
570  }
571 
572  //- Return table of available fields
573  const fieldTable& fields()
574  {
575  detectSolution();
576  return fieldTable_;
577  }
578 
579  //- Return table of available lagrangian fields
580  const fieldTable& lagrangian()
581  {
582  detectSolution();
583  return lagrangianTable_;
584  }
585 
586  //- Read solution and field combination
589  (
590  const word& solutionName,
591  const word& fieldName,
592  const bool wallData = false
593  );
594 };
595 
596 
597 /*---------------------------------------------------------------------------*\
598  Class ccm::reader::options Declaration
599 \*---------------------------------------------------------------------------*/
600 
601 class reader::options
602 {
603  // Private Data
604 
605  //- Keep fluid regions (default true)
606  bool keepFluid_;
607 
608  //- Keep porous regions (default true)
609  bool keepPorous_;
610 
611  //- Keep solid regions (default true)
612  bool keepSolid_;
613 
614  //- Merge in-place interfaces (default true)
615  bool mergeInterfaces_;
616 
617  //- Rename interface boundaries as InterfaceN_0, InterfaceN_1
618  // (default true)
619  bool renameInterfaces_;
620 
621  //- Remove baffles by merging their respective faces (default false)
622  bool removeBaffles_;
623 
624  //- Use numbered names (eg, patch_0, zone_0) instead of human-readable
625  // names (default false)
626  bool useNumberedNames_;
627 
628  //- merge tolerance for points (default 0.05e-3)
629  scalar mergeTol_;
630 
631  //- Value to assign for undefined solutions (default: NaN)
632  scalar undefScalar_;
633 
634 
635 public:
636 
637  // Constructors
638 
639  //- Construct with default values
640  constexpr options() noexcept
641  :
642  keepFluid_(true),
643  keepPorous_(true),
644  keepSolid_(true),
645  mergeInterfaces_(false),
646  renameInterfaces_(true),
647  removeBaffles_(false),
648  useNumberedNames_(false),
649  mergeTol_(0.05e-3),
650  undefScalar_(NAN)
651  {}
652 
653 
654  // Member Functions
655 
656  // Access
657 
658  //- Keep fluid regions (default true)
659  bool keepFluid() const noexcept { return keepFluid_; }
660 
661  //- Keep porous regions (default true)
662  bool keepPorous() const noexcept { return keepPorous_; }
663 
664  //- Keep solid regions (default true)
665  bool keepSolid() const noexcept { return keepSolid_; }
666 
667  //- Some region (fluid, porous, solid) is kept.
668  bool keptSomeRegion() const noexcept
669  {
670  return keepFluid_ || keepPorous_ || !keepSolid_;
671  }
672 
673  //- Merge in-place interfaces (default true)
674  bool mergeInterfaces() const noexcept { return mergeInterfaces_; }
675 
676  //- Rename interface boundaries as InterfaceN_0, InterfaceN_1
677  // (default true)
678  bool renameInterfaces() const noexcept { return renameInterfaces_; }
680  //- Remove baffles by merging their respective faces (default false)
681  bool removeBaffles() const noexcept { return removeBaffles_; }
682 
683  //- Use numbered names (eg, patch_0, zone_0) instead of human-readable
684  // names (default false)
685  bool useNumberedNames() const noexcept { return useNumberedNames_; }
686 
687  //- Merge tolerance for points (default 0.05e-3)
688  scalar mergeTol() const noexcept { return mergeTol_; }
689 
690  //- Value to assign for undefined solutions (default: NaN)
691  scalar undefScalar() const noexcept { return undefScalar_; }
692 
693 
694  // Edit
696  //- Keep fluid regions
697  void keepFluid(bool b) noexcept { keepFluid_ = b; }
698 
699  //- Keep porous regions
700  void keepPorous(bool b) noexcept { keepPorous_ = b; }
701 
702  //- Keep solid regions
703  void keepSolid(bool b) noexcept { keepSolid_ = b; }
704 
705  //- Merge in-place interfaces
706  void mergeInterfaces(bool b) noexcept { mergeInterfaces_ = b; }
707 
708  //- Rename interface boundaries as InterfaceN_0, InterfaceN_1
709  void renameInterfaces(bool b) noexcept { renameInterfaces_ = b; }
710 
711  //- Remove baffles by merging their respective faces
712  void removeBaffles(bool b) noexcept { removeBaffles_ = b; }
713 
714  //- Use numbered names (eg, patch_0, zone_0) instead of human-readable
715  void useNumberedNames(bool b) noexcept { useNumberedNames_ = b; }
716 
717  //- Merge tolerance for points (default 0.05e-3)
718  void mergeTol(scalar tol) noexcept { mergeTol_ = tol; }
720  //- Value to assign for undefined solutions (default: NaN)
721  void undefScalar(scalar val) noexcept { undefScalar_ = val; }
722 };
723 
724 
725 // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
726 
727 } // End namespace ccm
728 } // End namespace Foam
729 
730 // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
731 
732 #endif
733 
734 // ************************************************************************* //
FOAM_DLL_EXPORT void printInfo() const
Print general information about the mesh.
Definition: ccmReader.C:515
constexpr options() noexcept
Construct with default values.
Definition: ccmReader.H:829
A class for handling file names.
Definition: fileName.H:72
const interfaceDefinitions & interfaceDefinitionsInfo() const noexcept
Return interface definitions map.
Definition: ccmReader.H:687
Containers for holding STARCCM interface definitions.
Base functionality common to reader and writer classes.
Definition: ccmBase.H:70
static const fileName null
An empty fileName.
Definition: fileName.H:111
static FOAM_DLL_EXPORT void warnDuplicates(const word &context, const wordList &lst)
Warn about repeated name.
Definition: ccmReaderAux.C:64
Map< word > solids() const
Return a Map of (id => name) for solids.
Definition: cellTable.C:252
Reads CCM files as written by PROSTAR/STARCCM.
Definition: ccmReader.H:179
scalar undefScalar() const noexcept
Value to assign for undefined solutions (default: NaN)
Definition: ccmReader.H:902
bool removeBaffles() const noexcept
Remove baffles by merging their respective faces (default false)
Definition: ccmReader.H:885
A simple container for options an IOstream can normally have.
A list of available interface definitions.
bool keepPorous() const noexcept
Keep porous regions (default true)
Definition: ccmReader.H:855
Various functions to operate on Lists.
FOAM_DLL_EXPORT const reader::options & option() const
Reference to the reader options.
Definition: ccmReader.C:693
const dimensionedScalar e
Elementary charge.
Definition: createFields.H:11
const cellTable & cellTableInfo() const noexcept
Return cell table.
Definition: ccmReader.H:703
const dimensionedScalar b
Wien displacement law constant: default SI units: [m.K].
Definition: createFields.H:27
A class for handling words, derived from Foam::string.
Definition: word.H:63
Core routines used when reading/writing PROSTAR vrt/cel/bnd files.
Definition: STARCDCore.H:55
FOAM_DLL_EXPORT void clearGeom()
Clear out some information after obtaining a polyMesh.
const boundaryRegion & boundaryTableInfo() const noexcept
Return boundaryRegion table.
Definition: ccmReader.H:695
FOAM_DLL_EXPORT bool hasGeometry()
Return true if file has geometry associated with it.
Definition: ccmReader.C:557
Map< word > fluids() const
Return a Map of (id => name) for fluids.
Definition: cellTable.C:246
A HashTable similar to std::unordered_map.
Definition: HashTable.H:108
The cellTable persistent data saved as a Map<dictionary>.
Definition: cellTable.H:77
const fieldTable & fields()
Return table of available fields.
Definition: ccmReader.H:736
scalar mergeTol() const noexcept
Merge tolerance for points (default 0.05e-3)
Definition: ccmReader.H:897
const direction noexcept
Definition: scalarImpl.H:255
bool renameInterfaces() const noexcept
Rename interface boundaries as InterfaceN_0, InterfaceN_1.
Definition: ccmReader.H:880
Map< word > fluids() const
Return a list of names corresponding to fluids.
Definition: ccmReader.H:711
FOAM_DLL_EXPORT bool hasSolution()
Return true if file has solutions associated with it.
Definition: ccmReader.C:564
FOAM_DLL_EXPORT ~reader()
Destructor (closes file)
Definition: ccmReader.C:685
Containers for holding ccm solution and field listings.
FOAM_DLL_EXPORT tmp< scalarField > readField(const word &solutionName, const word &fieldName, const bool wallData=false)
Read solution and field combination.
Map< word > solids() const
Return a list of names corresponding to solids.
Definition: ccmReader.H:719
FOAM_DLL_EXPORT void writeAux(const objectRegistry &registry) const
Write cellTable, boundaryRegion and interface information.
Definition: ccmReaderAux.C:176
bool keepSolid() const noexcept
Keep solid regions (default true)
Definition: ccmReader.H:860
bool keptSomeRegion() const noexcept
Some region (fluid, porous, solid) is kept.
Definition: ccmReader.H:865
A list of the available fields.
FOAM_DLL_EXPORT bool remapMeshInfo(const objectRegistry &registry, const fileName &remappingDictName=fileName::null)
Remap cellTable and boundaryRegion according to dictionary.
Definition: ccmReader.C:586
FOAM_DLL_EXPORT autoPtr< polyMesh > mesh(const objectRegistry &registry, const fileName &remappingDictName=fileName::null)
Construct the polyMesh from the read geometry.
FOAM_DLL_EXPORT bool readGeometry(const scalar scaleFactor=1.0)
Detect and read geometry if possible.
Definition: ccmReader.C:529
FOAM_DLL_EXPORT void writeMesh(const polyMesh &mesh, IOstreamOption streamOpt=IOstreamOption(IOstreamOption::BINARY)) const
Write the polyMesh.
Definition: ccmReader.C:572
bool mergeInterfaces() const noexcept
Merge in-place interfaces (default true)
Definition: ccmReader.H:873
bool useNumberedNames() const noexcept
Use numbered names (eg, patch_0, zone_0) instead of human-readable.
Definition: ccmReader.H:892
Pointer management similar to std::unique_ptr, with some additional methods and type checking...
Definition: HashPtrTable.H:48
Mesh consisting of general polyhedral cells.
Definition: polyMesh.H:75
bool keepFluid() const noexcept
Keep fluid regions (default true)
Definition: ccmReader.H:850
A class for managing temporary objects.
Definition: HashPtrTable.H:50
Registry of regIOobjects.
The boundaryRegion persistent data saved as a Map<dictionary>.
#define FOAM_DLL_EXPORT
Definition: ccmBase.H:50
const fieldTable & lagrangian()
Return table of available lagrangian fields.
Definition: ccmReader.H:745
const labelList & origCellId() const noexcept
Map to original cell Id.
Definition: ccmReader.H:671
const solutionTable & solutions()
Return table of available solutions.
Definition: ccmReader.H:727
const labelList & origFaceId() const noexcept
Map to original face Id.
Definition: ccmReader.H:679
Namespace for OpenFOAM.
A HashTable to objects of type <T> with a label key.