SPADES< Model > Class Template Reference

SPADES API: spades::SPADES< Model > Class Template Reference
SPADES API

Main SPADES class. More...

#include <SPADES.H>

Inheritance diagram for spades::SPADES< Model >:
[legend]
Collaboration diagram for spades::SPADES< Model >:
[legend]

Public Member Functions

 SPADES (const Model &model)
 
 ~SPADES () override
 
void initialize_data ()
 Initializes data.
 
void evolve ()
 Advance solution to final time.
 
void MakeNewLevelFromCoarse (int lev, amrex::Real time, const amrex::BoxArray &ba, const amrex::DistributionMapping &dm) override
 Make a new level.
 
void RemakeLevel (int lev, amrex::Real time, const amrex::BoxArray &ba, const amrex::DistributionMapping &dm) override
 Remake an existing level.
 
void ClearLevel (int lev) override
 Delete level data.
 
void MakeNewLevelFromScratch (int lev, amrex::Real time, const amrex::BoxArray &ba, const amrex::DistributionMapping &dm) override
 Make a level from scratch.
 
void ErrorEst (int, amrex::TagBoxArray &, amrex::Real, int) override
 Tag cells for refinement.
 
std::unique_ptr< amrex::MultiFab > get_field (const std::string &name, const int ngrow)
 Get a field based on a variable name.
 
void plot_file_mf ()
 Put together the MultiFab for output.
 
void initialize_state ()
 Initialize state.
 
void initialize_particle_containers ()
 Initialize the particle containers.
 
void process_messages ()
 Process messages.
 
void rollback ()
 Perform rollback.
 
void rollback_statistics ()
 Print rollback statistics.
 
void update_gvt ()
 Update the global virtual time.
 
void update_lbts ()
 Update the Lower Bound on Incoming Time Stamp.
 

Static Public Member Functions

static amrex::Real est_time_step ()
 Compute the time step.
 

Static Public Attributes

static constexpr int LEV {0}
 Level index.
 

Private Member Functions

void read_parameters ()
 Read parameters.
 
void compute_dt ()
 Wrapper for EstTimeStep.
 
void time_step (const amrex::Real time)
 Advance by the time step.
 
void advance (const amrex::Real time, const amrex::Real dt)
 Advance for a single time step.
 
bool check_field_existence (const std::string &name)
 Check if a field exists.
 
void set_ics ()
 Set the user defined IC functions.
 
std::string plot_file_name (const int step) const
 Get plotfile name.
 
std::string chk_file_name (const int step) const
 Get checkpoint file name.
 
amrex::Vector< std::string > plot_file_var_names () const
 Set plotfile variables names.
 
void write_plot_file ()
 Write plotfile to disk.
 
void write_checkpoint_file () const
 Write checkpoint file to disk.
 
void read_checkpoint_file ()
 Read checkpoint file from disk.
 
void write_info_file (const std::string &path) const
 Write job info to disk.
 
void write_rng_file (const std::string &path) const
 Write random number generator seed info.
 
void read_rng_file (const std::string &path) const
 Read random number generator seed info.
 
void initialize_rng () const
 Initialize the random number generator.
 
void write_data_file (const bool is_init) const
 Write simulation information.
 
void summary ()
 Compute summary data.
 

Static Private Member Functions

static void post_time_step ()
 Perform work after a time step.
 
static int get_field_component (const std::string &name, const amrex::Vector< std::string > &varnames)
 Get field component.
 

Private Attributes

int m_istep {0}
 Current step.
 
amrex::Real m_gvt {constants::LOW_NUM}
 Global virtual time.
 
amrex::Real m_t_new {0.0}
 New time.
 
amrex::Real m_t_old {constants::LOW_NUM}
 Old time.
 
amrex::Real m_dt {constants::LARGE_NUM}
 Time step.
 
amrex::Real m_lbts {constants::LOW_NUM}
 Lower bound on incoming time stamp.
 
amrex::Long m_ncells {0}
 Cell count.
 
