33#ifndef __H__UG__LIB_DISC__SPATIAL_DISC__ELEM_DISC__DENSITY_DRIVEN_FLOW__FV1__CONV_SHAPE__
34#define __H__UG__LIB_DISC__SPATIAL_DISC__ELEM_DISC__DENSITY_DRIVEN_FLOW__FV1__CONV_SHAPE__
36#include <boost/mpl/range_c.hpp>
37#include <boost/mpl/for_each.hpp>
62 static const int dim = TDim;
82 boost::mpl::for_each<typename domain_traits<dim>::AllElemList>(
RegisterElemFunc(
this));
87 template <
typename TFVGeom>
88 bool update(
const TFVGeom* geo,
102 m_pThis->template register_func_for_elem_fvgeom< TElem, FV1Geometry<TElem, dim> >();
103 m_pThis->template register_func_for_elem_fvgeom< TElem, FV1CondensedGeometry<TElem, dim> >();
104 m_pThis->template register_func_for_elem_fvgeom< TElem, HFV1Geometry<TElem, dim> >();
109 template <
typename TElem,
typename TFVGeom>
113 base_type::template register_update_func<TFVGeom, TFunc>(&this_type::template update<TFVGeom>);
121 template<
typename TRefDim>
void operator() (TRefDim &) {
m_pThis->register_func_for_refDim<TRefDim::value> ();}
125 template <
int refDim>
130 base_type::template register_update_func<TGeom, TFunc>(&this_type::template update<TGeom>);
135template <
typename TFVGeom>
143 UG_ASSERT(geo !=
nullptr,
"Null pointer");
144 UG_ASSERT(Velocity !=
nullptr,
"Null pointer");
147 const size_t numSH = geo->num_sh();
150 for(
size_t ip = 0; ip < geo->num_scvf(); ++ip)
153 const typename TFVGeom::SCVF& scvf = geo->scvf(ip);
156 const number flux =
VecDot(scvf.normal(), Velocity[ip]);
159 for(
size_t sh = 0; sh < scvf.num_sh(); sh++)
160 conv_shape(ip, sh) = flux * scvf.shape(sh);
167 for(
size_t sh = scvf.num_sh(); sh < numSH; sh++)
168 conv_shape(ip, sh) = 0.0;
172 for (
size_t sh = 0; sh < scvf.num_sh(); sh++)
173 VecScale(D_vel(ip, sh), scvf.normal(), scvf.shape(sh));
176 for(
size_t sh = scvf.num_sh(); sh < numSH; sh++)
177 VecSet(D_vel(ip, sh), 0.0);
203 static const int dim = TDim;
223 boost::mpl::for_each<typename domain_traits<dim>::AllElemList>(
RegisterElemFunc(
this));
228 template <
typename TFVGeom>
229 bool update(
const TFVGeom* geo,
243 m_pThis->template register_func_for_elem_fvgeom< TElem, FV1Geometry<TElem, dim> >();
244 m_pThis->template register_func_for_elem_fvgeom< TElem, FV1CondensedGeometry<TElem, dim> >();
245 m_pThis->template register_func_for_elem_fvgeom< TElem, HFV1Geometry<TElem, dim> >();
250 template <
typename TElem,
typename TFVGeom>
254 base_type::template register_update_func<TFVGeom, TFunc>(&this_type::template update<TFVGeom>);
262 template<
typename TRefDim>
void operator() (TRefDim &) {
m_pThis->register_func_for_refDim<TRefDim::value> ();}
266 template <
int refDim>
271 base_type::template register_update_func<TGeom, TFunc>(&this_type::template update<TGeom>);
276template <
typename TFVGeom>
283 UG_ASSERT(geo !=
nullptr,
"Null pointer");
284 UG_ASSERT(Velocity !=
nullptr,
"Null pointer");
287 const size_t numSH = geo->num_sh();
290 for(
size_t ip = 0; ip < geo->num_scvf(); ++ip)
293 const typename TFVGeom::SCVF& scvf = geo->scvf(ip);
296 const number flux =
VecDot(scvf.normal(), Velocity[ip]);
298 size_t from = scvf.from();
299 size_t to = scvf.to();
302 if((from >= scvf.num_sh()) || (to >= scvf.num_sh())){
305 for(
size_t sh = 0; sh < scvf.num_sh(); sh++)
306 conv_shape(ip, sh) = flux * scvf.shape(sh);
308 UG_ASSERT(scvf.num_sh() == numSH,
"sh's have to match!");
312 for (
size_t sh = 0; sh < scvf.num_sh(); sh++)
313 VecScale(D_vel(ip, sh), scvf.normal(), scvf.shape(sh));
321 size_t up = (flux >= 0) ? from : to;
324 for(
size_t sh = 0; sh < scvf.num_sh(); ++sh) conv_shape(ip, sh) = 0.0;
326 conv_shape(ip, up) = flux;
331 for(
size_t sh = 0; sh < numSH; ++sh)
VecSet(D_vel(ip, sh), 0.0);
332 D_vel(ip, up) = scvf.normal();
358 static const int dim = TDim;
378 boost::mpl::for_each<typename domain_traits<dim>::AllElemList>(
RegisterElemFunc(
this));
392 boost::mpl::for_each<typename domain_traits<dim>::AllElemList>(
RegisterElemFunc(
this));
400 template <
typename TFVGeom>
401 bool update(
const TFVGeom* geo,
419 m_pThis->template register_func_for_elem_fvgeom< TElem, FV1Geometry<TElem, dim> >();
420 m_pThis->template register_func_for_elem_fvgeom< TElem, FV1CondensedGeometry<TElem, dim> >();
421 m_pThis->template register_func_for_elem_fvgeom< TElem, HFV1Geometry<TElem, dim> >();
426 template <
typename TElem,
typename TFVGeom>
430 base_type::template register_update_func<TFVGeom, TFunc>(&this_type::template update<TFVGeom>);
438 template<
typename TRefDim>
void operator() (TRefDim &) {
m_pThis->register_func_for_refDim<TRefDim::value> ();}
442 template <
int refDim>
447 base_type::template register_update_func<TGeom, TFunc>(&this_type::template update<TGeom>);
452template <
typename TFVGeom>
459 UG_ASSERT(geo !=
nullptr,
"Null pointer");
460 UG_ASSERT(Velocity !=
nullptr,
"Null pointer");
463 const size_t numSH = geo->num_sh();
466 for(
size_t ip = 0; ip < geo->num_scvf(); ++ip)
469 const typename TFVGeom::SCVF& scvf = geo->scvf(ip);
472 const number flux =
VecDot(scvf.normal(), Velocity[ip]);
474 size_t from = scvf.from();
475 size_t to = scvf.to();
478 if((from >= scvf.num_sh()) || (to >= scvf.num_sh())){
481 for(
size_t sh = 0; sh < scvf.num_sh(); sh++)
482 conv_shape(ip, sh) = flux * scvf.shape(sh);
484 UG_ASSERT(scvf.num_sh() == numSH,
"sh's have to match!");
488 for (
size_t sh = 0; sh < scvf.num_sh(); sh++)
489 VecScale(D_vel(ip, sh), scvf.normal(), scvf.shape(sh));
496 size_t up = (flux >= 0) ? from : to;
499 const number noUpFlux = (1.-m_weight)*flux;
500 for(
size_t sh = 0; sh < scvf.num_sh(); ++sh)
501 conv_shape(ip, sh) = noUpFlux * scvf.shape(sh);
504 conv_shape(ip, up) += m_weight * flux;
510 for (
size_t sh = 0; sh < scvf.num_sh(); sh++)
511 VecScale(D_vel(ip, sh), scvf.normal(),
512 (1.-m_weight)*scvf.shape(sh));
514 for(
size_t sh = scvf.num_sh(); sh < numSH; sh++)
515 VecSet(D_vel(ip, sh), 0.0);
545 static const int dim = TDim;
561 boost::mpl::for_each<typename domain_traits<dim>::AllElemList>(
RegisterElemFunc(
this));
566 template <
typename TFVGeom>
567 bool update(
const TFVGeom* geo,
581 m_pThis->template register_func_for_elem_fvgeom< TElem, FV1Geometry<TElem, dim> >();
582 m_pThis->template register_func_for_elem_fvgeom< TElem, FV1CondensedGeometry<TElem, dim> >();
587 template <
typename TElem,
typename TFVGeom>
591 base_type::template register_update_func<TFVGeom, TFunc>(&this_type::template update<TFVGeom>);
599 template<
typename TRefDim>
void operator() (TRefDim &) {
m_pThis->register_func_for_refDim<TRefDim::value> ();}
603 template <
int refDim>
608 base_type::template register_update_func<TGeom, TFunc>(&this_type::template update<TGeom>);
613template <
typename TFVGeom>
621 UG_ASSERT(geo !=
nullptr,
"Null pointer");
622 UG_ASSERT(Velocity !=
nullptr,
"Null pointer");
627 const number vol = ElementSize<dim>(geo->roid(), geo->corners());
630 for(
size_t i = 0; i < geo->num_scvf(); ++i)
633 const typename TFVGeom::SCVF& scvf = geo->scvf(i);
636 const size_t from = scvf.from();
637 const size_t to = scvf.to();
647 if(DiffDisp !=
nullptr)
659 lambda = - GradDiffGrad * vol;
666 for (
size_t sh = 0; sh < scvf.num_sh(); ++sh)
667 conv_shape(i, sh) = 0.0;
669 for (
size_t sh = 0; sh < scvf.num_sh(); ++sh) {
670 VecSet(D_vel(i, sh), 0.0);
671 MatSet(conv_shape_diffusion(i, sh), 0.0);
677 if (from >= scvf.num_sh() || to >= scvf.num_sh())
678 UG_THROW(
"PartialUpwind: Currently not implemented for hanging nodes.")
684 if(lambda <= 0 || DiffDisp ==
nullptr)
687 const size_t up = (flux >= 0) ? scvf.from() : scvf.to();
690 conv_shape(i, up) = flux;
696 D_vel(i, up) = scvf.normal();
699 set_non_zero_deriv_diffusion_flag(
false);
710 if (2 * lambda > fabs(flux))
712 conv_shape(i, from) = flux / 2.0;
713 conv_shape(i, to) = flux / 2.0;
717 set_non_zero_deriv_diffusion_flag(
false);
719 VecScale(D_vel(i,from), scvf.normal(), 1.0/2.0);
720 VecScale(D_vel(i, to), scvf.normal(), 1.0/2.0);
731 set_non_zero_deriv_diffusion_flag(
true);
734 conv_shape(i, from) = flux - lambda;
735 conv_shape(i, to) = lambda;
738 D_vel(i,from) = scvf.normal();
742 conv_shape(i, from) = - lambda;
743 conv_shape(i, to) = flux + lambda;
746 D_vel(i,to) = scvf.normal();
751 for (
size_t k = 0; k < (size_t)dim; k++)
752 for (
size_t l = 0; l < (size_t)dim; l++)
754 conv_shape_diffusion(i, from)(k,l) = gradFrom[k]*gradTo[l]*vol;
755 conv_shape_diffusion(i, to)(k,l) = - gradFrom[k]*gradTo[l]*vol;
780 static const int dim = TDim;
800 boost::mpl::for_each<typename domain_traits<dim>::AllElemList>(
RegisterElemFunc(
this));
805 template <
typename TFVGeom>
806 bool update(
const TFVGeom *geo,
817 template <
typename TElem>
820 m_pThis->template register_func_for_elem_fvgeom<TElem, FV1Geometry<TElem, dim>>();
827 template <
typename TElem,
typename TFVGeom>
831 base_type::template register_update_func<TFVGeom, TFunc>(&this_type::template update<TFVGeom>);
839 template <
typename TRefDim>
844 template <
int refDim>
854template <
typename TRefElem,
int TWorldDim>
867 if (!ElementSideRayIntersection<TRefElem, TWorldDim>(side, globalIntersection, localIntersection,
868 IP, IPVel,
false , vCornerCoords))
869 UG_THROW(
"GetNodeNextToCut: ElementSideRayIntersection failed");
873 const int dim = TRefElem::dim;
876 number min = std::numeric_limits<number>::max();
879 for (
size_t i = 0; i < rRefElem.num(dim - 1, side, 0); ++i)
882 const size_t co = rRefElem.id(dim - 1, side, 0, i);
897template <
typename TFVGeom>
899 update(
const TFVGeom *geo,
904 UG_ASSERT(geo !=
nullptr,
"Null pointer");
905 UG_ASSERT(Velocity !=
nullptr,
"Null pointer");
908 const size_t numSH = geo->num_sh();
911 for (
size_t ip = 0; ip < geo->num_scvf(); ++ip)
914 const typename TFVGeom::SCVF &scvf = geo->scvf(ip);
917 const number flux =
VecDot(scvf.normal(), Velocity[ip]);
923 for (
size_t sh = 0; sh < scvf.num_sh(); sh++)
924 conv_shape(ip, sh) = flux * scvf.shape(sh);
925 for (
size_t sh = scvf.num_sh(); sh < numSH; sh++)
926 conv_shape(ip, sh) = 0.0;
929 for (
size_t sh = 0; sh < scvf.num_sh(); sh++)
930 VecScale(D_vel(ip, sh), scvf.normal(), scvf.shape(sh));
932 for (
size_t sh = scvf.num_sh(); sh < numSH; sh++)
933 VecSet(D_vel(ip, sh), 0.0);
939 for (
size_t sh = 0; sh < scvf.num_sh(); sh++)
940 conv_shape(ip, sh) = 0.0;
948 for (
size_t sh = scvf.num_sh(); sh < numSH; sh++)
949 conv_shape(ip, sh) = 0.0;
955 GetNodeNextToCut<typename TFVGeom::ref_elem_type, dim>(up, scvf.global_ip(), Velocity[ip], vCornerCoords);
959 conv_shape(ip, up) = flux;
964 for (
size_t sh = 0; sh < numSH; ++sh)
965 VecSet(D_vel(ip, sh), 0.0);
966 D_vel(ip, up) = scvf.normal();
992 static const int dim = TDim;
1012 boost::mpl::for_each<typename domain_traits<dim>::AllElemList>(
RegisterElemFunc(
this));
1013 boost::mpl::for_each<boost::mpl::range_c<int, 1, dim + 1>>(
RegisterRefDimFunc(
this));
1017 template <
typename TFVGeom>
1018 bool update(
const TFVGeom *geo,
1029 template <
typename TElem>
1032 m_pThis->template register_func_for_elem_fvgeom<TElem, FV1Geometry<TElem, dim>>();
1039 template <
typename TElem,
typename TFVGeom>
1043 base_type::template register_update_func<TFVGeom, TFunc>(&this_type::template update<TFVGeom>);
1051 template <
typename TRefDim>
1056 template <
int refDim>
1066template <
typename TFVGeom>
1068 update(
const TFVGeom *geo,
1073 UG_ASSERT(geo !=
nullptr,
"Null pointer");
1074 UG_ASSERT(Velocity !=
nullptr,
"Null pointer");
1077 const size_t numSH = geo->num_sh();
1080 for (
size_t ip = 0; ip < geo->num_scvf(); ++ip)
1083 const typename TFVGeom::SCVF &scvf = geo->scvf(ip);
1086 const number flux =
VecDot(scvf.normal(), Velocity[ip]);
1092 for (
size_t sh = 0; sh < scvf.num_sh(); sh++)
1093 conv_shape(ip, sh) = flux * scvf.shape(sh);
1094 for (
size_t sh = scvf.num_sh(); sh < numSH; sh++)
1095 conv_shape(ip, sh) = 0.0;
1098 for (
size_t sh = 0; sh < scvf.num_sh(); sh++)
1099 VecScale(D_vel(ip, sh), scvf.normal(), scvf.shape(sh));
1101 for (
size_t sh = scvf.num_sh(); sh < numSH; sh++)
1102 VecSet(D_vel(ip, sh), 0.0);
1108 for (
size_t sh = 0; sh < scvf.num_sh(); sh++)
1109 conv_shape(ip, sh) = 0.0;
1117 for (
size_t sh = scvf.num_sh(); sh < numSH; sh++)
1118 conv_shape(ip, sh) = 0.0;
1122 typedef typename TFVGeom::ref_elem_type TRefElem;
1129 ElementSideRayIntersection<TRefElem, dim>(side, globalIntersection, localIntersection,
1130 scvf.global_ip(), Velocity[ip],
false , vCornerCoords);
1132 UG_CATCH_THROW(
"GetLinearProfileSkewedUpwindShapes: Cannot find cut side.");
1143 std::vector<number> vShape;
1145 std::vector<MathVector<TRefElem::dim>> vShapeGrad;
1147 TrialSpace.
shapes(vShape, localIntersection);
1148 TrialSpace.
grads(vShapeGrad, localIntersection);
1150 size_t num_corners_inters_side = rRefElem.num(dim - 1, side, 0);
1153 for (
size_t j = 0; j < num_corners_inters_side; ++j)
1156 const size_t co = rRefElem.id(dim-1, side, 0, j);
1159 conv_shape(ip, co) = flux * vShape[co];
Definition conv_shape.h:194
IConvectionShapes< TDim > base_type
Base class.
Definition conv_shape.h:197
void register_func_for_elem_fvgeom()
registers the update function for an element type and a FV geometry
Definition conv_shape.h:251
void register_func_for_refDim()
registers the update function for a reference dimension
Definition conv_shape.h:267
static const int dim
Dimension.
Definition conv_shape.h:203
bool update(const TFVGeom *geo, const MathVector< dim > *Velocity, const MathMatrix< dim, dim > *DiffDisp, bool computeDeriv)
update of values for FV1Geometry
Definition conv_shape.h:278
ConvectionShapesFullUpwind()
constructor
Definition conv_shape.h:216
ConvectionShapesFullUpwind< TDim > this_type
This class.
Definition conv_shape.h:200
Definition conv_shape.h:983
ConvectionShapesLinearProfileSkewedUpwind< TDim > this_type
This class.
Definition conv_shape.h:989
void register_func_for_refDim()
registers the update function for a reference dimension
Definition conv_shape.h:1057
ConvectionShapesLinearProfileSkewedUpwind()
constructor
Definition conv_shape.h:1005
void register_func_for_elem_fvgeom()
registers the update function for an element type and a FV geometry
Definition conv_shape.h:1040
static const int dim
Dimension.
Definition conv_shape.h:992
IConvectionShapes< TDim > base_type
Base class.
Definition conv_shape.h:986
bool update(const TFVGeom *geo, const MathVector< dim > *Velocity, const MathMatrix< dim, dim > *DiffDisp, bool computeDeriv)
update of values for FV geometry
Definition conv_shape.h:1068
Definition conv_shape.h:53
static const int dim
Dimension.
Definition conv_shape.h:62
void register_func_for_elem_fvgeom()
registers the update function for an element type and a FV geometry
Definition conv_shape.h:110
bool update(const TFVGeom *geo, const MathVector< dim > *Velocity, const MathMatrix< dim, dim > *DiffDisp, bool computeDeriv)
update of values for FV geometry
Definition conv_shape.h:138
IConvectionShapes< TDim > base_type
Base class.
Definition conv_shape.h:56
ConvectionShapesNoUpwind()
constructor
Definition conv_shape.h:75
void register_func_for_refDim()
registers the update function for a reference dimension
Definition conv_shape.h:126
ConvectionShapesNoUpwind< TDim > this_type
This class.
Definition conv_shape.h:59
Definition conv_shape.h:536
ConvectionShapesPartialUpwind< TDim > this_type
This class.
Definition conv_shape.h:542
IConvectionShapes< TDim > base_type
Base class.
Definition conv_shape.h:539
void register_func_for_elem_fvgeom()
registers the update function for an element type and a FV geometry
Definition conv_shape.h:588
void register_func_for_refDim()
registers the update function for a reference dimension
Definition conv_shape.h:604
ConvectionShapesPartialUpwind()
constructor
Definition conv_shape.h:558
bool update(const TFVGeom *geo, const MathVector< dim > *Velocity, const MathMatrix< dim, dim > *DiffDisp, bool computeDeriv)
update of values for FV1Geometry
Definition conv_shape.h:616
static const int dim
Dimension.
Definition conv_shape.h:545
Definition conv_shape.h:771
static const int dim
Dimension.
Definition conv_shape.h:780
ConvectionShapesSkewedUpwind< TDim > this_type
This class.
Definition conv_shape.h:777
ConvectionShapesSkewedUpwind()
constructor
Definition conv_shape.h:793
void register_func_for_refDim()
registers the update function for a reference dimension
Definition conv_shape.h:845
bool update(const TFVGeom *geo, const MathVector< dim > *Velocity, const MathMatrix< dim, dim > *DiffDisp, bool computeDeriv)
update of values for FV geometry
Definition conv_shape.h:899
void register_func_for_elem_fvgeom()
registers the update function for an element type and a FV geometry
Definition conv_shape.h:828
IConvectionShapes< TDim > base_type
Base class.
Definition conv_shape.h:774
Definition conv_shape.h:349
void register_func_for_elem_fvgeom()
registers the update function for an element type and a FV geometry
Definition conv_shape.h:427
void register_func_for_refDim()
registers the update function for a reference dimension
Definition conv_shape.h:443
number m_weight
Definition conv_shape.h:408
ConvectionShapesWeightedUpwind< TDim > this_type
This class.
Definition conv_shape.h:355
ConvectionShapesWeightedUpwind(number weight)
constructor
Definition conv_shape.h:383
IConvectionShapes< TDim > base_type
Base class.
Definition conv_shape.h:352
bool update(const TFVGeom *geo, const MathVector< dim > *Velocity, const MathMatrix< dim, dim > *DiffDisp, bool computeDeriv)
update of values for FV1Geometry
Definition conv_shape.h:454
void set_weight(number weight)
set weighting between full upwind (1.0) and no upwind (0.0)
Definition conv_shape.h:397
ConvectionShapesWeightedUpwind()
constructor
Definition conv_shape.h:371
static const int dim
Dimension.
Definition conv_shape.h:358
Geometry and shape functions for 1st order Vertex-Centered Finite Volume.
Definition fv1_geom.h:665
Interface class for upwind methods.
Definition conv_shape_interface.h:100
void register_update_func(TAssFunc func)
register a update function for a Geometry
Definition conv_shape_interface.h:249
void set_non_zero_deriv_diffusion_flag(bool flag)
sets the shape ip flag
Definition conv_shape_interface.h:174
MathMatrix< dim, dim > & conv_shape_diffusion(size_t scvf, size_t sh)
non-const access to upwind shapes for ip vel
Definition conv_shape_interface.h:193
const MathVector< dim > & D_vel(size_t scvf, size_t sh) const
upwind shape for corner vel
Definition conv_shape_interface.h:141
number & conv_shape(size_t scvf, size_t sh)
non-const access to ip velocity (i.e. interpolated velocity at ip)
Definition conv_shape_interface.h:177
bool non_zero_deriv_diffusion() const
returns if upwind shape w.r.t. ip vel is non-zero
Definition conv_shape_interface.h:149
Identifier for Local Finite Elements.
Definition local_finite_element_id.h:98
@ LAGRANGE
Definition local_finite_element_id.h:104
virtual base class for local shape function sets
Definition local_shape_function_set.h:70
virtual void grads(grad_type *vGrad, const MathVector< dim > &x) const =0
returns all gradients evaluated at a point
virtual void shapes(shape_type *vShape, const MathVector< dim > &x) const =0
returns all shape functions evaluated at a point
A class for fixed size, dense matrices.
Definition math_matrix.h:63
a mathematical Vector with N entries.
Definition math_vector.h:97
static TClass & get()
returns a singleton based on the identifier
Definition provider.h:54
void MatSet(matrix_t &mInOut, typename matrix_t::value_type s)
Set each matrix entry to a scalar (componentwise)
Definition math_matrix_functions_common_impl.hpp:794
#define UG_ASSERT(expr, msg)
Definition assert.h:70
#define UG_CATCH_THROW(msg)
Definition error.h:64
#define UG_THROW(msg)
Definition error.h:57
double number
Definition types.h:124
void MatVecMult(vector_t_out &vOut, const matrix_t &m, const vector_t_in &v)
Matrix - Vector Multiplication.
Definition math_matrix_vector_functions_common_impl.hpp:49
void VecScaleAppend(vector_t &vOut, typename vector_t::value_type s1, const vector_t &v1)
Scales a Vector and adds it to a second vector.
Definition math_vector_functions_common_impl.hpp:126
void VecSet(vector_t &vInOut, typename vector_t::value_type s)
Set each vector component to scalar (componentwise)
Definition math_vector_functions_common_impl.hpp:539
vector_t::value_type VecDistanceSq(const vector_t &v1, const vector_t &v2)
returns the squared distance of two vector_ts.
Definition math_vector_functions_common_impl.hpp:351
void VecScale(vector_t &vOut, const vector_t &v, typename vector_t::value_type s)
scales a MathVector<N>
Definition math_vector_functions_common_impl.hpp:252
vector_t::value_type VecTwoNorm(const vector_t &v)
Definition math_vector_functions_common_impl.hpp:577
vector_t::value_type VecDot(const vector_t &v1, const vector_t &v2)
returns the dot-product of two vector_ts
Definition math_vector_functions_common_impl.hpp:385
ReferenceObjectID
these ids are used to identify the shape of a geometric object.
Definition grid_base_objects.h:74
void GetNodeNextToCut(size_t &coOut, const MathVector< TWorldDim > &IP, const MathVector< TWorldDim > &IPVel, const MathVector< TWorldDim > *vCornerCoords)
computes the closest node to a elem side ray intersection
Definition conv_shape.h:855
functor for registering the shapes for the element-templated FV geometries
Definition conv_shape.h:238
void operator()(TElem &)
Definition conv_shape.h:241
this_type * m_pThis
Definition conv_shape.h:239
RegisterElemFunc(this_type *pThis)
Definition conv_shape.h:240
functor for registering the shapes for the reference-dimension-templated FV geometries
Definition conv_shape.h:259
RegisterRefDimFunc(this_type *pThis)
Definition conv_shape.h:261
this_type * m_pThis
Definition conv_shape.h:260
void operator()(TRefDim &)
Definition conv_shape.h:262
functor for registering the shapes for the element-templated FV geometries
Definition conv_shape.h:1026
void operator()(TElem &)
Definition conv_shape.h:1030
RegisterElemFunc(this_type *pThis)
Definition conv_shape.h:1028
this_type * m_pThis
Definition conv_shape.h:1027
functor for registering the shapes for the reference-dimension-templated FV geometries
Definition conv_shape.h:1048
RegisterRefDimFunc(this_type *pThis)
Definition conv_shape.h:1050
void operator()(TRefDim &)
Definition conv_shape.h:1052
this_type * m_pThis
Definition conv_shape.h:1049
functor for registering the shapes for the element-templated FV geometries
Definition conv_shape.h:97
this_type * m_pThis
Definition conv_shape.h:98
RegisterElemFunc(this_type *pThis)
Definition conv_shape.h:99
void operator()(TElem &)
Definition conv_shape.h:100
functor for registering the shapes for the reference-dimension-templated FV geometries
Definition conv_shape.h:118
void operator()(TRefDim &)
Definition conv_shape.h:121
RegisterRefDimFunc(this_type *pThis)
Definition conv_shape.h:120
this_type * m_pThis
Definition conv_shape.h:119
functor for registering the shapes for the element-templated FV geometries
Definition conv_shape.h:576
void operator()(TElem &)
Definition conv_shape.h:579
this_type * m_pThis
Definition conv_shape.h:577
RegisterElemFunc(this_type *pThis)
Definition conv_shape.h:578
functor for registering the shapes for the reference-dimension-templated FV geometries
Definition conv_shape.h:596
this_type * m_pThis
Definition conv_shape.h:597
void operator()(TRefDim &)
Definition conv_shape.h:599
RegisterRefDimFunc(this_type *pThis)
Definition conv_shape.h:598
functor for registering the shapes for the element-templated FV geometries
Definition conv_shape.h:814
this_type * m_pThis
Definition conv_shape.h:815
void operator()(TElem &)
Definition conv_shape.h:818
RegisterElemFunc(this_type *pThis)
Definition conv_shape.h:816
functor for registering the shapes for the reference-dimension-templated FV geometries
Definition conv_shape.h:836
this_type * m_pThis
Definition conv_shape.h:837
RegisterRefDimFunc(this_type *pThis)
Definition conv_shape.h:838
void operator()(TRefDim &)
Definition conv_shape.h:840
functor for registering the shapes for the element-templated FV geometries
Definition conv_shape.h:414
RegisterElemFunc(this_type *pThis)
Definition conv_shape.h:416
void operator()(TElem &)
Definition conv_shape.h:417
this_type * m_pThis
Definition conv_shape.h:415
functor for registering the shapes for the reference-dimension-templated FV geometries
Definition conv_shape.h:435
void operator()(TRefDim &)
Definition conv_shape.h:438
RegisterRefDimFunc(this_type *pThis)
Definition conv_shape.h:437
this_type * m_pThis
Definition conv_shape.h:436