TimeIntegratorBase< number > Class Template Reference

Developer Documentation: MeltPoolDG::TimeIntegration::TimeIntegratorBase< number > Class Template Reference
Developer Documentation
MeltPoolDG::TimeIntegration::TimeIntegratorBase< number > Class Template Referenceabstract

#include <time_integrator_base.hpp>

Inheritance diagram for MeltPoolDG::TimeIntegration::TimeIntegratorBase< number >:
[legend]

Public Member Functions

 TimeIntegratorBase (const TimeIntegratorData< number > &time_integrator_data_in)
 
virtual ~TimeIntegratorBase ()=default
 
virtual unsigned int required_solution_history_size () const =0
 
virtual void reinit (const VectorType &vector_template)=0
 
virtual void reinit (const SolutionHistory< VectorType > &solution_history)
 
virtual void perform_time_step (number current_time, number time_step, SolutionHistory< VectorType > &solution_history, const std::function< void(number, number, VectorType &, const VectorType &)> &pre_processing={}, const std::function< void(number, number, VectorType &, const VectorType &)> &post_processing={})=0
 
TimeIntegratorSchemes get_integrator_type () const
 
void set_monitoring_vector (VectorType &monitoring_vector_in)
 
void reset_monitoring_vector ()
 

Protected Attributes

const TimeIntegratorData< number > time_integrator_data
 
VectorTypemonitoring_vector = nullptr
 

Private Types

using VectorType = dealii::LinearAlgebra::distributed::Vector< number >
 

Member Typedef Documentation

◆ VectorType

template<typename number >
using MeltPoolDG::TimeIntegration::TimeIntegratorBase< number >::VectorType = dealii::LinearAlgebra::distributed::Vector<number>
private

Constructor & Destructor Documentation

◆ TimeIntegratorBase()

template<typename number >
MeltPoolDG::TimeIntegration::TimeIntegratorBase< number >::TimeIntegratorBase ( const TimeIntegratorData< number > &  time_integrator_data_in)
inlineexplicit

◆ ~TimeIntegratorBase()

template<typename number >
virtual MeltPoolDG::TimeIntegration::TimeIntegratorBase< number >::~TimeIntegratorBase ( )
virtualdefault

Member Function Documentation

◆ get_integrator_type()

template<typename number >
TimeIntegratorSchemes MeltPoolDG::TimeIntegration::TimeIntegratorBase< number >::get_integrator_type ( ) const
inline

Function that returns the time integration scheme of the time integrator object.

◆ perform_time_step()

template<typename number >
virtual void MeltPoolDG::TimeIntegration::TimeIntegratorBase< number >::perform_time_step ( number  current_time,
number  time_step,
SolutionHistory< VectorType > &  solution_history,
const std::function< void(number, number, VectorType &, const VectorType &)> &  pre_processing = {},
const std::function< void(number, number, VectorType &, const VectorType &)> &  post_processing = {} 
)
pure virtual

Perform the actual time integration for a single time step.

Parameters
current_timeCurrent time.
time_stepCurrent time step size.
solution_historySolution history object providing the current and all required previous solutions.
pre_processingA pre-processing step. The exact implementation depends on the specific time integrator.
post_processingA post-processing step. The exact implementation depends on the specific time integrator.

Implemented in MeltPoolDG::TimeIntegration::OneStepTheta< number, PDEOperator >, MeltPoolDG::TimeIntegration::BDFIntegrator< dim, number >, MeltPoolDG::TimeIntegration::LowStorageExplicitRungeKuttaIntegrator< number >, and MeltPoolDG::TimeIntegration::ImplicitExplicitIntegrator< dim, number >.

◆ reinit() [1/2]

◆ reinit() [2/2]

template<typename number >
virtual void MeltPoolDG::TimeIntegration::TimeIntegratorBase< number >::reinit ( const VectorType vector_template)
pure virtual

◆ required_solution_history_size()

template<typename number >
virtual unsigned int MeltPoolDG::TimeIntegration::TimeIntegratorBase< number >::required_solution_history_size ( ) const
pure virtual

This function returns the number of previous solutions required. Note that a corresponding solution history must be of the size previous_solutions_required+1 to account for the current solution.

Implemented in MeltPoolDG::TimeIntegration::BDFIntegrator< dim, number >, MeltPoolDG::TimeIntegration::LowStorageExplicitRungeKuttaIntegrator< number >, MeltPoolDG::TimeIntegration::ImplicitExplicitIntegrator< dim, number >, and MeltPoolDG::TimeIntegration::OneStepTheta< number, PDEOperator >.

◆ reset_monitoring_vector()

template<typename number >
void MeltPoolDG::TimeIntegration::TimeIntegratorBase< number >::reset_monitoring_vector ( )
inline

This function sets the monitoring vector to nullptr in the case monitoring is no longer needed.

◆ set_monitoring_vector()

template<typename number >
void MeltPoolDG::TimeIntegration::TimeIntegratorBase< number >::set_monitoring_vector ( VectorType monitoring_vector_in)
inline

This function stores a pointer to the passed vector which can then be used in the derived time integrator classes for providing additional data during the time integration. Which kind of data is provided to this vector depends on the individual time integrator class.

Member Data Documentation

◆ monitoring_vector

template<typename number >
VectorType* MeltPoolDG::TimeIntegration::TimeIntegratorBase< number >::monitoring_vector = nullptr
protected

◆ time_integrator_data

template<typename number >
const TimeIntegratorData<number> MeltPoolDG::TimeIntegration::TimeIntegratorBase< number >::time_integrator_data
protected

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