PFASST++
pfasst::examples::advection_diffusion::AdvectionDiffusionSweeper< time > Class Template Reference

advection-diffusion sweeper with semi-implicit time-integration. More...

#include <advection_diffusion_sweeper.hpp>

+ Inheritance diagram for pfasst::examples::advection_diffusion::AdvectionDiffusionSweeper< time >:
+ Collaboration diagram for pfasst::examples::advection_diffusion::AdvectionDiffusionSweeper< time >:

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...
 
- Public Member Functions inherited from pfasst::encap::IMEXSweeper< time >
 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...
 
- Public Member Functions inherited from pfasst::encap::EncapSweeper< time >
 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
 
- Public Member Functions inherited from pfasst::ISweeper< time >
 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

- Protected Member Functions inherited from pfasst::encap::IMEXSweeper< time >
virtual void integrate_end_state (time dt)
 Set end state to \( U_0 + \int F_{expl} + F_{expl} \). More...
 
- Protected Attributes inherited from pfasst::encap::IMEXSweeper< time >
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...
 
- Protected Attributes inherited from pfasst::encap::EncapSweeper< time >
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...
 
- Protected Attributes inherited from pfasst::ISweeper< time >
Controller< time > * controller
 Backreference to the controller managing the sweeper instance. More...
 

Detailed Description

template<typename time = pfasst::time_precision>
class pfasst::examples::advection_diffusion::AdvectionDiffusionSweeper< time >

advection-diffusion sweeper with semi-implicit time-integration.

Definition at line 78 of file advection_diffusion_sweeper.hpp.

Constructor & Destructor Documentation

template<typename time = pfasst::time_precision>
pfasst::examples::advection_diffusion::AdvectionDiffusionSweeper< time >::AdvectionDiffusionSweeper ( size_t  nvars)
inlineexplicit

Definition at line 112 of file advection_diffusion_sweeper.hpp.

References PI.

template<typename time = pfasst::time_precision>
pfasst::examples::advection_diffusion::AdvectionDiffusionSweeper< time >::AdvectionDiffusionSweeper ( )
default
template<typename time = pfasst::time_precision>
virtual pfasst::examples::advection_diffusion::AdvectionDiffusionSweeper< time >::~AdvectionDiffusionSweeper ( )
inlinevirtual

Definition at line 125 of file advection_diffusion_sweeper.hpp.

References ML_CLOG.

Member Function Documentation

template<typename time = pfasst::time_precision>
void pfasst::examples::advection_diffusion::AdvectionDiffusionSweeper< time >::echo_error ( time  t)
inline

Definition at line 154 of file advection_diffusion_sweeper.hpp.

References pfasst::examples::boris::max().

+ Here is the call graph for this function:

template<typename time = pfasst::time_precision>
void pfasst::examples::advection_diffusion::AdvectionDiffusionSweeper< time >::echo_residual ( )
inline

Definition at line 173 of file advection_diffusion_sweeper.hpp.

References ML_CLOG, and pfasst::encap::solution.

template<typename time = pfasst::time_precision>
void pfasst::examples::advection_diffusion::AdvectionDiffusionSweeper< time >::exact ( shared_ptr< Encapsulation< time >>  q,
time  t 
)
inline

Definition at line 132 of file advection_diffusion_sweeper.hpp.

template<typename time = pfasst::time_precision>
void pfasst::examples::advection_diffusion::AdvectionDiffusionSweeper< time >::exact ( DVectorT q,
time  t 
)
inline

Definition at line 137 of file advection_diffusion_sweeper.hpp.

References PI.

template<typename time = pfasst::time_precision>
void pfasst::examples::advection_diffusion::AdvectionDiffusionSweeper< time >::f_expl_eval ( shared_ptr< Encapsulation< time >>  f_expl_encap,
shared_ptr< Encapsulation< time >>  u_encap,
time  t 
)
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.

+ Here is the call graph for this function:

template<typename time = pfasst::time_precision>
void pfasst::examples::advection_diffusion::AdvectionDiffusionSweeper< time >::f_impl_eval ( shared_ptr< Encapsulation< time >>  f_impl_encap,
shared_ptr< Encapsulation< time >>  u_encap,
time  t 
)
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.

