35#ifndef TIME_EXTRAPOLATION_H_
36#define TIME_EXTRAPOLATION_H_
83 inline void VecScaleAddWithNormRel(
double &vUpdate,
double alpha2,
const double &vFine,
double alpha3,
const double &vCoarse,
double &norm)
85 const double update = alpha2*vFine + alpha3*vCoarse;
86 vUpdate = vUpdate + update;
87 norm = std::max(norm, 0.5*fabs(update)/(1.0+fabs(vFine)+fabs(vCoarse)));
83 inline void VecScaleAddWithNormRel(
double &vUpdate,
double alpha2,
const double &vFine,
double alpha3,
const double &vCoarse,
double &norm) {
…}
91 template<
typename vector_t,
template <
class T>
class TE_VEC>
92 inline void VecScaleAddWithNormRel(TE_VEC<vector_t> &vUpdate,
double alpha2,
const TE_VEC<vector_t> &vFine,
double alpha3,
const TE_VEC<vector_t> &vCoarse,
double &norm)
94 for(
size_t i=0; i<vUpdate.size(); i++)
92 inline void VecScaleAddWithNormRel(TE_VEC<vector_t> &vUpdate,
double alpha2,
const TE_VEC<vector_t> &vFine,
double alpha3,
const TE_VEC<vector_t> &vCoarse,
double &norm) {
…}
99 inline void VecScaleAddWithNormInf(
double &vUpdate,
double alpha2,
const double &vFine,
double alpha3,
const double &vCoarse,
double &norm)
101 const double update = alpha2*vFine + alpha3*vCoarse;
102 vUpdate = vUpdate + update;
103 norm = std::max(norm, fabs(update));
99 inline void VecScaleAddWithNormInf(
double &vUpdate,
double alpha2,
const double &vFine,
double alpha3,
const double &vCoarse,
double &norm) {
…}
107 template<
typename vector_t,
template <
class T>
class TE_VEC>
108 inline void VecScaleAddWithNormInf(TE_VEC<vector_t> &vUpdate,
double alpha2,
const TE_VEC<vector_t> &vFine,
double alpha3,
const TE_VEC<vector_t> &vCoarse,
double &norm,
const int delta=1,
const int offset=0)
111 for(
size_t i=offset; i<vUpdate.size(); i+=delta)
108 inline void VecScaleAddWithNormInf(TE_VEC<vector_t> &vUpdate,
double alpha2,
const TE_VEC<vector_t> &vFine,
double alpha3,
const TE_VEC<vector_t> &vCoarse,
double &norm,
const int delta=1,
const int offset=0) {
…}
119 inline void VecScaleAddWithNorm2(
double &vUpdate,
double alpha2,
const double &vFine,
double alpha3,
const double &vCoarse,
double &norm)
121 const double update = alpha2*vFine + alpha3*vCoarse;
122 vUpdate = vUpdate+ update;
123 norm += update*update;
119 inline void VecScaleAddWithNorm2(
double &vUpdate,
double alpha2,
const double &vFine,
double alpha3,
const double &vCoarse,
double &norm) {
…}
127 template<
typename vector_t,
template <
class T>
class TE_VEC>
128 inline void VecScaleAddWithNorm2(TE_VEC<vector_t> &vUpdate,
double alpha2,
const TE_VEC<vector_t> &vFine,
double alpha3,
const TE_VEC<vector_t> &vCoarse,
double &norm,
const int delta=1,
const int offset=0)
130 for(
size_t i=offset; i<vUpdate.size(); i+=delta)
128 inline void VecScaleAddWithNorm2(TE_VEC<vector_t> &vUpdate,
double alpha2,
const TE_VEC<vector_t> &vFine,
double alpha3,
const TE_VEC<vector_t> &vCoarse,
double &norm,
const int delta=1,
const int offset=0) {
…}
142template <
class TVector>
169template <
class TVector>
203template <
class TVector>
247template <
class TVector>
273 typedef TVector vector_type;
276 VectorDebugWritingEstimator()
277 : VectorDebugWritingObject<vector_type>() {}
279 VectorDebugWritingEstimator(SmartPtr<IVectorDebugWriter<vector_type> > spDebugWriter)
280 : VectorDebugWritingObject<vector_type>(spDebugWriter) {}
282 int get_call_id() { return m_dgbCall; }
283 void inc_call_id() { m_dgbCall++; }
295template <
typename TGr
idFunction>
313 {
return norm(*uFine); }
315 double norm(TGridFunction& uFine)
318 SubsetGroup ssGrp(uFine.domain()->subset_handler());
327 for (
size_t i = 0; i < ssGrp.
size(); ++i)
330 const int si = ssGrp[i];
333 switch (ssGrp.
dim(i))
336 case 0: maxVal = std::max(maxVal, findFctMaxOnSubset<Vertex>(uFine, si));
break;
337 case 1: maxVal = std::max(maxVal, findFctMaxOnSubset<Edge>(uFine, si));
break;
338 case 2: maxVal = std::max(maxVal, findFctMaxOnSubset<Face>(uFine, si));
break;
339 case 3: maxVal = std::max(maxVal, findFctMaxOnSubset<Volume>(uFine, si));
break;
340 default:
UG_THROW(
"SupErrorEvaluator::norm: Dimension " << ssGrp.
dim(i) <<
" not supported.");
315 double norm(TGridFunction& uFine) {
…}
359 {
double norm1 =
norm(uFine);
return norm1*norm1;}
361 double distance(TGridFunction& uFine, TGridFunction& uCoarse)
363 UG_COND_THROW(uFine.dof_distribution().get() != uCoarse.dof_distribution().get(),
364 "Coarse and fine solutions do not have the same underlying dof distro.");
367 uErr->operator-=(uFine);
361 double distance(TGridFunction& uFine, TGridFunction& uCoarse) {
…}
371 double distance2(TGridFunction& uFine, TGridFunction& uCoarse)
372 {
double dist =
distance(uFine, uCoarse);
return dist*dist;}
371 double distance2(TGridFunction& uFine, TGridFunction& uCoarse) {
…}
375 template <
typename TBaseElem>
383 "Bear in mind that only one function can be evaluated in this error evaluator.");
388 for (; it != itEnd; ++it)
390 std::vector<DoFIndex> vInd;
395 size_t nInd = dd->dof_indices(*it, fct, vInd,
false,
false);
396 for (
size_t i = 0; i < nInd; ++i)
397 maxVal = std::max(maxVal, fabs(
DoFRef(u, vInd[i])));
410template <
typename TDataIn,
typename TGr
idFunction>
412 :
public StdIntegrand<number, TGridFunction::dim, DeltaSquareIntegrand<TDataIn, TGridFunction> >
443 const TGridFunction* pGridFct1,
const TGridFunction* pGridFct2,
447 m_spData->set_function_pattern(pGridFct1->function_pattern());
455 UG_THROW(
"UserDataDeltaIntegrand: Missing GridFunction, but "
456 " data requires grid function.")
462 template <
int elemDim>
465 const TGridFunction& gridFct,
474 if(spData->requires_grid_fct())
481 gridFct.indices(pElem, ind);
488 std::cout << u << std::endl;
492 (*spData)(vValue, vGlobIP,
m_time, this->
m_si, pElem,
493 vCornerCoords, vLocIP, numIP, &u, &vJT[0]);
501 (*spData)(vValue, vGlobIP,
m_time, this->
m_si, numIP);
510 template <
int elemDim>
519 std::vector<TDataIn> v1(numIP);
521 get_values<elemDim>(&v1[0],
m_spData, *
m_pGridFct1, vGlobIP, pElem, vCornerCoords, vLocIP, vJT, numIP);
522 std::cout <<
"--- got v1!" << std::endl;
526 std::vector<TDataIn> v2(numIP);
529 get_values<elemDim>(&v2[0],
m_spData, *
m_pGridFct2, vGlobIP, pElem, vCornerCoords, vLocIP, vJT, numIP);
530 std::cout <<
"--- got v2!" << std::endl;
532 for (
size_t ip=0; ip<numIP; ++ip)
535 std::cout << std::setprecision(12) << v1[ip] <<
" "<< std::setprecision(12) << v2[ip] << std::endl;
537 vValue[ip] = this->
product(v1[ip], v1[ip]);
542 for (
size_t ip=0; ip<numIP; ++ip)
543 { vValue[ip] = this->
product(v1[ip], v1[ip]); }
551template <
typename TGr
idFunction,
typename TDataInput>
576 double distance2(TGridFunction& uFine, TGridFunction& uCoarse)
579 std::cerr <<
"uFine="<<(
void*) (&uFine) <<
", uCoarse="<< (
void*) (&uCoarse) << std::endl;
576 double distance2(TGridFunction& uFine, TGridFunction& uCoarse) {
…}
590template <class TDomain, class TAlgebra>
591class GridFunctionEstimator :
592 public ISubDiagErrorEst<typename TAlgebra::vector_type>
595 typedef typename TAlgebra::vector_type TVector;
596 typedef GridFunction<TDomain, TAlgebra> grid_function_type;
597 typedef IErrorEvaluator<grid_function_type> evaluator_type;
599 std::vector<SmartPtr<evaluator_type> > m_evaluators;
600 number m_refNormValue;
603 typedef ISubDiagErrorEst<TVector> base_type;
606 ScaledGridFunctionEstimator() : m_refNormValue(0.0) {}
607 ScaledGridFunctionEstimator(number ref) : m_refNormValue(ref) {}
609 void add(SmartPtr<evaluator_type> eval)
611 m_evaluators.push_back(eval);
615 bool update(SmartPtr<TVector> vUpdate, number alpha, SmartPtr<TVector> vFine, SmartPtr<TVector> vCoarse)
617 // typedef ScaleAddLinker<number, TDomain::dim, number> linker_type;
618 typedef GridFunctionNumberData<TGridFunction> TNumberData;
621 SmartPtr<grid_function_type> uFine = vFine.template cast_dynamic<grid_function_type>();
622 SmartPtr<grid_function_type> uCoarse = vCoarse.template cast_dynamic<grid_function_type>();
623 if (uFine.invalid() || uCoarse.invalid()) return false;
626 if (m_refNormValue<=0.0)
628 // relative error estimator
629 //number unorm = L2Norm(uFine, m_fctNames.c_str(), m_quadorder);
630 //number enorm = alpha*L2Error(uFine, m_fctNames.c_str(), uCoarse, m_fctNames.c_str() ,m_quadorder);
634 for (typename std::vector<evaluator_type>::iterator it = m_evaluators.begin(); it!= m_evaluators.end(); ++it)
636 enorm = alpha * it->distance(uFine, uCoarse);
637 unorm = std::max(it->norm(uFine), 1e-10);
638 est += (enorm*enorm)/(unorm*unorm);
639 std::cerr << "unorm=" << unorm << "enorm=" << enorm << "est="<<est << std::endl;
642 base_type::m_est = sqrt(est)/m_evaluators.size();
643 std::cerr << "eps="<< base_type::m_est << std::endl;
648 // weighted error estimator
650 for (typename std::vector<evaluator_type>::iterator it = m_evaluators.begin(); it!= m_evaluators.end(); ++it)
652 enorm += alpha * it->distance(uFine, uCoarse);
654 base_type::m_est = enorm/m_refNormValue;
656 std::cerr << "unorm (FIXED)=" << m_refNormValue << "enorm=" << enorm << "eps="<< base_type::m_est << std::endl;
661 VecScaleAdd(*vUpdate, 1.0+alpha, *vFine, -alpha, *vCoarse);
665 void set_reference_norm(number norm)
666 {m_refNormValue = norm; }
670 std::string config_string() const
672 std::stringstream ss;
673 ss << "GridFunctionEstimator:\n";
674 for (typename std::vector<GridFunctionEvaluator>::const_iterator it = m_evaluators.begin(); it!= m_evaluators.end(); ++it)
676 ss << it->config_string();
689template <
class TDomain,
class TAlgebra>
694 typedef typename TAlgebra::vector_type
TVector;
744 const double sigma = it->second;
745 const double norm2 = it->first->norm2(*uFine);
746 const double dist2 = alpha * alpha * (it->first->distance2(*uFine, *uCoarse));
747 unorm2 += sigma * norm2;
748 enorm2 += sigma * dist2;
750 UG_LOG(
"unorm=" << norm2 <<
"\tenorm=" << dist2 <<
"\tsigma=" << sigma << std::endl);
762 const double sigma = it->second;
763 const double dist2 = alpha * alpha * (it->first->distance2(*uFine, *uCoarse));
764 enorm2 += sigma*dist2;
772 VecScaleAdd(*vUpdate, 1.0+alpha, *vFine, -alpha, *vCoarse);
783 std::stringstream ss;
784 ss <<
"GridFunctionEstimator:\n";
787 ss << it->second <<
"*" << it->first->config_string();
794template <
class TDomain,
class TAlgebra>
799 typedef typename TAlgebra::vector_type
TVector;
818 const std::vector<weighted_obj_type> &spaces = spCompositeSpace->get_subspaces();
819 for (
typename std::vector<weighted_obj_type>::const_iterator it = spaces.begin(); it != spaces.end(); ++it)
841 double enorm2 = (alpha*alpha) * (*it)->distance2(*uFine, *uCoarse);
842 double unorm2 = std::max((*it)->norm2(*uFine), 1e-10*enorm2);
843 est += (enorm2)/(unorm2);
844 UG_LOGN(
"unorm2=" << unorm2 <<
"\tenorm2=" << enorm2 <<
"\tratio2="<< (enorm2)/(unorm2) <<
"est2=" << est);
851 VecScaleAdd(*vUpdate, 1.0+alpha, *vFine, -alpha, *vCoarse);
859 std::stringstream ss;
860 ss <<
"ScaledGridFunctionEstimator:\n";
864 ss << (*it)->config_string();
878template <
class TDomain,
class TAlgebra>
883 typedef typename TAlgebra::vector_type
TVector;
905 const std::vector<weighted_obj_type> &spaces = spCompositeSpace->get_subspaces();
906 for (
typename std::vector<weighted_obj_type>::const_iterator it = spaces.begin(); it != spaces.end(); ++it)
925 const double SMALL = 1e-10;
927 double max_rel = 0.0;
935 double cmp_e2 = (alpha*alpha) * (*it)->distance2(*uFine, *uCoarse);
936 double cmp_u2 = (*it)->norm2(*uFine);
939 max_rel = std::max(max_rel, cmp_e2/
940 (cmp_u2 +
SMALL/ (1.0+cmp_e2+cmp_u2)));
946 UG_LOGN(
"ui-2=" << cmp_u2 <<
"\tei-2=" << cmp_e2<<
947 "\tunorm2=" << unorm2 <<
"\tenorm2=" << enorm2 <<
948 "\tratio2="<< (enorm2)/(unorm2) <<
949 "\tmax. rel (squared) ="<< max_rel);
954 sqrt(enorm2/std::max(unorm2,
SMALL*enorm2));
958 VecScaleAdd(*vUpdate, 1.0+alpha, *vFine, -alpha, *vCoarse);
966 std::stringstream ss;
967 ss <<
"CompositeGridFunctionEstimator:\n";
971 ss << (*it)->config_string();
984template <
typename TVector>
1046 int get_best_index() const
1048 std::vector<number>::iterator best = std::min_element(m_subdiag_error_est.begin(), m_subdiag_error_est.end());
1049 //std::cout << "min element at: " << std::distance(std::begin(m_subdiag_error_est), best);
1050 return std::distance(m_subdiag_error_est.begin(), best);
1065 void apply(
size_t nstages,
bool with_error=
true)
1068 "Dimensions do not match:" << nstages <<
">" <<
m_solution.size());
1079 for (
size_t k=1; k<nstages; ++k)
1083 for (
size_t i=nstages-1; i>=k; --i)
1094 UG_LOG(
"scaling="<<i <<
","<< k <<
1096 "ns2["<<i-k<<
"]=" <<
m_num_steps[i-k] <<
"=" << scaling << std::endl);
1098 if (with_error && (i==k))
1101 m_subdiag->update(solfine, (1.0/scaling), solfine, solcoarse);
1112 VecScaleAdd(*solfine, (1.0+1.0/scaling), *solfine,
1113 -(1.0/scaling), *solcoarse);
1065 void apply(
size_t nstages,
bool with_error=
true) {
…}
size_t allreduce(const size_t &t, pcl::ReduceOperation op) const
Definition time_extrapolation.h:986
SmartPtr< vector_type > get_solution(size_t i)
get solution (on stage i)
Definition time_extrapolation.h:1020
static const int m_order
Definition time_extrapolation.h:1138
void apply()
apply for all stages
Definition time_extrapolation.h:1123
void set_error_estimate(SmartPtr< ISubDiagErrorEst< vector_type > > subdiag)
set error estimator
Definition time_extrapolation.h:1024
const std::vector< number > & get_error_estimates() const
Definition time_extrapolation.h:1030
void apply(size_t nstages, bool with_error=true)
best error estimate
Definition time_extrapolation.h:1065
number m_stepsize
Definition time_extrapolation.h:1137
void set_solution(SmartPtr< vector_type > soli, int i)
set solution (for stage i)
Definition time_extrapolation.h:1016
std::vector< number > m_subdiag_error_est
Definition time_extrapolation.h:1150
SmartPtr< ISubDiagErrorEst< vector_type > > m_subdiag
Definition time_extrapolation.h:1141
std::vector< size_t > m_num_steps
Definition time_extrapolation.h:1144
std::vector< SmartPtr< vector_type > > m_solution
Definition time_extrapolation.h:1147
AitkenNevilleTimex(std::vector< size_t > nsteps)
Definition time_extrapolation.h:994
number get_global_stepsize()
Definition time_extrapolation.h:1013
virtual ~AitkenNevilleTimex()
Definition time_extrapolation.h:1010
number get_error_estimate(int k) const
error estimate on stage k
Definition time_extrapolation.h:1034
TVector vector_type
vector type of solutions
Definition time_extrapolation.h:989
number substep(size_t i)
Definition time_extrapolation.h:1133
void set_global_stepsize(number H)
Definition time_extrapolation.h:1012
AitkenNevilleTimex(std::vector< size_t > nsteps, SmartPtr< ISubDiagErrorEst< vector_type > > error)
Definition time_extrapolation.h:1002
Evaluate difference between two functions (w.r.t various norms)
Definition time_extrapolation.h:881
bool m_strictRelativeError
Definition time_extrapolation.h:979
GridFunction< TDomain, TAlgebra > grid_function_type
Definition time_extrapolation.h:887
std::vector< SmartPtr< subspace_type > > m_spSubspaces
Definition time_extrapolation.h:978
void add(SmartPtr< subspace_type > spSubspace)
Definition time_extrapolation.h:898
ISubDiagErrorEst< TVector > base_type
Definition time_extrapolation.h:886
bool update(SmartPtr< TVector > vUpdate, number alpha, SmartPtr< TVector > vFine, SmartPtr< TVector > vCoarse)
compute update vUpdate = vFine + alpha * (vFine- vCoarse) AND estimate error | alpha * (vFine- vCoars...
Definition time_extrapolation.h:914
void add(SmartPtr< composite_type > spCompositeSpace)
Definition time_extrapolation.h:902
CompositeGridFunctionEstimator()
Definition time_extrapolation.h:892
IComponentSpace< grid_function_type > subspace_type
Definition time_extrapolation.h:888
TAlgebra::vector_type TVector
Definition time_extrapolation.h:883
void use_strict_relative_norms(bool b)
Definition time_extrapolation.h:894
CompositeSpace< grid_function_type > composite_type
Definition time_extrapolation.h:889
std::string config_string() const
print config string
Definition time_extrapolation.h:964
std::pair< SmartPtr< obj_type >, number > weighted_obj_type
Definition time_extrapolation.h:413
SmartPtr< UserData< TDataIn, worldDim > > m_spData
Definition time_extrapolation.h:431
static number product(const MathVector< worldDim > &x, const MathVector< worldDim > &y)
Definition time_extrapolation.h:426
const TGridFunction * m_pGridFct2
Definition time_extrapolation.h:435
number m_time
Definition time_extrapolation.h:438
DeltaSquareIntegrand(SmartPtr< UserData< TDataIn, worldDim > > spData, number time)
constructor
Definition time_extrapolation.h:451
static number product(const number &x, const number &y)
Definition time_extrapolation.h:423
DeltaSquareIntegrand(SmartPtr< UserData< TDataIn, worldDim > > spData, const TGridFunction *pGridFct1, const TGridFunction *pGridFct2, number time)
constructor
Definition time_extrapolation.h:442
static const int worldDim
Definition time_extrapolation.h:416
void get_values(TDataIn vValue[], ConstSmartPtr< UserData< TDataIn, worldDim > > spData, const TGridFunction &gridFct, const MathVector< worldDim > vGlobIP[], GridObject *pElem, const MathVector< worldDim > vCornerCoords[], const MathVector< elemDim > vLocIP[], const MathMatrix< elemDim, worldDim > vJT[], const size_t numIP)
Definition time_extrapolation.h:463
TDataIn data_type
Definition time_extrapolation.h:419
const TGridFunction * m_pGridFct1
Definition time_extrapolation.h:434
void evaluate(number vValue[], const MathVector< worldDim > vGlobIP[], GridObject *pElem, const MathVector< worldDim > vCornerCoords[], const MathVector< elemDim > vLocIP[], const MathMatrix< elemDim, worldDim > vJT[], const size_t numIP)
Definition time_extrapolation.h:511
Evaluate using continuous norms.
Definition time_extrapolation.h:692
bool update(SmartPtr< TVector > vUpdate, number alpha, SmartPtr< TVector > vFine, SmartPtr< TVector > vCoarse)
apply w/ rel norm
Definition time_extrapolation.h:725
ISubDiagErrorEst< TVector > base_type
Definition time_extrapolation.h:696
void set_reference_norm(number norm)
Definition time_extrapolation.h:776
TAlgebra::vector_type TVector
Definition time_extrapolation.h:694
GridFunctionEstimator()
Definition time_extrapolation.h:709
IGridFunctionSpace< grid_function_type > subspace_type
Definition time_extrapolation.h:698
std::pair< SmartPtr< subspace_type >, number > weighted_obj_type
Definition time_extrapolation.h:702
std::vector< weighted_obj_type > m_spWeightedSubspaces
Definition time_extrapolation.h:705
std::string config_string() const
print config string
Definition time_extrapolation.h:781
void add(SmartPtr< subspace_type > spSubspace, number sigma)
Definition time_extrapolation.h:720
GridFunction< TDomain, TAlgebra > grid_function_type
Definition time_extrapolation.h:697
GridFunctionEstimator(double ref)
Definition time_extrapolation.h:713
void add(SmartPtr< subspace_type > spSubspace)
add sub-space component
Definition time_extrapolation.h:717
number m_refNormValue
Definition time_extrapolation.h:704
virtual double norm(TGridFunction &uFine)
virtual double distance(TGridFunction &uFine, TGridFunction &uCoarse)
Interface for sub-diagonal error estimator (w.r.t time in Aitken-Neville scheme)
Definition time_extrapolation.h:144
number m_est
Definition time_extrapolation.h:162
virtual std::string config_string() const
Definition time_extrapolation.h:159
number get_current_estimate()
get estimate
Definition time_extrapolation.h:156
void reset_estimate()
Definition time_extrapolation.h:157
virtual ~ISubDiagErrorEst()
Definition time_extrapolation.h:150
virtual bool update(SmartPtr< TVector > vUpdate, number alpha2, SmartPtr< TVector > vFine, SmartPtr< TVector > vCoarse)=0
compute update vUpdate = vFine + alpha * (vFine- vCoarse) AND estimate error | alpha * (vFine- vCoars...
ISubDiagErrorEst()
Definition time_extrapolation.h:147
void resize(const LocalIndices &ind)
Evaluate using (algebraic) L2 norm.
Definition time_extrapolation.h:205
int m_offset
Definition time_extrapolation.h:209
int m_stride
Definition time_extrapolation.h:208
ISubDiagErrorEst< TVector > base_type
Definition time_extrapolation.h:207
void set_stride(int delta)
Definition time_extrapolation.h:241
void set_offset(int offset)
Definition time_extrapolation.h:238
bool update(SmartPtr< TVector > vUpdate, number alpha2, SmartPtr< TVector > vFine, SmartPtr< TVector > vCoarse)
compute update vUpdate = vFine + alpha * (vFine- vCoarse) AND estimate error | alpha * (vFine- vCoars...
Definition time_extrapolation.h:221
Norm2Estimator(int delta, int offset)
Definition time_extrapolation.h:217
Norm2Estimator()
Definition time_extrapolation.h:213
Norm2Estimator(int stride)
Definition time_extrapolation.h:215
Evaluate using (algebraic) infinity norm.
Definition time_extrapolation.h:171
ISubDiagErrorEst< TVector > base_type
Definition time_extrapolation.h:173
NormInfEstimator()
Definition time_extrapolation.h:179
bool update(SmartPtr< TVector > vUpdate, number alpha2, SmartPtr< TVector > vFine, SmartPtr< TVector > vCoarse)
compute update vUpdate = vFine + alpha * (vFine- vCoarse) AND estimate error | alpha * (vFine- vCoars...
Definition time_extrapolation.h:184
int m_stride
Definition time_extrapolation.h:174
void set_offset(int offset)
Definition time_extrapolation.h:194
int m_offset
Definition time_extrapolation.h:175
void set_stride(int delta)
Definition time_extrapolation.h:197
Evaluate using (algebraic) L2 norm.
Definition time_extrapolation.h:249
NormRelEstimator()
Definition time_extrapolation.h:255
ISubDiagErrorEst< TVector > base_type
Definition time_extrapolation.h:251
bool update(SmartPtr< TVector > vUpdate, number alpha2, SmartPtr< TVector > vFine, SmartPtr< TVector > vCoarse)
compute update vUpdate = vFine + alpha * (vFine- vCoarse) AND estimate error | alpha * (vFine- vCoars...
Definition time_extrapolation.h:258
Evaluate difference between two functions (w.r.t various norms)
Definition time_extrapolation.h:797
CompositeSpace< grid_function_type > composite_type
Definition time_extrapolation.h:805
void add(SmartPtr< composite_type > spCompositeSpace)
Definition time_extrapolation.h:815
IComponentSpace< grid_function_type > subspace_type
Definition time_extrapolation.h:804
bool update(SmartPtr< TVector > vUpdate, number alpha, SmartPtr< TVector > vFine, SmartPtr< TVector > vCoarse)
compute update vUpdate = vFine + alpha * (vFine- vCoarse) AND estimate error | alpha * (vFine- vCoars...
Definition time_extrapolation.h:827
TAlgebra::vector_type TVector
Definition time_extrapolation.h:799
ISubDiagErrorEst< TVector > base_type
Definition time_extrapolation.h:802
GridFunction< TDomain, TAlgebra > grid_function_type
Definition time_extrapolation.h:803
std::vector< SmartPtr< subspace_type > > m_spSubspaces
Definition time_extrapolation.h:871
void add(SmartPtr< subspace_type > spSubspace)
Definition time_extrapolation.h:811
ScaledGridFunctionEstimator()
Definition time_extrapolation.h:808
std::string config_string() const
print config string
Definition time_extrapolation.h:857
void add(const char *name)
Definition time_extrapolation.h:298
IComponentSpace< TGridFunction > base_type
Definition time_extrapolation.h:300
double norm2(TGridFunction &uFine)
Definition time_extrapolation.h:358
~SupErrorEvaluator()
Definition time_extrapolation.h:306
SupErrorEvaluator(const char *fctNames, const char *ssNames)
Definition time_extrapolation.h:304
double distance(TGridFunction &uFine, TGridFunction &uCoarse)
Definition time_extrapolation.h:361
number findFctMaxOnSubset(const TGridFunction &u, int si) const
Definition time_extrapolation.h:376
SupErrorEvaluator(const char *fctNames)
Definition time_extrapolation.h:302
double distance2(TGridFunction &uFine, TGridFunction &uCoarse)
Definition time_extrapolation.h:371
double norm(TGridFunction &uFine)
Definition time_extrapolation.h:315
double norm(SmartPtr< TGridFunction > uFine)
Definition time_extrapolation.h:312
Evaluate the difference for a (dependent) UserData type induced by different grid functions.
Definition time_extrapolation.h:553
void set_user_data(SmartPtr< input_user_data_type > spData)
Definition time_extrapolation.h:562
UserDataSpace(const char *fctNames)
Definition time_extrapolation.h:558
double norm2(TGridFunction &uFine)
Definition time_extrapolation.h:570
IComponentSpace< TGridFunction > base_type
Definition time_extrapolation.h:555
SmartPtr< input_user_data_type > m_userData
Definition time_extrapolation.h:584
~UserDataSpace()
Definition time_extrapolation.h:560
UserDataSpace(const char *fctNames, int order)
Definition time_extrapolation.h:559
double distance2(TGridFunction &uFine, TGridFunction &uCoarse)
Definition time_extrapolation.h:576
UserData< TDataInput, TGridFunction::dim > input_user_data_type
Definition time_extrapolation.h:556
vector< string > TokenizeString(const char *str, const char delimiter=',')
#define UG_ASSERT(expr, msg)
#define UG_CATCH_THROW(msg)
#define UG_COND_THROW(cond, msg)
vector_t::value_type VecDot(const vector_t &v1, const vector_t &v2)
number IntegrateSubsets(IIntegrand< number, TGridFunction::dim > &spIntegrand, TGridFunction &spGridFct, const char *subsets, int quadOrder, std::string quadType=std::string())
const number & DoFRef(const TMatrix &mat, const DoFIndex &iInd, const DoFIndex &jInd)
void GetLocalVector(LocalVector &lvec, const TVector &vec)
void VecScaleAdd(double &dest, double alpha1, const double &v1, double alpha2, const double &v2)
SmartPtr< T, FreePolicy > make_sp(T *inst)
function ProblemDisc new(problemDesc, dom)