|
using | IdxRange = typename FieldMem::discrete_domain_type |
| The type of the index range on which the values of the function are defined.
|
|
using | ValConstField = typename FieldMem::view_type |
| The constant type of the values of the function being evolved.
|
|
using | ValField = typename FieldMem::span_type |
| The type of the values of the function being evolved.
|
|
using | DerivConstField = typename DerivFieldMem::view_type |
| The constant type of the derivatives values of the function being evolved.
|
|
using | DerivField = typename DerivFieldMem::span_type |
| The type of the derivatives of the function being evolved.
|
|
using | IdxRange = typename FieldMem::discrete_domain_type |
| The type of the index range on which the values of the function are defined.
|
|
using | ValField = typename FieldMem::span_type |
| The type of the values of the function being evolved.
|
|
using | ValConstField = typename FieldMem::view_type |
| The constant type of the values of the function being evolved.
|
|
using | DerivField = typename DerivFieldMem::span_type |
| The type of the derivatives of the function being evolved.
|
|
using | DerivConstField = typename DerivFieldMem::view_type |
| The constant type of the derivatives values of the function being evolved.
|
|
|
| Euler (IdxRange idx_range) |
| Create a Euler object.
|
|
void | update (ExecSpace const &exec_space, ValField y, double dt, std::function< void(DerivField, ValConstField)> dy_calculator, std::function< void(ValField, DerivConstField, double)> y_update) const final |
| Carry out one step of the explicit Euler scheme.
|
|
void | update (ValField y, double dt, std::function< void(DerivField, ValConstField)> dy_calculator) const |
| Carry out one step of the timestepping scheme.
|
|
void | update (ExecSpace const &exec_space, ValField y, double dt, std::function< void(DerivField, ValConstField)> dy_calculator) const |
| Carry out one step of the timestepping scheme.
|
|
virtual void | update (ExecSpace const &exec_space, ValField y, double dt, std::function< void(DerivField, ValConstField)> dy_calculator, std::function< void(ValField, DerivConstField, double)> y_update) const=0 |
| Carry out one step of the timestepping scheme.
|
|
void | update (ValField y, double dt, std::function< void(DerivField, ValConstField)> dy_calculator) const |
| Carry out one step of the timestepping scheme.
|
|
void | update (ExecSpace const &exec_space, ValField y, double dt, std::function< void(DerivField, ValConstField)> dy_calculator) const |
| Carry out one step of the timestepping scheme.
|
|
template<class FieldType , class FuncType , std::size_t n_args> |
void | assemble_field_k_total (ExecSpace const &exec_space, FieldType k_total, FuncType func, std::array< FieldType, n_args > k_arr) const |
| Calculate func(k_arr[0], k_arr[1], ...) when FieldType is a Field (ddc::ChunkSpan).
|
|
template<class FieldType , class FuncType , std::size_t n_args> |
void | assemble_vector_field_k_total (ExecSpace const &exec_space, FieldType k_total, FuncType func, std::array< FieldType, n_args > k_arr) const |
| Calculate func(k_arr[0], k_arr[1], ...) when FieldType is a VectorField.
|
|
|
void | copy (ValField copy_to, ValConstField copy_from) const |
| Make a copy of the values of the function being evolved.
|
|
template<class FuncType , class... T> |
void | assemble_k_total (ExecSpace const &exec_space, DerivField k_total, FuncType func, T... k) const |
| A method to assemble multiple derivative fields into one.
|
|
template<class DerivFieldType , class Idx , class... DDims> |
static KOKKOS_FUNCTION void | fill_k_total (DerivFieldType k_total, Idx i, Coord< DDims... > new_val) |
| A method to fill an element of a vector field.
|
|
template<class FieldMem, class
DerivFieldMem = FieldMem, class ExecSpace = Kokkos::DefaultExecutionSpace>
class Euler< FieldMem, DerivFieldMem, ExecSpace >
A class which provides an implementation of an explicit Euler method.
A class which provides an implementation of an explicit Euler method in order to evolve values over time. The values may be either scalars or vectors. In the case of vectors the appropriate dimensions must be passed as template parameters. The values which evolve are defined on an index range.
For the following ODE : \(\partial_t y(t) = f(t, y(t)) \),
the explicit Euler method is given by : \( y^{n+1} = y^{n} + dt f(t^{n}, y^{n})\).
The method is order 1.