17#include <RefCountedPtr.H>
26#include <CD_NamespaceHeader.H>
47 Driver(
const RefCountedPtr<ComputationalGeometry>& a_computationalGeometry,
48 const RefCountedPtr<TimeStepper>& a_timeStepper,
49 const RefCountedPtr<AmrMesh>& a_amrMesh,
50 const RefCountedPtr<CellTagger>& a_cellTagger = RefCountedPtr<CellTagger>(
nullptr));
354 run(
const Real a_startTime,
const Real a_endTime,
const int a_maxSteps);
364 setup(
const std::string& a_inputFile,
365 const int a_initialRegrids,
366 const bool a_restart,
367 const std::string& a_restartFile);
374 setAmr(
const RefCountedPtr<AmrMesh>& a_amrMesh);
476 long long& a_numLocalCellsGhosts,
477 long long& a_numLocalBoxes,
478 long long& a_numTotalCells,
479 long long& a_numTotalCellsGhosts,
480 long long& a_numTotalBoxes,
481 Vector<long long>& a_numLocalLevelBoxes,
482 Vector<long long>& a_numTotalLevelBoxes,
483 Vector<long long>& a_numLocalLevelCells,
484 Vector<long long>& a_numTotalLevelCells,
485 const int& a_finestLevel,
486 const Vector<DisjointBoxLayout>& a_grids);
501 readCheckpointFile(
const std::string& a_restartFile);
511 regrid(
const int a_lmin,
const int a_lmax,
const bool a_useInitialData);
519 regridInternals(
const int a_oldFinestLevel,
const int a_newFinestLevel);
540 setCellTagger(
const RefCountedPtr<CellTagger>& a_cellTagger);
554 setupForRestart(
const int a_initialRegrids,
const std::string& a_restartFile);
577 stepReport(
const Real a_startTime,
const Real a_endTime,
const int a_maxSteps);
646 writeCheckpointLevel(HDF5Handle& a_handle,
const int a_level);
656 writeCheckpointTags(HDF5Handle& a_handle,
const int a_level);
666 writeCheckpointRealmLoads(HDF5Handle& a_handle,
const int a_level);
676 readCheckpointLevel(HDF5Handle& a_handle,
const int a_level);
688 readCheckpointRealmLoads(Vector<long int>& a_loads,
689 HDF5Handle& a_handle,
690 const std::string& a_realm,
731 writePlotData(LevelData<EBCellFAB>& a_output,
int& a_comp,
const int a_level)
const noexcept;
741 writeTags(LevelData<EBCellFAB>& a_output,
int& a_comp,
const int a_level)
const noexcept;
751 writeRanks(LevelData<EBCellFAB>& a_output,
int& a_comp,
const int a_level)
const noexcept;
762 writeLevelset(LevelData<EBCellFAB>& a_output,
int& a_comp,
const int a_level)
const noexcept;
772 writeLoads(LevelData<EBCellFAB>& a_output,
int& a_comp,
const int a_level)
const noexcept;
789#include <CD_NamespaceFooter.H>
Declaration of core class for handling AMR-related operations (with embedded boundaries)
Declaration of a base class for tagging cells across an AMR hierarchy.
Declaration of base class for defining geometries.
Declaration of the initialization functions for chombo-discharge.
Declaration of main (abstract) time stepper class.
Main class for time/space advancement of streamer equations.
Definition CD_Driver.H:33
int m_restartStep
Restart step.
Definition CD_Driver.H:193
std::string m_geometryGeneration
Geometry generation method – can choose between native Chombo or chombo-discharge.
Definition CD_Driver.H:102
void checkRestartFile(const std::string &a_restartFile) const
Check if restart file exists and abort if not found.
Definition CD_Driver.cpp:1704
bool m_allowCoarsening
Allow grid coarsening.
Definition CD_Driver.H:295
int getFinestTagLevel(const EBAMRTags &a_cellTags) const
Return the finest AMR level that contains any cell tags.
Definition CD_Driver.cpp:1845
void getCellsAndBoxes(long long &a_numLocalCells, long long &a_numLocalCellsGhosts, long long &a_numLocalBoxes, long long &a_numTotalCells, long long &a_numTotalCellsGhosts, long long &a_numTotalBoxes, Vector< long long > &a_numLocalLevelBoxes, Vector< long long > &a_numTotalLevelBoxes, Vector< long long > &a_numLocalLevelCells, Vector< long long > &a_numTotalLevelCells, const int &a_finestLevel, const Vector< DisjointBoxLayout > &a_grids)
Get statistics about a DisjointBoxLaout. This will compute the number of grid cells and patches both ...
Definition CD_Driver.cpp:367
void cacheTags(const EBAMRTags &a_tags)
Cache tags for use after regrid.
Definition CD_Driver.cpp:188
void parseGeometryGeneration()
Parse option for geometry generation.
Definition CD_Driver.cpp:1178
int m_irregTagGrowth
Irregular tag growth.
Definition CD_Driver.H:122
void setupGeometryOnly()
Set for restart.
Definition CD_Driver.cpp:1376
int m_regridInterval
Regrid interval.
Definition CD_Driver.H:138
bool m_plotLevelset
Plot level sets.
Definition CD_Driver.H:345
int m_numPlotGhost
Number of ghost cells to plot.
Definition CD_Driver.H:188
std::string m_outputDirectory
Output directory for output files.
Definition CD_Driver.H:107
void writePreRegridFile()
Write a regrid file.
Definition CD_Driver.cpp:2140
virtual void writeLoads(LevelData< EBCellFAB > &a_output, int &a_comp, const int a_level) const noexcept
Write computational loads to output.
Definition CD_Driver.cpp:2470
std::string m_inputFile
Input file.
Definition CD_Driver.H:92
int m_plotInterval
Plot interval.
Definition CD_Driver.H:148
bool tagCells(Vector< IntVectSet > &a_allTags, EBAMRTags &a_cellTags)
Tag cells for refinement. Computes cell tags and global tags (union of cell tags with geometric tags)...
Definition CD_Driver.cpp:1874
EBAMRBool m_cachedTags
Cached tags. This is done so that when we regrid and change box ownership we can copy the tags around...
Definition CD_Driver.H:213
void setupFresh(const int a_initialRegrids)
Setup function for fresh (non-restart) simulations.
Definition CD_Driver.cpp:1464
void allocateInternals()
Allocate internal storage for Driver.
Definition CD_Driver.cpp:155
void stepReport(const Real a_startTime, const Real a_endTime, const int a_maxSteps)
Write a time step report to stdout.
Definition CD_Driver.cpp:1730
std::string m_outputFileNames
Prefix for all output files.
Definition CD_Driver.H:112
void parseIrregTagGrowth()
Parse irregular tag growth.
Definition CD_Driver.cpp:1163
RefCountedPtr< MultiFluidIndexSpace > m_multifluidIndexSpace
Index space.
Definition CD_Driver.H:67
Real m_wallClockTwo
MPI timer.
Definition CD_Driver.H:258
void rebuildParmParse() const
Rebuild Parmparse.
Definition CD_Driver.cpp:993
void writeCrashFile()
Write a crash file.
Definition CD_Driver.cpp:2191
int m_verbosity
Verbosity.
Definition CD_Driver.H:117
void gridReport()
Print regrid report.
Definition CD_Driver.cpp:443
Driver()=delete
Weak constructor. Not allowed.
Real m_startTime
Simulation start time.
Definition CD_Driver.H:223
std::string m_realm
Name of realm where Driver allocates his data. This is always Realm::Primal.
Definition CD_Driver.H:97
void writeComputationalLoads()
Write computational loads.
Definition CD_Driver.cpp:1979
RefCountedPtr< AmrMesh > m_amr
AMR.
Definition CD_Driver.H:72
Real m_capacitance
Capacitance of the geometry (used for electrical energy calculations).
Definition CD_Driver.H:243
void writePlotFile()
Write a plot file. This writes to plt/.
Definition CD_Driver.cpp:2120
int getNumberOfPlotVariables() const
Get number of plot variables.
Definition CD_Driver.cpp:86
EBAMRTags m_tags
Tags.
Definition CD_Driver.H:208
void parseGeometryRefinement()
Parse geometrical refinement.
Definition CD_Driver.cpp:1196
void writeCheckpointFile()
Write a checkpoint file.
Definition CD_Driver.cpp:2510
void createOutputDirectories()
Create output directories.
Definition CD_Driver.cpp:1238
bool m_plotRanks
Plot MPI ranks.
Definition CD_Driver.H:335
int m_maxPlotLevel
Maximum plot depth.
Definition CD_Driver.H:173
Real m_refineAngle
Angle refinement threshold.
Definition CD_Driver.H:263
Real m_stopTime
Simulation stop time.
Definition CD_Driver.H:228
RefCountedPtr< TimeStepper > m_timeStepper
Time stepper.
Definition CD_Driver.H:82
RefCountedPtr< ComputationalGeometry > m_computationalGeometry
Geometry.
Definition CD_Driver.H:77
virtual void writeLevelset(LevelData< EBCellFAB > &a_output, int &a_comp, const int a_level) const noexcept
Write level sets.
Definition CD_Driver.cpp:2422
void getGeometryTags()
Get geometric tags.
Definition CD_Driver.cpp:230
bool m_writeRestartFiles
Write restart files or not.
Definition CD_Driver.H:290
Real m_time
Time.
Definition CD_Driver.H:238
Real m_wallClockOne
MPI timer.
Definition CD_Driver.H:253
void writeGeometry()
Write the geometry to file.
Definition CD_Driver.cpp:2066
int m_geoScanLevel
Geometry scan level.
Definition CD_Driver.H:128
void regridInternals(const int a_oldFinestLevel, const int a_newFinestLevel)
Regrid internal storage for this class.
Definition CD_Driver.cpp:692
bool m_geometryOnly
Geometry only.
Definition CD_Driver.H:320
void sanityCheck()
Sanity check.
Definition CD_Driver.cpp:1719
virtual void writePlotData(LevelData< EBCellFAB > &a_output, int &a_comp, const int a_level) const noexcept
Write internal plot data.
Definition CD_Driver.cpp:2320
Real m_wallClockStart
MPI timer.
Definition CD_Driver.H:248
void writePostRegridFile()
Write a regrid file.
Definition CD_Driver.cpp:2157
int m_geometricTagsDepth
Geometric tag depth.
Definition CD_Driver.H:153
void setCellTagger(const RefCountedPtr< CellTagger > &a_cellTagger)
Set the cell tagger.
Definition CD_Driver.cpp:1033
bool m_writeMemory
Write memory report.
Definition CD_Driver.H:305
void run(const Real a_startTime, const Real a_endTime, const int a_maxSteps)
Run a simulation for a specific time, or until a maximum number of steps have been performed.
Definition CD_Driver.cpp:748
void parseRuntimeOptions()
Parse runtime options.
Definition CD_Driver.cpp:1096
bool m_profile
Profile or not.
Definition CD_Driver.H:268
int m_dielectricTagsDepth
Geometric tag depth for dielectrics.
Definition CD_Driver.H:163
bool m_needsNewGeometricTags
Special option for when geometric tags are changed during a simulation.
Definition CD_Driver.H:280
bool m_writeRegridFiles
Write regrid files or not.
Definition CD_Driver.H:285
int m_timeStep
Time step.
Definition CD_Driver.H:133
void setComputationalGeometry(const RefCountedPtr< ComputationalGeometry > &a_computationalGeometry)
Set the computational geometry.
Definition CD_Driver.cpp:1006
void regrid(const int a_lmin, const int a_lmax, const bool a_useInitialData)
Do a regrid step.
Definition CD_Driver.cpp:581
int m_conductorTagsDepth
Geometric tag depth for conductors.
Definition CD_Driver.H:158
int m_maxSteps
Maximum number of steps.
Definition CD_Driver.H:168
bool m_plotLoads
Plot patch loads.
Definition CD_Driver.H:340
bool m_restart
Restart or not.
Definition CD_Driver.H:315
int m_growTags
Grow tagged cells.
Definition CD_Driver.H:198
void writeRestartFile()
Write a restart file.
Definition CD_Driver.cpp:2174
RefCountedPtr< CellTagger > m_cellTagger
Cell tagger.
Definition CD_Driver.H:87
void writeMemoryUsage()
Write the memory usage to file.
Definition CD_Driver.cpp:1941
virtual void writeTags(LevelData< EBCellFAB > &a_output, int &a_comp, const int a_level) const noexcept
Write cell tags to file.
Definition CD_Driver.cpp:2345
void parsePlotVariables()
Parse plot variables.
Definition CD_Driver.cpp:1126
Real m_outputDt
Time between outputs.
Definition CD_Driver.H:218
virtual ~Driver()
Destructor (does nothing)
Definition CD_Driver.cpp:80
Real m_dt
Time increment.
Definition CD_Driver.H:233
int m_initialRegrids
Number of initial regrids.
Definition CD_Driver.H:183
int m_checkpointInterval
Checkpoint interval.
Definition CD_Driver.H:143
bool m_ebisMemoryLoadBalance
Use memory as load balance for EBIS.
Definition CD_Driver.H:325
bool m_writeLoads
Write loads to file or not.
Definition CD_Driver.H:310
void parseOptions()
Parse options.
Definition CD_Driver.cpp:1048
bool m_doInitLoadBalancing
Do init load balancing.
Definition CD_Driver.H:300
virtual void writeRanks(LevelData< EBCellFAB > &a_output, int &a_comp, const int a_level) const noexcept
Write MPI ranks to output.
Definition CD_Driver.cpp:2394
bool m_doCoarsening
Turn on/off geometry coarsening below the base level.
Definition CD_Driver.H:273
void setupAndRun()
Setup and run simulations.
Definition CD_Driver.cpp:971
int m_maxCheckpointDepth
Maximum plot depth.
Definition CD_Driver.H:178
Vector< std::string > getPlotVariableNames() const
Get the string identifiers for the internal plot variables from Driver.
Definition CD_Driver.cpp:112
Vector< IntVectSet > m_geomTags
Tags.
Definition CD_Driver.H:203
void setTimeStepper(const RefCountedPtr< TimeStepper > &a_timeStepper)
Set the time stepper.
Definition CD_Driver.cpp:1020
void setup(const std::string &a_inputFile, const int a_initialRegrids, const bool a_restart, const std::string &a_restartFile)
Setup function.
Definition CD_Driver.cpp:1330
void setAmr(const RefCountedPtr< AmrMesh > &a_amrMesh)
Set amr.
Definition CD_Driver.cpp:1316
bool m_plotTags
Plot tagged cells.
Definition CD_Driver.H:330
void writeEBIS()
Write the geometry to file.