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// Chombo includes
17#include <BaseIF.H>
18#include <MFIndexSpace.H>
19#include <Box.H>
20#include <RealVect.H>
21#include <ProblemDomain.H>
22
23// Our includes
24#include <CD_Dielectric.H>
25#include <CD_Electrode.H>
27#include <CD_RealBox.H>
28#include <CD_NamespaceHeader.H>
29
39{
40public:
45
49 virtual ~ComputationalGeometry();
50
55 const Vector<Dielectric>&
56 getDielectrics() const;
57
62 const Vector<Electrode>&
63 getElectrodes() const;
64
69 Real
70 getGasPermittivity() const;
71
76 void
77 useScanShop(const ProblemDomain& a_beginDomain);
78
82 void
84
89 void
90 setDielectrics(const Vector<Dielectric>& a_dielectrics);
91
96 void
97 setElectrodes(const Vector<Electrode>& a_electrodes);
98
103 void
104 setGasPermittivity(const Real a_eps0);
105
110 const RefCountedPtr<MultiFluidIndexSpace>&
111 getMfIndexSpace() const;
112
117 const RefCountedPtr<BaseIF>&
119
124 const RefCountedPtr<BaseIF>&
126
132 const RefCountedPtr<BaseIF>&
133 getImplicitFunction(const phase::which_phase a_phase) const;
134
147 virtual void
148 buildGeometries(const ProblemDomain& a_finestDomain,
149 const RealVect& a_probLo,
150 const Real a_finestDx,
151 const int a_nCellMax,
152 const int a_maxGhostEB,
153 const int a_maxCoarsen = -1);
154
155protected:
159 constexpr static Real s_thresh = 1.E-15;
160
164 RefCountedPtr<MultiFluidIndexSpace> m_multifluidIndexSpace;
165
169 Real m_eps0;
170
175
179 ProblemDomain m_scanDomain;
180
185
189 Vector<Dielectric> m_dielectrics;
190
194 Vector<Electrode> m_electrodes;
195
199 RefCountedPtr<BaseIF> m_implicitFunctionGas;
200
204 RefCountedPtr<BaseIF> m_implicitFunctionSolid;
205
213 void
214 buildGasGeometry(GeometryService*& a_geoserver,
215 const ProblemDomain& a_finestDomain,
216 const RealVect& a_probLo,
217 const Real a_finestDx);
218
226 void
227 buildSolidGeometry(GeometryService*& a_geoserver,
228 const ProblemDomain& a_finestDomain,
229 const RealVect& a_probLo,
230 const Real a_finestDx);
231};
232
233#include <CD_NamespaceFooter.H>
234
235#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:39
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:152
const RefCountedPtr< BaseIF > & getGasImplicitFunction() const
Get the implicit function used to generate the gas-phase EBIS.
Definition CD_ComputationalGeometry.cpp:88
const RefCountedPtr< BaseIF > & getImplicitFunction(const phase::which_phase a_phase) const
Get implicit function for the specified phase.
Definition CD_ComputationalGeometry.cpp:104
const Vector< Electrode > & getElectrodes() const
Get electrodes.
Definition CD_ComputationalGeometry.cpp:80
void useScanShop(const ProblemDomain &a_beginDomain)
Calls for ComputationalGeometry to use ScanShop rather than Chombo's default geometry generation tool...
Definition CD_ComputationalGeometry.cpp:50
void useChomboShop()
Calls for ComputationalGeometry to use Chombo's geometry generation tool.
Definition CD_ComputationalGeometry.cpp:61
Real m_eps0
Background permittivity.
Definition CD_ComputationalGeometry.H:169
ProblemDomain m_scanDomain
Grid level where we begin using ScanShop.
Definition CD_ComputationalGeometry.H:179
void setElectrodes(const Vector< Electrode > &a_electrodes)
Set electrodes.
Definition CD_ComputationalGeometry.cpp:136
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:233
virtual ~ComputationalGeometry()
Destructor.
Definition CD_ComputationalGeometry.cpp:44
Vector< Electrode > m_electrodes
List of electrodes.
Definition CD_ComputationalGeometry.H:194
bool m_useScanShop
True if we use the chombo-discharge geometry generation utility.
Definition CD_ComputationalGeometry.H:174
int m_maxGhostEB
Maximum number of ghost cells that we will ever need.
Definition CD_ComputationalGeometry.H:184
void setDielectrics(const Vector< Dielectric > &a_dielectrics)
Set dielectrics.
Definition CD_ComputationalGeometry.cpp:128
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:192
const RefCountedPtr< MultiFluidIndexSpace > & getMfIndexSpace() const
Get the multifluid index space.
Definition CD_ComputationalGeometry.cpp:120
RefCountedPtr< MultiFluidIndexSpace > m_multifluidIndexSpace
Multifluid index spaces.
Definition CD_ComputationalGeometry.H:164
Vector< Dielectric > m_dielectrics
List of dielectrics.
Definition CD_ComputationalGeometry.H:189
Real getGasPermittivity() const
Get the background gas permittivity.
Definition CD_ComputationalGeometry.cpp:112
const Vector< Dielectric > & getDielectrics() const
Get dielectrics.
Definition CD_ComputationalGeometry.cpp:72
ComputationalGeometry()
Constructor. Sets a blank geometry.
Definition CD_ComputationalGeometry.cpp:30
const RefCountedPtr< BaseIF > & getSolidImplicitFunction() const
Get the implicit function used to generate the solid-phase EBIS.
Definition CD_ComputationalGeometry.cpp:96
static constexpr Real s_thresh
Threshold for Vof computation.
Definition CD_ComputationalGeometry.H:159
RefCountedPtr< BaseIF > m_implicitFunctionGas
The gas-phase implicit function (i.e. outside electrodes and dielectrics).
Definition CD_ComputationalGeometry.H:199
RefCountedPtr< BaseIF > m_implicitFunctionSolid
The solid-phase implicit function (i.e. the inside of the dielectrics).
Definition CD_ComputationalGeometry.H:204
void setGasPermittivity(const Real a_eps0)
Set the background permittivity.
Definition CD_ComputationalGeometry.cpp:144
which_phase
Enumeration of supported phases.
Definition CD_MultiFluidIndexSpace.H:38