Quandary
Loading...
Searching...
No Matches
Public Member Functions | Protected Attributes | List of all members
ExplEuler Class Reference

Explicit Euler time integration scheme. More...

#include <timestepper.hpp>

Inheritance diagram for ExplEuler:
Inheritance graph
[legend]
Collaboration diagram for ExplEuler:
Collaboration graph
[legend]

Public Member Functions

 ExplEuler (MasterEq *mastereq_, int ntime_, double total_time_, Output *output_, bool storeFWD_)
 Constructor for explicit Euler scheme.
 
 ~ExplEuler ()
 
void evolveFWD (const double tstart, const double tstop, Vec x)
 Evolves state forward using explicit Euler method.
 
void evolveBWD (const double tstart, const double tstop, const Vec x_stop, Vec x_adj, Vec grad, bool compute_gradient)
 Evolves adjoint backward using explicit Euler method.
 
- Public Member Functions inherited from TimeStepper
 TimeStepper ()
 
 TimeStepper (MasterEq *mastereq_, int ntime_, double total_time_, Output *output_, bool storeFWD_)
 Constructor for time stepper.
 
virtual ~TimeStepper ()
 
Vec getState (size_t tindex)
 Retrieves stored state at a specific time index.
 
void setEvalLeakage (bool flag)
 
void setEvalWeightedCost (bool flag, double width)
 
void setEvalDPDM (bool flag)
 
void setEvalEnergy (bool flag)
 
double getLeakageIntegral ()
 
double getWeightedCostIntegral ()
 
double getEnergyIntegral ()
 
double getDPDMIntegral ()
 
Vec solveODE (int initid, Vec rho_t0)
 Solves the ODE forward in time.
 
void solveAdjointODE (Vec rho_t0_bar, Vec finalstate, double Jbar_leakage, double Jbar_weightedcost, double Jbar_dpdm, double Jbar_energy)
 Solves the adjoint ODE backward in time.
 
double evalLeakage (const Vec x)
 Evaluates leakage into guard levels.
 
void evalLeakage_diff (const Vec x, Vec xbar, double Jbar)
 Computes derivative of leakage term.
 
double evalWeightedCost (double time, const Vec x)
 Evaluates the weighted cost function term.
 
void evalWeightedCost_diff (double time, const Vec x, Vec xbar, double Jbar)
 Computes derivative of weighted cost function term.
 
double evalDpDm (Vec x, Vec xm1, Vec xm2)
 Evaluates second-order derivative variation for the state.
 
void evalDpDm_diff (int n, Vec xbar, double Jbar)
 Computes derivative of second-order derivative variation term.
 
double evalEnergy (double time)
 Evaluates energy integral term.
 
void evalEnergy_diff (double time, double Jbar, Vec redgrad)
 Computes derivative of energy integral.
 

Protected Attributes

Vec stage
 Intermediate vector.
 
- Protected Attributes inherited from TimeStepper
Vec x
 Auxiliary vector for forward time stepping.
 
Vec xadj
 Auxiliary vector needed for adjoint (backward) time stepping.
 
Vec xprimal
 Auxiliary vector for backward time stepping.
 
std::vector< Vec > store_states
 Storage for primal states during forward evolution.
 
std::vector< Vec > dpdm_states
 Storage for states needed for second-order derivative penalty.
 
int mpirank_world
 MPI rank in global communicator.
 
int mpisize_petsc
 MPI size in Petsc communicator.
 
int mpirank_petsc
 MPI rank in Petsc communicator.
 
PetscInt localsize_u
 Size of local sub vector u or v in state x=[u,v].
 
PetscInt ilow
 First index of the local sub vector u,v.
 
PetscInt iupp
 Last index (+1) of the local sub vector u,v.
 
bool eval_leakage
 Flag to compute leakage integral term.
 
bool eval_energy
 Flag to compute energy integral term.
 
bool eval_dpdm
 Flag to compute second-order derivative integral term.
 
bool eval_weightedcost
 Flag to compute weighted cost integral term.
 
double leakage_integral
 Sums the integral over leakage.
 
double energy_integral
 Sums the energy term.
 
double dpdm_integral
 Sums second-order derivative variation value.
 
double weightedcost_integral
 Sums the integral over weighted cost function.
 
double weightedcost_width
 Width parameter for weighted cost function.
 

Additional Inherited Members

- Public Attributes inherited from TimeStepper
MasterEqmastereq
 Pointer to master equation solver.
 
int ntime
 Number of time steps.
 
double total_time
 Final evolution time.
 
double dt
 Time step size.
 
bool writeTrajectoryDataFiles
 Flag to determine whether or not trajectory data will be written to files during forward simulation *‍/.
 
Vec redgrad
 Reduced gradient vector for optimization.
 
OptimTargetoptim_target
 Pointer to optimization target specification.
 
Outputoutput
 Pointer to output handler.
 
bool storeFWD
 Flag to store primal states during forward evaluation.
 

Detailed Description

Explicit Euler time integration scheme.

First-order explicit time stepping method. Simple, requires small time steps for stability. Mainly used for testing and comparison purposes.

Constructor & Destructor Documentation

◆ ExplEuler()

ExplEuler::ExplEuler ( MasterEq mastereq_,
int  ntime_,
double  total_time_,
Output output_,
bool  storeFWD_ 
)

Constructor for explicit Euler scheme.

Parameters
mastereq_Pointer to master equation solver
ntime_Number of time steps
total_time_Final evolution time
output_Pointer to output handler
storeFWD_Flag to store forward states

◆ ~ExplEuler()

ExplEuler::~ExplEuler ( )

Member Function Documentation

◆ evolveBWD()

void ExplEuler::evolveBWD ( const double  tstart,
const double  tstop,
const Vec  x_stop,
Vec  x_adj,
Vec  grad,
bool  compute_gradient 
)
virtual

Evolves adjoint backward using explicit Euler method.

Parameters
tstartStart time (backward evolution)
tstopStop time (backward evolution)
x_stopState at stop time
x_adjAdjoint state vector
gradGradient vector to update
compute_gradientFlag to compute gradient

Reimplemented from TimeStepper.

◆ evolveFWD()

void ExplEuler::evolveFWD ( const double  tstart,
const double  tstop,
Vec  x 
)
virtual

Evolves state forward using explicit Euler method.

Parameters
tstartStart time
tstopStop time
xState vector to evolve

Implements TimeStepper.

Member Data Documentation

◆ stage

Vec ExplEuler::stage
protected

Intermediate vector.


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