amrex::Long m_ntotal_messages {0}
 Total message count.
 
amrex::Vector< amrex::Long > m_nmessages
 Message counts.
 
amrex::Vector< amrex::Long > m_min_messages
 Min of message counts.
 
amrex::Vector< amrex::Long > m_max_messages
 Max of message counts.
 
amrex::Long m_nprocessed_messages {0}
 Count of processed messages.
 
amrex::Long m_ntotal_entities {0}
 Total entity count.
 
amrex::Long m_nentities {0}
 Entity count.
 
amrex::Vector< int > m_nrollbacks
 Number of rollbacks.
 
amrex::Vector< amrex::Real > m_min_timings
 Min timings for each step.
 
amrex::Vector< amrex::Real > m_max_timings
 Max timings for each step.
 
amrex::Vector< amrex::Real > m_avg_timings
 Average timings for each step.
 
int m_max_step = std::numeric_limits<int>::max()
 Maximum number of steps.
 
amrex::Real m_stop_time = std::numeric_limits<amrex::Real>::max()
 Stop time.
 
amrex::Vector< std::string > m_spades_varnames
 All variable names for output.
 
amrex::Vector< std::string > m_state_varnames
 State variable names for output.
 
amrex::Vector< std::string > m_message_counts_varnames
 Message count names for output.
 
amrex::Vector< std::string > m_entity_counts_varnames
 Entity count names for output.
 
amrex::MultiFab m_state
 Multifabs to store the solution.
 
amrex::MultiFab m_plt_mf
 Multifabs for output.
 
const int m_state_ngrow = 0
 Number of ghost cells.
 
std::string m_restart_chkfile
 Restart file name, restart from this checkpoint if it is not empty.
 
std::string m_plot_file {"plt"}
 Plotfile prefix (optional user input)
 
int m_plot_int = -1
 Plotfile frequency (optional user input)
 
std::string m_chk_file {"chk"}
 Checkpoint prefix (optional user input)
 
int m_chk_int = -1
 Checkpoint frequency (optional user input)
 
int m_nfiles {constants::TWO_TO_EIGHT}
 Number of plot and checkpoint data files per write.
 
int m_file_name_digits {constants::FILE_NAME_DIGITS}
 Digits used in the plotfile and checkpoint file names.
 
int m_rng_file_name_digits {constants::RNG_FILE_NAME_DIGITS}
 Digits used in the rng seed file names.
 
bool m_write_messages {false}
 Boolean to output messages (optional user input)
 
bool m_write_entities {false}
 Boolean to output entities (optional user input)
 
std::string m_data_fname {"data.csv"}
 Filename for simulation data.
 
const int m_data_precision {6}
 Data precision for data output.
 
amrex::Real m_lookahead {1.0}
 Lookahead value (optional user input)
 
amrex::Real m_window_size {constants::LARGE_NUM}
 Window size for processing messages (optional user input)
 
int m_messages_per_step {1}
 Number of messages to process in each step (optional user input)
 
int m_messages_per_lp {1}
 Number of messages per logical process (optional user input)
 
int m_seed {0}
 Random number generator seed (optional user input)
 
std::unique_ptr< ic::InitializerBasem_ic_op
 Initial condition operator.
 
std::string m_ic_type
 Initial condition type (optional user input)
 
std::unique_ptr< particles::MessageParticleContainerm_message_pc
 Message particle container.
 
std::unique_ptr< particles::EntityParticleContainerm_entity_pc
 Entity article container.
 
const Model & m_model
 Model.
 

Detailed Description

template<typename Model>
class spades::SPADES< Model >

Main SPADES class.

Constructor & Destructor Documentation

◆ SPADES()

template<typename Model >
spades::SPADES< Model >::SPADES ( const Model & model)

◆ ~SPADES()

template<typename Model >
spades::SPADES< Model >::~SPADES ( )
override

Member Function Documentation

◆ advance()

template<typename Model >
void spades::SPADES< Model >::advance ( const amrex::Real time,
const amrex::Real dt )
private

