advection-diffusion sweeper with semi-implicit time-integration. More...
#include <advection_diffusion_sweeper.hpp>
Public Member Functions | |
AdvectionDiffusionSweeper (size_t nvars) | |
AdvectionDiffusionSweeper ()=default | |
virtual | ~AdvectionDiffusionSweeper () |
void | exact (shared_ptr< Encapsulation< time >> q, time t) |
void | exact (DVectorT &q, time t) |
void | echo_error (time t) |
void | echo_residual () |
error_map | get_errors () |
error_map | get_residuals () |
void | post_predict () override |
Compute low-order provisional solution. More... | |
void | post_sweep () override |
Perform one SDC sweep/iteration. More... | |
void | f_expl_eval (shared_ptr< Encapsulation< time >> f_expl_encap, shared_ptr< Encapsulation< time >> u_encap, time t) override |
Evaluate the explicit part of the ODE. More... | |
void | f_impl_eval (shared_ptr< Encapsulation< time >> f_impl_encap, shared_ptr< Encapsulation< time >> u_encap, time t) override |
Evaluate the implicit part of the ODE. More... | |
void | impl_solve (shared_ptr< Encapsulation< time >> f_impl_encap, shared_ptr< Encapsulation< time >> u_encap, time t, time dt, shared_ptr< Encapsulation< time >> rhs_encap) override |
Solve \( U - \Delta t F_{\rm impl}(U) = RHS \) for \( U \). More... | |
![]() | |
IMEXSweeper ()=default | |
virtual | ~IMEXSweeper ()=default |
virtual void | setup (bool coarse) override |
Setup (allocate etc) the sweeper. More... | |
virtual void | predict (bool initial) override |
Compute low-order provisional solution. More... | |
virtual void | sweep () override |
Perform one SDC sweep/iteration. More... | |
virtual void | advance () override |
Advance the end solution to start solution. More... | |
virtual void | reevaluate (bool initial_only) override |
Re-evaluate function values. More... | |
virtual void | integrate (time dt, vector< shared_ptr< Encapsulation< time >>> dst) const override |
Integrates values of right hand side at all time nodes \( t \in [0,M-1] \) simultaneously. More... | |
virtual void | residual (time dt, vector< shared_ptr< Encapsulation< time >>> dst) const override |
Compute residual at each SDC node (including FAS corrections). More... | |
![]() | |
EncapSweeper () | |
virtual shared_ptr< Encapsulation< time > > | get_state (size_t m) const |
Retrieve solution values of current iteration at time node index m . More... | |
virtual shared_ptr< Encapsulation< time > > | get_tau (size_t m) const |
Retrieve FAS correction of current iteration at time node index m . More... | |
virtual shared_ptr< Encapsulation< time > > | get_saved_state (size_t m) const |
Retrieve solution values of previous iteration at time node index m . More... | |
virtual void | set_options () override |
Set options from command line etc. More... | |
virtual void | spread () override |
Initialize solution values at all time nodes with meaningful values. More... | |
virtual void | save (bool initial_only) override |
Save states (and/or function values) at all nodes. More... | |
virtual void | set_quadrature (shared_ptr< IQuadrature< time >> quadrature) |
virtual shared_ptr< const IQuadrature< time > > | get_quadrature () const |
virtual const vector< time > | get_nodes () const |
virtual void | set_factory (shared_ptr< EncapFactory< time >> factory) |
virtual shared_ptr< EncapFactory< time > > | get_factory () const |
virtual shared_ptr< Encapsulation< time > > | get_start_state () const |
virtual shared_ptr< Encapsulation< time > > | get_end_state () |
void | set_residual_tolerances (time abs_residual_tol, time rel_residual_tol, int order=0) |
Set residual tolerances for convergence checking. More... | |
virtual bool | converged () override |
Return convergence status. More... | |
virtual void | post (ICommunicator *comm, int tag) override |
virtual void | send (ICommunicator *comm, int tag, bool blocking) override |
virtual void | recv (ICommunicator *comm, int tag, bool blocking) override |
virtual void | broadcast (ICommunicator *comm) override |
![]() | |
ISweeper () | |
virtual | ~ISweeper () |
virtual void | set_controller (Controller< time > *ctrl) |
Set the sweepers controller. More... | |
virtual Controller< time > * | get_controller () |
Accessor to the controller managing this sweeper. More... | |
virtual void | post_step () |
Hook automatically run after each completed time step. More... | |
Static Public Member Functions | |
static void | init_opts () |
static void | init_logs () |
Private Attributes | |
FFT | fft |
vector< complex< double > > | ddx |
vector< complex< double > > | lap |
error_map | errors |
error_map | residuals |
double | v = 1.0 |
time | t0 = 1.0 |
double | nu = 0.02 |
size_t | nf1evals = 0 |
Additional Inherited Members | |
![]() | |
virtual void | integrate_end_state (time dt) |
Set end state to \( U_0 + \int F_{expl} + F_{expl} \). More... | |
![]() | |
vector< shared_ptr< Encapsulation< time > > > | s_integrals |
Node-to-node integrals of \( F(t,u) \) at all time nodes of the current iteration. More... | |
vector< shared_ptr< Encapsulation< time > > > | fs_expl |
Values of the explicit part of the right hand side \( F_{expl}(t,u) \) at all time nodes of the current iteration. More... | |
shared_ptr< Encapsulation< time > > | fs_expl_start |
vector< shared_ptr< Encapsulation< time > > > | fs_impl |
Values of the implicit part of the right hand side \( F_{impl}(t,u) \) at all time nodes of the current iteration. More... | |
![]() | |
string | FORMAT_STR |
shared_ptr< IQuadrature< time > > | quadrature |
shared_ptr< EncapFactory< time > > | factory |
Encapsulation data structure factory. More... | |
shared_ptr< Encapsulation< time > > | start_state |
Separate start state, i.e. initial condition for the sweeper's current time step. More... | |
shared_ptr< Encapsulation< time > > | end_state |
Current solution at \( T_{end} \). More... | |
vector< shared_ptr< Encapsulation< time > > > | residuals |
Place for the residuals at the different time nodes. More... | |
vector< shared_ptr< Encapsulation< time > > > | state |
Solution values \( U \) at all time nodes of the current iteration. More... | |
vector< shared_ptr< Encapsulation< time > > > | saved_state |
Solution values \( U \) at all time nodes of the previous iteration. More... | |
vector< shared_ptr< Encapsulation< time > > > | fas_corrections |
FAS corrections \( \tau \) at all time nodes of the current iteration. More... | |
int | residual_norm_order |
time | abs_residual_tol |
Tolerance for absolute residual. More... | |
time | rel_residual_tol |
Tolerance for relative residual. More... | |
![]() | |
Controller< time > * | controller |
Backreference to the controller managing the sweeper instance. More... | |
advection-diffusion sweeper with semi-implicit time-integration.
Definition at line 78 of file advection_diffusion_sweeper.hpp.
|
inlineexplicit |
Definition at line 112 of file advection_diffusion_sweeper.hpp.
References PI.
|
default |
|
inlinevirtual |
Definition at line 125 of file advection_diffusion_sweeper.hpp.
References ML_CLOG.
|
inline |
Definition at line 154 of file advection_diffusion_sweeper.hpp.
References pfasst::examples::boris::max().
|
inline |
Definition at line 173 of file advection_diffusion_sweeper.hpp.
References ML_CLOG, and pfasst::encap::solution.
|
inline |
Definition at line 132 of file advection_diffusion_sweeper.hpp.
|
inline |
Definition at line 137 of file advection_diffusion_sweeper.hpp.
References PI.
|
inlineoverridevirtual |
Evaluate the explicit part of the ODE.
Reimplemented from pfasst::encap::IMEXSweeper< time >.
Definition at line 237 of file advection_diffusion_sweeper.hpp.
References pfasst::examples::advection_diffusion::FFT::backward(), pfasst::examples::advection_diffusion::FFT::forward(), and UNUSED.
|
inlineoverridevirtual |
Evaluate the implicit part of the ODE.
Reimplemented from pfasst::encap::IMEXSweeper< time >.
Definition at line 259 of file advection_diffusion_sweeper.hpp.
References pfasst::examples::advection_diffusion::FFT::backward(), pfasst::examples::advection_diffusion::FFT::forward(), and UNUSED.
|
inline |
Definition at line 198 of file advection_diffusion_sweeper.hpp.
Referenced by pfasst::examples::advection_diffusion::run_mpi_pfasst(), and pfasst::examples::advection_diffusion::run_serial_mlsdc().
|
inline |
Definition at line 203 of file advection_diffusion_sweeper.hpp.
Referenced by pfasst::examples::advection_diffusion::run_serial_mlsdc().
|
inlineoverridevirtual |
Solve \( U - \Delta t F_{\rm impl}(U) = RHS \) for \( U \).
Reimplemented from pfasst::encap::IMEXSweeper< time >.
Definition at line 279 of file advection_diffusion_sweeper.hpp.
References pfasst::examples::advection_diffusion::FFT::backward(), pfasst::examples::advection_diffusion::FFT::forward(), and UNUSED.
|
inlinestatic |
Definition at line 87 of file advection_diffusion_sweeper.hpp.
References pfasst::log::add_custom_logger().
|
inlinestatic |
Definition at line 82 of file advection_diffusion_sweeper.hpp.
|
inlineoverridevirtual |
Compute low-order provisional solution.
Reimplemented from pfasst::ISweeper< time >.
Definition at line 213 of file advection_diffusion_sweeper.hpp.
|
inlineoverridevirtual |
Perform one SDC sweep/iteration.
Reimplemented from pfasst::ISweeper< time >.
Definition at line 224 of file advection_diffusion_sweeper.hpp.
|
private |
Definition at line 95 of file advection_diffusion_sweeper.hpp.
|
private |
Definition at line 99 of file advection_diffusion_sweeper.hpp.
|
private |
Definition at line 94 of file advection_diffusion_sweeper.hpp.
|
private |
Definition at line 95 of file advection_diffusion_sweeper.hpp.
|
private |
Definition at line 107 of file advection_diffusion_sweeper.hpp.
|
private |
Definition at line 106 of file advection_diffusion_sweeper.hpp.
|
private |
Definition at line 100 of file advection_diffusion_sweeper.hpp.
|
private |
Definition at line 105 of file advection_diffusion_sweeper.hpp.
|
private |
Definition at line 104 of file advection_diffusion_sweeper.hpp.