23class ConvergenceCriterion;
24class StaggeredCoupling;
29class ChemicalSolverInterface;
40 TimeLoop(std::vector<Output>&& outputs,
41 std::vector<std::unique_ptr<ProcessData>>&& per_process_data,
42 std::unique_ptr<NumLib::StaggeredCoupling>&& staggered_coupling,
43 const double start_time,
const double end_time);
67 std::size_t
const timesteps);
81 const double t,
const double dt,
const std::size_t timestep_id);
94 const double t,
const double dt,
const std::size_t timestep_id);
112 const double prev_dt,
double& t, std::size_t& accepted_steps,
113 std::size_t& rejected_steps,
114 std::vector<std::function<
double(
double,
double)>>
const&
115 time_step_constraints);
117 template <
typename OutputClassMember>
120 OutputClassMember output_class_member)
const;
123 std::vector<std::function<double(
double,
double)>>
Time loop capable of time-integrating several processes at once.
std::vector< std::function< double(double, double)> > generateOutputTimeStepConstraints(std::vector< double > &&fixed_times) const
std::pair< double, bool > computeTimeStepping(const double prev_dt, double &t, std::size_t &accepted_steps, std::size_t &rejected_steps, std::vector< std::function< double(double, double)> > const &time_step_constraints)
TimeLoop(std::vector< Output > &&outputs, std::vector< std::unique_ptr< ProcessData > > &&per_process_data, std::unique_ptr< NumLib::StaggeredCoupling > &&staggered_coupling, const double start_time, const double end_time)
void outputLastTimeStep() const
double currentTime() const
NumLib::NonlinearSolverStatus solveUncoupledEquationSystems(const double t, const double dt, const std::size_t timestep_id)
Member to solver non coupled systems of equations, which can be a single system of equations,...
std::vector< std::unique_ptr< ProcessData > > _per_process_data
void outputSolutions(unsigned timestep, const double t, OutputClassMember output_class_member) const
std::vector< Output > _outputs
std::size_t _accepted_steps
bool successful_time_step
std::vector< GlobalVector * > _process_solutions
std::unique_ptr< NumLib::StaggeredCoupling > _staggered_coupling
void initialize()
initialize output, convergence criterion, etc.
bool preTsNonlinearSolvePostTs(double const t, double const dt, std::size_t const timesteps)
int _repeating_times_of_rejected_step
std::size_t _rejected_steps
bool calculateNextTimeStep()
void preOutputInitialConditions(const double t) const
std::vector< GlobalVector * > _process_solutions_prev
NumLib::NonlinearSolverStatus solveCoupledEquationSystemsByStaggeredScheme(const double t, const double dt, const std::size_t timestep_id)
Member to solver coupled systems of equations by the staggered scheme.
Status of the non-linear solver.