|
|
| FieldSolver () |
| | Constructor.
|
| |
| | FieldSolver (const FieldSolver &a_other)=delete |
| | Disallowed copy constructor.
|
| |
| | FieldSolver (const FieldSolver &&a_other)=delete |
| | Disallowed move constructor.
|
| |
| FieldSolver & | operator= (const FieldSolver &a_other)=delete |
| | Disallowed copy assignment operator.
|
| |
| FieldSolver & | operator= (const FieldSolver &&a_other)=delete |
| | Disallowed move assignment operator.
|
| |
|
virtual | ~FieldSolver () |
| | Constructor.
|
| |
| virtual void | setupSolver ()=0 |
| | Set up solver routines.
|
| |
| virtual void | setSolverPermittivities (const MFAMRCellData &a_permittivityCell, const MFAMRFluxData &a_permittivityFace, const MFAMRIVData &a_permittivityEB) |
| | A special routine for when solver permittivities need to change but solver does not.
|
| |
| virtual bool | solve (const bool a_zeroPhi=false) |
| | Solve Poisson equation using m_potential, m_rho, and m_sigma.
|
| |
| virtual bool | solve (MFAMRCellData &a_potential, const bool a_zerophi=false) |
| | Solve Poisson equation onto a_phi using m_rho, and m_sigma as right-hand sides.
|
| |
| virtual bool | solve (MFAMRCellData &a_phi, const MFAMRCellData &a_rho, const EBAMRIVData &a_sigma, const bool a_zerophi=false)=0 |
| | Solves Poisson equation onto a_phi using a_rho and a_sigma as right-hand sides.
|
| |
| virtual void | computeElectricField () |
| | Compute the cell-centered electric field.
|
| |
| virtual void | computeElectricField (MFAMRCellData &a_E, const MFAMRCellData &a_potential) const =0 |
| | Compute the cell-centered electric field.
|
| |
| virtual void | computeElectricField (MFAMRFluxData &a_E, const MFAMRCellData &a_potential) const =0 |
| | Compute the face-centered electric field.
|
| |
| virtual void | computeElectricField (EBAMRCellData &a_E, const phase::which_phase a_phase, const MFAMRCellData &a_potential) const =0 |
| | Compute the cell-centered electric field on a specific phase.
|
| |
| virtual void | computeElectricField (EBAMRFluxData &a_E, const phase::which_phase a_phase, const MFAMRCellData &a_potential) const =0 |
| | Compute the face-centered electric field on a specific phase.
|
| |
| virtual void | parseOptions ()=0 |
| | Parse options (for derived class)
|
| |
| virtual void | parseRuntimeOptions ()=0 |
| | Parse runtime options (for derived class)
|
| |
|
virtual void | allocate () |
| | Allocates internal storage for FieldSolver. Derived classes may want to overwrite.
|
| |
| virtual void | preRegrid (const int a_lbase, const int a_oldFinestLevel) |
| | Cache state before regridding.
|
| |
| virtual void | computeDisplacementField (MFAMRCellData &a_displacementField, const MFAMRCellData &a_electricField) |
| | Compute displacement field from the electric field.
|
| |
|
virtual void | deallocate () |
| | Deallocate internal storage.
|
| |
| virtual void | regrid (const int a_lmin, const int a_oldFinestLevel, const int a_newFinestLevel) |
| | Regrid method.
|
| |
| virtual void | registerOperators ()=0 |
| | Register operators for AMR. Derived classes have to implement these.
|
| |
| void | setRho (const Real a_rho) |
| | Set space charge to constant value everywhere.
|
| |
| void | setRho (const std::function< Real(const RealVect)> &a_rho) |
| | Set space charge to spatially dependent function.
|
| |
|
void | setSigma (const Real a_sigma) |
| | Set surface charge to specified value.
|
| |
| void | setSigma (const std::function< Real(const RealVect)> &a_sigma) |
| | Set surface charge density to spatially dependent function.
|
| |
| void | setComputationalGeometry (const RefCountedPtr< ComputationalGeometry > &a_computationalGeometry) |
| | Set the computational geometry.
|
| |
| void | setAmr (const RefCountedPtr< AmrMesh > &a_amr) |
| | Set the amr object.
|
| |
| virtual void | setPermittivities () |
| | Set the permittivities.
|
| |
| virtual void | writePlotFile () |
| | Write plot file.
|
| |
| virtual void | postCheckpoint () |
| | Write checkpoint data for a level @paramo[out] a_handle HDF5 handle.
|
| |
| virtual void | writePlotData (LevelData< EBCellFAB > &a_output, int &a_comp, const std::string a_outputRealm, const int a_level, const bool a_forceNoInterp=false) const noexcept |
| | Write output data to a_output.
|
| |
| virtual void | writeMultifluidData (LevelData< EBCellFAB > &a_output, int &a_comp, const MFAMRCellData &a_data, const phase::which_phase a_phase, const std::string a_outputRealm, const int a_level, const bool a_interp) const noexcept |
| | Write multifluid data to single-fluid data holders.
|
| |
| virtual void | writeSurfaceData (LevelData< EBCellFAB > &a_output, int &a_comp, const LevelData< BaseIVFAB< Real > > &a_data, const std::string a_outputRealm, const int a_level) const noexcept |
| | Write surface data to volume data holder.
|
| |
| void | setRealm (const std::string a_realm) |
| | Set Realm.
|
| |
| void | setTime (const int a_timeStep, const Real a_time, const Real a_dt) |
| | Set time for this solver.
|
| |
| void | setVerbosity (const int a_verbosity) |
| | Set verbosity.
|
| |
| virtual void | setVoltage (std::function< Real(const Real a_time)> a_voltage) |
| | Set potential dependence in time.
|
| |
| virtual void | setDomainSideBcFunction (const int a_dir, const Side::LoHiSide a_side, const ElectrostaticDomainBc::BcFunction &a_function) |
| | Boundary condition function on a domain side.
|
| |
| virtual void | setElectrodeDirichletFunction (const int a_electrode, const ElectrostaticEbBc::BcFunction &a_function) |
| | Set embedded boundary Dirichlet function on a specific electrode.
|
| |
| virtual int | getNumberOfPlotVariables () const |
| | Get number of output fields.
|
| |
| const std::function< Real(const Real a_time)> & | getVoltage () const |
| | Get voltage function.
|
| |
| Real | getCurrentVoltage () const |
| | Get current voltage.
|
| |
| Real | getTime () const |
| | Get time.
|
| |
| Real | computeCapacitance () |
| | Compute the capacitance.
|
| |
| Real | computeEnergy (const MFAMRCellData &a_electricField) |
| | Compute energy density U = 0.5*int(E.dot.D dV)
|
| |
| virtual Vector< std::string > | getPlotVariableNames () const |
| | Get output plot names.
|
| |
| virtual Vector< long long > | computeLoads (const DisjointBoxLayout &a_dbl, const int a_level) |
| | Get computational loads for a level.
|
| |
| void | setDataLocation (const Location::Cell a_dataLocation) |
| | Set the data location for the solver.
|
| |
| std::string | getRealm () const |
| | Get the Realm where this solver is registered.
|
| |
|
MFAMRCellData & | getPotential () |
| | Get potential on both phases.
|
| |
|
MFAMRCellData & | getElectricField () |
| | Get electric field on both phases.
|
| |
| MFAMRCellData & | getRho () |
| | Get storage for the space charge density.
|
| |
|
MFAMRCellData & | getResidue () |
| | Get the residue.
|
| |
|
MFAMRCellData & | getPermittivityCell () |
| | Get cell-centered permittivity.
|
| |
|
MFAMRFluxData & | getPermittivityFace () |
| | Get face-centered permittivity.
|
| |
|
MFAMRIVData & | getPermittivityEB () |
| | Get irregular b coefficient.
|
| |
|
EBAMRIVData & | getSigma () |
| | Get m_sigma.
|
| |
|
Location::Cell | getDataLocation () const |
| | Get data location.
|
| |
|
|
virtual void | parseVerbosity () |
| | Parse solver class verbosity.
|
| |
|
virtual void | parsePlotVariables () |
| | Function which parses which plot variables to write to plot files.
|
| |
|
virtual void | parseDomainBc () |
| | Parse domain boundary conditions.
|
| |
|
virtual void | parseRegridSlopes () |
| | Parse slope regrid.
|
| |
|
virtual void | setDefaultDomainBcFunctions () |
| | Set default BC functions. This sets all the m_domainBcFunction objects to s_defaultDomainBcFunction, which return 1 everywhere.
|
| |
| virtual void | setDefaultEbBcFunctions () |
| | Set default Dirichlet boundary conditions on the embedded boundaries.
|
| |
| Real | getDielectricPermittivity (const RealVect &a_pos) const |
| | Get relative permittivity at some point in space.
|
| |
| virtual void | setCellPermittivities (EBCellFAB &a_perm, const Box &a_cellBox, const EBISBox &a_ebisbox, const RealVect &a_probLo, const Real &a_dx) |
| | Set cell-centered permittivities.
|
| |
| virtual void | setFacePermittivities (EBFluxFAB &a_perm, const Box &a_cellBox, const EBISBox &a_ebisbox, const RealVect &a_probLo, const Real &a_dx) |
| | Set face-centered permittivities.
|
| |
| virtual void | setEbPermittivities (BaseIVFAB< Real > &a_perm, const Box &a_cellBox, const EBISBox &a_ebisbox, const RealVect &a_origin, const Real &a_dx) |
| | Set EB-centered permittivities.
|
| |
| virtual ElectrostaticDomainBc::BcType | parseBcString (const std::string a_str) const |
| | Returns BC type based on string.
|
| |
| virtual std::string | makeBcString (const int a_dir, const Side::LoHiSide a_side) const |
| | Shortcut for making a boundary condition string.
|
| |
| virtual void | fillCoveredPotential (MFAMRCellData &a_phi) const noexcept |
| | Utility routine that fills the gas-side covered cells by the potential from the closest electrode.
|
| |
|
|
Location::Cell | m_dataLocation |
| | Flag which specifies that data location.
|
| |
|
Location::Face | m_faceLocation |
| | Flag which specifies where the permittivities are stored.
|
| |
|
std::string | m_realm |
| | Realm where this solver is registered.
|
| |
|
std::string | m_className |
| | Class name (i.e., "FieldSolver" for the base class)
|
| |
|
RefCountedPtr< MultiFluidIndexSpace > | m_multifluidIndexSpace |
| | Multifluid index space.
|
| |
|
RefCountedPtr< ComputationalGeometry > | m_computationalGeometry |
| | Computational geometry.
|
| |
|
RefCountedPtr< AmrMesh > | m_amr |
| | AMR - needed for pretty much everything.
|
| |
|
MFAMRCellData | m_cache |
| | Cached state used for regridding.
|
| |
|
MFAMRCellData | m_potential |
| | State data, i.e. the potential. The centering of this is the same as m_dataLocation.
|
| |
|
MFAMRCellData | m_electricField |
| | Electric field. The centering of this is the same as m_dataLocation.
|
| |
|
MFAMRCellData | m_rho |
| | Storage for space charge density.
|
| |
|
EBAMRIVData | m_sigma |
| | Storage for surface charge density.
|
| |
|
MFAMRCellData | m_residue |
| | Residue, e.g. used after solving Poisson equation.
|
| |
|
MFAMRCellData | m_permittivityCell |
| | Cell permittivity.
|
| |
|
MFAMRFluxData | m_permittivityFace |
| | Face permittivity.
|
| |
|
MFAMRIVData | m_permittivityEB |
| | EB permittivity.
|
| |
|
bool | m_isVoltageSet |
| | Flag for checking if voltage has been set.
|
| |
|
bool | m_plotPotential |
| | If true, potential will be added to plot files.
|
| |
|
bool | m_plotRho |
| | If true, space charge will be added to plot files.
|
| |
|
bool | m_plotElectricField |
| | If true, the electric field will be added to plot files.
|
| |
|
bool | m_plotElectricFieldSolid |
| | If true, the electric field on the inside of dielectrics will be added to plot files.
|
| |
|
bool | m_plotResidue |
| | If true, the residue will be added to plot files.
|
| |
|
bool | m_plotPermittivity |
| | If true, the permittivity will be added to plot files.
|
| |
|
bool | m_plotSigma |
| | If true, m_sigma will be added to plot files.
|
| |
|
bool | m_regridSlopes |
| | Use slopes when regridding or ont.
|
| |
|
int | m_verbosity |
| | Verbosity for this calss.
|
| |
|
int | m_timeStep |
| | Current time step.
|
| |
|
Real | m_dt |
| | Last time step increment.
|
| |
|
Real | m_time |
| | Current time.
|
| |
|
ElectrostaticDomainBc | m_domainBc |
| | Domain boundary conditions for FieldSolver.
|
| |
|
ElectrostaticEbBc | m_ebBc |
| | Dirichlet boundary conditions on electrodes.
|
| |
|
std::map< ElectrostaticDomainBc::DomainSide, ElectrostaticDomainBc::BcFunction > | m_domainBcFunctions |
| | Domain BC functions. This is used to map space/time to a voltage/field at the domain faces.
|
| |
|
std::vector< std::pair< Electrode, ElectrostaticEbBc::BcFunction > > | m_electrodeBcFunctions |
| | BC functions (Dirichlet) on the electrodes. Used to map space/time to a voltage on the electrodes.
|
| |
|
std::function< Real(const Real a_time)> | m_voltage |
| | Voltage function.
|
| |
Base class for electrostatic solvers.
This class contains an interface to a solve routine, data holders, and interface to boundary conditions. Solver routines are supposed to be implemented by derived classes.