23class ConvergenceCriterion;
28class ChemicalSolverInterface;
39 TimeLoop(std::unique_ptr<Output>&& output,
40 std::vector<std::unique_ptr<ProcessData>>&& per_process_data,
41 const int global_coupling_max_iterations,
42 std::vector<std::unique_ptr<NumLib::ConvergenceCriterion>>&&
43 global_coupling_conv_crit,
44 const double start_time,
const double end_time);
59 std::size_t
const timesteps);
80 const double t,
const double dt,
const std::size_t timestep_id);
93 const double t,
const double dt,
const std::size_t timestep_id);
111 const double prev_dt,
double&
t, std::size_t& accepted_steps,
112 std::size_t& rejected_steps,
113 std::vector<std::function<
double(
double,
double)>>
const&
114 time_step_constraints);
116 template <
typename OutputClass,
typename OutputClassMember>
117 void outputSolutions(
bool const output_initial_condition,
unsigned timestep,
118 const double t, OutputClass& output_object,
119 OutputClassMember output_class_member)
const;
139 std::vector<std::unique_ptr<NumLib::ConvergenceCriterion>>
Time loop capable of time-integrating several processes at once.
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)
void outputSolutions(bool const output_initial_condition, unsigned timestep, const double t, OutputClass &output_object, OutputClassMember output_class_member) const
bool doNonlinearIteration(double const t, double const dt, std::size_t const timesteps)
TimeLoop(std::unique_ptr< Output > &&output, std::vector< std::unique_ptr< ProcessData > > &&per_process_data, const int global_coupling_max_iterations, std::vector< std::unique_ptr< NumLib::ConvergenceCriterion > > &&global_coupling_conv_crit, const double start_time, const double end_time)
void outputLastTimeStep() const
std::vector< GlobalVector * > _solutions_of_last_cpl_iteration
std::vector< std::size_t > _xdot_vector_ids
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
std::size_t _accepted_steps
bool successful_time_step
std::vector< std::unique_ptr< NumLib::ConvergenceCriterion > > _global_coupling_conv_crit
Convergence criteria of processes for the global coupling iterations.
void setCoupledSolutions()
const int _global_coupling_max_iterations
Maximum iterations of the global coupling.
std::vector< GlobalVector * > _process_solutions
std::unique_ptr< Output > _output
void initialize()
initialize output, convergence criterion, etc.
int _repeating_times_of_rejected_step
std::size_t _rejected_steps
bool calculateNextTimeStep()
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.