Alamo
|
#include <Integrator.H>
Public Member Functions | |
Integrator () | |
virtual | ~Integrator () |
void | InitData () |
void | Restart (std::string restartfile, bool a_node=false) |
void | Evolve () |
void | SetFilename (std::string _plot_file) |
std::string | GetFilename () |
void | regrid (int lbase, Set::Scalar time, bool initial=false) override |
void | InitFromScratch (Set::Scalar time) |
template<class T , int d> | |
ALAMO_SINGLE_DEFINITION void | AddField (Set::Field< T > &new_field, BC::BC< T > *new_bc, int ncomp, int nghost, std::string name, bool writeout, bool evolving, std::vector< std::string >) |
template<class T > | |
ALAMO_SINGLE_DEFINITION void | RegisterGeneralFab (Set::Field< T > &new_fab, int ncomp, int nghost, bool evolving) |
template<class T > | |
ALAMO_SINGLE_DEFINITION void | RegisterGeneralFab (Set::Field< T > &new_fab, int ncomp, int nghost, std::string a_name, bool evolving) |
template<class T > | |
AMREX_ATTRIBUTE_WEAK void | RegisterGeneralFab (Set::Field< T > &new_fab, int ncomp, int nghost, bool writeout, std::string a_name, bool evolving) |
Protected Member Functions | |
virtual void | Initialize (int lev)=0 |
virtual void | Advance (int lev, amrex::Real time, amrex::Real dt)=0 |
virtual void | TagCellsForRefinement (int lev, amrex::TagBoxArray &tags, amrex::Real time, int ngrow)=0 |
virtual void | TimeStepBegin (Set::Scalar, int) |
virtual void | TimeStepComplete (Set::Scalar, int) |
virtual void | Integrate (int, Set::Scalar, int, const amrex::MFIter &, const amrex::Box &) |
virtual void | Regrid (int, Set::Scalar) |
void | RegisterNewFab (Set::Field< Set::Scalar > &new_fab, BC::BC< Set::Scalar > *new_bc, int ncomp, int nghost, std::string name, bool writeout, std::vector< std::string > suffix={}) |
void | RegisterNewFab (Set::Field< Set::Scalar > &new_fab, int ncomp, std::string name, bool writeout, std::vector< std::string > suffix={}) |
void | RegisterNodalFab (Set::Field< Set::Scalar > &new_fab, int ncomp, int nghost, std::string name, bool writeout, std::vector< std::string > suffix={}) |
void | RegisterNodalFab (Set::Field< Set::Scalar > &new_fab, BC::BC< Set::Scalar > *new_bc, int ncomp, int nghost, std::string name, bool writeout, std::vector< std::string > suffix={}) |
template<class T > | |
void | RegisterGeneralFab (Set::Field< T > &new_fab, int ncomp, int nghost, bool evolving=true) |
template<class T > | |
void | RegisterGeneralFab (Set::Field< T > &new_fab, int ncomp, int nghost, std::string a_name, bool evolving=true) |
template<class T > | |
void | RegisterGeneralFab (Set::Field< T > &new_fab, int ncomp, int nghost, bool writeout, std::string a_name, bool evolving=true) |
template<class T , int d> | |
void | AddField (Set::Field< T > &new_field, BC::BC< T > *new_bc, int ncomp, int nghost, std::string, bool writeout, bool evolving, std::vector< std::string > suffix={}) |
void | SetFinestLevel (const int a_finestlevel) |
void | RegisterIntegratedVariable (Set::Scalar *integrated_variable, std::string name, bool extensive=true) |
void | SetTimestep (Set::Scalar _timestep) |
void | SetPlotInt (int plot_int) |
void | SetThermoInt (int a_thermo_int) |
void | SetThermoPlotInt (int a_thermo_plot_int) |
void | SetStopTime (Set::Scalar a_stop_time) |
void | DynamicTimestep_SyncTimeStep (int lev, Set::Scalar dt_min) |
void | DynamicTimestep_Reset () |
void | DynamicTimestep_Update () |
void | IntegrateVariables (Set::Scalar cur_time, int step) |
void | WritePlotFile (bool initial=false) const |
void | WritePlotFile (std::string prefix, Set::Scalar time, int step) const |
void | WritePlotFile (Set::Scalar time, amrex::Vector< int > iter, bool initial=false, std::string prefix="") const |
Protected Attributes | ||
struct { | ||
bool on = false | ||
int verbose = -1 | ||
int nprevious = -1 | ||
Set::Scalar cfl = NAN | ||
Set::Scalar min = NAN | ||
Set::Scalar max = NAN | ||
std::vector< Set::Scalar > dt_limit_min | ||
std::vector< Set::Scalar > previous_timesteps | ||
} | dynamictimestep | |
amrex::Vector< amrex::Real > | t_new | |
amrex::Vector< int > | istep | |
std::string | plot_file { "plt" } | |
amrex::Real | timestep = NAN | |
amrex::Vector< amrex::Real > | dt | |
amrex::Vector< int > | nsubsteps | |
bool | integrate_variables_before_advance = true | |
bool | integrate_variables_after_advance = false | |
struct { | ||
int number_of_fabs = 0 | ||
std::vector< Set::Field< Set::Scalar > * > fab_array | ||
std::vector< int > ncomp_array | ||
std::vector< int > nghost_array | ||
std::vector< std::vector< std::string > > name_array | ||
std::vector< BC::BC< Set::Scalar > * > physbc_array | ||
std::vector< bool > writeout_array | ||
bool any = true | ||
bool all = false | ||
} | node | |
struct { | ||
int number_of_fabs = 0 | ||
std::vector< Set::Field< Set::Scalar > * > fab_array | ||
std::vector< int > ncomp_array | ||
std::vector< int > nghost_array | ||
std::vector< std::vector< std::string > > name_array | ||
std::vector< BC::BC< Set::Scalar > * > physbc_array | ||
std::vector< bool > writeout_array | ||
bool any = true | ||
bool all = false | ||
} | cell | |
std::vector< BaseField * > | m_basefields | |
std::vector< BaseField * > | m_basefields_cell | |
BC::Nothing | bcnothing | |
struct { | ||
int interval = -1 | ||
Set::Scalar dt = NAN | ||
int plot_int = -1 | ||
Set::Scalar plot_dt = NAN | ||
int number = 0 | ||
std::vector< Set::Scalar * > vars | ||
std::vector< std::string > names | ||
std::vector< bool > extensives | ||
} | thermo | |
int | regrid_int = -1 | |
int | base_regrid_int = -1 | |
std::string | restart_file_cell = "" | |
std::string | restart_file_node = "" | |
struct { | ||
int on = 0 | ||
std::vector< amrex::Box > box | ||
} | explicitmesh | |
int | abort_on_nan = true | |
Private Member Functions | |
virtual void | MakeNewLevelFromScratch (int lev, amrex::Real time, const amrex::BoxArray &ba, const amrex::DistributionMapping &dm) override |
virtual void | MakeNewLevelFromCoarse (int lev, amrex::Real time, const amrex::BoxArray &ba, const amrex::DistributionMapping &dm) override |
virtual void | RemakeLevel (int lev, amrex::Real time, const amrex::BoxArray &ba, const amrex::DistributionMapping &dm) override |
virtual void | ClearLevel (int lev) override |
virtual void | ErrorEst (int lev, amrex::TagBoxArray &tags, amrex::Real time, int ngrow) override |
void | FillPatch (int lev, amrex::Real time, amrex::Vector< std::unique_ptr< amrex::MultiFab > > &source_mf, amrex::MultiFab &destination_multifab, BC::BC< Set::Scalar > &physbc, int icomp) |
long | CountCells (int lev) |
void | TimeStep (int lev, amrex::Real time, int iteration) |
void | FillCoarsePatch (int lev, amrex::Real time, Set::Field< Set::Scalar > &mf, BC::BC< Set::Scalar > &physbc, int icomp, int ncomp) |
void | GetData (const int lev, const amrex::Real time, amrex::Vector< amrex::MultiFab * > &data, amrex::Vector< amrex::Real > &datatime) |
std::vector< std::string > | PlotFileName (int lev, std::string prefix="") const |
Private Attributes | |
int | max_plot_level = -1 |
amrex::Vector< amrex::Real > | t_old |
int | max_step = std::numeric_limits<int>::max() |
amrex::Real | tstart = 0 |
amrex::Real | stop_time = NAN |
Definition at line 73 of file Integrator.H.
Integrator::Integrator::Integrator | ( | ) |
This is the constructor for the intetgrator class, which reads timestep information, simulation output and AMR, initialized time substep, and creates a new directory.
Definition at line 17 of file Integrator.cpp.
|
virtual |
Virtual destructure; make sure delete any pointers that you create here.
Definition at line 165 of file Integrator.cpp.
ALAMO_SINGLE_DEFINITION void Integrator::Integrator::AddField | ( | Set::Field< T > & | new_field, |
BC::BC< T > * | new_bc, | ||
int | ncomp, | ||
int | nghost, | ||
std::string | name, | ||
bool | writeout, | ||
bool | evolving, | ||
std::vector< std::string > | |||
) |
Definition at line 538 of file Integrator.H.
|
protected |
Add a field with arbitrary type (templated with T) and grid location (templated with d).
|
protectedpure virtual |
You must override this function to inherit this class; Advance is called every time(sub)step, and implements the evolution of the system in time.
[in] | lev | AMR Level |
[in] | time | System time |
[in] | dt | Timestep for this level |
Implemented in Integrator::ThermoElastic, Integrator::AllenCahn, Integrator::HeatConduction, Integrator::Base::Mechanics< MODEL >, Integrator::Base::Mechanics< Model::Solid::Finite::NeoHookeanPredeformed >, Integrator::Base::Mechanics< model_type >, Integrator::CahnHilliard, Integrator::Flame, Integrator::PFC, Integrator::TopOp< MODEL >, Integrator::Dendrite, Integrator::Fracture, and Integrator::SutureCrack.
|
overrideprivatevirtual |
Definition at line 305 of file Integrator.cpp.
|
private |
Simple utility to count cells.
Definition at line 365 of file Integrator.cpp.
|
inlineprotected |
Definition at line 271 of file Integrator.H.
|
inlineprotected |
Params for the dynamic timestp.
Definition at line 258 of file Integrator.H.
|
inlineprotected |
Definition at line 276 of file Integrator.H.
|
overrideprivatevirtual |
Definition at line 471 of file Integrator.cpp.
void Integrator::Integrator::Evolve | ( | ) |
Front-end method to start simulation.
Definition at line 1011 of file Integrator.cpp.
|
private |
Fill a fab at current level with the data from one level up.
[in] | lev | AMR level |
[in] | time | Simulatinon time |
[in] | mf | Fab to fill |
[in] | physbc | BC object applying to Fab |
[in] | icomp | start component |
[in] | ncomp | end component (i.e. applies to components icomp ...ncomp ) |
Definition at line 440 of file Integrator.cpp.
|
private |
This is the function that is responsible for updating patch data.
Definition at line 381 of file Integrator.cpp.
|
private |
|
inline |
Simple getter to get filename.
Definition at line 99 of file Integrator.H.
void Integrator::Integrator::InitData | ( | ) |
Front-end method to initialize simulation on all levels.
Definition at line 479 of file Integrator.cpp.
|
inline |
This creates a new levels that have not previously been used.
Definition at line 111 of file Integrator.H.
|
protectedpure virtual |
You must override this function to inherit this class; this function is called before the simulation begins, and is where initial conditions should be applied.
[in] | lev | AMR Level |
Implemented in Integrator::Fracture, Integrator::SutureCrack, Integrator::AllenCahn, Integrator::Dendrite, Integrator::HeatConduction, Integrator::Base::Mechanics< MODEL >, Integrator::Base::Mechanics< Model::Solid::Finite::NeoHookeanPredeformed >, Integrator::Base::Mechanics< model_type >, Integrator::CahnHilliard, Integrator::Flame, Integrator::Mechanics< MODEL >, Integrator::Mechanics< Model::Solid::Affine::Isotropic >, Integrator::PFC, Integrator::PhaseFieldMicrostructure< model_type >, Integrator::ThermoElastic, and Integrator::TopOp< MODEL >.
|
inlineprotectedvirtual |
This is a function that is called by Integrator
to update the variables registered in RegisterIntegratedVariable; you can override this to do your integration.
Reimplemented in Integrator::Flame, Integrator::PhaseFieldMicrostructure< model_type >, Integrator::TopOp< MODEL >, Integrator::Base::Mechanics< MODEL >, Integrator::Base::Mechanics< Model::Solid::Finite::NeoHookeanPredeformed >, Integrator::Base::Mechanics< model_type >, Integrator::SutureCrack, and Integrator::Fracture.
Definition at line 174 of file Integrator.H.
|
protected |
Definition at line 1062 of file Integrator.cpp.
|
overrideprivatevirtual |
Wrapper to call FillCoarsePatch.
Definition at line 205 of file Integrator.cpp.
|
overrideprivatevirtual |
Definition at line 687 of file Integrator.cpp.
|
private |
Definition at line 746 of file Integrator.cpp.
ALAMO_SINGLE_DEFINITION void Integrator::Integrator::RegisterGeneralFab | ( | Set::Field< T > & | new_fab, |
int | ncomp, | ||
int | nghost, | ||
bool | evolving | ||
) |
Definition at line 578 of file Integrator.H.
|
protected |
Add a templated nodal field.
AMREX_ATTRIBUTE_WEAK void Integrator::Integrator::RegisterGeneralFab | ( | Set::Field< T > & | new_fab, |
int | ncomp, | ||
int | nghost, | ||
bool | writeout, | ||
std::string | a_name, | ||
bool | evolving | ||
) |
Definition at line 592 of file Integrator.H.
|
protected |
Add a templated nodal field (additional arguments)
ALAMO_SINGLE_DEFINITION void Integrator::Integrator::RegisterGeneralFab | ( | Set::Field< T > & | new_fab, |
int | ncomp, | ||
int | nghost, | ||
std::string | a_name, | ||
bool | evolving | ||
) |
Definition at line 585 of file Integrator.H.
|
protected |
Add a templated nodal field (additional arguments)
|
protected |
Register a variable to be integrated over the spatial domain using the Integrate function.
Definition at line 355 of file Integrator.cpp.
|
protected |
Add a new cell-based scalar field.
Definition at line 327 of file Integrator.cpp.
|
protected |
Add a new cell-based scalar field (with additional arguments).
Definition at line 333 of file Integrator.cpp.
|
protected |
Add a new node-based scalar field (wtih additional arguments)
Definition at line 339 of file Integrator.cpp.
|
protected |
Add a new node-based scalar field.
Definition at line 345 of file Integrator.cpp.
|
inlineoverride |
This overrides an AMReX method just to allow for explicit meshing when desired.
Definition at line 103 of file Integrator.H.
|
inlineprotectedvirtual |
An optionally overridable method to trigger behavior whenver a regrid occurs.
Reimplemented in Integrator::Flame, Integrator::Mechanics< MODEL >, and Integrator::Mechanics< Model::Solid::Affine::Isotropic >.
Definition at line 186 of file Integrator.H.
|
overrideprivatevirtual |
RESETS ALL MULTIFABS AT A GIVEN LEVEL.
(OVERRIDES PURE VIRTUAL METHOD - DO NOT CHANGE)
[in] | lev | AMR Level |
[in] | time | Simulation time |
[in] | cgrids | Coarse grids |
[in] | dm | Distribution mapping |
Definition at line 254 of file Integrator.cpp.
void Integrator::Integrator::Restart | ( | std::string | restartfile, |
bool | a_node = false |
||
) |
Read in output from previous simulation and start simulation at that point - Not currently tested.
Definition at line 513 of file Integrator.cpp.
|
inline |
Simple setter to set filename.
Definition at line 96 of file Integrator.H.
|
inlineprotected |
Utility to ensure that all fields know what the finest level is.
Definition at line 214 of file Integrator.H.
|
protected |
Utility to set the frequency (in timesteps) of plotfile dumping.
Definition at line 194 of file Integrator.cpp.
|
inlineprotected |
Utility to set the global stop time.
Definition at line 241 of file Integrator.H.
|
inlineprotected |
Utility to set the frequency (in timesteps) of thermo data calculation.
Definition at line 237 of file Integrator.H.
|
inlineprotected |
Utility to set the frequency (in timesteps) of thermo data writing to file.
Definition at line 239 of file Integrator.H.
|
protected |
Utility to set the coarse-grid timestep.
Definition at line 184 of file Integrator.cpp.
|
protectedpure virtual |
You must override this function to inherit this class; Advance is called every time(sub)step, and implements the evolution of the system in time.
Implemented in Integrator::ThermoElastic, Integrator::Fracture, Integrator::SutureCrack, Integrator::Mechanics< MODEL >, Integrator::Mechanics< Model::Solid::Affine::Isotropic >, Integrator::TopOp< MODEL >, Integrator::AllenCahn, Integrator::Dendrite, Integrator::HeatConduction, Integrator::Base::Mechanics< MODEL >, Integrator::Base::Mechanics< Model::Solid::Finite::NeoHookeanPredeformed >, Integrator::Base::Mechanics< model_type >, Integrator::CahnHilliard, Integrator::PFC, Integrator::PhaseFieldMicrostructure< model_type >, and Integrator::Flame.
|
private |
Timestep marching.
Definition at line 1142 of file Integrator.cpp.
|
inlineprotectedvirtual |
This optional function is called at the beginning of every timestep, and can be used to complete additional global solves, e.g.
a MLMG implicit solve.
Reimplemented in Integrator::PhaseFieldMicrostructure< model_type >, Integrator::Flame, Integrator::Base::Mechanics< MODEL >, Integrator::Base::Mechanics< Model::Solid::Finite::NeoHookeanPredeformed >, Integrator::Base::Mechanics< model_type >, Integrator::ThermoElastic, Integrator::SutureCrack, and Integrator::Fracture.
Definition at line 166 of file Integrator.H.
|
inlineprotectedvirtual |
This optional function is called at the end of every timestep, and can be used to complete additional global solves, e.g.
a MLMG implicit solve.
Reimplemented in Integrator::PhaseFieldMicrostructure< model_type >, Integrator::SutureCrack, Integrator::Fracture, and Integrator::Flame.
Definition at line 170 of file Integrator.H.
|
protected |
Definition at line 756 of file Integrator.cpp.
|
protected |
Definition at line 768 of file Integrator.cpp.
|
protected |
Definition at line 761 of file Integrator.cpp.
|
protected |
Definition at line 453 of file Integrator.H.
bool Integrator::Integrator::all = false |
Definition at line 405 of file Integrator.H.
bool Integrator::Integrator::any = true |
Definition at line 404 of file Integrator.H.
|
protected |
Determine how often to regrid based on coarse level only (default: 0)
Definition at line 439 of file Integrator.H.
|
protected |
Definition at line 423 of file Integrator.H.
std::vector<amrex::Box> Integrator::Integrator::box |
Definition at line 446 of file Integrator.H.
struct { ... } Integrator::Integrator::cell |
Set::Scalar Integrator::Integrator::cfl = NAN |
Definition at line 251 of file Integrator.H.
|
protected |
Timesteps for each level of refinement.
Definition at line 381 of file Integrator.H.
Set::Scalar Integrator::Integrator::dt = NAN |
Definition at line 428 of file Integrator.H.
std::vector<Set::Scalar> Integrator::Integrator::dt_limit_min |
Definition at line 255 of file Integrator.H.
struct { ... } Integrator::Integrator::dynamictimestep |
struct { ... } Integrator::Integrator::explicitmesh |
std::vector<bool> Integrator::Integrator::extensives |
Definition at line 434 of file Integrator.H.
std::vector<Set::Field<Set::Scalar>*> Integrator::Integrator::fab_array |
Definition at line 398 of file Integrator.H.
|
protected |
Definition at line 393 of file Integrator.H.
|
protected |
Definition at line 392 of file Integrator.H.
int Integrator::Integrator::interval = -1 |
Definition at line 427 of file Integrator.H.
|
protected |
Keep track of where each level is.
Definition at line 339 of file Integrator.H.
|
protected |
Definition at line 420 of file Integrator.H.
|
protected |
Definition at line 421 of file Integrator.H.
Set::Scalar Integrator::Integrator::max = NAN |
Definition at line 253 of file Integrator.H.
|
private |
Definition at line 384 of file Integrator.H.
|
private |
Maximum allowable timestep.
Definition at line 387 of file Integrator.H.
Set::Scalar Integrator::Integrator::min = NAN |
Definition at line 252 of file Integrator.H.
std::vector<std::vector<std::string> > Integrator::Integrator::name_array |
Definition at line 401 of file Integrator.H.
std::vector<std::string> Integrator::Integrator::names |
Definition at line 433 of file Integrator.H.
std::vector<int> Integrator::Integrator::ncomp_array |
Definition at line 399 of file Integrator.H.
std::vector<int> Integrator::Integrator::nghost_array |
Definition at line 400 of file Integrator.H.
struct { ... } Integrator::Integrator::node |
int Integrator::Integrator::nprevious = -1 |
Definition at line 250 of file Integrator.H.
|
protected |
how many substeps on each level?
Definition at line 382 of file Integrator.H.
int Integrator::Integrator::number = 0 |
Definition at line 431 of file Integrator.H.
int Integrator::Integrator::number_of_fabs = 0 |
Definition at line 397 of file Integrator.H.
bool Integrator::Integrator::on = false |
Definition at line 248 of file Integrator.H.
int Integrator::Integrator::on = 0 |
Definition at line 445 of file Integrator.H.
std::vector<BC::BC<Set::Scalar>*> Integrator::Integrator::physbc_array |
Definition at line 402 of file Integrator.H.
Set::Scalar Integrator::Integrator::plot_dt = NAN |
Definition at line 430 of file Integrator.H.
|
protected |
Plotfile name.
Definition at line 341 of file Integrator.H.
int Integrator::Integrator::plot_int = -1 |
How frequently to dump plot file (default: never)
Definition at line 429 of file Integrator.H.
std::vector<Set::Scalar> Integrator::Integrator::previous_timesteps |
Definition at line 256 of file Integrator.H.
|
protected |
Determine how often to regrid (default: 2)
Definition at line 438 of file Integrator.H.
|
protected |
Definition at line 441 of file Integrator.H.
|
protected |
Definition at line 442 of file Integrator.H.
|
private |
Default stop time.
Definition at line 389 of file Integrator.H.
|
protected |
Keep track of current old simulation time on each level.
Definition at line 338 of file Integrator.H.
|
private |
Keep track of current old simulation time on each level.
Definition at line 386 of file Integrator.H.
struct { ... } Integrator::Integrator::thermo |
|
protected |
Timestep for the base level of refinement.
Definition at line 380 of file Integrator.H.
|
private |
Default start time (default: 0)
Definition at line 388 of file Integrator.H.
std::vector<Set::Scalar*> Integrator::Integrator::vars |
Definition at line 432 of file Integrator.H.
int Integrator::Integrator::verbose = -1 |
Definition at line 249 of file Integrator.H.
std::vector<bool> Integrator::Integrator::writeout_array |
Definition at line 403 of file Integrator.H.