Loading...
Searching...
No Matches
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-------------------------------------------------------------------------------
10License
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
26Class
27 Foam::ccm::reader
28
29Description
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
138Note
139 this class is still under development
140 - any/all of the class names and members may change
141
142SourceFiles
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"
162#include "ccmSolutionTable.H"
163
164// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
165
166namespace Foam
167{
168namespace ccm
169{
170
171// * * * * * * * * * * * * * Forward Declarations * * * * * * * * * * * * * //
172
173class ccmID;
174class ccmNODE;
175class ccmGlobalState;
176class reader;
177
178// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
180/*---------------------------------------------------------------------------*\
181 Class ccm::reader Declaration
182\*---------------------------------------------------------------------------*/
183
184class reader
185:
186 public base,
188{
189public:
190
191 // Forward Declarations
192 class options;
193
194
195private:
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
424public:
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
536 const interfaceDefinitions& interfaceDefinitionsInfo() const noexcept
537 {
538 return interfaceDefinitions_;
539 }
540
541 //- Return boundaryRegion table
542 const boundaryRegion& boundaryTableInfo() const noexcept
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
601class 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
635public:
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_;
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// ************************************************************************* //
Various functions to operate on Lists.
#define FOAM_DLL_EXPORT
Definition ccmBase.H:50
Containers for holding STARCCM interface definitions.
Containers for holding ccm solution and field listings.
A HashTable similar to std::unordered_map.
Definition HashTable.H:124
A simple container for options an IOstream can normally have.
A 1D array of objects of type <T>, where the size of the vector is known and used for subscript bound...
Definition List.H:72
A HashTable to objects of type <T> with a label key.
Definition Map.H:54
Pointer management similar to std::unique_ptr, with some additional methods and type checking.
Definition autoPtr.H:65
The boundaryRegion persistent data saved as a Map<dictionary>.
base(const base &)=delete
No copy construct.
A list of the available fields.
A list of available interface definitions.
bool keptSomeRegion() const noexcept
Some region (fluid, porous, solid) is kept.
Definition ccmReader.H:865
void undefScalar(scalar val) noexcept
Value to assign for undefined solutions (default: NaN).
Definition ccmReader.H:950
bool mergeInterfaces() const noexcept
Merge in-place interfaces (default true).
Definition ccmReader.H:873
void keepFluid(bool b) noexcept
Keep fluid regions.
Definition ccmReader.H:910
bool useNumberedNames() const noexcept
Use numbered names (eg, patch_0, zone_0) instead of human-readable.
Definition ccmReader.H:892
bool keepFluid() const noexcept
Keep fluid regions (default true).
Definition ccmReader.H:850
constexpr options() noexcept
Construct with default values.
Definition ccmReader.H:829
void mergeInterfaces(bool b) noexcept
Merge in-place interfaces.
Definition ccmReader.H:925
bool renameInterfaces() const noexcept
Rename interface boundaries as InterfaceN_0, InterfaceN_1.
Definition ccmReader.H:880
void renameInterfaces(bool b) noexcept
Rename interface boundaries as InterfaceN_0, InterfaceN_1.
Definition ccmReader.H:930
void removeBaffles(bool b) noexcept
Remove baffles by merging their respective faces.
Definition ccmReader.H:935
void keepSolid(bool b) noexcept
Keep solid regions.
Definition ccmReader.H:920
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
bool keepSolid() const noexcept
Keep solid regions (default true).
Definition ccmReader.H:860
void keepPorous(bool b) noexcept
Keep porous regions.
Definition ccmReader.H:915
void mergeTol(scalar tol) noexcept
Merge tolerance for points (default 0.05e-3).
Definition ccmReader.H:945
void useNumberedNames(bool b) noexcept
Use numbered names (eg, patch_0, zone_0) instead of human-readable.
Definition ccmReader.H:940
bool keepPorous() const noexcept
Keep porous regions (default true).
Definition ccmReader.H:855
scalar mergeTol() const noexcept
Merge tolerance for points (default 0.05e-3).
Definition ccmReader.H:897
Reads CCM files as written by PROSTAR/STARCCM.
Definition ccmReader.H:183
FOAM_DLL_EXPORT void writeMesh(const polyMesh &mesh, IOstreamOption streamOpt=IOstreamOption(IOstreamOption::BINARY)) const
Write the polyMesh.
Definition ccmReader.C:572
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 void clearGeom()
Clear out some information after obtaining a polyMesh.
FOAM_DLL_EXPORT ~reader()
Destructor (closes file).
Definition ccmReader.C:685
const boundaryRegion & boundaryTableInfo() const noexcept
Return boundaryRegion table.
Definition ccmReader.H:695
FOAM_DLL_EXPORT bool hasSolution()
Return true if file has solutions associated with it.
Definition ccmReader.C:564
FOAM_DLL_EXPORT const reader::options & option() const
Reference to the reader options.
Definition ccmReader.C:693
FOAM_DLL_EXPORT bool hasGeometry()
Return true if file has geometry associated with it.
Definition ccmReader.C:557
FOAM_DLL_EXPORT bool readGeometry(const scalar scaleFactor=1.0)
Detect and read geometry if possible.
Definition ccmReader.C:529
const solutionTable & solutions()
Return table of available solutions.
Definition ccmReader.H:727
const interfaceDefinitions & interfaceDefinitionsInfo() const noexcept
Return interface definitions map.
Definition ccmReader.H:687
const cellTable & cellTableInfo() const noexcept
Return cell table.
Definition ccmReader.H:703
const labelList & origFaceId() const noexcept
Map to original face Id.
Definition ccmReader.H:679
FOAM_DLL_EXPORT void printInfo() const
Print general information about the mesh.
Definition ccmReader.C:515
const fieldTable & lagrangian()
Return table of available lagrangian fields.
Definition ccmReader.H:745
const fieldTable & fields()
Return table of available fields.
Definition ccmReader.H:736
FOAM_DLL_EXPORT tmp< scalarField > readField(const word &solutionName, const word &fieldName, const bool wallData=false)
Read solution and field combination.
FOAM_DLL_EXPORT autoPtr< polyMesh > mesh(const objectRegistry &registry, const fileName &remappingDictName=fileName::null)
Construct the polyMesh from the read geometry.
Map< word > fluids() const
Return a list of names corresponding to fluids.
Definition ccmReader.H:711
const labelList & origCellId() const noexcept
Map to original cell Id.
Definition ccmReader.H:671
FOAM_DLL_EXPORT void writeAux(const objectRegistry &registry) const
Write cellTable, boundaryRegion and interface information.
Map< word > solids() const
Return a list of names corresponding to solids.
Definition ccmReader.H:719
static FOAM_DLL_EXPORT void warnDuplicates(const word &context, const wordList &lst)
Warn about repeated name.
The cellTable persistent data saved as a Map<dictionary>.
Definition cellTable.H:80
Core routines used when reading/writing PROSTAR vrt/cel/bnd files.
Definition STARCDCore.H:56
A class for handling file names.
Definition fileName.H:75
static const fileName null
An empty fileName.
Definition fileName.H:111
Registry of regIOobjects.
Mesh consisting of general polyhedral cells.
Definition polyMesh.H:79
A class for managing temporary objects.
Definition tmp.H:75
A class for handling words, derived from Foam::string.
Definition word.H:66
dynamicFvMesh & mesh
namesList< solutionEntry > solutionTable
Namespace for OpenFOAM.
List< word > wordList
List of word.
Definition fileName.H:60
List< label > labelList
A List of labels.
Definition List.H:62
List< face > faceList
List of faces.
Definition faceListFwd.H:41
const direction noexcept
Definition scalarImpl.H:265
vectorField pointField
pointField is a vectorField.
UList< label > labelUList
A UList of labels.
Definition UList.H:75
volScalarField & b
volScalarField & e