SpECTRE
v2025.03.17
|
Shared LTS implementation for the two Adams-based methods. More...
Classes | |
struct | AdamsScheme |
struct | LtsCoefficients |
Storage for LTS coefficients that should not allocate in typical cases. Each entry is a tuple of (local id, remote id, coefficient). The contents should be kept sorted, as some functions assume that. More... | |
Enumerations | |
enum class | SchemeType { Explicit , Implicit } |
Type of coefficients used for an AdamsScheme. | |
Functions | |
Time | exact_substep_time (const TimeStepId &id) |
Get the time of a substep as a Time , assuming substeps are at the end of the step. | |
LtsCoefficients & | operator+= (LtsCoefficients &a, const LtsCoefficients &b) |
LtsCoefficients & | operator-= (LtsCoefficients &a, const LtsCoefficients &b) |
LtsCoefficients | operator+ (LtsCoefficients &&a, LtsCoefficients &&b) |
LtsCoefficients | operator+ (LtsCoefficients &&a, const LtsCoefficients &b) |
LtsCoefficients | operator+ (const LtsCoefficients &a, LtsCoefficients &&b) |
LtsCoefficients | operator+ (const LtsCoefficients &a, const LtsCoefficients &b) |
LtsCoefficients | operator- (LtsCoefficients &&a, LtsCoefficients &&b) |
LtsCoefficients | operator- (LtsCoefficients &&a, const LtsCoefficients &b) |
LtsCoefficients | operator- (const LtsCoefficients &a, LtsCoefficients &&b) |
LtsCoefficients | operator- (const LtsCoefficients &a, const LtsCoefficients &b) |
template<typename T > | |
void | apply_coefficients (gsl::not_null< T * > result, const LtsCoefficients &coefficients, const BoundaryHistoryEvaluator< T > &coupling) |
Add the LTS boundary terms for to result for the given set of coefficients. | |
bool | operator== (const AdamsScheme &a, const AdamsScheme &b) |
bool | operator!= (const AdamsScheme &a, const AdamsScheme &b) |
template<typename TimeType > | |
LtsCoefficients | lts_coefficients (const ConstBoundaryHistoryTimes &local_times, const ConstBoundaryHistoryTimes &remote_times, const Time &start_time, const TimeType &end_time, const AdamsScheme &local_scheme, const AdamsScheme &remote_scheme, const AdamsScheme &small_step_scheme) |
Variables | |
constexpr size_t | lts_coefficients_static_size |
Shared LTS implementation for the two Adams-based methods.
LtsCoefficients TimeSteppers::adams_lts::lts_coefficients | ( | const ConstBoundaryHistoryTimes & | local_times, |
const ConstBoundaryHistoryTimes & | remote_times, | ||
const Time & | start_time, | ||
const TimeType & | end_time, | ||
const AdamsScheme & | local_scheme, | ||
const AdamsScheme & | remote_scheme, | ||
const AdamsScheme & | small_step_scheme | ||
) |
Calculate the nonzero terms in an Adams LTS boundary contribution.
The coefficients are generated for a step from start_time
to end_time
, integrating using the small_step_scheme
. Interpolation from the elements is performed using polynomials appropriate for the given local_scheme
and remote_scheme
.
This function returns the sum of the coefficients for the small steps, i.e., the steps between all the times either side updates between the time bounds. Each small step is calculated as
where local_scheme
, remote_scheme
, and the Adams coefficients small_step_scheme
.
When called for dense output, the arguments must represent a single small step, i.e., the step cannot cross any of the control times. Any additional terms can be generated by a second call treating the remainder of the step as non-dense.
TimeType | The type Time for a step aligned with the control times or ApproximateTime for dense output. |
|
constexpr |