33#ifndef __LEVEL_SET__LEVEL_SET_USER_DATA__
34#define __LEVEL_SET__LEVEL_SET_USER_DATA__
53template <
typename TData,
int dim,
typename TImpl>
55:
public StdUserData<LevelSetUserDataBase<TData,dim,TImpl>, TData, dim>
62 UG_THROW(
"LevelSetUserData: Need element.");
69 UG_THROW(
"LevelSetUserData: Need element.");
83 getImpl().template evaluate<refDim>(vValue,vGlobIP,
time,si,elem,
84 vCornerCoords,vLocIP,nip,u,vJT);
91 const int si = this->
subset();
94 elem, vCornerCoords, this->
template local_ips<dim>(
s),
101 const int si = this->
subset();
104 elem, vCornerCoords, this->
template local_ips<dim>(
s),
116 TImpl&
getImpl() {
return static_cast<TImpl&
>(*this);}
119 const TImpl&
getImpl()
const {
return static_cast<const TImpl&
>(*this);}
124template <
typename TGr
idFunction>
127 LevelSetUserData<TGridFunction> >,
virtual public INewtonUpdate
139 static const int dim = domain_type::dim;
145 typedef typename TGridFunction::template dim_traits<dim>::grid_base_object
elem_type;
220 template <
int refDim>
234 const size_t numVertices = element->num_vertices();
235 std::vector<Vertex*> childVertex(numVertices);
236 std::vector<number> phi(numVertices);
243 for(
size_t i = 0; i < numVertices; ++i){
244 childVertex[i] = element->vertex(i);
248 size_t numChildren =
m_grid->template num_children<elem_type>(element);
251 elem_type* childElem =
m_grid->template get_child<elem_type>(element,0);
252 numChildren =
m_grid->template num_children<elem_type>(childElem);
254 while (numChildren>0){
255 childElem =
m_grid->template get_child<elem_type>(childElem,0);
256 numChildren =
m_grid->template num_children<elem_type>(childElem);
259 for (
size_t i=0;i<nip;i++){
260 for (
size_t j=0;j<lowerLevel;j++){
261 childVertex[i]=
m_grid->template get_child<Vertex>(childVertex[i],0);
266 std::vector<DoFIndex> ind;
267 for (
size_t i=0;i<numVertices;i++){
268 m_phi->dof_indices(childVertex[i], 0, ind);
273 for (
size_t i=0;i<numVertices;i++){
277 if (phi[i]<0) inside=
true;
278 for (
size_t j=i+1;j<numVertices;j++){
279 if (phi[i]*phi[j]<0){
287 (*m_imInsideData)(vValue,
297 (*m_imOutsideData)(vValue,
311 (*m_imInsideData)(vValueInside,
320 (*m_imOutsideData)(vValueOutside,
330 for(
size_t ip = 0;
ip < nip; ++
ip)
336 std::vector<number> vShape;
343 rTrialSpace.
shapes(vShape, vLocIP[
ip]);
346 std::vector<DoFIndex> ind;
347 m_phi->dof_indices(elem, 0, ind);
351 for(
size_t sh = 0; sh < vShape.size(); ++sh)
353 phiValue += phi[sh] * vShape[sh];
355 if (phiValue<0) vValue[
ip] = vValueInside[
ip];
356 else vValue[
ip] = vValueOutside[
ip];
366 std::vector<number> vShape;
382 for(
size_t i = 0; i < numVertices; ++i){
383 vVrt[i] = element->vertex(i);
384 coCoord[i] = posAcc[vVrt[i]];
388 geo.
update(elem, &(coCoord[0]), domain.subset_handler().get());
389 std::vector<number> phiSideValue(geo.
num_sh());
391 for (
size_t i=0;i<geo.
num_scv();i++){
397 rTrialSpace.
shapes(vShape, geo.
scv(i).local_ip());
400 std::vector<DoFIndex> ind;
401 m_phi->dof_indices(elem, 0, ind);
404 phiSideValue[i] = 0.0;
405 for(
size_t sh = 0; sh < vShape.size(); ++sh)
407 phiSideValue[i] += phi[sh] * vShape[sh];
410 for (
size_t ip=0;
ip<nip;
ip++){
413 number phiTo = phiSideValue[scvf.
to()];
417 vValue[
ip] = vValueInside[
ip];
419 vValue[
ip] = vValueOutside[
ip];
425 vValue[
ip] = vValueInside[
ip];
427 theta = phiFrom/(phiFrom-phiTo);
428 vValue[
ip] = vValueInside[
ip]*vValueOutside[
ip]/(theta*vValueInside[
ip]+(1-theta)*vValueOutside[
ip]);
433 vValue[
ip] = vValueOutside[
ip];
435 theta = phiFrom/(phiFrom-phiTo);
436 vValue[
ip] = vValueOutside[
ip]*vValueInside[
ip]/(theta*vValueOutside[
ip]+(1-theta)*vValueInside[
ip]);
451template <
typename TGr
idFunction>
454 LevelSetUserVectorData<TGridFunction> >,
virtual public INewtonUpdate
466 static const int dim = domain_type::dim;
472 typedef typename TGridFunction::template dim_traits<dim>::grid_base_object
elem_type;
514 for (
int i=0;i<
dim;i++){
515 f->set_entry(i, f_x);
523 UG_THROW(
"NavierStokes: Setting source vector of dimension 2"
524 " to a Discretization for world dim " <<
dim);
527 f->set_entry(0, f_x);
528 f->set_entry(1, f_y);
536 UG_THROW(
"NavierStokes: Setting source vector of dimension 3"
537 " to a Discretization for world dim " <<
dim);
542 f->set_entry(0, f_x);
543 f->set_entry(1, f_y);
544 f->set_entry(2, f_z);
564 for (
int i=0;i<
dim;i++){
565 f->set_entry(i, f_x);
573 UG_THROW(
"NavierStokes: Setting source vector of dimension 2"
574 " to a Discretization for world dim " <<
dim);
577 f->set_entry(0, f_x);
578 f->set_entry(1, f_y);
586 UG_THROW(
"NavierStokes: Setting source vector of dimension 3"
587 " to a Discretization for world dim " <<
dim);
592 f->set_entry(0, f_x);
593 f->set_entry(1, f_y);
594 f->set_entry(2, f_z);
624 template <
int refDim>
638 const size_t numVertices = element->num_vertices();
639 std::vector<Vertex*> childVertex(numVertices);
640 std::vector<number> phi(numVertices);
642 for (
size_t i=0;i<nip;i++){
647 for(
size_t i = 0; i < numVertices; ++i){
648 childVertex[i] = element->vertex(i);
652 size_t numChildren =
m_grid->template num_children<elem_type>(element);
655 elem_type* childElem =
m_grid->template get_child<elem_type>(element,0);
656 numChildren =
m_grid->template num_children<elem_type>(childElem);
658 while (numChildren>0){
659 childElem =
m_grid->template get_child<elem_type>(childElem,0);
660 numChildren =
m_grid->template num_children<elem_type>(childElem);
663 for (
size_t i=0;i<nip;i++){
664 for (
size_t j=0;j<lowerLevel;j++){
665 childVertex[i]=
m_grid->template get_child<Vertex>(childVertex[i],0);
670 std::vector<DoFIndex> ind;
671 for (
size_t i=0;i<numVertices;i++){
672 m_phi->dof_indices(childVertex[i], 0, ind);
677 for (
size_t i=0;i<numVertices;i++){
681 if (phi[i]<0) inside=
true;
682 for (
size_t j=i+1;j<numVertices;j++){
683 if (phi[i]*phi[j]<0){
691 (*m_imInsideData)(vValue,
701 (*m_imOutsideData)(vValue,
715 (*m_imInsideData)(vValueInside,
724 (*m_imOutsideData)(vValueOutside,
734 for(
size_t ip = 0;
ip < nip; ++
ip)
740 std::vector<number> vShape;
747 rTrialSpace.
shapes(vShape, vLocIP[
ip]);
750 std::vector<DoFIndex> ind;
751 m_phi->dof_indices(elem, 0, ind);
755 for(
size_t sh = 0; sh < vShape.size(); ++sh)
757 phiValue += phi[sh] * vShape[sh];
759 if (phiValue<0) vValue[
ip] = vValueInside[
ip];
760 else vValue[
ip] = vValueOutside[
ip];
770 std::vector<number> vShape;
786 for(
size_t i = 0; i < numVertices; ++i){
787 vVrt[i] = element->vertex(i);
788 coCoord[i] = posAcc[vVrt[i]];
792 geo.
update(elem, &(coCoord[0]), domain.subset_handler().get());
793 std::vector<number> phiSideValue(geo.
num_sh());
795 for (
size_t i=0;i<geo.
num_scv();i++){
801 rTrialSpace.
shapes(vShape, geo.
scv(i).local_ip());
804 std::vector<DoFIndex> ind;
805 m_phi->dof_indices(elem, 0, ind);
808 phiSideValue[i] = 0.0;
809 for(
size_t sh = 0; sh < vShape.size(); ++sh)
811 phiSideValue[i] += phi[sh] * vShape[sh];
814 for (
size_t ip=0;
ip<nip;
ip++){
817 number phiTo = phiSideValue[scvf.
to()];
821 vValue[
ip] = vValueInside[
ip];
823 vValue[
ip] = vValueOutside[
ip];
829 vValue[
ip] = vValueInside[
ip];
831 theta = phiFrom/(phiFrom-phiTo);
832 for (
int d=0;d<
dim;d++)
833 vValue[
ip][d] = vValueInside[
ip][d]*vValueOutside[
ip][d]/(theta*vValueInside[
ip][d]+(1-theta)*vValueOutside[
ip][d]);
838 vValue[
ip] = vValueOutside[
ip];
840 theta = phiFrom/(phiFrom-phiTo);
841 for (
int d=0;d<
dim;d++)
842 vValue[
ip][d] = vValueOutside[
ip][d]*vValueInside[
ip][d]/(theta*vValueOutside[
ip][d]+(1-theta)*vValueInside[
ip][d]);
858template<
typename TElem,
typename TGr
id>
860 size_t numChildren =
grid->template num_children<TElem>(elem);
862 childElemVector.push_back(elem);
864 for (
size_t i=0;i<numChildren;i++){
865 TElem* childElem =
grid->template get_child<TElem>(elem,i);
866 size_t nc=
grid->template num_children<TElem>(childElem);
868 childElemVector.push_back(childElem);
870 collect_finest_level_children<TElem,TGrid>(childElemVector,childElem,
grid);
876template<
typename TElem,
typename TPos,
int dim>
879 size_t noc=elem->num_vertices();
880 for (
size_t i=0;i<noc;i++){
881 bary+=posA[elem->vertex(i)];
886template <
typename TGr
idFunction>
889 CRTwoPhaseSource<TGridFunction> >,
virtual public INewtonUpdate
901 static const int dim = domain_type::dim;
907 typedef typename TGridFunction::template dim_traits<dim>::grid_base_object
elem_type;
949 for (
int i=0;i<
dim;i++){
950 f->set_entry(i, f_x);
958 UG_THROW(
"NavierStokes: Setting source vector of dimension 2"
959 " to a Discretization for world dim " <<
dim);
962 f->set_entry(0, f_x);
963 f->set_entry(1, f_y);
971 UG_THROW(
"NavierStokes: Setting source vector of dimension 3"
972 " to a Discretization for world dim " <<
dim);
977 f->set_entry(0, f_x);
978 f->set_entry(1, f_y);
979 f->set_entry(2, f_z);
1012 for (
int si=0;si<
m_phi->num_subsets();++si){
1013 if (
m_phi->num_fct(si)<2){
1014 UG_THROW(
"No curvature component in approximation space.");
1017 UG_THROW(
"First component in approximation space must be of Lagrange 1 type.");
1020 UG_THROW(
"Second component in approximation space must be of piecewise constant type.");
1034 template <
int refDim>
1047 (*m_imSource)(vValue,
1060 const size_t numVertices = element->num_vertices();
1061 std::vector<Vertex*> childVertex(numVertices);
1062 std::vector<number> phi(numVertices);
1065 for(
size_t i = 0; i < numVertices; ++i){
1066 childVertex[i] = element->vertex(i);
1071 size_t numChildren =
m_grid->template num_children<elem_type>(element);
1072 if (numChildren!=0){
1073 size_t lowerLevel=0;
1074 elem_type* childElem =
m_grid->template get_child<elem_type>(element,0);
1075 numChildren =
m_grid->template num_children<elem_type>(childElem);
1077 while (numChildren>0){
1078 childElem =
m_grid->template get_child<elem_type>(childElem,0);
1079 numChildren =
m_grid->template num_children<elem_type>(childElem);
1082 for (
size_t i=0;i<nip;i++){
1083 for (
size_t j=0;j<lowerLevel;j++){
1084 childVertex[i]=
m_grid->template get_child<Vertex>(childVertex[i],0);
1087 }
else onfinestlevel=
true;
1090 std::vector<DoFIndex> ind;
1091 for (
size_t i=0;i<numVertices;i++){
1092 m_phi->dof_indices(childVertex[i], 0, ind);
1097 for (
size_t i=0;i<numVertices;i++){
1103 for (
size_t j=i+1;j<numVertices;j++){
1105 if (phi[i]*phi[j]<0){
1110 if (onls==
true)
break;
1114 (*m_imDensity)(densityValue,
1123 for (
int d=0;d<
dim;d++){
1124 for (
size_t i=0;i<nip;i++){
1134 std::vector<number> vShape;
1150 for (
size_t i=0;i<nip;i++){
1151 surftensSource[i]=0;
1153 if (onfinestlevel==
true){
1154 evaluationElem = element;
1158 computeElemBarycenter<elem_type,position_accessor_type,dim>(coarseElementBary,element,aaPos);
1160 std::vector<elem_type*> childElems;
1161 collect_finest_level_children<elem_type,grid_type>(childElems,element,
m_grid);
1162 evaluationElem = childElems[0];
1164 for (
size_t ce=0;ce<childElems.size();ce++){
1166 elem_type* currentElem = childElems[ce];
1167 size_t elnoc = currentElem->num_vertices();
1168 bool currentElemOnLS=
false;
1169 std::vector<number> currentPhi(elnoc);
1170 for (
size_t j=0;j<elnoc;j++){
1171 m_phi->dof_indices(currentElem->vertex(j),0,ind);
1174 for (
size_t i=0;i<numVertices;i++){
1175 if (currentPhi[i]==0){
1178 for (
size_t j=i+1;j<numVertices;j++){
1179 if (currentPhi[i]*currentPhi[j]<0){
1180 currentElemOnLS =
true;
1184 if (currentElemOnLS==
true)
break;
1186 if (currentElemOnLS==
false)
continue;
1187 computeElemBarycenter<elem_type,position_accessor_type,dim>(bary,currentElem,aaPos);
1189 if (localdist<dist){
1191 evaluationElem = childElems[ce];
1195 m_phi->dof_indices(evaluationElem,1, ind);
1202 const size_t eeNumVertices = evaluationElem->num_vertices();
1203 for(
size_t i = 0; i < eeNumVertices; ++i){
1204 vVrt[i] = evaluationElem->vertex(i);
1205 coCoord[i] = posAcc[vVrt[i]];
1209 geo.
update(elem, &(coCoord[0]), domain.subset_handler().get());
1210 std::vector<number> phiSideValue(geo.
num_sh());
1212 for (
size_t i=0;i<geo.
num_scv();i++){
1218 rTrialSpace.
shapes(vShape, geo.
scv(i).local_ip());
1221 std::vector<DoFIndex> ind;
1222 m_phi->dof_indices(elem, 0, ind);
1225 phiSideValue[i] = 0.0;
1226 for(
size_t sh = 0; sh < vShape.size(); ++sh)
1228 phiSideValue[i] += phi[sh] * vShape[sh];
1235 for (
size_t ip=0;
ip<nscvf;
ip++){
1238 number phiTo = phiSideValue[scvf.
to()];
1239 if (phiFrom<0)
for (
int d=0;d<
dim;d++) surftensSource[scvf.
from()][d] += scvf.
normal()[d] * element_curvature;
1240 if (phiTo<0)
for (
int d=0;d<
dim;d++) surftensSource[scvf.
to()][d] -= scvf.
normal()[d] * element_curvature;
1242 for (
size_t i=0;i<geo.
num_scv();i++){
1243 surftensSource[i]/=geo.
scv(i).volume();
1244 vValue[i] += surftensSource[i];
parameterString s
Definition Biogas.lua:2
TData & value(size_t s, size_t ip)
size_t num_ip(size_t s) const
size_t num_series() const
const MathVector< worldDim > & normal() const
const SCV & scv(size_t i) const
void update(GridObject *elem, const MathVector< worldDim > *vCornerCoords, const ISubsetHandler *ish=NULL)
const SCVF & scvf(size_t i) const
virtual ReferenceObjectID reference_object_id() const=0
const MathVector< dim > * ips(size_t s) const
const MathVector< dim > & ip(size_t s, size_t ip) const
Definition level_set_user_data.h:890
static const int dim
world dimension
Definition level_set_user_data.h:901
void set_source(number f_x)
Definition level_set_user_data.h:946
CRTwoPhaseSource(SmartPtr< ApproximationSpace< domain_type > > approxSpace, SmartPtr< TGridFunction > spGridFct)
constructor
Definition level_set_user_data.h:1010
number m_sigma
Definition level_set_user_data.h:925
void evaluate(MathVector< dim > vValue[], const MathVector< dim > vGlobIP[], number time, int si, GridObject *elem, const MathVector< dim > vCornerCoords[], const MathVector< refDim > vLocIP[], const size_t nip, LocalVector *u, const MathMatrix< refDim, dim > *vJT=NULL) const
Definition level_set_user_data.h:1035
SmartPtr< CplUserData< MathVector< dim >, dim > > m_imSource
Data import for source.
Definition level_set_user_data.h:928
SmartPtr< ApproximationSpace< domain_type > > m_spApproxSpace
Definition level_set_user_data.h:914
TGridFunction::template dim_traits< dim >::grid_base_object elem_type
element type
Definition level_set_user_data.h:907
void update()
Definition level_set_user_data.h:1253
static const size_t max_number_of_ips
Definition level_set_user_data.h:1256
domain_type::position_accessor_type position_accessor_type
position accessor type
Definition level_set_user_data.h:898
void set_gravitation(number gravityconst)
Definition level_set_user_data.h:931
domain_type::grid_type grid_type
grid type
Definition level_set_user_data.h:904
void set_density(SmartPtr< CplUserData< number, dim > > user)
Definition level_set_user_data.h:992
void set_source(SmartPtr< CplUserData< MathVector< dim >, dim > > data)
Definition level_set_user_data.h:941
void set_source(number f_x, number f_y)
Definition level_set_user_data.h:955
number m_gravitational_constant
Definition level_set_user_data.h:922
SmartPtr< CplUserData< number, dim > > m_imDensity
density import for inside and outside density
Definition level_set_user_data.h:1006
grid_type * m_grid
Definition level_set_user_data.h:917
SmartPtr< TGridFunction > m_phi
Definition level_set_user_data.h:911
TGridFunction::domain_type domain_type
domain type
Definition level_set_user_data.h:892
TGridFunction::algebra_type algebra_type
algebra type
Definition level_set_user_data.h:895
virtual ~CRTwoPhaseSource()
Definition level_set_user_data.h:1032
void set_source(number f_x, number f_y, number f_z)
Definition level_set_user_data.h:968
void set_density(number val)
Definition level_set_user_data.h:995
void set_sigma(number sigma)
Definition level_set_user_data.h:935
Definition level_set_user_data.h:56
const TImpl & getImpl() const
const access to implementation
Definition level_set_user_data.h:119
virtual void compute(LocalVectorTimeSeries *u, GridObject *elem, const MathVector< dim > vCornerCoords[], bool bDeriv=false)
Definition level_set_user_data.h:98
void evaluate(TData vValue[], const MathVector< dim > vGlobIP[], number time, int si, GridObject *elem, const MathVector< dim > vCornerCoords[], const MathVector< refDim > vLocIP[], const size_t nip, LocalVector *u, const MathMatrix< refDim, dim > *vJT=NULL) const
Definition level_set_user_data.h:73
virtual void operator()(TData &value, const MathVector< dim > &globIP, number time, int si) const
Definition level_set_user_data.h:58
virtual bool continuous() const
returns if provided data is continuous over geometric object boundaries
Definition level_set_user_data.h:109
virtual void compute(LocalVector *u, GridObject *elem, const MathVector< dim > vCornerCoords[], bool bDeriv=false)
Definition level_set_user_data.h:87
TImpl & getImpl()
access to implementation
Definition level_set_user_data.h:116
virtual bool requires_grid_fct() const
returns if grid function is needed for evaluation
Definition level_set_user_data.h:112
Definition level_set_user_data.h:128
void update()
Definition level_set_user_data.h:445
SmartPtr< ApproximationSpace< domain_type > > m_spApproxSpace
Definition level_set_user_data.h:167
void set_outside_data(SmartPtr< CplUserData< number, dim > > user)
Definition level_set_user_data.h:190
TGridFunction::algebra_type algebra_type
algebra type
Definition level_set_user_data.h:133
domain_type::grid_type grid_type
grid type
Definition level_set_user_data.h:142
static const int dim
world dimension
Definition level_set_user_data.h:139
void set_inside_data(number val)
Definition level_set_user_data.h:182
static const size_t max_number_of_ips
Definition level_set_user_data.h:448
eval_type m_eval_type
Definition level_set_user_data.h:160
domain_type::position_accessor_type position_accessor_type
position accessor type
Definition level_set_user_data.h:136
void set_inside_data(SmartPtr< CplUserData< number, dim > > user)
Definition level_set_user_data.h:179
void evaluate(number vValue[], const MathVector< dim > vGlobIP[], number time, int si, GridObject *elem, const MathVector< dim > vCornerCoords[], const MathVector< refDim > vLocIP[], const size_t nip, LocalVector *u, const MathMatrix< refDim, dim > *vJT=NULL) const
Definition level_set_user_data.h:221
TGridFunction::template dim_traits< dim >::grid_base_object elem_type
element type
Definition level_set_user_data.h:145
SmartPtr< CplUserData< number, dim > > m_imInsideData
Data import for inside and outside data.
Definition level_set_user_data.h:204
TGridFunction::domain_type domain_type
domain type
Definition level_set_user_data.h:130
eval_type
Definition level_set_user_data.h:147
@ cr_ip_average
Definition level_set_user_data.h:147
@ sharp
Definition level_set_user_data.h:147
grid_type * m_grid
Definition level_set_user_data.h:170
LevelSetUserData(SmartPtr< ApproximationSpace< domain_type > > approxSpace, SmartPtr< TGridFunction > spGridFct)
constructor
Definition level_set_user_data.h:209
void set_eval_type(int type)
Definition level_set_user_data.h:155
SmartPtr< TGridFunction > m_phi
Definition level_set_user_data.h:164
SmartPtr< CplUserData< number, dim > > m_imOutsideData
Definition level_set_user_data.h:205
void set_outside_data(number val)
Definition level_set_user_data.h:193
virtual ~LevelSetUserData()
Definition level_set_user_data.h:218
Definition level_set_user_data.h:455
void set_eval_type(int type)
Definition level_set_user_data.h:482
SmartPtr< CplUserData< MathVector< dim >, dim > > m_imOutsideData
Definition level_set_user_data.h:609
void set_outside_data(number f_x, number f_y, number f_z)
Definition level_set_user_data.h:583
TGridFunction::algebra_type algebra_type
algebra type
Definition level_set_user_data.h:460
void update()
Definition level_set_user_data.h:851
void set_outside_data(number f_x, number f_y)
Definition level_set_user_data.h:570
SmartPtr< TGridFunction > m_phi
Definition level_set_user_data.h:491
TGridFunction::template dim_traits< dim >::grid_base_object elem_type
element type
Definition level_set_user_data.h:472
void set_inside_data(number f_x)
Definition level_set_user_data.h:511
void evaluate(MathVector< dim > vValue[], const MathVector< dim > vGlobIP[], number time, int si, GridObject *elem, const MathVector< dim > vCornerCoords[], const MathVector< refDim > vLocIP[], const size_t nip, LocalVector *u, const MathMatrix< refDim, dim > *vJT=NULL) const
Definition level_set_user_data.h:625
void set_inside_data(SmartPtr< CplUserData< MathVector< dim >, dim > > data)
Definition level_set_user_data.h:506
eval_type m_eval_type
Definition level_set_user_data.h:487
void set_outside_data(SmartPtr< CplUserData< MathVector< dim >, dim > > data)
Definition level_set_user_data.h:556
domain_type::position_accessor_type position_accessor_type
position accessor type
Definition level_set_user_data.h:463
SmartPtr< CplUserData< MathVector< dim >, dim > > m_imInsideData
Data import for inside and outside data.
Definition level_set_user_data.h:608
SmartPtr< ApproximationSpace< domain_type > > m_spApproxSpace
Definition level_set_user_data.h:494
LevelSetUserVectorData(SmartPtr< ApproximationSpace< domain_type > > approxSpace, SmartPtr< TGridFunction > spGridFct)
constructor
Definition level_set_user_data.h:613
domain_type::grid_type grid_type
grid type
Definition level_set_user_data.h:469
void set_inside_data(number f_x, number f_y)
Definition level_set_user_data.h:520
virtual ~LevelSetUserVectorData()
Definition level_set_user_data.h:622
eval_type
Definition level_set_user_data.h:474
@ sharp
Definition level_set_user_data.h:474
@ cr_ip_average
Definition level_set_user_data.h:474
static const int dim
world dimension
Definition level_set_user_data.h:466
void set_outside_data(number f_x)
Definition level_set_user_data.h:561
void set_inside_data(number f_x, number f_y, number f_z)
Definition level_set_user_data.h:533
static const size_t max_number_of_ips
Definition level_set_user_data.h:854
TGridFunction::domain_type domain_type
domain type
Definition level_set_user_data.h:457
grid_type * m_grid
Definition level_set_user_data.h:497
virtual void shapes(std::vector< std::vector< shape_type > > &vvShape, const std::vector< MathVector< dim > > &vLocPos) const=0
LocalVector & solution(size_t i)
#define UG_ASSERT(expr, msg)
vector_t::value_type VecDistance(const vector_t &v1, const vector_t &v2)
void collect_finest_level_children(std::vector< TElem * > &childElemVector, TElem *elem, TGrid *grid)
Definition level_set_user_data.h:859
void computeElemBarycenter(MathVector< dim > &bary, TElem *elem, TPos posA)
Definition level_set_user_data.h:877
const number & DoFRef(const TMatrix &mat, const DoFIndex &iInd, const DoFIndex &jInd)
SmartPtr< T, FreePolicy > make_sp(T *inst)