SpECTRE  v2025.03.17
All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Modules Pages
StepChoosers::PreventRapidIncrease Class Reference

Limits the time step to prevent multistep integrator instabilities. More...

#include <PreventRapidIncrease.hpp>

Public Types

using options = implementation defined
 
using argument_tags = implementation defined
 

Public Member Functions

template<typename History >
TimeStepRequest operator() (const History &history, const double last_step) const
 
bool uses_local_data () const override
 Whether the result can differ on different elements, so requiring communication to synchronize the result across the domain. This is ignored for LTS step changing. More...
 
bool can_be_delayed () const override
 Whether the result can be applied with a delay. More...
 
void pup (PUP::er &p) override
 
- Public Member Functions inherited from StepChooser< StepChooserUse::Slab >
 WRAPPED_PUPable_abstract (StepChooser)
 
virtual bool uses_local_data () const=0
 Whether the result can differ on different elements, so requiring communication to synchronize the result across the domain. This is ignored for LTS step changing. More...
 
virtual bool can_be_delayed () const=0
 Whether the result can be applied with a delay. More...
 
TimeStepRequest desired_step (const double last_step, const db::DataBox< DbTags > &box) const
 The last_step parameter describes the step size to be adjusted. It may be the step size or the slab size, or may be infinite if the appropriate size cannot be determined. More...
 
- Public Member Functions inherited from StepChooser< StepChooserUse::LtsStep >
 WRAPPED_PUPable_abstract (StepChooser)
 
virtual bool uses_local_data () const=0
 Whether the result can differ on different elements, so requiring communication to synchronize the result across the domain. This is ignored for LTS step changing. More...
 
virtual bool can_be_delayed () const=0
 Whether the result can be applied with a delay. More...
 
TimeStepRequest desired_step (const double last_step, const db::DataBox< DbTags > &box) const
 The last_step parameter describes the step size to be adjusted. It may be the step size or the slab size, or may be infinite if the appropriate size cannot be determined. More...
 

Static Public Attributes

static constexpr Options::String help
 

Detailed Description

Limits the time step to prevent multistep integrator instabilities.

Avoids instabilities due to rapid increases in the step size by preventing the step size from increasing if any step in the time-stepper history increased. If there have been recent step size increases, the new size bound is the size of the most recent step, otherwise no restriction is imposed.

Member Function Documentation

◆ can_be_delayed()

bool StepChoosers::PreventRapidIncrease::can_be_delayed ( ) const
overridevirtual

Whether the result can be applied with a delay.

StepChoosers setting the .end or .end_hard_limit fields of TimeStepRequest must return false here.

Implements StepChooser< StepChooserUse::Slab >.

◆ uses_local_data()

bool StepChoosers::PreventRapidIncrease::uses_local_data ( ) const
overridevirtual

Whether the result can differ on different elements, so requiring communication to synchronize the result across the domain. This is ignored for LTS step changing.

Note
As this is only used for slab-size changing, the last_step passed to the call operator is not considered local data.

Implements StepChooser< StepChooserUse::Slab >.

Member Data Documentation

◆ help

constexpr Options::String StepChoosers::PreventRapidIncrease::help
staticconstexpr
Initial value:
{
"Limits the time step to prevent multistep integrator instabilities."}

The documentation for this class was generated from the following file: