33 #ifndef TIME_INTEGRATOR_HPP_
34 #define TIME_INTEGRATOR_HPP_
36 #if __cplusplus >= 201103L
37 #define OVERRIDE override
69 #include "../limex_tools.h"
75 template<
class TDomain,
class TAlgebra>
78 public ITimeIntegratorStageObserver_start<TDomain, TAlgebra>,
79 public ITimeIntegratorStageObserver_finalize<TDomain, TAlgebra>,
80 public ITimeIntegratorStageObserver_end<TDomain, TAlgebra>
142 if (nextPlotTimePt > time)
149 while (nextPlotTimePt <= time)
151 number alpha = (time - nextPlotTimePt) / dt;
201 template<
class TDomain,
class TAlgebra>
223 SaveVectorForConnectionViewer<grid_function_type>(*uNew,
m_filename.c_str());
235 template <
typename TData,
typename TDataIn1,
typename TDataIn2>
241 virtual ~LuaFunction2() {};
249 void set_lua_callback(
const char* luaCallback,
size_t numArgs);
252 virtual void operator() (TData& out,
int numArgs1,
int numArgs2,...);
256 std::string m_cbValueName;
269 template <
typename TData,
typename TDataIn1,
typename TDataIn2>
270 LuaFunction2<TData,TDataIn1,TDataIn2>::LuaFunction2() : m_numArgs(0)
273 m_cbValueRef = LUA_NOREF;
276 template <
typename TData,
typename TDataIn1,
typename TDataIn2>
277 void LuaFunction2<TData,TDataIn1,TDataIn2>::set_lua_callback(
const char* luaCallback,
size_t numArgs)
280 m_cbValueName = luaCallback;
283 lua_getglobal(m_L, m_cbValueName.c_str());
286 if(lua_isnil(m_L, -1)){
287 UG_THROW(
"LuaFunction::set_lua_callback(...):"
288 "Specified lua callback does not exist: " << m_cbValueName);
292 m_cbValueRef = luaL_ref(m_L, LUA_REGISTRYINDEX);
380 template<
class TDomain,
class TAlgebra>
413 Interpolate<grid_function_type> (
m_spReference, ref,
"c", time);
414 m_sp_vtk->print(
"MyReference", *ref, step, time);
432 template<
class TDomain,
class TAlgebra>
443 IntegralSpecs(
const char* cmp,
const char* subsets,
int quadOrder,
const char *idString) :
463 for (
typename std::vector<IntegralSpecs>::iterator it =
m_vIntegralData.begin();
466 number value=
Integral(uNew, it->m_cmp.c_str(), it->m_subsets.c_str(), it->m_quadOrder);
467 UG_LOG(
"Integral(\t"<< it->m_idString <<
"\t"<< time <<
"\t)=\t" << value << std::endl);
492 template<
class TDomain,
class TAlgebra>
494 :
public IOperator< GridFunction<TDomain, TAlgebra> >,
552 {
UG_THROW(
"Please init with grid function!"); }
589 template<
class TDomain,
class TAlgebra>
618 template<
class TAlgebra>
635 template<
class TDomain,
class TAlgebra>
663 template<
typename TDomain,
typename TAlgebra>
668 UG_COND_THROW(!base_type::m_spLinearSolver.valid(),
"Linear solver invalid");
681 m_spSolTimeSeries->clear();
682 m_spSolTimeSeries->push(uold, t0);
688 if(!base_type::m_bNoLogOut)
689 UG_LOG(
"+++ Integrating: ["<< t0 <<
", "<< t1 <<
"]\n");
692 number dt_assembled = -1.0;
695 number currdt = base_type::m_dt;
697 while((t < t1) && (t1-t > base_type::m_precisionBound))
700 if(!base_type::m_bNoLogOut)
701 {
UG_LOG(
"+++ Timestep +++" << step <<
"\n"); }
704 number dt = std::min(currdt, t1-t);
708 if (fabs(dt-dt_assembled) > base_type::m_precisionBound)
711 if(!base_type::m_bNoLogOut)
712 UG_LOG(
"+++ Reassemble (t=" << t <<
", dt=" << dt <<
")\n");
715 (base_type::m_spLinearSolver)->init(spAssOp, *u1);
725 if (base_type::m_spLinearSolver->apply(*u1, *b))
731 VecAssign(*tmp, *u1.template cast_dynamic<typename base_type::vector_type>());
732 m_spSolTimeSeries->push_discard_oldest(tmp, t);
734 this->notify_finalize_step(u1, step++, t+dt, dt);
744 this->notify_end(u1, step, t1, currdt);
751 template<
class TDomain,
class TAlgebra>
786 template<
typename TDomain,
typename TAlgebra>
790 UG_COND_THROW(!base_type::m_spLinearSolver.valid(),
"Linear solver invalid");
803 m_spSolTimeSeries->push(uold, t0);
809 int numSteps = round((t1-t0) / base_type::m_dt);
810 number currdt = (t1-t0) / numSteps;
815 if(!base_type::m_bNoLogOut)
817 UG_LOG(
"+++ Integrating: [\t"<< t0 <<
"\t, \t"<< t1 <<
"\t] with dt=\t" << currdt <<
"("<< numSteps<<
" iters)" << std::endl);
821 for(
int step = 1; step<=numSteps; ++step)
827 if(!base_type::m_bNoLogOut)
829 UG_LOG(
"+++ Const timestep +++" << step<<
"(t=" << t <<
", dt=" << dt <<
")"<< std::endl);
831 this->notify_init_step(u1, step, t, dt);
838 if(!base_type::m_bNoLogOut)
UG_LOG(
"+++ Assemble (t=" << t <<
", dt=" << dt <<
")" << std::endl);
840 spAssOp=
make_sp(
new typename base_type::assembled_operator_type(tdisc_dep_type::m_spTimeDisc, gl));
842 (base_type::m_spLinearSolver)->init(spAssOp, *u1);
852 if (base_type::m_spLinearSolver->apply(*u1, *b))
857 VecAssign(*tmp, *u1.template cast_dynamic<typename base_type::vector_type>());
858 m_spSolTimeSeries->push_discard_oldest(tmp, t);
859 this->notify_finalize_step(u1, step, t, dt);
863 UG_THROW(
"ConstStepLinearTimeIntegrator::apply failed!!!");
864 this->notify_rewind_step(u1, step, t+dt, dt);
869 this->notify_end(u1, numSteps, t1, currdt);
877 template<
class TDomain,
class TAlgebra>
916 template<
typename TDomain,
typename TAlgebra>
924 template<
typename TDomain,
typename TAlgebra>
946 m_spSolTimeSeries->push(uold, t0);
950 m_spSolTimeSeries2->push(u2old, t0);
953 if (m_dtmin <= 0.0) { m_dtmin = (t1 - t0)/1.0e+5; }
954 if (m_dtmax <= 0.0) { m_dtmax = (t1 - t0)/10.0; }
957 const size_t tsteps[2] = {1,2};
958 std::vector<size_t> vsteps (tsteps, tsteps+2);
962 if(!base_type::m_bNoLogOut)
963 UG_LOG(
"+++ Integrating: ["<< t0 <<
", "<< t1 <<
"]\n");
968 number dt = base_type::m_dt;
969 while((t < t1) && (t1-t > base_type::m_precisionBound))
972 bool bSuccess =
false;
977 if(!base_type::m_bNoLogOut)
978 UG_LOG(
"Step size below minimum")
980 dt = std::min(dt, t1-t);
983 if(!base_type::m_bNoLogOut)
984 UG_LOG(
"+++ Timestep: " << ++step <<
"\n");
988 base_type::m_spLinearSolver->init(spAssOp, *u1);
989 base_type::m_spLinearSolver->apply(*u1, *b);
993 if(!base_type::m_bNoLogOut)
994 UG_LOG(
"+++ Control: " << step <<
"\n");
998 base_type::m_spLinearSolver->init(spAssOp, *u2);
999 base_type::m_spLinearSolver->apply(*u2, *b);
1003 (*tmp2)=*(u2.template cast_static<typename base_type::vector_type>());
1004 m_spSolTimeSeries2->push_discard_oldest(tmp2, t + 0.5*dt);
1009 base_type::m_spLinearSolver->init(spAssOp, *u2);
1010 base_type::m_spLinearSolver->apply(*u2, *b);
1019 number lambda = std::pow(0.8* m_tol/eps, 0.5);
1022 dtEst = std::min(dtEst, 1.5*dt);
1023 dtEst = std::min(dtEst, m_dtmax);
1029 if(!base_type::m_bNoLogOut)
1030 UG_LOG(
"ACCEPTING solution, dtnew=" << dt);
1037 if(!base_type::m_bNoLogOut)
1038 UG_LOG(
"DISCARDING solution, dtnew=" << dt);
1041 VecAssign(*u1.template cast_dynamic<typename base_type::vector_type>(), *uold);
1046 m_spSolTimeSeries2->push_discard_oldest(tmp, t);
1059 m_spSolTimeSeries->push_discard_oldest(tmp, t);
1094 template<
class TDomain,
class TAlgebra>
1143 template<
class TDomain,
class TAlgebra>
1159 double tcurr = (tpoint ==
m_timePoints.end()) ? t1 : (*tpoint);
1165 this->notify_finalize_step(u1, dstep++, tcurr, tcurr-t0);
1171 double tnext = (tpoint ==
m_timePoints.end()) ? t1 : (*tpoint);
1176 this->notify_finalize_step(u1, dstep++, tnext, tnext-tcurr);
1180 this->notify_end(u1, dstep, t1, 0.0);
Definition: time_extrapolation.h:984
void apply(size_t nstages, bool with_error=true)
best error estimate
Definition: time_extrapolation.h:1063
void set_solution(SmartPtr< vector_type > soli, int i)
set solution (for stage i)
Definition: time_extrapolation.h:1014
const std::vector< number > & get_error_estimates() const
Definition: time_extrapolation.h:1028
Sample class for integration observer: Output to VTK.
Definition: time_integrator.hpp:204
ConnectionViewerOutputObserver(const char *filename)
Definition: time_integrator.hpp:209
std::string m_filename
Definition: time_integrator.hpp:228
ITimeIntegratorObserver< TDomain, TAlgebra > base_type
Definition: time_integrator.hpp:206
virtual ~ConnectionViewerOutputObserver()
Definition: time_integrator.hpp:215
number m_outputTime
Definition: time_integrator.hpp:229
ConnectionViewerOutputObserver(const char *filename, number t_out)
Definition: time_integrator.hpp:212
GridFunction< TDomain, TAlgebra > grid_function_type
Definition: time_integrator.hpp:207
bool step_process(SmartPtr< grid_function_type > uNew, int step, number time, number dt) OVERRIDE
Definition: time_integrator.hpp:218
Integrate over a given time interval (for a linear problem)
Definition: time_integrator.hpp:755
ConstStepLinearTimeIntegrator(SmartPtr< time_disc_type > tDisc)
Definition: time_integrator.hpp:773
base_type::linear_solver_type linear_solver_type
Definition: time_integrator.hpp:761
base_type::grid_function_type grid_function_type
Definition: time_integrator.hpp:762
void set_num_steps(int steps)
Definition: time_integrator.hpp:779
VectorTimeSeries< typename base_type::vector_type > vector_time_series_type
Definition: time_integrator.hpp:763
bool apply(SmartPtr< grid_function_type > u1, number t1, ConstSmartPtr< grid_function_type > u0, number t0)
Definition: time_integrator.hpp:787
int m_numSteps
Definition: time_integrator.hpp:769
ConstStepLinearTimeIntegrator(SmartPtr< time_disc_type > tDisc, SmartPtr< typename base_type::linear_solver_type > lSolver)
Definition: time_integrator.hpp:776
ILinearTimeIntegrator< TDomain, TAlgebra > base_type
Definition: time_integrator.hpp:759
ITimeDiscDependentObject< TAlgebra > tdisc_dep_type
Definition: time_integrator.hpp:757
ITimeDiscretization< TAlgebra > time_disc_type
Definition: time_integrator.hpp:760
This class integrates (t0, t1] with stops at intermediate points tk.
Definition: time_integrator.hpp:1146
DiscontinuityIntegrator(SmartPtr< base_type > baseIntegrator)
Definition: time_integrator.hpp:1152
void insert_points(std::vector< double > points)
Definition: time_integrator.hpp:1184
SmartPtr< base_type > m_wrappedIntegrator
Definition: time_integrator.hpp:1189
base_type::grid_function_type grid_function_type
Definition: time_integrator.hpp:1150
INonlinearTimeIntegrator< TDomain, TAlgebra > base_type
Definition: time_integrator.hpp:1149
bool apply(SmartPtr< grid_function_type > u1, number t1, ConstSmartPtr< grid_function_type > u0, number t0)
Definition: time_integrator.hpp:1155
std::vector< double > m_timePoints
Definition: time_integrator.hpp:1190
void assemble_linear(matrix_type &A, vector_type &b)
void assemble_rhs(vector_type &b)
integration of linear systems
Definition: time_integrator.hpp:591
ILinearOperatorInverse< vector_type > linear_solver_type
Definition: time_integrator.hpp:596
void set_linear_solver(SmartPtr< linear_solver_type > lSolver)
Definition: time_integrator.hpp:608
AssembledLinearOperator< TAlgebra > assembled_operator_type
Definition: time_integrator.hpp:597
ILinearTimeIntegrator()
Definition: time_integrator.hpp:600
SmartPtr< linear_solver_type > m_spLinearSolver
Definition: time_integrator.hpp:612
ITimeIntegrator< TDomain, TAlgebra > base_type
Definition: time_integrator.hpp:594
ILinearTimeIntegrator(SmartPtr< linear_solver_type > lSolver)
Definition: time_integrator.hpp:603
base_type::vector_type vector_type
Definition: time_integrator.hpp:595
integration of non-linear systems (with bounds on dt)
Definition: time_integrator.hpp:1097
double get_reduction_factor()
Definition: time_integrator.hpp:1123
AssembledOperator< TAlgebra > assembled_operator_type
Definition: time_integrator.hpp:1102
double get_dt_max()
Definition: time_integrator.hpp:1120
void set_dt_min(double min)
Definition: time_integrator.hpp:1116
SmartPtr< solver_type > get_solver()
Definition: time_integrator.hpp:1113
base_type::vector_type vector_type
Definition: time_integrator.hpp:1100
INonlinearTimeIntegrator()
Definition: time_integrator.hpp:1104
ITimeIntegrator< TDomain, TAlgebra > base_type
Definition: time_integrator.hpp:1099
TimeStepBounds m_dtBounds
Definition: time_integrator.hpp:1130
IOperatorInverse< vector_type > solver_type
Definition: time_integrator.hpp:1101
SmartPtr< solver_type > m_spSolver
Definition: time_integrator.hpp:1129
ConstSmartPtr< solver_type > get_solver() const
Definition: time_integrator.hpp:1110
double get_increase_factor()
Definition: time_integrator.hpp:1126
void set_increase_factor(double inc)
Definition: time_integrator.hpp:1125
void set_solver(SmartPtr< solver_type > solver)
Definition: time_integrator.hpp:1107
void set_reduction_factor(double dec)
Definition: time_integrator.hpp:1122
double get_dt_min()
Definition: time_integrator.hpp:1117
void set_dt_max(double max)
Definition: time_integrator.hpp:1119
ITimeDiscDependentObject.
Definition: time_integrator.hpp:620
SmartPtr< time_disc_type > m_spTimeDisc
Definition: time_integrator.hpp:630
ITimeDiscretization< TAlgebra > time_disc_type
Definition: time_integrator.hpp:622
ITimeDiscDependentObject(SmartPtr< time_disc_type > spTimeDisc)
Definition: time_integrator.hpp:624
SmartPtr< time_disc_type > get_time_disc()
Definition: time_integrator.hpp:628
virtual void prepare_step(SmartPtr< VectorTimeSeries< vector_type > > prevSol, number dt)=0
Integrates over a given time interval [a,b] with step size dt.
Definition: time_integrator.hpp:496
TDomain domain_type
Definition: time_integrator.hpp:504
void set_precision_bound(double precisionBound)
Definition: time_integrator.hpp:576
void prepare(grid_function_type &u)
prepares functions for application
Definition: time_integrator.hpp:560
void init()
init operator
Definition: time_integrator.hpp:551
double m_lower_tim
Definition: time_integrator.hpp:509
virtual void init(grid_function_type const &u)
init operator depending on a function u
Definition: time_integrator.hpp:538
GridFunction< TDomain, TAlgebra > grid_function_type
Definition: time_integrator.hpp:505
void set_no_log_out(bool bNoLogOut)
Definition: time_integrator.hpp:579
TAlgebra::matrix_type matrix_type
Definition: time_integrator.hpp:501
double m_dt
Definition: time_integrator.hpp:508
virtual ~ITimeIntegrator()
virtual destructor
Definition: time_integrator.hpp:524
bool m_bNoLogOut
Definition: time_integrator.hpp:514
void set_time_step(double dt)
Set initial time step.
Definition: time_integrator.hpp:570
double m_upper_tim
Definition: time_integrator.hpp:510
virtual bool apply(SmartPtr< grid_function_type > u1, number t1, ConstSmartPtr< grid_function_type > u0, number t0)=0
TAlgebra::vector_type vector_type
Definition: time_integrator.hpp:500
double get_time_step()
Definition: time_integrator.hpp:573
TAlgebra algebra_type
Definition: time_integrator.hpp:499
void apply(grid_function_type &u1, const grid_function_type &u0)
Apply operator.
Definition: time_integrator.hpp:564
double m_precisionBound
Definition: time_integrator.hpp:512
ITimeIntegrator()
Definition: time_integrator.hpp:519
Integration observer: Output using Lua callback.
Definition: time_integrator.hpp:435
GridFunction< TDomain, TAlgebra > grid_function_type
Definition: time_integrator.hpp:438
VTKOutput< TDomain::dim > vtk_type
Definition: time_integrator.hpp:439
ITimeIntegratorObserver< TDomain, TAlgebra > base_type
Definition: time_integrator.hpp:437
void add_integral_specs(const char *cmp, const char *subsets, int quadOrder, const char *idString)
Definition: time_integrator.hpp:476
virtual ~IntegrationOutputObserver()
Definition: time_integrator.hpp:456
bool step_process(SmartPtr< grid_function_type > uNew, int step, number time, number dt) OVERRIDE
Definition: time_integrator.hpp:460
IntegrationOutputObserver()
Definition: time_integrator.hpp:453
std::vector< IntegralSpecs > m_vIntegralData
Definition: time_integrator.hpp:483
Integrate over a given time interval (for a linear problem)
Definition: time_integrator.hpp:640
bool apply(SmartPtr< grid_function_type > u1, number t1, ConstSmartPtr< grid_function_type > u0, number t0)
Definition: time_integrator.hpp:664
ITimeDiscretization< TAlgebra > time_disc_type
Definition: time_integrator.hpp:647
ITimeDiscDependentObject< TAlgebra > tdisc_dep_type
Definition: time_integrator.hpp:644
base_type::grid_function_type grid_function_type
Definition: time_integrator.hpp:648
LinearTimeIntegrator(SmartPtr< time_disc_type > tDisc, SmartPtr< typename base_type::linear_solver_type > lSolver)
Definition: time_integrator.hpp:655
VectorTimeSeries< typename base_type::vector_type > vector_time_series_type
Definition: time_integrator.hpp:649
ILinearTimeIntegrator< TDomain, TAlgebra > base_type
Definition: time_integrator.hpp:646
LinearTimeIntegrator(SmartPtr< time_disc_type > tDisc)
Definition: time_integrator.hpp:652
Definition: time_integrator.hpp:383
SmartPtr< UserData< number, grid_function_type::dim > > m_spReference
Definition: time_integrator.hpp:424
PlotRefOutputObserver(SmartPtr< UserData< number, grid_function_type::dim > > spExactSol)
Definition: time_integrator.hpp:389
virtual ~PlotRefOutputObserver()
Definition: time_integrator.hpp:403
GridFunction< TDomain, TAlgebra > grid_function_type
Definition: time_integrator.hpp:386
VTKOutput< TDomain::dim > vtk_type
Definition: time_integrator.hpp:387
ITimeIntegratorObserver< TDomain, TAlgebra > base_type
Definition: time_integrator.hpp:385
SmartPtr< vtk_type > m_sp_vtk
Definition: time_integrator.hpp:425
bool step_process(SmartPtr< grid_function_type > uNew, int step, number time, number dt) OVERRIDE
Definition: time_integrator.hpp:407
Integrate over a given time interval (for a linear problem)
Definition: time_integrator.hpp:881
ITimeDiscDependentObject< TAlgebra > tdisc_dep_type
Definition: time_integrator.hpp:883
VectorTimeSeries< typename base_type::vector_type > vector_time_series_type
Definition: time_integrator.hpp:888
TimeIntegratorLinearAdaptive(SmartPtr< time_disc_type > tDisc1, SmartPtr< time_disc_type > tDisc2)
Definition: time_integrator.hpp:901
double m_tol
Definition: time_integrator.hpp:897
void set_time_step_max(number dt)
Definition: time_integrator.hpp:912
ITimeDiscretization< TAlgebra > time_disc_type
Definition: time_integrator.hpp:886
double m_dtmax
Definition: time_integrator.hpp:897
bool apply(SmartPtr< grid_function_type > u1, number t1, ConstSmartPtr< grid_function_type > u0, number t0)
Definition: time_integrator.hpp:925
void set_tol(double tol)
Definition: time_integrator.hpp:910
void set_time_step_min(number dt)
Definition: time_integrator.hpp:911
double m_dtmin
Definition: time_integrator.hpp:897
SmartPtr< time_disc_type > m_spTimeDisc2
Definition: time_integrator.hpp:895
ILinearTimeIntegrator< TDomain, TAlgebra > base_type
Definition: time_integrator.hpp:885
base_type::grid_function_type grid_function_type
Definition: time_integrator.hpp:887
Definition: time_integrator.hpp:1067
void set_increase_factor(double inc)
Definition: time_integrator.hpp:1082
double get_reduction_factor()
Definition: time_integrator.hpp:1080
TimeStepBounds()
Definition: time_integrator.hpp:1069
void set_dt_min(double min)
Definition: time_integrator.hpp:1073
void set_dt_max(double max)
Definition: time_integrator.hpp:1076
double m_incFac
Definition: time_integrator.hpp:1090
double m_redFac
Definition: time_integrator.hpp:1090
double m_dtMin
Definition: time_integrator.hpp:1089
double get_dt_max()
Definition: time_integrator.hpp:1077
void rescale(double alpha)
Definition: time_integrator.hpp:1085
void set_reduction_factor(double dec)
Definition: time_integrator.hpp:1079
double m_dtMax
Definition: time_integrator.hpp:1089
double get_increase_factor()
Definition: time_integrator.hpp:1083
double get_dt_min()
Definition: time_integrator.hpp:1074
Sample class for integration observer: Output to VTK.
Definition: time_integrator.hpp:81
bool step_process(SmartPtr< grid_function_type > uNew, int step, number time, number dt) OVERRIDE
Definition: time_integrator.hpp:106
virtual ~VTKOutputObserver()
Definition: time_integrator.hpp:96
SmartPtr< vtk_type > m_sp_vtk
Definition: time_integrator.hpp:190
GridFunction< TDomain, TAlgebra > grid_function_type
Definition: time_integrator.hpp:84
void set_output_scales(const std::vector< number > &vScales)
Definition: time_integrator.hpp:100
SmartPtr< grid_function_type > m_uOld
Definition: time_integrator.hpp:191
number m_startTime
Definition: time_integrator.hpp:193
VTKOutputObserver(const char *filename, SmartPtr< vtk_type > vtk, number plotStep)
Definition: time_integrator.hpp:93
VTKOutputObserver(const char *filename, SmartPtr< vtk_type > vtk)
Definition: time_integrator.hpp:90
VTKOutputObserver()
Definition: time_integrator.hpp:87
bool end_action(SmartPtr< grid_function_type > u, int step, number time, number dt) OVERRIDE
Definition: time_integrator.hpp:166
std::vector< number > m_vOutputScales
Definition: time_integrator.hpp:195
bool start_action(SmartPtr< grid_function_type > u, int step, number time, number dt) OVERRIDE
Definition: time_integrator.hpp:112
number m_plotStep
Definition: time_integrator.hpp:194
bool finalize_action(SmartPtr< grid_function_type > uNew, int step, number time, number dt) OVERRIDE
Definition: time_integrator.hpp:126
std::string m_filename
Definition: time_integrator.hpp:192
void writeToFile(SmartPtr< grid_function_type > u, int step, number time)
Definition: time_integrator.hpp:177
ITimeIntegratorObserver< TDomain, TAlgebra > base_type
Definition: time_integrator.hpp:83
VTKOutput< TDomain::dim > vtk_type
Definition: time_integrator.hpp:85
ParallelMatrix< SparseMatrix< double > > matrix_type
ParallelVector< Vector< double > > vector_type
void VecAssign(GPUVector< T > &dest, const GPUVector< T > &v1)
value_type & operator()(std::size_t row, std::size_t col)
const NullSmartPtr SPNULL
#define UG_COND_THROW(cond, msg)
struct lua_State lua_State
lua_State * GetDefaultLuaState()
number L2Error(SmartPtr< TGridFunction > spGridFct1, const char *cmp1, SmartPtr< TGridFunction > spGridFct2, const char *cmp2, int quadOrder)
number Integral(number val, SmartPtr< TGridFunction > spGridFct)
void VecScaleAdd(double &dest, double alpha1, const double &v1, double alpha2, const double &v2)
SmartPtr< T, FreePolicy > make_sp(T *inst)
Definition: time_integrator.hpp:442
int m_quadOrder
Definition: time_integrator.hpp:448
std::string m_subsets
Definition: time_integrator.hpp:447
std::string m_cmp
Definition: time_integrator.hpp:445
std::string m_idString
Definition: time_integrator.hpp:449
IntegralSpecs(const char *cmp, const char *subsets, int quadOrder, const char *idString)
Definition: time_integrator.hpp:443
#define OVERRIDE
Definition: time_integrator.hpp:39