Advance for a single time step.

Parameters
time[in] time
dt[in] time step

◆ check_field_existence()

template<typename Model >
bool spades::SPADES< Model >::check_field_existence ( const std::string & name)
private

Check if a field exists.

Parameters
name[in] field name
Returns
True if field of name exists

◆ chk_file_name()

template<typename Model >
std::string spades::SPADES< Model >::chk_file_name ( const int step) const
nodiscardprivate

Get checkpoint file name.

Parameters
step[in] current time step
Returns
chkfile name

◆ ClearLevel()

template<typename Model >
void spades::SPADES< Model >::ClearLevel ( int lev)
override

Delete level data.

Overrides the pure virtual function in AmrCore.

Parameters
lev[in] level

◆ compute_dt()

template<typename Model >
void spades::SPADES< Model >::compute_dt ( )
private

Wrapper for EstTimeStep.

◆ ErrorEst()

template<typename Model >
void spades::SPADES< Model >::ErrorEst ( int ,
amrex::TagBoxArray & ,
amrex::Real ,
int  )
inlineoverride

Tag cells for refinement.

Overrides the pure virtual function in AmrCore

117 {}

◆ est_time_step()

template<typename Model >
static amrex::Real spades::SPADES< Model >::est_time_step ( )
static

Compute the time step.

Returns
the time step

◆ evolve()

template<typename Model >
void spades::SPADES< Model >::evolve ( )

Advance solution to final time.

◆ get_field()

template<typename Model >
std::unique_ptr< amrex::MultiFab > spades::SPADES< Model >::get_field ( const std::string & name,
const int ngrow )

Get a field based on a variable name.

Parameters
name[in] field name
ngrow[in] number of grow cells
Returns
the requested field

◆ get_field_component()

template<typename Model >
static int spades::SPADES< Model >::get_field_component ( const std::string & name,
const amrex::Vector< std::string > & varnames )
staticprivate

Get field component.

Parameters
name[in] field name
varnames[in] vector of the field names
Returns
field component

◆ initialize_data()

template<typename Model >
void spades::SPADES< Model >::initialize_data ( )

Initializes data.

◆ initialize_particle_containers()

template<typename Model >
void spades::SPADES< Model >::initialize_particle_containers ( )

Initialize the particle containers.

◆ initialize_rng()

template<typename Model >
void spades::SPADES< Model >::initialize_rng ( ) const
private

Initialize the random number generator.

◆ initialize_state()

template<typename Model >
void spades::SPADES< Model >::initialize_state ( )

Initialize state.

◆ MakeNewLevelFromCoarse()

template<typename Model >
void spades::SPADES< Model >::MakeNewLevelFromCoarse ( int lev,
amrex::Real time,
const amrex::BoxArray & ba,
const amrex::DistributionMapping & dm )
override

Make a new level.

Make a new level using provided BoxArray and DistributionMapping and fill with interpolated coarse level data. Overrides the pure virtual function in AmrCore.

Parameters
lev[in] level
time[in] time
ba[in] box array
dm[in] distribution map

◆ MakeNewLevelFromScratch()

template<typename Model >
void spades::SPADES< Model >::MakeNewLevelFromScratch ( int lev,
amrex::Real time,
const amrex::BoxArray & ba,
const amrex::DistributionMapping & dm )
override

Make a level from scratch.

Make a new level from scratch using provided BoxArray and DistributionMapping. Only used during initialization. Overrides the pure virtual function in AmrCore

Parameters
lev[in] level
time[in] time
ba[in] box array
dm[in] distribution map

◆ plot_file_mf()

template<typename Model >
void spades::SPADES< Model >::plot_file_mf ( )

Put together the MultiFab for output.

◆ plot_file_name()

template<typename Model >
std::string spades::SPADES< Model >::plot_file_name ( const int step) const
nodiscardprivate

Get plotfile name.

Parameters
step[in] current time step
Returns
plotfile name

◆ plot_file_var_names()

