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-2020 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 ccmReader_H
151 #define 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 
167 namespace Foam
168 {
169 namespace ccm
170 {
171 
172 // * * * * * * * * * * * * * Forward Declarations * * * * * * * * * * * * * //
173 
174 class ccmID;
175 class ccmNODE;
176 class ccmGlobalState;
177 class reader;
178 
179 // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
180 
181 /*---------------------------------------------------------------------------*\
182  Class ccm::reader Declaration
183 \*---------------------------------------------------------------------------*/
184 
185 class reader
186 :
187  public base,
188  protected fileFormats::STARCDCore
189 {
190 public:
191 
192  // Forward declarations
193  class options;
194 
195 
196 private:
197 
198  // Static Data
199 
200  //- cellTable integer options
201  static const char* cellTableOpti[];
202 
203  //- cellTable string options
204  static const char* cellTableOptstr[];
205 
206 
207  // Private Data
208 
209  //- Reader options
210  const unique_ptr<options> options_;
211 
212 
213  //- Enumeration defining the status of a ccmio node
214  enum nodeStatus
215  {
216  UNKNOWN, BAD, OKAY, READ
217  };
218 
219 
220  //- status of the geometry (topology) information
221  nodeStatus geometryStatus_;
222 
223  //- status of the solution (field) information
224  nodeStatus solutionStatus_;
225 
226  // Persistent data
227 
228  //- ccm node: /InterfaceDefinitions
229  interfaceDefinitions interfaceDefinitions_;
230 
231  //- ccm node: ProblemDescriptions/boundaryRegion
232  boundaryRegion boundaryRegion_;
233 
234  //- ccm node: ProblemDescriptions/cellType
235  cellTable cellTable_;
236 
237  //- Number of points
238  label nPoints_;
239 
240  //- Number of internal faces
241  label nInternalFaces_;
242 
243  //- Number of faces
244  label nFaces_;
245 
246  //- Number of cells
247  label nCells_;
248 
249  //- Minimum mesh data
250 
251  //- Points
252  pointField points_;
253 
254  //- Faces
255  faceList faces_;
256 
257  //- Face-owner cells
258  labelList faceOwner_;
259 
260  //- Face-neighbour cells
261  labelList faceNeighbour_;
262 
263  // List of interface pairs (baffles)
264  List<labelPair> bafInterfaces_;
265 
266  //- List of interface pairs between mesh regions (domains)
267  List<labelPair> domInterfaces_;
268 
269  //- Face sets for monitoring
270  HashTable<labelList> monitoringSets_;
271 
272 
273  // Mesh Maps
274 
275  //- Map to original face id
276  labelList origFaceId_;
277 
278  //- Map to original cell id
279  labelList origCellId_;
280 
281  //- Cell table id for each cell
282  labelList cellTableId_;
283 
284  //- List of the original ccm boundary region number
285  labelList origBndId_;
286 
287  //- Patching and region info
288  labelList patchSizes_;
289 
290  //- Solution information
291  solutionTable solutionTable_;
292 
293  //- Field information
294  fieldTable fieldTable_;
295 
296  //- Field information
297  fieldTable lagrangianTable_;
298 
299 
300  // Private Member Functions
301 
302  //- No copy construct
303  reader(const reader&) = delete;
304 
305  //- No copy assignment
306  void operator=(const reader&) = delete;
307 
308 
309  //- Calculate patch starts from given index with current patch sizes
310  inline labelList patchStartList(label initial) const;
311 
312  //- Report mesh sizes to stdout
313  void printSizes() const;
314 
315  //- Simulate CCMIOGetEntityIndex for Nodes (not ids)
316  int ccmGetEntityIndex(ccmNODE node);
317 
318  //- Read string option from specified ccm node
319  // return empty string on failure
320  std::string ccmReadNodestr(const char* opt, ccmNODE node);
321 
322  //- Read string option from specified ccm node
323  // return empty string on failure
324  std::string ccmReadOptstr(const char* opt, ccmID node);
325 
326  //- Read map data and check error
327  void readMap(const ccmID& mapId, labelList& data);
328 
329  //- Determine if the geometry looks good
330  bool detectGeometry();
331 
332  //- Get interfaces, cellTable and boundaryRegion information
333  void readProblemDescription(const ccmID& probNode);
334 
335  //- Get /InterfaceDefinitions, used by STARCCM to define in-place
336  // interfaces, etc.
337  // Only handle in-place (IN_PLACE) ones at the moment
338  void readInterfaceDefinitions();
339 
340  //- Get boundaryRegion information
341  void readProblemDescription_boundaryRegion(const ccmID& probNode);
342 
343  //- Get cellTable information
344  void readProblemDescription_cellTable(const ccmID& probNode);
345 
346  //- Read the geometry without any sorting or renumbering
347  void readMeshTopology(const scalar scaleFactor=1.0);
348 
349  //- Read the vertices
350  labelList readVertices
351  (
352  const ccmID& verticesNode,
353  const scalar scaleFactor = 1.0
354  );
355 
356  //- Read the cells
357  void readCells(const ccmID& topoNode);
358 
359  //- Read the interfaces
360  void readInterfaces(const ccmID& cellsNode);
361 
362  //- Read the monitoring
363  void readMonitoring(const ccmID& topoId);
364 
365  //- Move solid faces from Default_Boundary_Region to
366  // Default_Boundary_Solid
367  void juggleSolids();
368 
369  //- Remove unwanted fluid/porous/solid regions
370  void removeUnwanted();
371 
372  //- Remove interfaces with face >= nFace
373  void validateInterface(List<labelPair>&);
374 
375  //- Renumber interface faces
376  void renumberInterfaces(const labelUList& oldToNew);
377 
378  //- Remove interfaces between domains (fluid/porosity; fluid/solid, etc)
379  // reorganize baffle interfaces into [0-N/2; N/2-N] lists at the
380  // beginning of the corresponding patch
381  void cleanupInterfaces();
382 
383  //- Merge the points and faces of in-place conformal interfaces
384  void mergeInplaceInterfaces();
385 
386  //- Re-order mesh and ensure upper-triangular order
387  void reorderMesh();
388 
389  //- Write interface (baffle) mapping
390  void writeInterfaces(const objectRegistry&) const;
391 
392  //- Write List<label> in constant/polyMesh
393  void writeMeshLabelList
394  (
395  const objectRegistry& registry,
396  const word& propertyName,
397  const labelList& list,
399  ) const;
400 
401  // polyMesh Friend Functions
402  void addPatches(polyMesh& mesh) const;
403 
404  //- Add faceZones based on monitoring boundary conditions
405  void addFaceZones(polyMesh& mesh) const;
406 
407  //- Get information about all available solutions
408  bool detectSolution();
409 
410  //- Get information about available fields
411  // assume that all fields are available for all solution intervals
412  void determineFieldInfo
413  (
414  const ccmID& fieldSetNode,
415  fieldTable& table
416  );
417 
418 
419  // Static Members
420 
421  //- Get map of porous regions
422  static Map<word> selectPorous(const Map<dictionary>& table);
423 
424 
425 public:
426 
427  // Static Members
428 
429  //- 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
436  reader(const fileName& file, const reader::options& opts);
437 
438 
439  //- Destructor (closes file)
440  ~reader();
441 
442 
443  // Member Functions
444 
445  // Access
446 
447  //- Reference to the reader options
448  const reader::options& option() const;
449 
450 
451  //- Construct the polyMesh from the read geometry
452  // provide optional remapping dictionary
454  (
455  const objectRegistry& registry,
456  const fileName& remappingDictName = fileName::null
457  );
458 
459 
460  // label nPoints() const { return nPoints_; }
461  // label nInternalFaces() const { return nInternalFaces_; }
462  // label nFaces() const { return nFaces_; }
463  // label nCells() const { return nCells_; }
464 
465  // const faceList& faces() const { return faces_; }
466  // const labelList& faceOwner() const { return faceOwner_; }
467  // const labelList& faceNeighbour() const { return faceNeighbour_; }
468  // const pointField& points() const { return points_; }
469 
470 
471  // Check
472 
473  //- Return true if file has geometry associated with it
474  bool hasGeometry();
475 
476  //- Return true if file has solutions associated with it
477  bool hasSolution();
478 
479 
480  // Edit
481 
482  //- Remap cellTable and boundaryRegion according to dictionary
483  bool remapMeshInfo
484  (
485  const objectRegistry& registry,
486  const fileName& remappingDictName = fileName::null
487  );
488 
489 
490  // Write
491 
492  //- Write the polyMesh
493  void writeMesh
494  (
495  const polyMesh& mesh,
497  ) const;
498 
499  //- Write cellTable, boundaryRegion and interface information
500  void writeAux(const objectRegistry& registry) const;
501 
502  //- Detect and read geometry if possible
503  bool readGeometry(const scalar scaleFactor = 1.0);
504 
505  //- Print general information about the mesh
506  void printInfo() const;
507 
508  //- Clear out some information after obtaining a polyMesh
509  void clearGeom();
510 
511  //- Map to original cell Id
512  const labelList& origCellId() const
513  {
514  return origCellId_;
515  }
516 
517  //- Map to original face Id
518  const labelList& origFaceId() const
519  {
520  return origFaceId_;
521  }
522 
523  //- Return interface definitions map
525  {
526  return interfaceDefinitions_;
527  }
528 
529  //- Return boundaryRegion table
530  const boundaryRegion& boundaryTableInfo() const
531  {
532  return boundaryRegion_;
533  }
534 
535  //- Return cell table
536  const cellTable& cellTableInfo() const
537  {
538  return cellTable_;
539  }
540 
541  //- Return a list of names corresponding to fluids
542  Map<word> fluids() const
543  {
544  return cellTable_.fluids();
545  }
546 
547  //- Return a list of names corresponding to solids
548  Map<word> solids() const
549  {
550  return cellTable_.solids();
551  }
552 
553  //- Return table of available solutions
554  const solutionTable& solutions()
555  {
556  detectSolution();
557  return solutionTable_;
558  }
559 
560  //- Return table of available fields
561  const fieldTable& fields()
562  {
563  detectSolution();
564  return fieldTable_;
565  }
566 
567  //- Return table of available lagrangian fields
568  const fieldTable& lagrangian()
569  {
570  detectSolution();
571  return lagrangianTable_;
572  }
573 
574  //- Read solution and field combination
576  (
577  const word& solutionName,
578  const word& fieldName,
579  const bool wallData = false
580  );
581 
582 };
583 
584 
585 /*---------------------------------------------------------------------------*\
586  Class ccm::reader::options Declaration
587 \*---------------------------------------------------------------------------*/
588 
589 class reader::options
590 {
591  // Private data
592 
593  //- Keep fluid regions (default true)
594  bool keepFluid_;
595 
596  //- Keep porous regions (default true)
597  bool keepPorous_;
598 
599  //- Keep solid regions (default true)
600  bool keepSolid_;
601 
602  //- Merge in-place interfaces (default true)
603  bool mergeInterfaces_;
604 
605  //- Rename interface boundaries as InterfaceN_0, InterfaceN_1
606  // (default true)
607  bool renameInterfaces_;
608 
609  //- Remove baffles by merging their respective faces (default false)
610  bool removeBaffles_;
611 
612  //- Use numbered names (eg, patch_0, zone_0) instead of human-readable
613  // names (default false)
614  bool useNumberedNames_;
615 
616  //- merge tolerance for points (default 0.05e-3)
617  scalar mergeTol_;
618 
619  //- Value to assign for undefined solutions (default: NaN)
620  scalar undefScalar_;
621 
622 
623 public:
624 
625  // Constructors
626 
627  //- Construct with the defaults
628  options();
629 
630 
631  // Member Functions
632 
633  // Access
634 
635  //- Keep fluid regions (default true)
636  bool keepFluid() const;
637 
638  //- Keep porous regions (default true)
639  bool keepPorous() const;
640 
641  //- Keep solid regions (default true)
642  bool keepSolid() const;
643 
644  //- Some region (fluid, porous, solid) is kept.
645  bool keptSomeRegion() const;
646 
647  //- Merge in-place interfaces (default true)
648  bool mergeInterfaces() const;
649 
650  //- Rename interface boundaries as InterfaceN_0, InterfaceN_1
651  // (default true)
652  bool renameInterfaces() const;
653 
654  //- Remove baffles by merging their respective faces (default false)
655  bool removeBaffles() const;
656 
657  //- Use numbered names (eg, patch_0, zone_0) instead of human-readable
658  // names (default false)
659  bool useNumberedNames() const;
660 
661  //- Merge tolerance for points (default 0.05e-3)
662  scalar mergeTol() const;
663 
664  //- Value to assign for undefined solutions (default: NaN)
665  scalar undefScalar() const;
666 
667 
668  // Edit
669 
670  //- Keep fluid regions
671  void keepFluid(bool b);
672 
673  //- Keep porous regions
674  void keepPorous(bool b);
675 
676  //- Keep solid regions
677  void keepSolid(bool b);
678 
679  //- Merge in-place interfaces
680  void mergeInterfaces(bool b);
681 
682  //- Rename interface boundaries as InterfaceN_0, InterfaceN_1
683  void renameInterfaces(bool b);
684 
685 
686  //- Remove baffles by merging their respective faces
687  void removeBaffles(bool b);
688 
689  //- Use numbered names (eg, patch_0, zone_0) instead of human-readable
690  void useNumberedNames(bool b);
691 
692  //- Merge tolerance for points (default 0.05e-3)
693  void mergeTol(const scalar& tol);
694 
695  //- Value to assign for undefined solutions (default: NaN)
696  void undefScalar(const scalar& val);
697 
698 };
699 
700 
701 // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
702 
703 } // End namespace ccm
704 } // End namespace Foam
705 
706 // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
707 
708 #endif
709 
710 // ************************************************************************* //
Foam::ccm::reader::origCellId
const labelList & origCellId() const
Map to original cell Id.
Definition: ccmReader.H:511
ccmInterfaceDefinitions.H
Containers for holding STARCCM interface definitions.
Foam::ccm::reader::option
const reader::options & option() const
Reference to the reader options.
Definition: ccmReader.C:722
Foam::ccm::reader::options::mergeTol
scalar mergeTol() const
Merge tolerance for points (default 0.05e-3)
Definition: ccmReaderOptions.C:96
Foam::ccm::reader::~reader
~reader()
Destructor (closes file)
Definition: ccmReader.C:714
Foam::word
A class for handling words, derived from Foam::string.
Definition: word.H:62
Foam::ccm::reader::options::keptSomeRegion
bool keptSomeRegion() const
Some region (fluid, porous, solid) is kept.
Definition: ccmReaderOptions.C:66
Foam::fileName
A class for handling file names.
Definition: fileName.H:69
Foam::ccm::reader::origFaceId
const labelList & origFaceId() const
Map to original face Id.
Definition: ccmReader.H:517
Foam::ccm::reader
Reads CCM files as written by PROSTAR/STARCCM.
Definition: ccmReader.H:184
ccmSolutionTable.H
Containers for holding ccm solution and field listings.
Foam::tmp
A class for managing temporary objects.
Definition: PtrList.H:59
Foam::ccm::reader::lagrangian
const fieldTable & lagrangian()
Return table of available lagrangian fields.
Definition: ccmReader.H:567
Foam::ccm::namesList< solutionEntry >
Foam::boundaryRegion
The boundaryRegion persistent data saved as a Map<dictionary>.
Definition: boundaryRegion.H:72
Foam::Map
A HashTable to objects of type <T> with a label key.
Definition: lumpedPointController.H:69
Foam::ccm::reader::printInfo
void printInfo() const
Print general information about the mesh.
Definition: ccmReader.C:523
cellTable.H
Foam::ccm::fieldTable
A list of the available fields.
Definition: ccmSolutionTable.H:354
polyMesh.H
STARCDCore.H
Foam::ccm::reader::clearGeom
void clearGeom()
Clear out some information after obtaining a polyMesh.
Definition: ccmReaderMesh.C:2570
Foam::ccm::reader::hasSolution
bool hasSolution()
Return true if file has solutions associated with it.
Definition: ccmReader.C:572
Foam::polyMesh
Mesh consisting of general polyhedral cells.
Definition: polyMesh.H:77
Foam::ccm::reader::readField
tmp< scalarField > readField(const word &solutionName, const word &fieldName, const bool wallData=false)
Read solution and field combination.
Definition: ccmReaderSolution.C:357
Foam::objectRegistry
Registry of regIOobjects.
Definition: objectRegistry.H:60
Foam::ccm::reader::options::removeBaffles
bool removeBaffles() const
Remove baffles by merging their respective faces (default false)
Definition: ccmReaderOptions.C:84
Foam::ccm::reader::options::options
options()
Construct with the defaults.
Definition: ccmReaderOptions.C:32
Foam::cellTable::fluids
Map< word > fluids() const
Return a Map of (id => name) for fluids.
Definition: cellTable.C:269
Foam::ccm::reader::interfaceDefinitionsInfo
const interfaceDefinitions & interfaceDefinitionsInfo() const
Return interface definitions map.
Definition: ccmReader.H:523
Foam::ccm::reader::writeAux
void writeAux(const objectRegistry &registry) const
Write cellTable, boundaryRegion and interface information.
Definition: ccmReaderAux.C:186
Foam::ccm::reader::warnDuplicates
static void warnDuplicates(const word &context, const wordList &lst)
Warn about repeated name.
Definition: ccmReaderAux.C:70
Foam::fileFormats::STARCDCore
Core routines used when reading/writing PROSTAR vrt/cel/bnd files.
Definition: STARCDCore.H:59
Foam::constant::physicoChemical::b
const dimensionedScalar b
Wien displacement law constant: default SI units: [m.K].
Definition: createFields.H:27
labelList.H
Foam::Field< vector >
Foam::ccm::reader::remapMeshInfo
bool remapMeshInfo(const objectRegistry &registry, const fileName &remappingDictName=fileName::null)
Remap cellTable and boundaryRegion according to dictionary.
Definition: ccmReader.C:598
Foam::ccm::reader::options::useNumberedNames
bool useNumberedNames() const
Use numbered names (eg, patch_0, zone_0) instead of human-readable.
Definition: ccmReaderOptions.C:90
Foam::cellTable
The cellTable persistent data saved as a Map<dictionary>.
Definition: cellTable.H:80
Foam::cellTable::solids
Map< word > solids() const
Return a Map of (id => name) for solids.
Definition: cellTable.C:275
Foam::ccm::reader::readGeometry
bool readGeometry(const scalar scaleFactor=1.0)
Detect and read geometry if possible.
Definition: ccmReader.C:537
Foam::ccm::reader::options::keepPorous
bool keepPorous() const
Keep porous regions (default true)
Definition: ccmReaderOptions.C:54
Foam::ccm::reader::solids
Map< word > solids() const
Return a list of names corresponding to solids.
Definition: ccmReader.H:547
Foam::IOstreamOption::streamFormat
streamFormat
Data format (ascii | binary)
Definition: IOstreamOption.H:70
Foam
Namespace for OpenFOAM.
Definition: atmBoundaryLayer.C:33
Foam::ccm::reader::hasGeometry
bool hasGeometry()
Return true if file has geometry associated with it.
Definition: ccmReader.C:565
Foam::ccm::reader::options::renameInterfaces
bool renameInterfaces() const
Rename interface boundaries as InterfaceN_0, InterfaceN_1.
Definition: ccmReaderOptions.C:78
Foam::fileName::null
static const fileName null
An empty fileName.
Definition: fileName.H:97
Foam::ccm::reader::boundaryTableInfo
const boundaryRegion & boundaryTableInfo() const
Return boundaryRegion table.
Definition: ccmReader.H:529
Foam::HashTable
A HashTable similar to std::unordered_map.
Definition: HashTable.H:105
ccmBase.H
Foam::ccm::reader::options::undefScalar
scalar undefScalar() const
Value to assign for undefined solutions (default: NaN)
Definition: ccmReaderOptions.C:102
Foam::ccm::reader::solutions
const solutionTable & solutions()
Return table of available solutions.
Definition: ccmReader.H:553
Foam::autoPtr
Pointer management similar to std::unique_ptr, with some additional methods and type checking.
Definition: HashPtrTable.H:53
Foam::ccm::reader::options::mergeInterfaces
bool mergeInterfaces() const
Merge in-place interfaces (default true)
Definition: ccmReaderOptions.C:72
Foam::IOstreamOption::BINARY
"binary"
Definition: IOstreamOption.H:73
Foam::IOstreamOption::ASCII
"ascii" (normal default)
Definition: IOstreamOption.H:72
Foam::ccm::reader::options
Definition: ccmReader.H:588
Foam::List< face >
Foam::ccm::reader::options::keepSolid
bool keepSolid() const
Keep solid regions (default true)
Definition: ccmReaderOptions.C:60
Foam::ccm::reader::writeMesh
void writeMesh(const polyMesh &mesh, IOstream::streamFormat fmt=IOstream::BINARY) const
Write the polyMesh.
Definition: ccmReader.C:580
Foam::UList< label >
Foam::ccm::reader::fluids
Map< word > fluids() const
Return a list of names corresponding to fluids.
Definition: ccmReader.H:541
Foam::ccm::reader::options::keepFluid
bool keepFluid() const
Keep fluid regions (default true)
Definition: ccmReaderOptions.C:48
ListOps.H
Various functions to operate on Lists.
Foam::ccm::interfaceDefinitions
A list of available interface definitions.
Definition: ccmInterfaceDefinitions.H:175
Foam::ccm::reader::mesh
autoPtr< polyMesh > mesh(const objectRegistry &registry, const fileName &remappingDictName=fileName::null)
Construct the polyMesh from the read geometry.
Definition: ccmReaderMesh.C:2591
boundaryRegion.H
Foam::ccm::base
Base functionality common to reader and writer classes.
Definition: ccmBase.H:62
Foam::data
Database for solution data, solver performance and other reduced data.
Definition: data.H:54
Foam::ccm::reader::fields
const fieldTable & fields()
Return table of available fields.
Definition: ccmReader.H:560
Foam::ccm::reader::cellTableInfo
const cellTable & cellTableInfo() const
Return cell table.
Definition: ccmReader.H:535