Plugins
|
Base class for LIMEX time integrator. More...
#include <limex_integrator.hpp>
Classes | |
class | ThreadData |
Contains all data for parallel execution of time steps. More... | |
Public Types | |
typedef TAlgebra | algebra_type |
typedef INonlinearTimeIntegrator< TDomain, TAlgebra > | base_type |
typedef IDomainDiscretization< algebra_type > | domain_discretization_type |
typedef ISubDiagErrorEst< vector_type > | error_estim_type |
typedef GridFunction< TDomain, TAlgebra > | grid_function_type |
typedef INonlinearTimeIntegrator< TDomain, TAlgebra > | itime_integrator_type |
typedef algebra_type::matrix_type | matrix_type |
typedef base_type::solver_type | solver_type |
typedef std::vector< SmartPtr< ThreadData > > | thread_vector_type |
typedef SimpleTimeIntegrator< TDomain, TAlgebra > | time_integrator_type |
typedef LinearImplicitEuler< algebra_type > | timestep_type |
typedef AitkenNevilleTimex< vector_type > | timex_type |
typedef algebra_type::vector_type | vector_type |
![]() | |
typedef AssembledOperator< TAlgebra > | assembled_operator_type |
typedef ITimeIntegrator< TDomain, TAlgebra > | base_type |
typedef IOperatorInverse< vector_type > | solver_type |
typedef base_type::vector_type | vector_type |
![]() | |
typedef TAlgebra | algebra_type |
typedef TDomain | domain_type |
typedef GridFunction< TDomain, TAlgebra > | grid_function_type |
typedef TAlgebra::matrix_type | matrix_type |
typedef TAlgebra::vector_type | vector_type |
![]() | |
typedef Y | codomain_function_type |
typedef X | domain_function_type |
![]() | |
typedef ITimeIntegratorStageObserver_end< TDomain, TAlgebra > | end_observer_type |
typedef ITimeIntegratorStageObserver_finalize< TDomain, TAlgebra > | finalize_observer_type |
typedef GridFunction< TDomain, TAlgebra > | grid_function_type |
typedef ITimeIntegratorStageObserver_init< TDomain, TAlgebra > | init_observer_type |
enum | observer_group_type |
typedef ITimeIntegratorStageObserver_postprocess< TDomain, TAlgebra > | postprocess_observer_type |
typedef ITimeIntegratorStageObserver_preprocess< TDomain, TAlgebra > | preprocess_observer_type |
typedef std::vector< SmartPtr< process_observer_type > > | process_observer_container_type |
typedef ITimeIntegratorObserver< TDomain, TAlgebra > | process_observer_type |
typedef ITimeIntegratorStageObserver_rewind< TDomain, TAlgebra > | rewind_observer_type |
typedef ITimeIntegratorStageObserver_start< TDomain, TAlgebra > | start_observer_type |
![]() | |
typedef TAlgebra | algebra_type |
typedef TAlgebra::matrix_type | matrix_type |
typedef TAlgebra::vector_type | vector_type |
![]() | |
typedef TVector | vector_type |
Protected Member Functions | |
int | apply_integrator_threads (number dtcurr, ConstSmartPtr< grid_function_type > u0, number t0, size_t nstages) |
(Tentatively) apply integrators | |
void | dispose_integrator_threads () |
Dispose integrator threads (w/ solutions) | |
size_t | find_optimal_solution (const std::vector< number > &eps, size_t ntest, size_t &qpred) |
void | init_gamma () |
aux: compute exponents gamma_k (for roots) | |
void | init_integrator_threads (ConstSmartPtr< grid_function_type > u) |
Initialize integrator threads (w/ solutions) | |
void | join_integrator_threads () |
e.g. wait for all threads to complete | |
number & | monitor (size_t k, size_t q) |
void | update_cost () |
Updating workloads A_i for computing T_ii. | |
void | update_integrator_threads (ConstSmartPtr< grid_function_type > ucommon, number t) |
Override thread-wise solutions with common solution. | |
void | update_monitor () |
convergence monitor | |
![]() | |
void | attach_to_group (int tGroup, SmartPtr< process_observer_type > obs) |
void | attach_to_group (SmartPtr< process_observer_type > obs) |
bool | notify_group (SmartPtr< grid_function_type > u, int step, number time, number dt) |
![]() | |
void | enter_debug_writer_section (const char *secDir) |
void | enter_debug_writer_section (std::string secDir) |
void | leave_debug_writer_section () |
void | write_debug (const matrix_type &mat, const char *filename) |
void | write_debug (const matrix_type &mat, std::string name) |
![]() | |
void | enter_vector_debug_writer_section (const char *secDir) |
void | enter_vector_debug_writer_section (std::string secDir) |
void | leave_vector_debug_writer_section () |
void | print_debugger_message (const char *msg) |
void | print_debugger_message (std::string msg) |
virtual void | write_debug (const vector_type &vec, std::string name) |
Additional Inherited Members | |
![]() | |
TIO_GROUP_END | |
TIO_GROUP_FINALIZE_STEP | |
TIO_GROUP_INIT_STEP | |
TIO_GROUP_POSTPROCESS_STEP | |
TIO_GROUP_PREPROCESS_STEP | |
TIO_GROUP_REWIND_STEP | |
TIO_GROUP_SIZE | |
TIO_GROUP_START | |
Base class for LIMEX time integrator.
typedef TAlgebra ug::LimexTimeIntegrator< TDomain, TAlgebra >::algebra_type |
typedef INonlinearTimeIntegrator<TDomain, TAlgebra> ug::LimexTimeIntegrator< TDomain, TAlgebra >::base_type |
typedef IDomainDiscretization<algebra_type> ug::LimexTimeIntegrator< TDomain, TAlgebra >::domain_discretization_type |
typedef ISubDiagErrorEst<vector_type> ug::LimexTimeIntegrator< TDomain, TAlgebra >::error_estim_type |
typedef GridFunction<TDomain, TAlgebra> ug::LimexTimeIntegrator< TDomain, TAlgebra >::grid_function_type |
typedef INonlinearTimeIntegrator<TDomain, TAlgebra> ug::LimexTimeIntegrator< TDomain, TAlgebra >::itime_integrator_type |
typedef algebra_type::matrix_type ug::LimexTimeIntegrator< TDomain, TAlgebra >::matrix_type |
typedef base_type::solver_type ug::LimexTimeIntegrator< TDomain, TAlgebra >::solver_type |
typedef std::vector<SmartPtr<ThreadData> > ug::LimexTimeIntegrator< TDomain, TAlgebra >::thread_vector_type |
typedef SimpleTimeIntegrator<TDomain, TAlgebra> ug::LimexTimeIntegrator< TDomain, TAlgebra >::time_integrator_type |
typedef LinearImplicitEuler<algebra_type> ug::LimexTimeIntegrator< TDomain, TAlgebra >::timestep_type |
typedef AitkenNevilleTimex<vector_type> ug::LimexTimeIntegrator< TDomain, TAlgebra >::timex_type |
typedef algebra_type::vector_type ug::LimexTimeIntegrator< TDomain, TAlgebra >::vector_type |
|
inline |
|
inline |
add an error estimator
References ug::LimexTimeIntegrator< TDomain, TAlgebra >::m_spErrorEstimator.
|
inline |
! TODO: remove this function!
References ug::LimexTimeIntegrator< TDomain, TAlgebra >::add_stage(), and UG_LOG.
|
inline |
|
inline |
add a new stage (at end of list)
References ug::LimexTimeIntegratorConfig::m_nstages, ug::LimexTimeIntegrator< TDomain, TAlgebra >::m_vSteps, ug::LimexTimeIntegrator< TDomain, TAlgebra >::m_vThreadData, make_sp(), UG_ASSERT, and SmartPtr< typename T, template< class TT > class FreePolicy >::valid().
Referenced by ug::LimexTimeIntegrator< TDomain, TAlgebra >::add_stage(), and ug::LimexTimeIntegrator< TDomain, TAlgebra >::add_stage_ext().
|
inline |
|
virtual |
Integrating from t0 -> t1.
< active number of stages <= kmax
Implements ug::ITimeIntegrator< TDomain, TAlgebra >.
References ug::AitkenNevilleTimex< TVector >::apply(), SmartPtr< typename T, template< class TT > class FreePolicy >::get(), ConstSmartPtr< typename T, template< class TT > class FreePolicy >::get(), ug::AitkenNevilleTimex< TVector >::get_error_estimates(), ug::AitkenNevilleTimex< TVector >::get_solution(), ug::ITimeIntegrator< TDomain, TAlgebra >::get_time_step(), ug::LIB_LIMEX, ug::Stopwatch::ms(), PROFILE_FUNC_GROUP, s, ug::AitkenNevilleTimex< TVector >::set_error_estimate(), ug::AitkenNevilleTimex< TVector >::set_solution(), SPNULL, ug::Stopwatch::start(), UG_ASSERT, UG_COND_THROW, UG_DLOG, UG_LOG, UG_LOGN, and SmartPtr< typename T, template< class TT > class FreePolicy >::valid().
|
protected |
(Tentatively) apply integrators
References ug::SimpleTimeIntegrator< TDomain, TAlgebra >::apply(), ug::SimpleTimeIntegrator< TDomain, TAlgebra >::get_consistency_error(), ug::UGError::get_msg(), ug::MyPrintError(), PROFILE_FUNC_GROUP, ug::SimpleTimeIntegrator< TDomain, TAlgebra >::set_banach_space(), ug::DebugWritingObject< typename TAlgebra >::set_debug(), ug::SimpleTimeIntegrator< TDomain, TAlgebra >::set_derivative(), ug::INonlinearTimeIntegrator< TDomain, TAlgebra >::set_dt_max(), ug::INonlinearTimeIntegrator< TDomain, TAlgebra >::set_dt_min(), ug::INonlinearTimeIntegrator< TDomain, TAlgebra >::set_reduction_factor(), ug::INonlinearTimeIntegrator< TDomain, TAlgebra >::set_solver(), ug::ITimeIntegrator< TDomain, TAlgebra >::set_time_step(), UG_ASSERT, UG_LOG, and UG_LOGN.
|
inline |
References ug::LimexTimeIntegratorConfig::config_string().
|
inline |
Select approximate Newton (default)
References ug::LimexTimeIntegratorConfig::m_useCachedMatrices.
|
protected |
Dispose integrator threads (w/ solutions)
Create private solutions for each thread
References PROFILE_FUNC_GROUP, and SPNULL.
|
inline |
Select classic LIMEX.
References ug::LimexTimeIntegratorConfig::m_useCachedMatrices.
|
protected |
References UG_LOG.
|
inline |
|
inline |
|
inline |
getter for time derivative info (optional for setting $\Gamma$)
References ug::LimexTimeIntegrator< TDomain, TAlgebra >::m_spDtSol.
|
inline |
References ug::LimexTimeIntegrator< TDomain, TAlgebra >::m_vThreadData, and UG_ASSERT.
|
inline |
|
inline |
status for time derivative info (optional for setting $\Gamma$)
References ug::LimexTimeIntegrator< TDomain, TAlgebra >::m_spDtSol, and SPNULL.
|
inlineprotected |
aux: compute exponents gamma_k (for roots)
References ug::LimexTimeIntegrator< TDomain, TAlgebra >::m_gamma, and ug::LimexTimeIntegratorConfig::m_nstages.
Referenced by ug::LimexTimeIntegrator< TDomain, TAlgebra >::LimexTimeIntegrator().
|
protected |
Initialize integrator threads (w/ solutions)
Create private solutions for each thread
References PROFILE_FUNC_GROUP.
|
inline |
interrupt execution of apply() by external call via observer
References ug::LimexTimeIntegrator< TDomain, TAlgebra >::m_bInterrupt.
|
protected |
e.g. wait for all threads to complete
|
inlineprotected |
|
inline |
|
inline |
|
inline |
References ug::LimexTimeIntegratorConfig::m_conservative.
|
inline |
forward debug info to time integrators
References ug::LimexTimeIntegrator< TDomain, TAlgebra >::m_vThreadData, and UG_LOG.
|
inline |
References ug::LimexTimeIntegratorConfig::m_max_reductions.
|
inline |
set banach space (e.g. for computing consistency error)
References ug::LimexTimeIntegrator< TDomain, TAlgebra >::m_spBanachSpace, and UG_LOG.
|
inline |
|
inline |
References ug::LimexTimeIntegratorConfig::m_sigmaReduction.
|
inline |
References ug::LimexTimeIntegratorConfig::m_rhoSafety.
|
inline |
setter for time derivative info (optional for setting $\Gamma$)
References ug::LimexTimeIntegrator< TDomain, TAlgebra >::m_spDtSol.
|
inline |
tolerance
References ug::LimexTimeIntegratorConfig::m_tol.
|
inlineprotected |
Updating workloads A_i for computing T_ii.
References ug::LimexTimeIntegrator< TDomain, TAlgebra >::m_costA, ug::LimexTimeIntegratorConfig::m_nstages, ug::LimexTimeIntegrator< TDomain, TAlgebra >::m_spCostStrategy, and ug::LimexTimeIntegrator< TDomain, TAlgebra >::m_vSteps.
|
protected |
Override thread-wise solutions with common solution.
References UG_ASSERT.
|
inlineprotected |
convergence monitor
References ug::LimexTimeIntegrator< TDomain, TAlgebra >::m_costA, ug::LimexTimeIntegrator< TDomain, TAlgebra >::m_gamma, ug::LimexTimeIntegratorConfig::m_nstages, ug::LimexTimeIntegratorConfig::m_rhoSafety, ug::LimexTimeIntegratorConfig::m_tol, ug::LimexTimeIntegrator< TDomain, TAlgebra >::monitor(), UG_ASSERT, and UG_LOG.
|
protected |
Referenced by ug::LimexTimeIntegrator< TDomain, TAlgebra >::interrupt().
|
protected |
Consistency error.
|
protected |
Cost A_i (for completing stage i)
Referenced by ug::LimexTimeIntegrator< TDomain, TAlgebra >::get_cost(), ug::LimexTimeIntegrator< TDomain, TAlgebra >::update_cost(), and ug::LimexTimeIntegrator< TDomain, TAlgebra >::update_monitor().
|
protected |
|
protected |
|
protected |
Current counter.
|
protected |
Convergence monitor \alpha.
Referenced by ug::LimexTimeIntegrator< TDomain, TAlgebra >::monitor().
|
protected |
history of reductions
|
protected |
metric space
Referenced by ug::LimexTimeIntegrator< TDomain, TAlgebra >::set_space().
|
protected |
|
protected |
|
protected |
|
protected |
generating sequence for extrapolation
Referenced by ug::LimexTimeIntegrator< TDomain, TAlgebra >::add_stage_base(), ug::LimexTimeIntegrator< TDomain, TAlgebra >::LimexTimeIntegrator(), and ug::LimexTimeIntegrator< TDomain, TAlgebra >::update_cost().
|
protected |
vector with thread information
Referenced by ug::LimexTimeIntegrator< TDomain, TAlgebra >::add_stage_base(), ug::LimexTimeIntegrator< TDomain, TAlgebra >::get_time_stepper(), ug::LimexTimeIntegrator< TDomain, TAlgebra >::LimexTimeIntegrator(), and ug::LimexTimeIntegrator< TDomain, TAlgebra >::set_debug_for_timestepper().
|
protected |
Referenced by ug::LimexTimeIntegrator< TDomain, TAlgebra >::get_workload().