template<typename Model >
amrex::Vector< std::string > spades::SPADES< Model >::plot_file_var_names ( ) const
nodiscardprivate

Set plotfile variables names.

Returns
vector of variable names

◆ post_time_step()

template<typename Model >
static void spades::SPADES< Model >::post_time_step ( )
staticprivate

Perform work after a time step.

◆ process_messages()

template<typename Model >
void spades::SPADES< Model >::process_messages ( )

Process messages.

◆ read_checkpoint_file()

template<typename Model >
void spades::SPADES< Model >::read_checkpoint_file ( )
private

Read checkpoint file from disk.

◆ read_parameters()

template<typename Model >
void spades::SPADES< Model >::read_parameters ( )
private

Read parameters.

◆ read_rng_file()

template<typename Model >
void spades::SPADES< Model >::read_rng_file ( const std::string & path) const
private

Read random number generator seed info.

Parameters
path[in] path for file

◆ RemakeLevel()

template<typename Model >
void spades::SPADES< Model >::RemakeLevel ( int lev,
amrex::Real time,
const amrex::BoxArray & ba,
const amrex::DistributionMapping & dm )
override

Remake an existing level.

Remake an existing level using provided BoxArray and DistributionMapping and fill with existing fine and coarse data. Overrides the pure virtual function in AmrCore.

Parameters
lev[in] level
time[in] time
ba[in] box array
dm[in] distribution map

◆ rollback()

template<typename Model >
void spades::SPADES< Model >::rollback ( )

Perform rollback.

◆ rollback_statistics()

template<typename Model >
void spades::SPADES< Model >::rollback_statistics ( )

Print rollback statistics.

◆ set_ics()

template<typename Model >
void spades::SPADES< Model >::set_ics ( )
private

Set the user defined IC functions.

◆ summary()

template<typename Model >
void spades::SPADES< Model >::summary ( )
private

Compute summary data.

◆ time_step()

template<typename Model >
void spades::SPADES< Model >::time_step ( const amrex::Real time)
private

Advance by the time step.

Parameters
time[in] time

◆ update_gvt()

template<typename Model >
void spades::SPADES< Model >::update_gvt ( )

Update the global virtual time.

◆ update_lbts()

template<typename Model >
void spades::SPADES< Model >::update_lbts ( )

Update the Lower Bound on Incoming Time Stamp.

◆ write_checkpoint_file()

template<typename Model >
void spades::SPADES< Model >::write_checkpoint_file ( ) const
private

Write checkpoint file to disk.

◆ write_data_file()

template<typename Model >
void spades::SPADES< Model >::write_data_file ( const bool is_init) const
private

Write simulation information.

Parameters
is_init[in] boolean indicating if this is the initializing step

◆ write_info_file()

template<typename Model >
void spades::SPADES< Model >::write_info_file ( const std::string & path) const
private

Write job info to disk.

Parameters
path[in] path for file

◆ write_plot_file()

template<typename Model >
void spades::SPADES< Model >::write_plot_file ( )
private

Write plotfile to disk.

◆ write_rng_file()

template<typename Model >
void spades::SPADES< Model >::write_rng_file ( const std::string & path) const
private

Write random number generator seed info.

Parameters
path[in] path for file

Member Data Documentation

◆ LEV

template<typename Model >
int spades::SPADES< Model >::LEV {0}
staticconstexpr

Level index.

171{0};

◆ m_avg_timings

template<typename Model >
amrex::Vector<amrex::Real> spades::SPADES< Model >::m_avg_timings
private

Average timings for each step.

◆ m_chk_file

template<typename Model >
std::string spades::SPADES< Model >::m_chk_file {"chk"}
private

Checkpoint prefix (optional user input)

368{"chk"};

◆ m_chk_int

template<typename Model >
int spades::SPADES< Model >::m_chk_int = -1
private

Checkpoint frequency (optional user input)

◆ m_data_fname

template<typename Model >
std::string spades::SPADES< Model >::m_data_fname {"data.csv"}
private

