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)
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)
131 virtual double norm(TGridFunction& x) {
…}
134 virtual double norm2(TGridFunction& x)
135 {
double n = this->
norm(x);
return n*n; }
134 virtual double norm2(TGridFunction& x) {
…}
137 virtual double distance(TGridFunction& x, TGridFunction& y)
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;}
140 virtual double distance2(TGridFunction& x, TGridFunction& y) {
…}
179 virtual void update_time_data(number dt) = 0;
181 virtual bool is_time_dependent() const
189template <
typename TGr
idFunction>
200 static const int dim=TGridFunction::dim;
214 virtual double norm(TGridFunction& uFine)
215 {
return sqrt(
norm2(uFine)); }
214 virtual double norm(TGridFunction& uFine) {
…}
218 virtual double distance(TGridFunction& uFine, TGridFunction& uCoarse)
219 {
return sqrt(
distance2(uFine, uCoarse)); }
218 virtual double distance(TGridFunction& uFine, TGridFunction& uCoarse) {
…}
221 virtual double norm2(TGridFunction& uFine) = 0;
222 virtual double distance2(TGridFunction& uFine, TGridFunction& uCoarse) = 0;
229 std::stringstream ss;
232 ss << this->m_fctNames <<
", " << this->m_ssNames <<
", " << this->m_quadorder
233 <<
", type=" << std::endl;
236 ss << this->m_fctNames <<
", (no name), " << this->m_quadorder
237 <<
", type=" << std::endl;
246template <
typename TGr
idFunction>
259 virtual double norm2(TGridFunction& uFine)
266 UG_CATCH_THROW(
"Could not convert function names to function indices.");
273 UG_CATCH_THROW(
"Could not convert subset names to subset indices.");
281 const size_t sgSz = sg.
size();
282 for (
size_t i = 0; i < sgSz; ++i)
285 if (dd->max_dofs(
VERTEX, si)) add_norm_values<Vertex>(sum, uFine, dd, sg[i], fg);
286 if (dd->max_dofs(
EDGE, si)) add_norm_values<Edge>(sum, uFine, dd, sg[i], fg);
287 if (dd->max_dofs(
FACE, si)) add_norm_values<Face>(sum, uFine, dd, sg[i], fg);
288 if (dd->max_dofs(
VOLUME, si)) add_norm_values<Volume>(sum, uFine, dd, sg[i], fg);
259 virtual double norm2(TGridFunction& uFine) {
…}
302 virtual double distance2(TGridFunction& uFine, TGridFunction& uCoarse)
306 "GridFunctionComponentSpace::distance2: GF1 DoF distro is not the same as for GF2.\n"
307 "This case is not implemented.");
312 UG_CATCH_THROW(
"Could not convert function names to function indices.");
319 UG_CATCH_THROW(
"Could not convert subset names to subset indices.");
327 const size_t sgSz = sg.
size();
328 for (
size_t i = 0; i < sgSz; ++i)
331 if (dd->max_dofs(
VERTEX, si)) add_distance_values<Vertex>(sum, uFine, uCoarse, dd, sg[i], fg);
332 if (dd->max_dofs(
EDGE, si)) add_distance_values<Edge>(sum, uFine, uCoarse, dd, sg[i], fg);
333 if (dd->max_dofs(
FACE, si)) add_distance_values<Face>(sum, uFine, uCoarse, dd, sg[i], fg);
334 if (dd->max_dofs(
VOLUME, si)) add_distance_values<Volume>(sum, uFine, uCoarse, dd, sg[i], fg);
302 virtual double distance2(TGridFunction& uFine, TGridFunction& uCoarse) {
…}
349 template <
typename TBaseElem>
353 const TGridFunction& uFine,
354 const TGridFunction& uCoarse,
369 std::vector<DoFIndex> vInd;
370 for (; iter != iterEnd; ++iter)
372 TBaseElem* elem = *iter;
377 TBaseElem* child = mg.
get_child<TBaseElem>(elem, 0);
383 for (
size_t fi = 0; fi < nFct; ++fi)
385 dd->inner_dof_indices(elem, fg[fi], vInd);
387 const size_t nDof = vInd.size();
388 for (
size_t dof = 0; dof < nDof; ++dof)
398 template <
typename TBaseElem>
402 const TGridFunction& uFine,
417 std::vector<DoFIndex> vInd;
418 for (; iter != iterEnd; ++iter)
420 TBaseElem* elem = *iter;
425 TBaseElem* child = mg.
get_child<TBaseElem>(elem, 0);
431 for (
size_t fi = 0; fi < nFct; ++fi)
433 dd->inner_dof_indices(elem, fg[fi], vInd);
435 const size_t nDof = vInd.size();
436 for (
size_t dof = 0; dof < nDof; ++dof)
450template <
typename TGr
idFunction>
480 std::stringstream ss;
481 ss <<
"TimeDependentSpace for " << std::endl;
493template <
typename TGr
idFunction>
532 double distance2(TGridFunction& uFine, TGridFunction& uCoarse)
533 {
return L2Distance2(uFine, base_type::m_fctNames.c_str(), uCoarse, base_type::m_fctNames.c_str(),
532 double distance2(TGridFunction& uFine, TGridFunction& uCoarse) {
…}
541template <
typename TGr
idFunction>
558 L2QuotientSpace(
const char *fctNames,
int order,
double weight,
const char* ssNames=0)
581 SPUserData spConst=
make_sp(
new MyConstUserData(1.0));
582 number Meas =
Integral(spConst, u, base_type::m_ssNames, 0.0, 1,
"best");
583 number uAvg =
Integral(u, base_type::m_fctNames.c_str(), base_type::m_ssNames, base_type::m_quadorder);
585 std::cerr <<
"Average:=" << uAvg <<
"/" << Meas <<
" = " << uAvg/Meas << std::endl;
586 SPUserData spAvg =
make_sp(
new MyConstUserData(uAvg/Meas));
587 double qnorm =
L2Error(spAvg, u, base_type::m_fctNames.c_str(), 0.0, base_type::m_quadorder, base_type::m_ssNames);
593 double distance2(TGridFunction& uFine, TGridFunction& uCoarse)
598 SPUserData spConst=
make_sp(
new MyConstUserData(1.0));
599 number Meas =
Integral(spConst, uFine, base_type::m_ssNames, 0.0, 1,
"best");
600 number avgFine =
Integral(uFine, base_type::m_fctNames.c_str(), base_type::m_ssNames, base_type::m_quadorder);
601 number avgCoarse =
Integral(uCoarse, base_type::m_fctNames.c_str(), base_type::m_ssNames, base_type::m_quadorder);
603 std::cerr <<
"Average:=(" << avgFine <<
"-" << avgCoarse<<
")/" << Meas <<
" = " << (avgFine-avgCoarse)/Meas << std::endl;
604 return L2Distance2(uFine, base_type::m_fctNames.c_str(),
605 uCoarse, base_type::m_fctNames.c_str(),
607 (avgFine-avgCoarse)/Meas);
593 double distance2(TGridFunction& uFine, TGridFunction& uCoarse) {
…}
616template <
typename TGr
idFunction>
656 double distance2(TGridFunction& uFine, TGridFunction& uCoarse)
657 {
return H1SemiDistance2<TGridFunction>(uFine, base_type::m_fctNames.c_str(), uCoarse, base_type::m_fctNames.c_str(), base_type::m_quadorder,
m_spWeight); }
656 double distance2(TGridFunction& uFine, TGridFunction& uCoarse) {
…}
670template <typename TGridFunction>
671class KineticEnergyComponentSpace
672: public IComponentSpace<TGridFunction>,
673 public IObjectWithWeights<typename L2Integrand<TGridFunction>::weight_type >
676 typedef IComponentSpace<TGridFunction> base_type;
677 typedef typename L2Integrand<TGridFunction>::weight_type weight_type;
678 typedef IObjectWithWeights<weight_type> weighted_obj_type;
679 typedef DarcyVelocityLinker<TGridFunction::dim> velocity_type;
682 KineticEnergyComponentSpace(SmartPtr<velocity_type> spVelocity, const char *fctNames)
683 : base_type(fctNames), weighted_obj_type(make_sp(new ConstUserNumber<TGridFunction::dim>(1.0))), m_spVelocity(spVelocity) {};
685 KineticEnergyComponentSpace(SmartPtr<velocity_type> spVelocity, const char *fctNames, int order)
686 : base_type(fctNames, order), weighted_obj_type(make_sp(new ConstUserNumber<TGridFunction::dim>(1.0))), m_spVelocity(spVelocity) {};
688 KineticEnergyComponentSpace(SmartPtr<velocity_type> spVelocity, const char *fctNames, int order, number weight, const char* ssNames=0)
689 : base_type(fctNames, ssNames, order), weighted_obj_type(make_sp(new ConstUserNumber<TGridFunction::dim>(weight))), m_spVelocity(spVelocity) {};
691 KineticEnergyComponentSpace(SmartPtr<velocity_type> spVelocity, const char *fctNames, int order, ConstSmartPtr<weight_type> spWeight, const char* ssNames=0)
692 : base_type(fctNames, ssNames, order), weighted_obj_type(spWeight), m_spVelocity(spVelocity) {};
694 KineticEnergyComponentSpace(SmartPtr<velocity_type> spVelocity, const char *fctNames, int order, const char* ssNames, ConstSmartPtr<weight_type> spWeight)
695 : base_type(fctNames, ssNames, order), weighted_obj_type(spWeight), m_spVelocity(spVelocity) {};
698 ~KineticEnergyComponentSpace() {};
701 using IComponentSpace<TGridFunction>::m_quadorder;
702 using IComponentSpace<TGridFunction>::norm;
703 using IComponentSpace<TGridFunction>::distance;
706 double norm2(TGridFunction& u)
708 const char* subsets = NULL;
709 UserDataIntegrandSq<MathVector<TGridFunction::dim>, TGridFunction> integrand2(m_spVelocity, &u, 0.0);
710 return IntegrateSubsets(integrand2, u, subsets, m_quadorder);
714 double distance2(TGridFunction& uFine, TGridFunction& uCoarse)
716 // UG_THROW("Not implemented!");
717 const char* subsets = NULL;
718 UserDataDistIntegrandSq<MathVector<TGridFunction::dim>, TGridFunction> integrand2(m_spVelocity, uFine, 0, uCoarse, 0);
719 return IntegrateSubsets(integrand2, uFine, subsets, m_quadorder);
723 using weighted_obj_type::set_weight;
724 using weighted_obj_type::get_weight;
725 using weighted_obj_type::m_spWeight;
727 void set_velocity(SmartPtr<velocity_type> spVelocity)
728 { m_spVelocity = spVelocity;}
731 SmartPtr<velocity_type> m_spVelocity;
738template <
typename TGr
idFunction>
741 public IObjectWithWeights<typename H1EnergyDistIntegrand<TGridFunction>::weight_type >
748 static const int dim = TGridFunction::dim;
781 return IntegrateSubsets(integrand2, uFine, base_type::m_ssNames, base_type::m_quadorder);
783 return H1EnergyNorm2<TGridFunction>(uFine, base_type::m_fctNames.c_str(), base_type::m_quadorder, base_type::m_ssNames,
weighted_obj_type::m_spWeight);
788 double distance2(TGridFunction& uFine, TGridFunction& uCoarse)
789 {
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); }
788 double distance2(TGridFunction& uFine, TGridFunction& uCoarse) {
…}
804template <
typename TGr
idFunction>
821 {
return H1Norm2<TGridFunction>(uFine, base_type::m_fctNames.c_str(), base_type::m_quadorder, base_type::m_ssNames); }
824 double distance2(TGridFunction& uFine, TGridFunction& uCoarse)
825 {
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); }
824 double distance2(TGridFunction& uFine, TGridFunction& uCoarse) {
…}
835template <
typename TGr
idFunction>
851 double norm(TGridFunction& uFine)
852 {
return(sqrt(
norm2(uFine))); }
851 double norm(TGridFunction& uFine) {
…}
861 double snorm2 = it->first->norm2(uFine);
862 unorm2 += it->second * snorm2;
863 UG_LOG(
"composite-norm2:\t" << snorm2 <<
"\t*\t" << it->second
864 <<
"\t=\t" << it->second * snorm2 << std::endl);
866 UG_LOG(
"composite-norm2-final:\t" << unorm2 << std::endl);
871 double distance2(TGridFunction& uFine, TGridFunction& uCoarse)
877 double sdist2 = it->first->distance2(uFine, uCoarse);
878 unorm2 += it->second * sdist2;
879 UG_LOG(
"composite-dist2:\t" << sdist2 <<
"\t*\t" << it->second
880 <<
"\t=\t" << it->second * sdist2 << std::endl);
882 UG_LOG(
"composite-dist2-final:\t" << unorm2 << std::endl);
871 double distance2(TGridFunction& uFine, TGridFunction& uCoarse) {
…}
887 double distance(TGridFunction& uFine, TGridFunction& uCoarse)
888 {
return sqrt(
distance2(uFine, uCoarse)); }
887 double distance(TGridFunction& uFine, TGridFunction& uCoarse) {
…}
901 std::stringstream ss;
902 ss <<
"CompositeSpace:" << std::endl;
906 { ss << it->first->config_string(); }
919 if (spSpaceT.
valid()) spSpaceT->update_time_data(t);
930 if (spSpaceT.
valid())
return true;
956 void add(SmartPtr<obj_type> spSubSpace)
957 { m_spSubspaces.push_back(make_sp(new ITimeDependentSpace(spSubSpace))); }
960 void update_time_data(number t)
962 for (typename std::vector<SmartPtr<obj_type> >::iterator it = m_spSubspaces.begin();
963 it!= m_spSubspaces.end(); ++it)
964 { if ((*it)->is_time_dependent()) (*it)->update_time_data(t); }
968 bool is_time_dependent() const
970 for (typename std::vector<SmartPtr<obj_type> >::const_iterator it = m_spSubspaces.begin();
971 it!= m_spSubspaces.end(); ++it)
972 { 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:837
const std::vector< weighted_obj_type > & get_subspaces() const
Definition metric_spaces.h:935
IGridFunctionSpace< TGridFunction > base_type
Definition metric_spaces.h:839
TimeDependentSpace< TGridFunction > time_dependent_obj_type
Definition metric_spaces.h:841
std::string config_string() const
print config string
Definition metric_spaces.h:899
double norm(TGridFunction &uFine)
norm (for grid functions)
Definition metric_spaces.h:851
double norm2(TGridFunction &uFine)
Definition metric_spaces.h:855
bool is_time_dependent() const
Check, if any object is time-dependent.
Definition metric_spaces.h:924
double distance2(TGridFunction &uFine, TGridFunction &uCoarse)
Definition metric_spaces.h:871
std::vector< weighted_obj_type > m_spWeightedSubspaces
Definition metric_spaces.h:939
void add(SmartPtr< obj_type > spSubSpace)
add space to composite (with weight 1.0)
Definition metric_spaces.h:891
std::pair< SmartPtr< obj_type >, number > weighted_obj_type
Definition metric_spaces.h:842
void update_time_data(number t)
Forward update to all members.
Definition metric_spaces.h:913
void add(SmartPtr< obj_type > spSubSpace, number sigma)
add space to composite (with variable weight)
Definition metric_spaces.h:895
double distance(TGridFunction &uFine, TGridFunction &uCoarse)
Definition metric_spaces.h:887
CompositeSpace()
Definition metric_spaces.h:844
IComponentSpace< TGridFunction > obj_type
Definition metric_spaces.h:840
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:249
virtual double distance2(TGridFunction &uFine, TGridFunction &uCoarse)
Definition metric_spaces.h:302
GridFunctionComponentSpace(const char *fctNames, const char *ssNames)
Definition metric_spaces.h:254
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:351
virtual double norm2(TGridFunction &uFine)
Definition metric_spaces.h:259
void add_norm_values(number &sum, const TGridFunction &uFine, ConstSmartPtr< DoFDistribution > dd, int si, const FunctionGroup &fg) const
Definition metric_spaces.h:400
GridFunctionComponentSpace(const char *fctNames)
Definition metric_spaces.h:251
virtual ~GridFunctionComponentSpace()
Definition metric_spaces.h:257
Definition metric_spaces.h:807
~H1ComponentSpace()
Definition metric_spaces.h:814
H1ComponentSpace(const char *fctNames, const char *ssNames, int order)
Definition metric_spaces.h:813
H1ComponentSpace(const char *fctNames)
Definition metric_spaces.h:811
double norm2(TGridFunction &uFine)
norm (for grid functions)
Definition metric_spaces.h:820
H1ComponentSpace(const char *fctNames, int order)
Definition metric_spaces.h:812
IComponentSpace< TGridFunction > base_type
Definition metric_spaces.h:809
double distance2(TGridFunction &uFine, TGridFunction &uCoarse)
norm (for grid functions)
Definition metric_spaces.h:824
Definition metric_spaces.h:742
IObjectWithWeights< weight_type > weighted_obj_type
Definition metric_spaces.h:746
H1SemiDistIntegrand< TGridFunction >::weight_type weight_type
Definition metric_spaces.h:745
H1EnergyComponentSpace(const char *fctNames, int order, ConstSmartPtr< weight_type > spWeight, const char *ssNames=0)
Definition metric_spaces.h:760
double norm2(TGridFunction &uFine)
Definition metric_spaces.h:776
SmartPtr< velocity_type > m_spVelocity
Definition metric_spaces.h:799
double distance2(TGridFunction &uFine, TGridFunction &uCoarse)
Definition metric_spaces.h:788
IComponentSpace< TGridFunction > base_type
Definition metric_spaces.h:744
UserData< MathVector< dim >, dim > velocity_type
Definition metric_spaces.h:749
static const int dim
Definition metric_spaces.h:748
~H1EnergyComponentSpace()
DTOR.
Definition metric_spaces.h:767
H1EnergyComponentSpace(const char *fctNames)
Definition metric_spaces.h:751
H1EnergyComponentSpace(const char *fctNames, int order)
Definition metric_spaces.h:754
H1EnergyComponentSpace(const char *fctNames, int order, number weight, const char *ssNames=0)
Definition metric_spaces.h:757
void set_velocity(SmartPtr< velocity_type > spVelocity)
Definition metric_spaces.h:795
Definition metric_spaces.h:620
H1SemiDistIntegrand< TGridFunction >::weight_type weight_type
Definition metric_spaces.h:623
IComponentSpace< TGridFunction > base_type
Definition metric_spaces.h:622
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:636
IObjectWithWeights< weight_type > weighted_obj_type
Definition metric_spaces.h:624
H1SemiComponentSpace(const char *fctNames, int order, const char *ssNames, ConstSmartPtr< weight_type > spWeight)
Definition metric_spaces.h:639
H1SemiComponentSpace(const char *fctNames, int order)
Definition metric_spaces.h:630
~H1SemiComponentSpace()
DTOR.
Definition metric_spaces.h:643
H1SemiComponentSpace(const char *fctNames, int order, number weight, const char *ssNames=0)
Definition metric_spaces.h:633
H1SemiComponentSpace(const char *fctNames)
Definition metric_spaces.h:627
double norm2(TGridFunction &uFine)
Definition metric_spaces.h:652
double distance2(TGridFunction &uFine, TGridFunction &uCoarse)
Definition metric_spaces.h:656
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:227
int m_quadorder
Definition metric_spaces.h:196
IGridFunctionSpace< TGridFunction > base_type
Definition metric_spaces.h:199
virtual double distance2(TGridFunction &uFine, TGridFunction &uCoarse)=0
IComponentSpace(const char *fctNames, int order)
Definition metric_spaces.h:205
IComponentSpace(const char *fctNames, const char *ssNames, int order)
Definition metric_spaces.h:208
IComponentSpace(const char *fctNames)
Definition metric_spaces.h:202
virtual double norm(TGridFunction &uFine)
norm (for grid functions)
Definition metric_spaces.h:214
virtual double norm2(TGridFunction &uFine)=0
virtual ~IComponentSpace()
Definition metric_spaces.h:211
std::string m_fctNames
Definition metric_spaces.h:194
virtual double distance(TGridFunction &uFine, TGridFunction &uCoarse)
distance (for grid functions)
Definition metric_spaces.h:218
const char * m_ssNames
Definition metric_spaces.h:195
static const int dim
Definition metric_spaces.h:200
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:497
L2DistIntegrand< TGridFunction >::weight_type weight_type
Definition metric_spaces.h:500
IComponentSpace< TGridFunction > base_type
Definition metric_spaces.h:499
L2ComponentSpace(const char *fctNames, int order, double weight, const char *ssNames=0)
Definition metric_spaces.h:510
L2ComponentSpace(const char *fctNames, int order, ConstSmartPtr< weight_type > spWeight, const char *ssNames=0)
Definition metric_spaces.h:513
L2ComponentSpace(const char *fctNames, int order)
Definition metric_spaces.h:507
~L2ComponentSpace()
DTOR.
Definition metric_spaces.h:517
double distance2(TGridFunction &uFine, TGridFunction &uCoarse)
distance (for grid functions)
Definition metric_spaces.h:532
IObjectWithWeights< weight_type > weighted_obj_type
Definition metric_spaces.h:501
L2ComponentSpace(const char *fctNames)
CTOR.
Definition metric_spaces.h:504
double norm2(TGridFunction &uFine)
norm (for grid functions)
Definition metric_spaces.h:528
Definition metric_spaces.h:545
L2QuotientSpace(const char *fctNames, int order)
Definition metric_spaces.h:555
~L2QuotientSpace()
DTOR.
Definition metric_spaces.h:565
IComponentSpace< TGridFunction > base_type
Definition metric_spaces.h:547
L2QuotientSpace(const char *fctNames)
CTOR.
Definition metric_spaces.h:552
L2QuotientSpace(const char *fctNames, int order, ConstSmartPtr< weight_type > spWeight, const char *ssNames=0)
Definition metric_spaces.h:561
double distance2(TGridFunction &uFine, TGridFunction &uCoarse)
distance (for grid functions)
Definition metric_spaces.h:593
double norm2(TGridFunction &u)
norm (for grid functions)
Definition metric_spaces.h:576
IObjectWithWeights< weight_type > weighted_obj_type
Definition metric_spaces.h:549
L2DistIntegrand< TGridFunction >::weight_type weight_type
Definition metric_spaces.h:548
L2QuotientSpace(const char *fctNames, int order, double weight, const char *ssNames=0)
Definition metric_spaces.h:558
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:453
void update_time_data(number tScale)
characteristic time
Definition metric_spaces.h:474
virtual ~TimeDependentSpace()
DTOR.
Definition metric_spaces.h:463
double scaling() const
scaling (OVERRIDE)
Definition metric_spaces.h:470
IGridFunctionSpace< TGridFunction > base_type
Definition metric_spaces.h:455
SmartPtr< comp_space_type > m_spSpatialSpace
Definition metric_spaces.h:487
TimeDependentSpace(SmartPtr< comp_space_type > spSpace, number tScale)
time dependent CTOR
Definition metric_spaces.h:459
IComponentSpace< TGridFunction > comp_space_type
Definition metric_spaces.h:456
number m_tScale
Definition metric_spaces.h:488
std::string config_string() const
print config string
Definition metric_spaces.h:478
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
function ProblemDisc new(problemDesc, dom)