+ Here is the call graph for this function:

template<typename time = pfasst::time_precision>
error_map pfasst::examples::advection_diffusion::AdvectionDiffusionSweeper< time >::get_errors ( )
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().

+ Here is the caller graph for this function:

template<typename time = pfasst::time_precision>
error_map pfasst::examples::advection_diffusion::AdvectionDiffusionSweeper< time >::get_residuals ( )
inline

Definition at line 203 of file advection_diffusion_sweeper.hpp.

Referenced by pfasst::examples::advection_diffusion::run_serial_mlsdc().

+ Here is the caller graph for this function:

template<typename time = pfasst::time_precision>
void pfasst::examples::advection_diffusion::AdvectionDiffusionSweeper< time >::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 
)
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.

+ Here is the call graph for this function:

template<typename time = pfasst::time_precision>
static void pfasst::examples::advection_diffusion::AdvectionDiffusionSweeper< time >::init_logs ( )
inlinestatic

Definition at line 87 of file advection_diffusion_sweeper.hpp.

References pfasst::log::add_custom_logger().

+ Here is the call graph for this function:

template<typename time = pfasst::time_precision>
static void pfasst::examples::advection_diffusion::AdvectionDiffusionSweeper< time >::init_opts ( )
inlinestatic

Definition at line 82 of file advection_diffusion_sweeper.hpp.

template<typename time = pfasst::time_precision>
void pfasst::examples::advection_diffusion::AdvectionDiffusionSweeper< time >::post_predict ( )
inlineoverridevirtual

Compute low-order provisional solution.

Reimplemented from pfasst::ISweeper< time >.

Definition at line 213 of file advection_diffusion_sweeper.hpp.

References plot::dt, and plot::t.

template<typename time = pfasst::time_precision>
void pfasst::examples::advection_diffusion::AdvectionDiffusionSweeper< time >::post_sweep ( )
inlineoverridevirtual

Perform one SDC sweep/iteration.

Reimplemented from pfasst::ISweeper< time >.

Definition at line 224 of file advection_diffusion_sweeper.hpp.

References plot::dt, and plot::t.

Member Data Documentation

template<typename time = pfasst::time_precision>
vector<complex<double> > pfasst::examples::advection_diffusion::AdvectionDiffusionSweeper< time >::ddx
private

Definition at line 95 of file advection_diffusion_sweeper.hpp.

template<typename time = pfasst::time_precision>
error_map pfasst::examples::advection_diffusion::AdvectionDiffusionSweeper< time >::errors
private

Definition at line 99 of file advection_diffusion_sweeper.hpp.

template<typename time = pfasst::time_precision>
FFT pfasst::examples::advection_diffusion::AdvectionDiffusionSweeper< time >::fft
private

Definition at line 94 of file advection_diffusion_sweeper.hpp.

template<typename time = pfasst::time_precision>
vector<complex<double> > pfasst::examples::advection_diffusion::AdvectionDiffusionSweeper< time >::lap
private

Definition at line 95 of file advection_diffusion_sweeper.hpp.

template<typename time = pfasst::time_precision>
size_t pfasst::examples::advection_diffusion::AdvectionDiffusionSweeper< time >::nf1evals = 0
private

Definition at line 107 of file advection_diffusion_sweeper.hpp.

template<typename time = pfasst::time_precision>
double pfasst::examples::advection_diffusion::AdvectionDiffusionSweeper< time >::nu = 0.02
private

Definition at line 106 of file advection_diffusion_sweeper.hpp.

template<typename time = pfasst::time_precision>
error_map pfasst::examples::advection_diffusion::AdvectionDiffusionSweeper< time >::residuals
private

Definition at line 100 of file advection_diffusion_sweeper.hpp.

template<typename time = pfasst::time_precision>
time pfasst::examples::advection_diffusion::AdvectionDiffusionSweeper< time >::t0 = 1.0
private

Definition at line 105 of file advection_diffusion_sweeper.hpp.

template<typename time = pfasst::time_precision>
double pfasst::examples::advection_diffusion::AdvectionDiffusionSweeper< time >::v = 1.0
private

Definition at line 104 of file advection_diffusion_sweeper.hpp.


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