chombo-discharge
Loading...
Searching...
No Matches
CD_ComputationalGeometry.H
Go to the documentation of this file.
1/*
2 * SPDX-FileCopyrightText: 2021-2026 SINTEF Energy Research
3 *
4 * SPDX-License-Identifier: GPL-3.0-or-later
5 */
6
13#ifndef CD_COMPUTATIONALGEOMETRY_H
14#define CD_COMPUTATIONALGEOMETRY_H
15
16// Std includes
17#include <memory>
18#include <string>
19
20// EBGeometry includes
21#include <EBGeometry.hpp>
22
23// Chombo includes
24#include <BaseIF.H>
25#include <GeometryService.H>
26#include <MFIndexSpace.H>
27#include <Box.H>
28#include <RealVect.H>
29#include <ProblemDomain.H>
30
31// Our includes
32#include <CD_Dielectric.H>
33#include <CD_Electrode.H>
35#include <CD_RealBox.H>
36#include <CD_NamespaceHeader.H>
37
47{
48public:
52 static constexpr int K = 4;
53
57 using Vec3 = EBGeometry::Vec3T<Real>;
58
62 using BV = EBGeometry::BoundingVolumes::AABBT<Real>;
63
69 using BoxTree = EBGeometry::BVH::PackedBVH<Real, int, K, EBGeometry::BVH::ValueStorage<int>>;
70
75
79 virtual ~ComputationalGeometry();
80
85 const Vector<Dielectric>&
86 getDielectrics() const;
87
92 const Vector<Electrode>&
93 getElectrodes() const;
94
99 Real
100 getGasPermittivity() const;
101
106 void
107 useScanShop(const ProblemDomain& a_beginDomain);
108
112 void
114
122 void
123 usePolyhedralShop(const ProblemDomain& a_beginDomain);
124
129 void
130 setDielectrics(const Vector<Dielectric>& a_dielectrics);
131
136 void
137 setElectrodes(const Vector<Electrode>& a_electrodes);
138
143 void
144 setGasPermittivity(const Real a_eps0);
145
150 const RefCountedPtr<MultiFluidIndexSpace>&
151 getMfIndexSpace() const;
152
157 const RefCountedPtr<BaseIF>&
159
164 const RefCountedPtr<BaseIF>&
166
172 const RefCountedPtr<BaseIF>&
173 getImplicitFunction(const phase::which_phase a_phase) const;
174
195 virtual void
196 makeGrids(const ProblemDomain& a_startDomain,
197 const ProblemDomain& a_stopDomain,
198 const RealVect& a_probLo,
199 const Real a_startDx,
200 const Real a_refineAngle,
201 const int a_maxGhostEB,
202 const int a_minBlockSize,
203 const int a_maxBlockSize);
204
209 int
210 getNumGridLevels() const noexcept;
211
225 GeometryService::InOut
226 classify(const Box& a_box, const int a_level, const phase::which_phase a_phase) const;
227
240 GeometryService::InOut
241 classify(const Box& a_box, const ProblemDomain& a_domain, const phase::which_phase a_phase) const;
242
247 int
248 getStartLevel() const noexcept;
249
255 int
256 getLevel(const ProblemDomain& a_domain) const noexcept;
257
265 Vector<Box>
266 getBoxes(const phase::which_phase a_phase, const int a_level, const GeometryService::InOut a_type) const noexcept;
267
273 const Vector<Box>&
274 getBoxes(const int a_level) const noexcept;
275
283 const Vector<Box>&
284 getCutTiles(const int a_level) const noexcept;
285
293 const Vector<Box>&
294 getSplitBoxes(const int a_level, Vector<int>& a_reasons) const noexcept;
295
302 const Vector<GeometryService::InOut>&
303 getTypes(const phase::which_phase a_phase, const int a_level) const noexcept;
304
310 const ProblemDomain&
311 getDomain(const int a_level) const noexcept;
312
318 Real
319 getDx(const int a_level) const noexcept;
320
333 virtual void
334 buildGeometries(const ProblemDomain& a_finestDomain,
335 const RealVect& a_probLo,
336 const Real a_finestDx,
337 const int a_nCellMax,
338 const int a_maxGhostEB,
339 const int a_maxCoarsen = -1);
340
341protected:
345 constexpr static Real s_thresh = 1.E-15;
346
354 constexpr static bool s_strictGeometry = true;
355
360 enum class Generator
361 {
362 GeometryShop,
363 ScanShop,
364 PolyhedralShop
365 };
366
371
375 RefCountedPtr<MultiFluidIndexSpace> m_multifluidIndexSpace;
376
380 RefCountedPtr<BaseIF> m_implicitFunctionGas;
381
385 RefCountedPtr<BaseIF> m_implicitFunctionSolid;
386
390 Vector<Dielectric> m_dielectrics;
391
395 Vector<Electrode> m_electrodes;
396
400 ProblemDomain m_scanDomain;
401
405 RealVect m_probLo;
406
410 Real m_eps0;
411
416
428
433
438
443
448
454
460
465
469 Vector<ProblemDomain> m_domains;
470
474 Vector<Real> m_dx;
475
479 Vector<Vector<Box>> m_cutTiles;
480
484 Vector<Vector<Box>> m_boxes;
485
490 Vector<std::shared_ptr<BoxTree>> m_boxTrees;
491
496 Vector<std::shared_ptr<BoxTree>> m_tileTrees;
497
502 Vector<Vector<int>> m_splitCounts;
503
507 Vector<Vector<Box>> m_splitBoxes;
508
512 Vector<Vector<int>> m_splitReasons;
513
517 Vector<Vector<GeometryService::InOut>> m_gasTypes;
518
522 Vector<Vector<GeometryService::InOut>> m_solidTypes;
523
527 void
528 reportGrids() const;
529
535 void
537
543 Vector<Vector<GeometryService::InOut>>&
544 types(const phase::which_phase a_phase) noexcept;
545
551 const Vector<Vector<GeometryService::InOut>>&
552 types(const phase::which_phase a_phase) const noexcept;
553
561 void
563
588 void
589 buildFinerLevels(Vector<Vector<int>>& a_firstChild, Vector<Vector<int>>& a_numChildren);
590
600 void
601 classifyBoxes(const Vector<Box>& a_boxes,
602 const int a_level,
603 Vector<GeometryService::InOut>& a_gasTypes,
604 Vector<GeometryService::InOut>& a_solidTypes) const;
605
616 Vector<int>
617 splitFlags(const Vector<Box>& a_boxes,
618 const int a_level,
619 const Vector<GeometryService::InOut>& a_gasTypes,
620 const Vector<GeometryService::InOut>& a_solidTypes) const;
621
650 GeometryService::InOut
651 classifyBox(const Box& a_box, const int a_level, const phase::which_phase a_phase) const;
652
661 enum class SplitReason
662 {
663 None,
664 Interior,
665 Ring,
666 Medial,
667 DoubleCrossing,
668 Twist
669 };
670
703 bool
704 hasTwistedPatch(const Box& a_box, const int a_level, const phase::which_phase a_phase) const;
705
731 exceedsCurvature(const Box& a_box, const int a_level, const phase::which_phase a_phase) const;
732
752 bool
753 doublyCrossedEdge(const Box& a_box, const int a_level, const phase::which_phase a_phase) const;
754
770 void
771 makeTiles();
772
797 void
798 classifyTiles(const Vector<Vector<int>>& a_firstChild,
799 const Vector<Vector<int>>& a_numChildren,
800 Vector<Vector<GeometryService::InOut>>& a_gasTileTypes,
801 Vector<Vector<GeometryService::InOut>>& a_solidTileTypes,
802 Vector<Vector<int>>& a_tileHosts) const;
803
807 static constexpr int s_treeLeafSize = 8;
808
813 static constexpr int s_maxTilePasses = 8;
814
820 static BV
821 boundingVolume(const Box& a_box) noexcept;
822
829 void
831
837 std::shared_ptr<BoxTree>
838 buildTree(const Vector<Box>& a_boxes) const;
839
847 static Vector<int>
848 meeting(const std::shared_ptr<BoxTree>& a_tree, const Vector<Box>& a_boxes, const Box& a_box);
849
869 bool
870 tagUnresolvedSeams(Vector<IntVectSet>& a_tags) const;
871
877 void
879
884 void
885 buildBoxTree(const int a_level);
886
893 Vector<int>
894 boxesMeeting(const int a_level, const Box& a_box) const;
895
902 Vector<int>
903 tilesMeeting(const int a_level, const Box& a_box) const;
904
911 int
912 containingBox(const int a_level, const IntVect& a_cell) const;
913
934 void
935 decimateBoxes(const Vector<Vector<GeometryService::InOut>>& a_gasTileTypes,
936 const Vector<Vector<GeometryService::InOut>>& a_solidTileTypes,
937 const Vector<Vector<int>>& a_tileHosts);
938
961 void
963
971 void
972 buildGasGeometry(GeometryService*& a_geoserver,
973 const ProblemDomain& a_finestDomain,
974 const RealVect& a_probLo,
975 const Real a_finestDx);
976
984 void
985 buildSolidGeometry(GeometryService*& a_geoserver,
986 const ProblemDomain& a_finestDomain,
987 const RealVect& a_probLo,
988 const Real a_finestDx);
989};
990
991#include <CD_NamespaceFooter.H>
992
993#endif
Dielectric class.
Declaration of an electrode class.
Multi-fluid index space.
Declaration of an axis-aligned box in space.
Abstract base class for geometries.
Definition CD_ComputationalGeometry.H:47
int m_maxBlockSize
Super-tile size, in cells; the size every box makeGrids makes is split to. ComputationalGeometry....
Definition CD_ComputationalGeometry.H:453
virtual void buildGeometries(const ProblemDomain &a_finestDomain, const RealVect &a_probLo, const Real a_finestDx, const int a_nCellMax, const int a_maxGhostEB, const int a_maxCoarsen=-1)
Build geometries and the MFIndexSpace.
Definition CD_ComputationalGeometry.cpp:247
bool tagUnresolvedSeams(Vector< IntVectSet > &a_tags) const
Tag the cells on the coarse side of a level boundary that the level above it would cross twice.
Definition CD_ComputationalGeometry.cpp:1457
void reportGrids() const
Report the boxes and tiles of every level to pout.
Definition CD_ComputationalGeometry.cpp:1971
bool hasTwistedPatch(const Box &a_box, const int a_level, const phase::which_phase a_phase) const
Whether any cut cell of the box holds an interface patch that is twisted about its own centre.
Definition CD_ComputationalGeometry.cpp:1183
std::shared_ptr< BoxTree > buildTree(const Vector< Box > &a_boxes) const
Build one spatial index over a list of boxes.
Definition CD_ComputationalGeometry.cpp:1602
const RefCountedPtr< BaseIF > & getGasImplicitFunction() const
Get the implicit function used to generate the gas-phase EBIS.
Definition CD_ComputationalGeometry.cpp:157
Vector< std::shared_ptr< BoxTree > > m_boxTrees
Spatial index over the boxes of every level, one tree per level, holding the boxes' indices into m_bo...
Definition CD_ComputationalGeometry.H:490
bool doublyCrossedEdge(const Box &a_box, const int a_level, const phase::which_phase a_phase) const
Whether a cell edge of a box is crossed twice by the surface at the spacing of the level above it.
Definition CD_ComputationalGeometry.cpp:1093
Vector< Vector< GeometryService::InOut > > & types(const phase::which_phase a_phase) noexcept
The per-level classifications of one phase.
Definition CD_ComputationalGeometry.cpp:751
const RefCountedPtr< BaseIF > & getImplicitFunction(const phase::which_phase a_phase) const
Get implicit function for the specified phase.
Definition CD_ComputationalGeometry.cpp:179
virtual void makeGrids(const ProblemDomain &a_startDomain, const ProblemDomain &a_stopDomain, const RealVect &a_probLo, const Real a_startDx, const Real a_refineAngle, const int a_maxGhostEB, const int a_minBlockSize, const int a_maxBlockSize)
Build the grids the index space is generated over.
Definition CD_ComputationalGeometry.cpp:335
int getNumGridLevels() const noexcept
Number of levels makeGrids built.
Definition CD_ComputationalGeometry.cpp:533
Vector< int > tilesMeeting(const int a_level, const Box &a_box) const
Cut tiles of a level that intersect a box.
Definition CD_ComputationalGeometry.cpp:1678
const Vector< Electrode > & getElectrodes() const
Get electrodes.
Definition CD_ComputationalGeometry.cpp:146
Vector< std::shared_ptr< BoxTree > > m_tileTrees
Spatial index over the cut tiles of every level, one tree per level, holding the tiles' indices into ...
Definition CD_ComputationalGeometry.H:496
Generator
Which generator to build the geometry with.
Definition CD_ComputationalGeometry.H:361
int getStartLevel() const noexcept
Level of the start domain. Every level at or below it is whole; the cut tiles begin above it.
Definition CD_ComputationalGeometry.cpp:670
Vector< Vector< GeometryService::InOut > > m_gasTypes
Gas-phase classification of each box in m_boxes, parallel to it.
Definition CD_ComputationalGeometry.H:517
static Vector< int > meeting(const std::shared_ptr< BoxTree > &a_tree, const Vector< Box > &a_boxes, const Box &a_box)
The boxes of a list that intersect a box, through the list's spatial index.
Definition CD_ComputationalGeometry.cpp:1620
void buildTileTrees()
Build the spatial index over the cut tiles of every level.
Definition CD_ComputationalGeometry.cpp:1587
void buildBoxTrees()
Build the spatial index over the boxes of every level.
Definition CD_ComputationalGeometry.cpp:1572
int getLevel(const ProblemDomain &a_domain) const noexcept
Level of a domain among the levels makeGrids built.
Definition CD_ComputationalGeometry.cpp:676
void useScanShop(const ProblemDomain &a_beginDomain)
Calls for ComputationalGeometry to use ScanShop rather than Chombo's default geometry generation tool...
Definition CD_ComputationalGeometry.cpp:95
void useChomboShop()
Calls for ComputationalGeometry to use Chombo's geometry generation tool.
Definition CD_ComputationalGeometry.cpp:121
bool m_refineSaddles
Whether a box holding a saddle – an interface patch twisted about its own centre – is split....
Definition CD_ComputationalGeometry.H:427
void makeTiles()
Step 2: tile the boxes that are irregular in either phase into one properly nested set per level.
Definition CD_ComputationalGeometry.cpp:1387
Real m_eps0
Background permittivity.
Definition CD_ComputationalGeometry.H:410
void decimateBoxes(const Vector< Vector< GeometryService::InOut > > &a_gasTileTypes, const Vector< Vector< GeometryService::InOut > > &a_solidTileTypes, const Vector< Vector< int > > &a_tileHosts)
Step 4: cut every hit box down to what the tiles left of it, and replace the lists on the tiled level...
Definition CD_ComputationalGeometry.cpp:1803
void usePolyhedralShop(const ProblemDomain &a_beginDomain)
Generate the geometry with PolyhedralGeometryShop.
Definition CD_ComputationalGeometry.cpp:109
ProblemDomain m_scanDomain
Grid level where we begin using ScanShop.
Definition CD_ComputationalGeometry.H:400
void setElectrodes(const Vector< Electrode > &a_electrodes)
Set electrodes.
Definition CD_ComputationalGeometry.cpp:225
void buildSolidGeometry(GeometryService *&a_geoserver, const ProblemDomain &a_finestDomain, const RealVect &a_probLo, const Real a_finestDx)
Set up the geometry generation tool for the solid phase, i.e. the part inside the dielectrics.
Definition CD_ComputationalGeometry.cpp:2055
virtual ~ComputationalGeometry()
Destructor.
Definition CD_ComputationalGeometry.cpp:86
bool m_profile
Whether makeGrids reports its levels and its timings to pout. ComputationalGeometry....
Definition CD_ComputationalGeometry.H:459
Vector< Electrode > m_electrodes
List of electrodes.
Definition CD_ComputationalGeometry.H:395
Vector< int > splitFlags(const Vector< Box > &a_boxes, const int a_level, const Vector< GeometryService::InOut > &a_gasTypes, const Vector< GeometryService::InOut > &a_solidTypes) const
Whether each box must split, the work shared between the ranks.
Definition CD_ComputationalGeometry.cpp:922
void buildCoarserLevels()
Step 5: build the levels coarser than the start level, and push irregularity down onto every whole le...
Definition CD_ComputationalGeometry.cpp:1914
GeometryService::InOut classify(const Box &a_box, const int a_level, const phase::which_phase a_phase) const
Classify a box on a level from the grids makeGrids built.
Definition CD_ComputationalGeometry.cpp:539
Real m_refineAngle
Angle, in degrees, between neighbouring normals above which an irregular box is split.
Definition CD_ComputationalGeometry.H:415
const Vector< Box > & getSplitBoxes(const int a_level, Vector< int > &a_reasons) const noexcept
The boxes that split in the upward pass on a level, with why: 1 a pair inside the box,...
Definition CD_ComputationalGeometry.cpp:723
int m_startLevel
Level of the start domain; every level below it is built whole.
Definition CD_ComputationalGeometry.H:437
Vector< Vector< int > > m_splitReasons
Per level, the reason each box in m_splitBoxes split.
Definition CD_ComputationalGeometry.H:512
Generator m_generator
Generator selected by the user.
Definition CD_ComputationalGeometry.H:370
const Vector< GeometryService::InOut > & getTypes(const phase::which_phase a_phase, const int a_level) const noexcept
Classification of every box on a level for a phase, parallel to getBoxes(level).
Definition CD_ComputationalGeometry.cpp:733
static constexpr bool s_strictGeometry
Whether a cut cell whose body will not close stops the run.
Definition CD_ComputationalGeometry.H:354
SplitReason
Why a box split: not at all, a pair of cut cells inside the box turning too sharply,...
Definition CD_ComputationalGeometry.H:662
int m_maxGhostEB
Maximum number of ghost cells that we will ever need.
Definition CD_ComputationalGeometry.H:432
void buildFinerLevels(Vector< Vector< int > > &a_firstChild, Vector< Vector< int > > &a_numChildren)
Step 1: the upward pass, from the start level to the stop level.
Definition CD_ComputationalGeometry.cpp:782
static BV boundingVolume(const Box &a_box) noexcept
The bounding volume of a box in index space, its cells taken as the unit cubes they are.
Definition CD_ComputationalGeometry.cpp:1540
void buildStartLevel()
Step 0: build and classify the start level.
Definition CD_ComputationalGeometry.cpp:767
void classifyTiles(const Vector< Vector< int > > &a_firstChild, const Vector< Vector< int > > &a_numChildren, Vector< Vector< GeometryService::InOut > > &a_gasTileTypes, Vector< Vector< GeometryService::InOut > > &a_solidTileTypes, Vector< Vector< int > > &a_tileHosts) const
Step 3: place every tile of every level in the boxes and classify it in both phases.
Definition CD_ComputationalGeometry.cpp:1702
void buildBoxTree(const int a_level)
Build the spatial index over the boxes of one level.
Definition CD_ComputationalGeometry.cpp:1559
RealVect m_probLo
Lower-left corner of the domain.
Definition CD_ComputationalGeometry.H:405
SplitReason exceedsCurvature(const Box &a_box, const int a_level, const phase::which_phase a_phase) const
Whether the interface turns by more than m_refineAngle between neighbouring cut cells of a box.
Definition CD_ComputationalGeometry.cpp:1274
void buildImplicitFunctions()
Build the composite implicit functions of the two phases from the electrodes and dielectrics.
Definition CD_ComputationalGeometry.cpp:291
Vector< Vector< Box > > m_cutTiles
Cut-cell tiles per level, common to both phases.
Definition CD_ComputationalGeometry.H:479
void setDielectrics(const Vector< Dielectric > &a_dielectrics)
Set dielectrics.
Definition CD_ComputationalGeometry.cpp:214
Vector< Vector< Box > > m_boxes
Boxes per level, common to both phases.
Definition CD_ComputationalGeometry.H:484
const ProblemDomain & getDomain(const int a_level) const noexcept
Domain of a level.
Definition CD_ComputationalGeometry.cpp:739
void buildGasGeometry(GeometryService *&a_geoserver, const ProblemDomain &a_finestDomain, const RealVect &a_probLo, const Real a_finestDx)
Set up the geometry generation tool for the gas phase.
Definition CD_ComputationalGeometry.cpp:2003
const RefCountedPtr< MultiFluidIndexSpace > & getMfIndexSpace() const
Get the multifluid index space.
Definition CD_ComputationalGeometry.cpp:203
RefCountedPtr< MultiFluidIndexSpace > m_multifluidIndexSpace
Multifluid index spaces.
Definition CD_ComputationalGeometry.H:375
void classifyBoxes(const Vector< Box > &a_boxes, const int a_level, Vector< GeometryService::InOut > &a_gasTypes, Vector< GeometryService::InOut > &a_solidTypes) const
Classify a list of boxes in both phases, the work shared between the ranks.
Definition CD_ComputationalGeometry.cpp:854
Vector< Box > getBoxes(const phase::which_phase a_phase, const int a_level, const GeometryService::InOut a_type) const noexcept
Boxes of one classification for a phase on a level.
Definition CD_ComputationalGeometry.cpp:690
static constexpr int s_treeLeafSize
Boxes per leaf the spatial index over a level's boxes is built with.
Definition CD_ComputationalGeometry.H:807
EBGeometry::BVH::PackedBVH< Real, int, K, EBGeometry::BVH::ValueStorage< int > > BoxTree
Spatial index over the boxes of one level. The primitives are the boxes' indices into that level's li...
Definition CD_ComputationalGeometry.H:69
GeometryService::InOut classifyBox(const Box &a_box, const int a_level, const phase::which_phase a_phase) const
Classify a box of one phase on one level as regular, covered or irregular.
Definition CD_ComputationalGeometry.cpp:989
EBGeometry::BoundingVolumes::AABBT< Real > BV
Bounding volume of the spatial index over the boxes of a level.
Definition CD_ComputationalGeometry.H:62
Vector< Dielectric > m_dielectrics
List of dielectrics.
Definition CD_ComputationalGeometry.H:390
Real getGasPermittivity() const
Get the background gas permittivity.
Definition CD_ComputationalGeometry.cpp:192
int m_stopLevel
Level of the stop domain, the finest level.
Definition CD_ComputationalGeometry.H:442
const Vector< Box > & getCutTiles(const int a_level) const noexcept
The cut tiles on a level: the boxes of the level that carry cut cells or nest the level above,...
Definition CD_ComputationalGeometry.cpp:717
Vector< Vector< int > > m_splitCounts
Per level, the number of boxes that split for each SplitReason, and per level the number of tiles tha...
Definition CD_ComputationalGeometry.H:502
int m_minBlockSize
Tile size, in cells. ComputationalGeometry.min_block_size, 8 when not given.
Definition CD_ComputationalGeometry.H:447
bool m_verbose
Whether every member function announces itself in pout. ComputationalGeometry.verbose,...
Definition CD_ComputationalGeometry.H:464
Real getDx(const int a_level) const noexcept
Grid spacing of a level.
Definition CD_ComputationalGeometry.cpp:745
static constexpr int s_maxTilePasses
Most times the tiles are built: the first build, and one more for every pass that finds a cell the le...
Definition CD_ComputationalGeometry.H:813
EBGeometry::Vec3T< Real > Vec3
Coordinate of a bounding volume of the spatial index.
Definition CD_ComputationalGeometry.H:57
const Vector< Dielectric > & getDielectrics() const
Get dielectrics.
Definition CD_ComputationalGeometry.cpp:135
ComputationalGeometry()
Constructor. Sets a blank geometry.
Definition CD_ComputationalGeometry.cpp:50
Vector< ProblemDomain > m_domains
Domains of the levels makeGrids builds, coarsest first.
Definition CD_ComputationalGeometry.H:469
const RefCountedPtr< BaseIF > & getSolidImplicitFunction() const
Get the implicit function used to generate the solid-phase EBIS.
Definition CD_ComputationalGeometry.cpp:168
static constexpr Real s_thresh
Threshold for Vof computation.
Definition CD_ComputationalGeometry.H:345
static constexpr int K
Branching factor of the spatial index over the boxes of a level.
Definition CD_ComputationalGeometry.H:52
int containingBox(const int a_level, const IntVect &a_cell) const
Index of the box of a level that contains a cell, which one box does on a level that is whole.
Definition CD_ComputationalGeometry.cpp:1689
Vector< Real > m_dx
Grid spacings of the levels makeGrids builds, coarsest first.
Definition CD_ComputationalGeometry.H:474
Vector< Vector< Box > > m_splitBoxes
Per level, the boxes that split in the upward pass, and why (SplitReason as an integer),...
Definition CD_ComputationalGeometry.H:507
RefCountedPtr< BaseIF > m_implicitFunctionGas
The gas-phase implicit function (i.e. outside electrodes and dielectrics).
Definition CD_ComputationalGeometry.H:380
Vector< int > boxesMeeting(const int a_level, const Box &a_box) const
Boxes of a level that intersect a box.
Definition CD_ComputationalGeometry.cpp:1667
RefCountedPtr< BaseIF > m_implicitFunctionSolid
The solid-phase implicit function (i.e. the inside of the dielectrics).
Definition CD_ComputationalGeometry.H:385
void setGasPermittivity(const Real a_eps0)
Set the background permittivity.
Definition CD_ComputationalGeometry.cpp:236
Vector< Vector< GeometryService::InOut > > m_solidTypes
Solid-phase classification of each box in m_boxes, parallel to it.
Definition CD_ComputationalGeometry.H:522
Derived version of GeometryShop that load balances based on the cut cells themselves.
Definition CD_ScanShop.H:32
Phase names namespace.
Definition CD_MultiFluidIndexSpace.H:28
which_phase
Enumeration of supported phases.
Definition CD_MultiFluidIndexSpace.H:38