33#ifndef __H__UG__LIB_DISC__FUNCTION_SPACE__METRIC_SPACES_H_
34#define __H__UG__LIB_DISC__FUNCTION_SPACE__METRIC_SPACES_H_
56template<
typename TVector>
64 virtual double norm(TVector &x)
67 virtual double distance(TVector& x, TVector& y)
79template<
typename TGr
idFunction>
92 virtual double norm(TGridFunction& x) = 0;
93 virtual double norm2(TGridFunction& x) = 0;
98 virtual double distance(TGridFunction& x, TGridFunction& y) = 0;
99 virtual double distance2(TGridFunction& x, TGridFunction& y) = 0;
109 TGridFunction* gfX=
dynamic_cast< TGridFunction*
>(&x);
110 UG_ASSERT(gfX!=NULL,
"Huhh: GridFunction required!");
116 {
return distance(
static_cast<TGridFunction &
>(x),
static_cast<TGridFunction &
>(y)); }
122 {
return std::string(
"IGridFunctionSpace"); }
125template<
typename TGr
idFunction>
131 virtual double norm(TGridFunction& x)
134 virtual double norm2(TGridFunction& x)
135 {
double n = this->
norm(x);
return n*n; }
137 virtual double distance(TGridFunction& x, TGridFunction& y)
140 virtual double distance2(TGridFunction& x, TGridFunction& y)
141 {
double d = this->
distance(x,y);;
return d*d;}
179 virtual void update_time_data(number dt) = 0;
181 virtual bool is_time_dependent() const
189template <
typename TGr
idFunction>
203 static const int dim=TGridFunction::dim;
217 virtual double norm(TGridFunction& uFine)
218 {
return sqrt(
norm2(uFine)); }
221 virtual double distance(TGridFunction& uFine, TGridFunction& uCoarse)
222 {
return sqrt(
distance2(uFine, uCoarse)); }
224 virtual double norm2(TGridFunction& uFine) = 0;
225 virtual double distance2(TGridFunction& uFine, TGridFunction& uCoarse) = 0;
235 std::stringstream ss;
238 ss << this->m_fctNames <<
", " << this->m_ssNames <<
", " << this->m_quadorder
239 <<
", type=" << std::endl;
242 ss << this->m_fctNames <<
", (no name), " << this->m_quadorder
243 <<
", type=" << std::endl;
252template <
typename TGr
idFunction>
265 virtual double norm2(TGridFunction& uFine)
272 UG_CATCH_THROW(
"Could not convert function names to function indices.");
279 UG_CATCH_THROW(
"Could not convert subset names to subset indices.");
287 const size_t sgSz = sg.
size();
288 for (
size_t i = 0; i < sgSz; ++i)
291 if (dd->max_dofs(
VERTEX, si)) add_norm_values<Vertex>(sum, uFine, dd, sg[i], fg);
292 if (dd->max_dofs(
EDGE, si)) add_norm_values<Edge>(sum, uFine, dd, sg[i], fg);
293 if (dd->max_dofs(
FACE, si)) add_norm_values<Face>(sum, uFine, dd, sg[i], fg);
294 if (dd->max_dofs(
VOLUME, si)) add_norm_values<Volume>(sum, uFine, dd, sg[i], fg);
308 virtual double distance2(TGridFunction& uFine, TGridFunction& uCoarse)
312 "GridFunctionComponentSpace::distance2: GF1 DoF distro is not the same as for GF2.\n"
313 "This case is not implemented.");
318 UG_CATCH_THROW(
"Could not convert function names to function indices.");
325 UG_CATCH_THROW(
"Could not convert subset names to subset indices.");
333 const size_t sgSz = sg.
size();
334 for (
size_t i = 0; i < sgSz; ++i)
337 if (dd->max_dofs(
VERTEX, si)) add_distance_values<Vertex>(sum, uFine, uCoarse, dd, sg[i], fg);
338 if (dd->max_dofs(
EDGE, si)) add_distance_values<Edge>(sum, uFine, uCoarse, dd, sg[i], fg);
339 if (dd->max_dofs(
FACE, si)) add_distance_values<Face>(sum, uFine, uCoarse, dd, sg[i], fg);
340 if (dd->max_dofs(
VOLUME, si)) add_distance_values<Volume>(sum, uFine, uCoarse, dd, sg[i], fg);
355 template <
typename TBaseElem>
359 const TGridFunction& uFine,
360 const TGridFunction& uCoarse,
375 std::vector<DoFIndex> vInd;
376 for (; iter != iterEnd; ++iter)
378 TBaseElem* elem = *iter;
383 TBaseElem* child = mg.
get_child<TBaseElem>(elem, 0);
389 for (
size_t fi = 0; fi < nFct; ++fi)
391 dd->inner_dof_indices(elem, fg[fi], vInd);
393 const size_t nDof = vInd.size();
394 for (
size_t dof = 0; dof < nDof; ++dof)
404 template <
typename TBaseElem>
408 const TGridFunction& uFine,
423 std::vector<DoFIndex> vInd;
424 for (; iter != iterEnd; ++iter)
426 TBaseElem* elem = *iter;
431 TBaseElem* child = mg.
get_child<TBaseElem>(elem, 0);
437 for (
size_t fi = 0; fi < nFct; ++fi)
439 dd->inner_dof_indices(elem, fg[fi], vInd);
441 const size_t nDof = vInd.size();
442 for (
size_t dof = 0; dof < nDof; ++dof)
456template <
typename TGr
idFunction>
486 std::stringstream ss;
487 ss <<
"TimeDependentSpace for " << std::endl;
499template <
typename TGr
idFunction>
538 double distance2(TGridFunction& uFine, TGridFunction& uCoarse)
539 {
return L2Distance2(uFine, base_type::m_fctNames.c_str(), uCoarse, base_type::m_fctNames.c_str(),
547template <
typename TGr
idFunction>
564 L2QuotientSpace(
const char *fctNames,
int order,
double weight,
const char* ssNames=0)
587 SPUserData spConst=
make_sp(
new MyConstUserData(1.0));
588 number Meas =
Integral(spConst, u, base_type::m_ssNames, 0.0, 1,
"best");
589 number uAvg =
Integral(u, base_type::m_fctNames.c_str(), base_type::m_ssNames, base_type::m_quadorder);
591 std::cerr <<
"Average:=" << uAvg <<
"/" << Meas <<
" = " << uAvg/Meas << std::endl;
592 SPUserData spAvg =
make_sp(
new MyConstUserData(uAvg/Meas));
593 double qnorm =
L2Error(spAvg, u, base_type::m_fctNames.c_str(), 0.0, base_type::m_quadorder, base_type::m_ssNames);
599 double distance2(TGridFunction& uFine, TGridFunction& uCoarse)
604 SPUserData spConst=
make_sp(
new MyConstUserData(1.0));
605 number Meas =
Integral(spConst, uFine, base_type::m_ssNames, 0.0, 1,
"best");
606 number avgFine =
Integral(uFine, base_type::m_fctNames.c_str(), base_type::m_ssNames, base_type::m_quadorder);
607 number avgCoarse =
Integral(uCoarse, base_type::m_fctNames.c_str(), base_type::m_ssNames, base_type::m_quadorder);
609 std::cerr <<
"Average:=(" << avgFine <<
"-" << avgCoarse<<
")/" << Meas <<
" = " << (avgFine-avgCoarse)/Meas << std::endl;
610 return L2Distance2(uFine, base_type::m_fctNames.c_str(),
611 uCoarse, base_type::m_fctNames.c_str(),
613 (avgFine-avgCoarse)/Meas);
622template <
typename TGr
idFunction>
662 double distance2(TGridFunction& uFine, TGridFunction& uCoarse)
663 {
return H1SemiDistance2<TGridFunction>(uFine, base_type::m_fctNames.c_str(), uCoarse, base_type::m_fctNames.c_str(), base_type::m_quadorder,
m_spWeight); }
676template <typename TGridFunction>
677class KineticEnergyComponentSpace
678: public IComponentSpace<TGridFunction>,
679 public IObjectWithWeights<typename L2Integrand<TGridFunction>::weight_type >
682 typedef IComponentSpace<TGridFunction> base_type;
683 typedef typename L2Integrand<TGridFunction>::weight_type weight_type;
684 typedef IObjectWithWeights<weight_type> weighted_obj_type;
685 typedef DarcyVelocityLinker<TGridFunction::dim> velocity_type;
688 KineticEnergyComponentSpace(SmartPtr<velocity_type> spVelocity, const char *fctNames)
689 : base_type(fctNames), weighted_obj_type(make_sp(new ConstUserNumber<TGridFunction::dim>(1.0))), m_spVelocity(spVelocity) {};
691 KineticEnergyComponentSpace(SmartPtr<velocity_type> spVelocity, const char *fctNames, int order)
692 : base_type(fctNames, order), weighted_obj_type(make_sp(new ConstUserNumber<TGridFunction::dim>(1.0))), m_spVelocity(spVelocity) {};
694 KineticEnergyComponentSpace(SmartPtr<velocity_type> spVelocity, const char *fctNames, int order, number weight, const char* ssNames=0)
695 : base_type(fctNames, ssNames, order), weighted_obj_type(make_sp(new ConstUserNumber<TGridFunction::dim>(weight))), m_spVelocity(spVelocity) {};
697 KineticEnergyComponentSpace(SmartPtr<velocity_type> spVelocity, const char *fctNames, int order, ConstSmartPtr<weight_type> spWeight, const char* ssNames=0)
698 : base_type(fctNames, ssNames, order), weighted_obj_type(spWeight), m_spVelocity(spVelocity) {};
700 KineticEnergyComponentSpace(SmartPtr<velocity_type> spVelocity, const char *fctNames, int order, const char* ssNames, ConstSmartPtr<weight_type> spWeight)
701 : base_type(fctNames, ssNames, order), weighted_obj_type(spWeight), m_spVelocity(spVelocity) {};
704 ~KineticEnergyComponentSpace() {};
707 using IComponentSpace<TGridFunction>::m_quadorder;
708 using IComponentSpace<TGridFunction>::norm;
709 using IComponentSpace<TGridFunction>::distance;
712 double norm2(TGridFunction& u)
714 const char* subsets = NULL;
715 UserDataIntegrandSq<MathVector<TGridFunction::dim>, TGridFunction> integrand2(m_spVelocity, &u, 0.0);
716 return IntegrateSubsets(integrand2, u, subsets, m_quadorder);
720 double distance2(TGridFunction& uFine, TGridFunction& uCoarse)
722 // UG_THROW("Not implemented!");
723 const char* subsets = NULL;
724 UserDataDistIntegrandSq<MathVector<TGridFunction::dim>, TGridFunction> integrand2(m_spVelocity, uFine, 0, uCoarse, 0);
725 return IntegrateSubsets(integrand2, uFine, subsets, m_quadorder);
729 using weighted_obj_type::set_weight;
730 using weighted_obj_type::get_weight;
731 using weighted_obj_type::m_spWeight;
733 void set_velocity(SmartPtr<velocity_type> spVelocity)
734 { m_spVelocity = spVelocity;}
737 SmartPtr<velocity_type> m_spVelocity;
744template <
typename TGr
idFunction>
747 public IObjectWithWeights<typename H1EnergyDistIntegrand<TGridFunction>::weight_type >
754 static const int dim = TGridFunction::dim;
787 return IntegrateSubsets(integrand2, uFine, base_type::m_ssNames, base_type::m_quadorder);
789 return H1EnergyNorm2<TGridFunction>(uFine, base_type::m_fctNames.c_str(), base_type::m_quadorder, base_type::m_ssNames,
weighted_obj_type::m_spWeight);
794 double distance2(TGridFunction& uFine, TGridFunction& uCoarse)
795 {
return H1EnergyDistance2<TGridFunction>(uFine, base_type::m_fctNames.c_str(), uCoarse, base_type::m_fctNames.c_str(), base_type::m_quadorder,base_type::m_ssNames,
weighted_obj_type::m_spWeight); }
810template <
typename TGr
idFunction>
827 {
return H1Norm2<TGridFunction>(uFine, base_type::m_fctNames.c_str(), base_type::m_quadorder, base_type::m_ssNames); }
830 double distance2(TGridFunction& uFine, TGridFunction& uCoarse)
831 {
return H1Distance2<TGridFunction>(uFine, base_type::m_fctNames.c_str(), uCoarse, base_type::m_fctNames.c_str(), base_type::m_quadorder, base_type::m_ssNames); }
841template <
typename TGr
idFunction>
857 double norm(TGridFunction& uFine)
858 {
return(sqrt(
norm2(uFine))); }
867 double snorm2 = it->first->norm2(uFine);
868 unorm2 += it->second * snorm2;
869 UG_LOG(
"composite-norm2:\t" << snorm2 <<
"\t*\t" << it->second
870 <<
"\t=\t" << it->second * snorm2 << std::endl);
872 UG_LOG(
"composite-norm2-final:\t" << unorm2 << std::endl);
877 double distance2(TGridFunction& uFine, TGridFunction& uCoarse)
883 double sdist2 = it->first->distance2(uFine, uCoarse);
884 unorm2 += it->second * sdist2;
885 UG_LOG(
"composite-dist2:\t" << sdist2 <<
"\t*\t" << it->second
886 <<
"\t=\t" << it->second * sdist2 << std::endl);
888 UG_LOG(
"composite-dist2-final:\t" << unorm2 << std::endl);
893 double distance(TGridFunction& uFine, TGridFunction& uCoarse)
894 {
return sqrt(
distance2(uFine, uCoarse)); }
907 std::stringstream ss;
908 ss <<
"CompositeSpace:" << std::endl;
912 { ss << it->first->config_string(); }
925 if (spSpaceT.
valid()) spSpaceT->update_time_data(t);
936 if (spSpaceT.
valid())
return true;
962 void add(SmartPtr<obj_type> spSubSpace)
963 { m_spSubspaces.push_back(make_sp(new ITimeDependentSpace(spSubSpace))); }
966 void update_time_data(number t)
968 for (typename std::vector<SmartPtr<obj_type> >::iterator it = m_spSubspaces.begin();
969 it!= m_spSubspaces.end(); ++it)
970 { if ((*it)->is_time_dependent()) (*it)->update_time_data(t); }
974 bool is_time_dependent() const
976 for (typename std::vector<SmartPtr<obj_type> >::const_iterator it = m_spSubspaces.begin();
977 it!= m_spSubspaces.end(); ++it)
978 { if ((*it)->is_time_dependent()) return true; }
Definition smart_pointer.h:296
Definition smart_pointer.h:108
bool valid() const
returns true if the pointer is valid, false if not.
Definition smart_pointer.h:206
Definition pcl_process_communicator.h:70
void allreduce(const void *sendBuf, void *recBuf, int count, DataType type, ReduceOperation op) const
performs MPI_Allreduce on the processes of the communicator.
Definition pcl_process_communicator.cpp:318
Definition metric_spaces.h:127
virtual double distance(TGridFunction &x, TGridFunction &y)
distance (for grid functions)
Definition metric_spaces.h:137
TGridFunction::vector_type vector_type
Definition metric_spaces.h:128
virtual ~AlgebraicSpace()
Definition metric_spaces.h:129
virtual double distance2(TGridFunction &x, TGridFunction &y)
Definition metric_spaces.h:140
virtual double norm2(TGridFunction &x)
Definition metric_spaces.h:134
virtual double norm(TGridFunction &x)
norm (for grid functions)
Definition metric_spaces.h:131
Defines a composite space, (i.e., additive composition from other spaces)
Definition metric_spaces.h:843
const std::vector< weighted_obj_type > & get_subspaces() const
Definition metric_spaces.h:941
IGridFunctionSpace< TGridFunction > base_type
Definition metric_spaces.h:845
TimeDependentSpace< TGridFunction > time_dependent_obj_type
Definition metric_spaces.h:847
std::string config_string() const
print config string
Definition metric_spaces.h:905
double norm(TGridFunction &uFine)
norm (for grid functions)
Definition metric_spaces.h:857
double norm2(TGridFunction &uFine)
Definition metric_spaces.h:861
bool is_time_dependent() const
Check, if any object is time-dependent.
Definition metric_spaces.h:930
double distance2(TGridFunction &uFine, TGridFunction &uCoarse)
Definition metric_spaces.h:877
std::vector< weighted_obj_type > m_spWeightedSubspaces
Definition metric_spaces.h:945
void add(SmartPtr< obj_type > spSubSpace)
add space to composite (with weight 1.0)
Definition metric_spaces.h:897
std::pair< SmartPtr< obj_type >, number > weighted_obj_type
Definition metric_spaces.h:848
void update_time_data(number t)
Forward update to all members.
Definition metric_spaces.h:919
void add(SmartPtr< obj_type > spSubSpace, number sigma)
add space to composite (with variable weight)
Definition metric_spaces.h:901
double distance(TGridFunction &uFine, TGridFunction &uCoarse)
Definition metric_spaces.h:893
CompositeSpace()
Definition metric_spaces.h:850
IComponentSpace< TGridFunction > obj_type
Definition metric_spaces.h:846
constant matrix user data
Definition const_user_data.h:232
constant scalar user data
Definition const_user_data.h:153
Definition function_group.h:52
void add(size_t fct)
adds a function by id to this group
Definition function_group.cpp:79
size_t size() const
number of functions in this group
Definition function_group.h:116
Definition metric_spaces.h:255
virtual double distance2(TGridFunction &uFine, TGridFunction &uCoarse)
Definition metric_spaces.h:308
GridFunctionComponentSpace(const char *fctNames, const char *ssNames)
Definition metric_spaces.h:260
void add_distance_values(number &sum, const TGridFunction &uFine, const TGridFunction &uCoarse, ConstSmartPtr< DoFDistribution > dd, int si, const FunctionGroup &fg) const
Definition metric_spaces.h:357
virtual double norm2(TGridFunction &uFine)
Definition metric_spaces.h:265
void add_norm_values(number &sum, const TGridFunction &uFine, ConstSmartPtr< DoFDistribution > dd, int si, const FunctionGroup &fg) const
Definition metric_spaces.h:406
GridFunctionComponentSpace(const char *fctNames)
Definition metric_spaces.h:257
virtual ~GridFunctionComponentSpace()
Definition metric_spaces.h:263
Definition metric_spaces.h:813
~H1ComponentSpace()
Definition metric_spaces.h:820
H1ComponentSpace(const char *fctNames, const char *ssNames, int order)
Definition metric_spaces.h:819
H1ComponentSpace(const char *fctNames)
Definition metric_spaces.h:817
double norm2(TGridFunction &uFine)
norm (for grid functions)
Definition metric_spaces.h:826
H1ComponentSpace(const char *fctNames, int order)
Definition metric_spaces.h:818
IComponentSpace< TGridFunction > base_type
Definition metric_spaces.h:815
double distance2(TGridFunction &uFine, TGridFunction &uCoarse)
norm (for grid functions)
Definition metric_spaces.h:830
Definition metric_spaces.h:748
IObjectWithWeights< weight_type > weighted_obj_type
Definition metric_spaces.h:752
H1SemiDistIntegrand< TGridFunction >::weight_type weight_type
Definition metric_spaces.h:751
H1EnergyComponentSpace(const char *fctNames, int order, ConstSmartPtr< weight_type > spWeight, const char *ssNames=0)
Definition metric_spaces.h:766
double norm2(TGridFunction &uFine)
Definition metric_spaces.h:782
SmartPtr< velocity_type > m_spVelocity
Definition metric_spaces.h:805
double distance2(TGridFunction &uFine, TGridFunction &uCoarse)
Definition metric_spaces.h:794
IComponentSpace< TGridFunction > base_type
Definition metric_spaces.h:750
UserData< MathVector< dim >, dim > velocity_type
Definition metric_spaces.h:755
static const int dim
Definition metric_spaces.h:754
~H1EnergyComponentSpace()
DTOR.
Definition metric_spaces.h:773
H1EnergyComponentSpace(const char *fctNames)
Definition metric_spaces.h:757
H1EnergyComponentSpace(const char *fctNames, int order)
Definition metric_spaces.h:760
H1EnergyComponentSpace(const char *fctNames, int order, number weight, const char *ssNames=0)
Definition metric_spaces.h:763
void set_velocity(SmartPtr< velocity_type > spVelocity)
Definition metric_spaces.h:801
Definition metric_spaces.h:626
H1SemiDistIntegrand< TGridFunction >::weight_type weight_type
Definition metric_spaces.h:629
IComponentSpace< TGridFunction > base_type
Definition metric_spaces.h:628
ConstSmartPtr< weight_type > m_spWeight
Definition metric_spaces.h:167
H1SemiComponentSpace(const char *fctNames, int order, ConstSmartPtr< weight_type > spWeight, const char *ssNames=0)
Definition metric_spaces.h:642
IObjectWithWeights< weight_type > weighted_obj_type
Definition metric_spaces.h:630
H1SemiComponentSpace(const char *fctNames, int order, const char *ssNames, ConstSmartPtr< weight_type > spWeight)
Definition metric_spaces.h:645
H1SemiComponentSpace(const char *fctNames, int order)
Definition metric_spaces.h:636
~H1SemiComponentSpace()
DTOR.
Definition metric_spaces.h:649
H1SemiComponentSpace(const char *fctNames, int order, number weight, const char *ssNames=0)
Definition metric_spaces.h:639
H1SemiComponentSpace(const char *fctNames)
Definition metric_spaces.h:633
double norm2(TGridFunction &uFine)
Definition metric_spaces.h:658
double distance2(TGridFunction &uFine, TGridFunction &uCoarse)
Definition metric_spaces.h:662
Abstract base class for (algebraic) vectors.
Definition metric_spaces.h:58
virtual double norm(TVector &x)
euclidean norm (default)
Definition metric_spaces.h:64
virtual double distance(TVector &x, TVector &y)
Definition metric_spaces.h:67
virtual ~IBanachSpace()
Definition metric_spaces.h:61
Estimate the error (based on the difference between two grid functions)
Definition metric_spaces.h:192
virtual std::string config_string() const
print config string
Definition metric_spaces.h:233
int m_quadorder
Definition metric_spaces.h:196
std::string function_name()
Definition metric_spaces.h:227
IGridFunctionSpace< TGridFunction > base_type
Definition metric_spaces.h:202
virtual double distance2(TGridFunction &uFine, TGridFunction &uCoarse)=0
IComponentSpace(const char *fctNames, int order)
Definition metric_spaces.h:208
IComponentSpace(const char *fctNames, const char *ssNames, int order)
Definition metric_spaces.h:211
IComponentSpace(const char *fctNames)
Definition metric_spaces.h:205
virtual double norm(TGridFunction &uFine)
norm (for grid functions)
Definition metric_spaces.h:217
virtual double norm2(TGridFunction &uFine)=0
virtual ~IComponentSpace()
Definition metric_spaces.h:214
std::string m_fctNames
Definition metric_spaces.h:194
virtual double distance(TGridFunction &uFine, TGridFunction &uCoarse)
distance (for grid functions)
Definition metric_spaces.h:221
const char * m_ssNames
Definition metric_spaces.h:195
static const int dim
Definition metric_spaces.h:203
Abstract base class for grid functions.
Definition metric_spaces.h:82
virtual double distance(vector_type &x, vector_type &y)
OVERRIDE distance (for vectors)
Definition metric_spaces.h:115
virtual ~IGridFunctionSpace()
DTOR.
Definition metric_spaces.h:89
virtual std::string config_string() const
Definition metric_spaces.h:121
virtual double distance2(TGridFunction &x, TGridFunction &y)=0
virtual double norm(vector_type &x)
OVERRIDE norm (for vectors)
Definition metric_spaces.h:107
TGridFunction grid_function_type
Definition metric_spaces.h:86
virtual double norm(TGridFunction &x)=0
norm (for grid functions)
TGridFunction::vector_type vector_type
Definition metric_spaces.h:85
virtual double distance(TGridFunction &x, TGridFunction &y)=0
distance (for grid functions)
virtual double scaling() const
Definition metric_spaces.h:118
virtual double norm2(TGridFunction &x)=0
Definition metric_spaces.h:149
W weight_type
Definition metric_spaces.h:151
ConstSmartPtr< weight_type > m_spWeight
Definition metric_spaces.h:167
void set_weight(ConstSmartPtr< weight_type > spWeight)
for weighted norms
Definition metric_spaces.h:160
IObjectWithWeights()
Definition metric_spaces.h:153
ConstSmartPtr< weight_type > get_weight()
Definition metric_spaces.h:163
IObjectWithWeights(ConstSmartPtr< weight_type > spW)
Definition metric_spaces.h:156
Definition metric_spaces.h:503
L2DistIntegrand< TGridFunction >::weight_type weight_type
Definition metric_spaces.h:506
IComponentSpace< TGridFunction > base_type
Definition metric_spaces.h:505
L2ComponentSpace(const char *fctNames, int order, double weight, const char *ssNames=0)
Definition metric_spaces.h:516
L2ComponentSpace(const char *fctNames, int order, ConstSmartPtr< weight_type > spWeight, const char *ssNames=0)
Definition metric_spaces.h:519
L2ComponentSpace(const char *fctNames, int order)
Definition metric_spaces.h:513
~L2ComponentSpace()
DTOR.
Definition metric_spaces.h:523
double distance2(TGridFunction &uFine, TGridFunction &uCoarse)
distance (for grid functions)
Definition metric_spaces.h:538
IObjectWithWeights< weight_type > weighted_obj_type
Definition metric_spaces.h:507
L2ComponentSpace(const char *fctNames)
CTOR.
Definition metric_spaces.h:510
double norm2(TGridFunction &uFine)
norm (for grid functions)
Definition metric_spaces.h:534
Definition metric_spaces.h:551
L2QuotientSpace(const char *fctNames, int order)
Definition metric_spaces.h:561
~L2QuotientSpace()
DTOR.
Definition metric_spaces.h:571
IComponentSpace< TGridFunction > base_type
Definition metric_spaces.h:553
L2QuotientSpace(const char *fctNames)
CTOR.
Definition metric_spaces.h:558
L2QuotientSpace(const char *fctNames, int order, ConstSmartPtr< weight_type > spWeight, const char *ssNames=0)
Definition metric_spaces.h:567
double distance2(TGridFunction &uFine, TGridFunction &uCoarse)
distance (for grid functions)
Definition metric_spaces.h:599
double norm2(TGridFunction &u)
norm (for grid functions)
Definition metric_spaces.h:582
IObjectWithWeights< weight_type > weighted_obj_type
Definition metric_spaces.h:555
L2DistIntegrand< TGridFunction >::weight_type weight_type
Definition metric_spaces.h:554
L2QuotientSpace(const char *fctNames, int order, double weight, const char *ssNames=0)
Definition metric_spaces.h:564
Definition multi_grid.h:72
TChild * get_child(TElem *elem, size_t ind) const
returns the i-th child of the given child-type
Definition multi_grid.h:268
size_t num_children(TElem *elem) const
returns the number of children of the given child-type
Definition multi_grid.h:225
Group of subsets.
Definition subset_group.h:51
size_t size() const
number of subsets in this group
Definition subset_group.h:122
void add_all()
select all subsets of underlying subset handler
Definition subset_group.cpp:133
void add(int si)
adds a subset by number to this group
Definition subset_group.cpp:64
Represents the surface view of a multi-grid hierarchy.
Definition surface_view.h:61
bool is_contained(TGeomObj *obj, const GridLevel &gl, SurfaceState validStates=ALL) const
returns if the element is contained in the surface view
Definition surface_view_impl.hpp:442
@ SURFACE_RIM
Definition surface_view.h:94
@ ALL
Definition surface_view.h:102
@ SHADOW_RIM_COPY
Definition surface_view.h:95
Wrapper class for time dependence.
Definition metric_spaces.h:459
void update_time_data(number tScale)
characteristic time
Definition metric_spaces.h:480
virtual ~TimeDependentSpace()
DTOR.
Definition metric_spaces.h:469
double scaling() const
scaling (OVERRIDE)
Definition metric_spaces.h:476
IGridFunctionSpace< TGridFunction > base_type
Definition metric_spaces.h:461
SmartPtr< comp_space_type > m_spSpatialSpace
Definition metric_spaces.h:493
TimeDependentSpace(SmartPtr< comp_space_type > spSpace, number tScale)
time dependent CTOR
Definition metric_spaces.h:465
IComponentSpace< TGridFunction > comp_space_type
Definition metric_spaces.h:462
number m_tScale
Definition metric_spaces.h:494
std::string config_string() const
print config string
Definition metric_spaces.h:484
For arbitrary UserData (of type TData), this class defines the integrand .
Definition integrate.h:557
#define PCL_RO_SUM
Definition pcl_methods.h:63
int NumProcs()
returns the number of processes
Definition pcl_base.cpp:91
const NullSmartPtr SPNULL
The equivalent to NULL for smart pointers.
Definition smart_pointer.h:90
#define UG_ASSERT(expr, msg)
Definition assert.h:70
#define UG_CATCH_THROW(msg)
Definition error.h:64
#define UG_LOG(msg)
Definition log.h:367
#define UG_COND_THROW(cond, msg)
UG_COND_THROW(cond, msg) : performs a UG_THROW(msg) if cond == true.
Definition error.h:61
double number
Definition types.h:124
number L2Distance2(TGridFunction &spGridFct1, const char *cmp1, TGridFunction &spGridFct2, const char *cmp2, int quadOrder, const char *subsets, ConstSmartPtr< typename L2Integrand< TGridFunction >::weight_type > spWeight, number avgDist12=0.0)
computes the squared l2 distance between two functions
Definition integrate.h:1911
number L2Norm2(TGridFunction &u, const char *cmp, int quadOrder, const char *subsets, ConstSmartPtr< typename L2Integrand< TGridFunction >::weight_type > spWeight)
Definition integrate.h:1680
number IntegrateSubsets(IIntegrand< number, TGridFunction::dim > &spIntegrand, TGridFunction &spGridFct, const char *subsets, int quadOrder, std::string quadType=std::string())
Definition integrate.h:393
void TokenizeTrimString(const string &str, vector< string > &vToken, const char delimiter)
Definition string_util.cpp:83
@ VOLUME
Definition grid_base_objects.h:63
@ VERTEX
Definition grid_base_objects.h:60
@ EDGE
Definition grid_base_objects.h:61
@ FACE
Definition grid_base_objects.h:62
number L2Error(SmartPtr< UserData< number, TGridFunction::dim > > spExactSol, TGridFunction &gridFct, const char *cmp, number time, int quadOrder, const char *subsets)
computes the l2 error function on the whole domain or on some subsets
Definition integrate.h:1185
number Integral(SmartPtr< UserData< number, TGridFunction::dim > > spData, TGridFunction &spGridFct, const char *subsets, number time, int quadOrder, std::string quadType)
Definition integrate.h:856
number & DoFRef(TMatrix &mat, const DoFIndex &iInd, const DoFIndex &jInd)
Definition multi_index.h:276
SmartPtr< T, FreePolicy > make_sp(T *inst)
returns a SmartPtr for the passed raw pointer
Definition smart_pointer.h:836
SurfaceView::traits< TElem >::const_iterator const_iterator
Definition dof_distribution.h:82