Filename for simulation data.

389{"data.csv"};

◆ m_data_precision

template<typename Model >
const int spades::SPADES< Model >::m_data_precision {6}
private

Data precision for data output.

392{6};

◆ m_dt

template<typename Model >
amrex::Real spades::SPADES< Model >::m_dt {constants::LARGE_NUM}
private

Time step.

static constexpr amrex::Real LARGE_NUM
A large number.
Definition Constants.H:34

◆ m_entity_counts_varnames

template<typename Model >
amrex::Vector<std::string> spades::SPADES< Model >::m_entity_counts_varnames
private

Entity count names for output.

◆ m_entity_pc

template<typename Model >
std::unique_ptr<particles::EntityParticleContainer> spades::SPADES< Model >::m_entity_pc
private

Entity article container.

◆ m_file_name_digits

template<typename Model >
int spades::SPADES< Model >::m_file_name_digits {constants::FILE_NAME_DIGITS}
private

Digits used in the plotfile and checkpoint file names.

static constexpr int FILE_NAME_DIGITS
Number of digits to use in output file names.
Definition Constants.H:42

◆ m_gvt

template<typename Model >
amrex::Real spades::SPADES< Model >::m_gvt {constants::LOW_NUM}
private

Global virtual time.

static constexpr amrex::Real LOW_NUM
A large negative number.
Definition Constants.H:19

◆ m_ic_op

template<typename Model >
std::unique_ptr<ic::InitializerBase> spades::SPADES< Model >::m_ic_op
private

Initial condition operator.

◆ m_ic_type

template<typename Model >
std::string spades::SPADES< Model >::m_ic_type
private

Initial condition type (optional user input)

◆ m_istep

template<typename Model >
int spades::SPADES< Model >::m_istep {0}
private

Current step.

278{0};

◆ m_lbts

template<typename Model >
amrex::Real spades::SPADES< Model >::m_lbts {constants::LOW_NUM}
private

Lower bound on incoming time stamp.

◆ m_lookahead

template<typename Model >
amrex::Real spades::SPADES< Model >::m_lookahead {1.0}
private

Lookahead value (optional user input)

395{1.0};

◆ m_max_messages

template<typename Model >
amrex::Vector<amrex::Long> spades::SPADES< Model >::m_max_messages
private

Max of message counts.

◆ m_max_step

template<typename Model >
int spades::SPADES< Model >::m_max_step = std::numeric_limits<int>::max()
private

Maximum number of steps.

◆ m_max_timings

template<typename Model >
amrex::Vector<amrex::Real> spades::SPADES< Model >::m_max_timings
private

Max timings for each step.

◆ m_message_counts_varnames

template<typename Model >
amrex::Vector<std::string> spades::SPADES< Model >::m_message_counts_varnames
private

Message count names for output.

◆ m_message_pc

template<typename Model >
std::unique_ptr<particles::MessageParticleContainer> spades::SPADES< Model >::m_message_pc
private

Message particle container.

◆ m_messages_per_lp

template<typename Model >
int spades::SPADES< Model >::m_messages_per_lp {1}
private

Number of messages per logical process (optional user input)

404{1};

◆ m_messages_per_step

template<typename Model >
int spades::SPADES< Model >::m_messages_per_step {1}
private

Number of messages to process in each step (optional user input)

401{1};

◆ m_min_messages

template<typename Model >
amrex::Vector<amrex::Long> spades::SPADES< Model >::m_min_messages
private

Min of message counts.

◆ m_min_timings

template<typename Model >
amrex::Vector<amrex::Real> spades::SPADES< Model >::m_min_timings
private

Min timings for each step.

◆ m_model

template<typename Model >
const Model& spades::SPADES< Model >::m_model
private

Model.

◆ m_ncells

template<typename Model >
amrex::Long spades::SPADES< Model >::m_ncells {0}
private

Cell count.

296{0};

◆ m_nentities

template<typename Model >
amrex::Long spades::SPADES< Model >::m_nentities {0}
private

