TimeSolver::TimeSolver (sys_type &s)Constructor. Requires a reference to the system to be solved.

TimeSolver::~TimeSolver () [virtual]Destructor.

Definition at line 40 of file time_solver.C.

{
}

Member Function Documentation

void TimeSolver::adjoint_recede_timestep () [virtual]This method advances the adjoint solution to the previous timestep, after an adjoint_solve() has been performed. This will probably be done after every UnsteadySolver::adjoint_solve().

Definition at line 90 of file time_solver.C.

{
}

void TimeSolver::adjoint_solve () [virtual]This method solves for the adjoint solution at the previous timestep (or solves a steady adjoint problem). Usually we will only need to solve one linear system per timestep, but more complex subclasses may override this.

void TimeSolver::advance_timestep () [virtual]This method advances the solution to the next timestep, after a solve() has been performed. Often this will be done after every UnsteadySolver::solve(), but adaptive mesh refinement and/or adaptive time step selection may require some solve() steps to be repeated.

Reimplemented in AdaptiveTimeSolver, EigenTimeSolver, and UnsteadySolver.

Definition at line 84 of file time_solver.C.

{
}

virtual void TimeSolver::before_timestep () [inline, virtual]This method is for subclasses or users to override to do arbitrary processing between timesteps

Definition at line 142 of file time_solver.h.

{}

virtual AutoPtr<DiffSolver>& TimeSolver::diff_solver () [inline, virtual]An implicit linear or nonlinear solver to use at each timestep.

Note that, while you can always call this function, its result may or may not be very meaningful. For example, if you call this function right after calling advance_timestep() then you'll get a result of zero since old_nonlinear_solution is set equal to nonlinear_solution in this function.

Implemented in EigenTimeSolver, SteadySolver, and UnsteadySolver.

virtual bool TimeSolver::element_residual (boolrequest_jacobian, DiffContext &) [pure virtual]This method uses the DifferentiableSystem's element_time_derivative() and element_constraint() to build a full residual on an element. What combination it uses will depend on the type of solver. See the subclasses for more details.

void ReferenceCounter::increment_constructor_count (const std::string &name) [inline, protected, inherited]Increments the construction counter. Should be called in the constructor of any derived class that will be reference counted.

void ReferenceCounter::increment_destructor_count (const std::string &name) [inline, protected, inherited]Increments the destruction counter. Should be called in the destructor of any derived class that will be reference counted.

void TimeSolver::reinit () [virtual]The reinitialization function. This method is used after changes in the mesh

Reimplemented in AdaptiveTimeSolver, and EigenTimeSolver.

Definition at line 46 of file time_solver.C.

References _adjoint_solver, and _diff_solver.

{
_diff_solver->reinit();
_adjoint_solver->reinit();
}

virtual bool TimeSolver::side_residual (boolrequest_jacobian, DiffContext &) [pure virtual]This method uses the DifferentiableSystem's side_time_derivative() and side_constraint() to build a full residual on an element's side. What combination it uses will depend on the type of solver. See the subclasses for more details.

void TimeSolver::solve () [virtual]This method solves for the solution at the next timestep (or solves for a steady-state solution). Usually we will only need to solve one (non)linear system per timestep, but more complex subclasses may override this.

Referenced by UnsteadySolver::solve(), TwostepTimeSolver::solve(), and EigenTimeSolver::solve().

unsigned int TimeSolver::reduce_deltat_on_diffsolver_failureThis value (which defaults to zero) is the number of times the TimeSolver is allowed to halve deltat and let the DiffSolver repeat the latest failed solve with a reduced timestep. Note that this has no effect for SteadySolvers. Note that you must set at least one of the DiffSolver flags 'continue_after_max_iterations' or 'continue_after_backtrack_failure' to allow the TimeSolver to retry the solve.

Definition at line 185 of file time_solver.h.

Referenced by UnsteadySolver::solve(), and TwostepTimeSolver::solve().