22 params.
addClassDescription(
"Executioner for evaluating transient simulations and their adjoint.");
33 params.
renameParam(
"system_names",
"forward_system",
"");
40 _adjoint_solve(*this),
41 _forward_times(declareRecoverableData<
std::vector<
Real>>(
"forward_times"))
50 "scheme", getParam<MooseEnum>(
"scheme"),
" is not supported for computing adjoint.");
virtual void preExecute() override
void timestepSetup() override
virtual void postExecute() override
virtual void preExecute() override
For storing the initial condition.
bool & _last_solve_converged
TransientAndAdjoint(const InputParameters ¶meters)
virtual void postStep() override
For storing the converged solution.
static InputParameters validParams()
registerMooseObject("OptimizationApp", TransientAndAdjoint)
std::vector< Real > & _forward_times
Cached forward time points so we can properly loop backward in time.
virtual void postExecute() override
For solving the adjoint problem.
static InputParameters validParams()
bool testCheckpointHalfTransient() const
AdjointTransientSolve _adjoint_solve
The transient adjoint solve object responsible for storing forward solutions and solving the adjoint ...
void paramError(const std::string ¶m, Args... args) const
void insertForwardSolution(int tstep)
This function should be called after every converged forward time step.
const ExecFlagType EXEC_ADJOINT_TIMESTEP_END
DIE A HORRIBLE DEATH HERE typedef LIBMESH_DEFAULT_SCALAR_TYPE Real
void setForwardSolution(int tstep)
Takes the previously saved forward solutions residing in the adjoint system and copies them to the av...
virtual void onTimestepBegin() override
IntRange< T > make_range(T beg, T end)
static InputParameters validParams()
Moose::TimeIntegratorType getTimeScheme() const
virtual bool lastSolveConverged() const override
bool isRecovering() const
virtual bool solve() override
Overriding parent class so the time-derivative residual is stored for the next time step...
virtual void outputStep(ExecFlagType type)