Entity count.

317{0};

◆ m_nfiles

template<typename Model >
int spades::SPADES< Model >::m_nfiles {constants::TWO_TO_EIGHT}
private

Number of plot and checkpoint data files per write.

static constexpr int TWO_TO_EIGHT
Definition Constants.H:39

◆ m_nmessages

template<typename Model >
amrex::Vector<amrex::Long> spades::SPADES< Model >::m_nmessages
private

Message counts.

◆ m_nprocessed_messages

template<typename Model >
amrex::Long spades::SPADES< Model >::m_nprocessed_messages {0}
private

Count of processed messages.

311{0};

◆ m_nrollbacks

template<typename Model >
amrex::Vector<int> spades::SPADES< Model >::m_nrollbacks
private

Number of rollbacks.

◆ m_ntotal_entities

template<typename Model >
amrex::Long spades::SPADES< Model >::m_ntotal_entities {0}
private

Total entity count.

314{0};

◆ m_ntotal_messages

template<typename Model >
amrex::Long spades::SPADES< Model >::m_ntotal_messages {0}
private

Total message count.

299{0};

◆ m_plot_file

template<typename Model >
std::string spades::SPADES< Model >::m_plot_file {"plt"}
private

Plotfile prefix (optional user input)

362{"plt"};

◆ m_plot_int

template<typename Model >
int spades::SPADES< Model >::m_plot_int = -1
private

Plotfile frequency (optional user input)

◆ m_plt_mf

template<typename Model >
amrex::MultiFab spades::SPADES< Model >::m_plt_mf
private

Multifabs for output.

◆ m_restart_chkfile

template<typename Model >
std::string spades::SPADES< Model >::m_restart_chkfile
private

Restart file name, restart from this checkpoint if it is not empty.

◆ m_rng_file_name_digits

template<typename Model >
int spades::SPADES< Model >::m_rng_file_name_digits {constants::RNG_FILE_NAME_DIGITS}
private

Digits used in the rng seed file names.

static constexpr int RNG_FILE_NAME_DIGITS
Number of digits to use in random seed file names.
Definition Constants.H:45

◆ m_seed

template<typename Model >
int spades::SPADES< Model >::m_seed {0}
private

Random number generator seed (optional user input)

407{0};

◆ m_spades_varnames

template<typename Model >
amrex::Vector<std::string> spades::SPADES< Model >::m_spades_varnames
private

All variable names for output.

◆ m_state

template<typename Model >
amrex::MultiFab spades::SPADES< Model >::m_state
private

Multifabs to store the solution.

◆ m_state_ngrow

template<typename Model >
const int spades::SPADES< Model >::m_state_ngrow = 0
private

Number of ghost cells.

◆ m_state_varnames

template<typename Model >
amrex::Vector<std::string> spades::SPADES< Model >::m_state_varnames
private

State variable names for output.

◆ m_stop_time

template<typename Model >
amrex::Real spades::SPADES< Model >::m_stop_time = std::numeric_limits<amrex::Real>::max()
private

Stop time.

◆ m_t_new

template<typename Model >
amrex::Real spades::SPADES< Model >::m_t_new {0.0}
private

New time.

284{0.0};

◆ m_t_old

template<typename Model >
amrex::Real spades::SPADES< Model >::m_t_old {constants::LOW_NUM}
private

Old time.

◆ m_window_size

template<typename Model >
amrex::Real spades::SPADES< Model >::m_window_size {constants::LARGE_NUM}
private

Window size for processing messages (optional user input)

◆ m_write_entities

template<typename Model >
bool spades::SPADES< Model >::m_write_entities {false}
private

Boolean to output entities (optional user input)

386{false};

◆ m_write_messages

template<typename Model >
bool spades::SPADES< Model >::m_write_messages {false}
private

Boolean to output messages (optional user input)

383{false};

The documentation for this class was generated from the following file:
  • /home/runner/work/spades/spades/Source/SPADES.H