33 #ifndef __H__UG__LIB_DISC__SPATIAL_DISC__DISC_HELPER__FINITE_VOLUME_UTIL__
34 #define __H__UG__LIB_DISC__SPATIAL_DISC__DISC_HELPER__FINITE_VOLUME_UTIL__
58 template <
typename TPosition>
61 vOut = vCornerCoords[0];
62 for(
size_t j = 1; j < num; ++j)
64 vOut += vCornerCoords[j];
82 static const size_t numSCV = ref_elem_type::numCorners;
85 static const size_t numSCVF = ref_elem_type::numEdges;
95 return refElem.id(1, i, 0, ft);
121 vMidID[0] =
MidID(1,i);
130 vMidID[1] =
MidID(2, refElem.id(1, i, 2, 0));
132 vMidID[3] =
MidID(2, refElem.id(1, i, 2, 1));
150 vMidID[0] =
MidID(0, i);
155 vMidID[0] =
MidID(0, i);
156 vMidID[1] =
MidID(1, refElem.id(0, i, 1, 0));
158 vMidID[3] =
MidID(1, refElem.id(0, i, 1, 1));
162 vMidID[0] =
MidID(0, i);
163 vMidID[1] =
MidID(1, refElem.id(0, i, 1, 1));
164 vMidID[2] =
MidID(2, refElem.id(0, i, 2, 0));
165 vMidID[3] =
MidID(1, refElem.id(0, i, 1, 0));
166 vMidID[4] =
MidID(1, refElem.id(0, i, 1, 2));
167 vMidID[5] =
MidID(2, refElem.id(0, i, 2, 2));
169 vMidID[7] =
MidID(2, refElem.id(0, i, 2, 1));
171 else {
UG_THROW(
"Dimension higher than 3 not implemented.");}
176 template <
typename TRefElem,
int TWorldDim>
struct fv1_traits
255 VecSubtract(outNormal, vElemCorner[1], vElemCorner[0]);
274 VecSubtract(outNormal, vElemCorner[1], vElemCorner[0]);
320 template <
typename TElem>
327 ElementNormal<TElem,3>(ElemNormal, vElemCorner);
334 VecAdd(
p, vSCVFCorner[0], ElemNormal);
337 vNewTriangleCorner[0] = vSCVFCorner[0];
338 vNewTriangleCorner[1] = vSCVFCorner[1];
339 vNewTriangleCorner[2] =
p;
348 VecScale(outNormal, outNormal, size);
375 {fv1_traits_ReferenceFace3d::NormalOnSCVF_Face<ReferenceTriangle>(outNormal, vSCVFCorner, vElemCorner);}
395 {fv1_traits_ReferenceFace3d::NormalOnSCVF_Face<ReferenceQuadrilateral>(outNormal, vSCVFCorner, vElemCorner);}
476 return refElem.
id(1, i/2, 0, ft);
487 return refElem.
id(1, i/4, 0, 0);
489 return refElem.
id(1, i/4, 0, 1);
501 static const int dim = 3;
506 vMidID[0] =
MidID(1,i/2);
510 vMidID[1] =
MidID(2, refElem.
id(1, i/2, 2, 0));
514 vMidID[2] =
MidID(2, refElem.
id(1, i/2, 2, 1));
526 static const int dim = 3;
531 vMidID[3] =
MidID(1,i/4);
534 if(i%4 == 0 || i%4 == 1){
535 vMidID[1] =
MidID(2, refElem.
id(1, i/4, 2, 0));
539 vMidID[2] =
MidID(2, refElem.
id(1, i/4, 2, 1));
544 vMidID[0] =
MidID(0, refElem.
id(1, i/4, 0, 0));
546 vMidID[0] =
MidID(0, refElem.
id(1, i/4, 0, 1));
694 size_t vSubStructNum[
MAXDIM+1];
696 vSubStructNum[
VERTEX] = 0;
697 vSubStructNum[
EDGE] = 2;
698 vSubStructNum[
FACE] = 8;
699 vSubStructNum[
VOLUME] = 4;
701 return vSubStructNum[
dim];
735 vSubStructSubNum[
FACE][i][
EDGE] = 3;
736 vSubStructSubNum[
FACE][i][
FACE] = 1;
743 vSubStructSubNum[
EDGE][i][
EDGE] = 1;
744 vSubStructSubNum[
EDGE][i][
FACE] = 2;
756 return vSubStructSubNum[dim_i][i][dim_j];
767 static size_t from_to_ind [24][2] =
805 return from_to_ind [i] [ft];
815 static size_t node_id [16] =
855 case 0: vMidID[0] =
MidID(1,4);
856 vMidID[1] =
MidID(2,8);
857 vMidID[2] =
MidID(3,1);
858 vMidID[3] =
MidID(2,4);
861 case 1: vMidID[0] =
MidID(1,4);
862 vMidID[1] =
MidID(2,9);
863 vMidID[2] =
MidID(3,3);
864 vMidID[3] =
MidID(2,0);
869 case 2: vMidID[0] =
MidID(1,5);
870 vMidID[1] =
MidID(2,8);
871 vMidID[2] =
MidID(3,1);
872 vMidID[3] =
MidID(2,5);
875 case 3: vMidID[0] =
MidID(1,5);
876 vMidID[1] =
MidID(2,9);
877 vMidID[2] =
MidID(3,3);
878 vMidID[3] =
MidID(2,1);
883 case 4: vMidID[0] =
MidID(1,12);
884 vMidID[1] =
MidID(2,8);
885 vMidID[2] =
MidID(3,1);
886 vMidID[3] =
MidID(2,13);
889 case 5: vMidID[0] =
MidID(1,13);
890 vMidID[1] =
MidID(2,9);
891 vMidID[2] =
MidID(3,3);
892 vMidID[3] =
MidID(2,14);
897 case 6: vMidID[0] =
MidID(1,8);
898 vMidID[1] =
MidID(2,4);
899 vMidID[2] =
MidID(3,1);
900 vMidID[3] =
MidID(2,13);
903 case 7: vMidID[0] =
MidID(1,0);
904 vMidID[1] =
MidID(2,15);
905 vMidID[2] =
MidID(3,3);
906 vMidID[3] =
MidID(2,0);
911 case 8: vMidID[0] =
MidID(1,9);
912 vMidID[1] =
MidID(2,5);
913 vMidID[2] =
MidID(3,1);
914 vMidID[3] =
MidID(2,4);
917 case 9: vMidID[0] =
MidID(1,1);
918 vMidID[1] =
MidID(2,0);
919 vMidID[2] =
MidID(3,3);
920 vMidID[3] =
MidID(2,1);
925 case 10:vMidID[0] =
MidID(1,10);
926 vMidID[1] =
MidID(2,12);
927 vMidID[2] =
MidID(3,1);
928 vMidID[3] =
MidID(2,5);
931 case 11:vMidID[0] =
MidID(1,2);
932 vMidID[1] =
MidID(2,1);
933 vMidID[2] =
MidID(3,3);
934 vMidID[3] =
MidID(2,14);
939 case 12:vMidID[0] =
MidID(1,13);
940 vMidID[1] =
MidID(2,10);
941 vMidID[2] =
MidID(3,2);
942 vMidID[3] =
MidID(2,12);
945 case 13:vMidID[0] =
MidID(1,12);
946 vMidID[1] =
MidID(2,11);
947 vMidID[2] =
MidID(3,4);
948 vMidID[3] =
MidID(2,15);
953 case 14:vMidID[0] =
MidID(1,6);
954 vMidID[1] =
MidID(2,10);
955 vMidID[2] =
MidID(3,2);
956 vMidID[3] =
MidID(2,6);
959 case 15:vMidID[0] =
MidID(1,6);
960 vMidID[1] =
MidID(2,11);
961 vMidID[2] =
MidID(3,4);
962 vMidID[3] =
MidID(2,2);
967 case 16:vMidID[0] =
MidID(1,7);
968 vMidID[1] =
MidID(2,10);
969 vMidID[2] =
MidID(3,2);
970 vMidID[3] =
MidID(2,7);
973 case 17:vMidID[0] =
MidID(1,7);
974 vMidID[1] =
MidID(2,11);
975 vMidID[2] =
MidID(3,4);
976 vMidID[3] =
MidID(2,3);
981 case 18:vMidID[0] =
MidID(1,8);
982 vMidID[1] =
MidID(2,13);
983 vMidID[2] =
MidID(3,2);
984 vMidID[3] =
MidID(2,7);
987 case 19:vMidID[0] =
MidID(1,0);
988 vMidID[1] =
MidID(2,3);
989 vMidID[2] =
MidID(3,4);
990 vMidID[3] =
MidID(2,15);
995 case 20:vMidID[0] =
MidID(1,10);
996 vMidID[1] =
MidID(2,6);
997 vMidID[2] =
MidID(3,2);
998 vMidID[3] =
MidID(2,12);
1001 case 21:vMidID[0] =
MidID(1,2);
1002 vMidID[1] =
MidID(2,14);
1003 vMidID[2] =
MidID(3,4);
1004 vMidID[3] =
MidID(2,2);
1009 case 22:vMidID[0] =
MidID(1,11);
1010 vMidID[1] =
MidID(2,7);
1011 vMidID[2] =
MidID(3,2);
1012 vMidID[3] =
MidID(2,6);
1015 case 23:vMidID[0] =
MidID(1,3);
1016 vMidID[1] =
MidID(2,2);
1017 vMidID[2] =
MidID(3,4);
1018 vMidID[3] =
MidID(2,3);
1022 default:
UG_THROW(
"Octahedron only has 24 SCVFs (no. 0-23), but requested no. " << i <<
".");
1038 case 0: vMidID[0] =
MidID(0,1);
1039 vMidID[1] =
MidID(1,4);
1040 vMidID[2] =
MidID(2,8);
1041 vMidID[3] =
MidID(1,12);
1042 vMidID[4] =
MidID(1,8);
1043 vMidID[5] =
MidID(2,4);
1044 vMidID[6] =
MidID(3,1);
1045 vMidID[7] =
MidID(2,13);
1048 case 1: vMidID[0] =
MidID(0,1);
1049 vMidID[1] =
MidID(1,13);
1050 vMidID[2] =
MidID(2,9);
1051 vMidID[3] =
MidID(1,4);
1052 vMidID[4] =
MidID(1,0);
1053 vMidID[5] =
MidID(2,15);
1054 vMidID[6] =
MidID(3,3);
1055 vMidID[7] =
MidID(2,0);
1060 case 2: vMidID[0] =
MidID(0,2);
1061 vMidID[1] =
MidID(1,5);
1062 vMidID[2] =
MidID(2,8);
1063 vMidID[3] =
MidID(1,4);
1064 vMidID[4] =
MidID(1,9);
1065 vMidID[5] =
MidID(2,5);
1066 vMidID[6] =
MidID(3,1);
1067 vMidID[7] =
MidID(2,4);
1070 case 3: vMidID[0] =
MidID(0,2);
1071 vMidID[1] =
MidID(1,4);
1072 vMidID[2] =
MidID(2,9);
1073 vMidID[3] =
MidID(1,5);
1074 vMidID[4] =
MidID(1,1);
1075 vMidID[5] =
MidID(2,0);
1076 vMidID[6] =
MidID(3,3);
1077 vMidID[7] =
MidID(2,1);
1082 case 4: vMidID[0] =
MidID(0,3);
1083 vMidID[1] =
MidID(1,12);
1084 vMidID[2] =
MidID(2,8);
1085 vMidID[3] =
MidID(1,5);
1086 vMidID[4] =
MidID(1,10);
1087 vMidID[5] =
MidID(2,13);
1088 vMidID[6] =
MidID(3,1);
1089 vMidID[7] =
MidID(2,5);
1092 case 5: vMidID[0] =
MidID(0,3);
1093 vMidID[1] =
MidID(1,5);
1094 vMidID[2] =
MidID(2,9);
1095 vMidID[3] =
MidID(1,13);
1096 vMidID[4] =
MidID(1,2);
1097 vMidID[5] =
MidID(2,1);
1098 vMidID[6] =
MidID(3,3);
1099 vMidID[7] =
MidID(2,15);
1104 case 6: vMidID[0] =
MidID(0,5);
1105 vMidID[1] =
MidID(1,9);
1106 vMidID[2] =
MidID(2,4);
1107 vMidID[3] =
MidID(1,8);
1108 vMidID[4] =
MidID(1,10);
1109 vMidID[5] =
MidID(2,5);
1110 vMidID[6] =
MidID(3,1);
1111 vMidID[7] =
MidID(2,13);
1114 case 7: vMidID[0] =
MidID(0,0);
1115 vMidID[1] =
MidID(1,0);
1116 vMidID[2] =
MidID(2,0);
1117 vMidID[3] =
MidID(1,1);
1118 vMidID[4] =
MidID(1,2);
1119 vMidID[5] =
MidID(2,14);
1120 vMidID[6] =
MidID(3,3);
1121 vMidID[7] =
MidID(2,1);
1126 case 8: vMidID[0] =
MidID(0,1);
1127 vMidID[1] =
MidID(1,13);
1128 vMidID[2] =
MidID(2,10);
1129 vMidID[3] =
MidID(1,7);
1130 vMidID[4] =
MidID(1,8);
1131 vMidID[5] =
MidID(2,12);
1132 vMidID[6] =
MidID(3,2);
1133 vMidID[7] =
MidID(2,7);
1136 case 9: vMidID[0] =
MidID(0,1);
1137 vMidID[1] =
MidID(1,7);
1138 vMidID[2] =
MidID(2,11);
1139 vMidID[3] =
MidID(1,12);
1140 vMidID[4] =
MidID(1,0);
1141 vMidID[5] =
MidID(2,3);
1142 vMidID[6] =
MidID(3,4);
1143 vMidID[7] =
MidID(2,14);
1148 case 10:vMidID[0] =
MidID(0,3);
1149 vMidID[1] =
MidID(1,6);
1150 vMidID[2] =
MidID(2,10);
1151 vMidID[3] =
MidID(1,13);
1152 vMidID[4] =
MidID(1,10);
1153 vMidID[5] =
MidID(2,6);
1154 vMidID[6] =
MidID(3,2);
1155 vMidID[7] =
MidID(2,12);
1158 case 11:vMidID[0] =
MidID(0,3);
1159 vMidID[1] =
MidID(1,12);
1160 vMidID[2] =
MidID(2,11);
1161 vMidID[3] =
MidID(1,6);
1162 vMidID[4] =
MidID(1,2);
1163 vMidID[5] =
MidID(2,14);
1164 vMidID[6] =
MidID(3,4);
1165 vMidID[7] =
MidID(2,2);
1170 case 12:vMidID[0] =
MidID(0,4);
1171 vMidID[1] =
MidID(1,7);
1172 vMidID[2] =
MidID(2,10);
1173 vMidID[3] =
MidID(1,6);
1174 vMidID[4] =
MidID(1,11);
1175 vMidID[5] =
MidID(2,7);
1176 vMidID[6] =
MidID(3,2);
1177 vMidID[7] =
MidID(2,6);
1180 case 13:vMidID[0] =
MidID(0,4);
1181 vMidID[1] =
MidID(1,6);
1182 vMidID[2] =
MidID(2,11);
1183 vMidID[3] =
MidID(1,7);
1184 vMidID[4] =
MidID(1,3);
1185 vMidID[5] =
MidID(2,2);
1186 vMidID[6] =
MidID(3,4);
1187 vMidID[7] =
MidID(2,3);
1192 case 14:vMidID[0] =
MidID(0,5);
1193 vMidID[1] =
MidID(1,10);
1194 vMidID[2] =
MidID(2,12);
1195 vMidID[3] =
MidID(1,8);
1196 vMidID[4] =
MidID(1,11);
1197 vMidID[5] =
MidID(2,6);
1198 vMidID[6] =
MidID(3,2);
1199 vMidID[7] =
MidID(2,7);
1202 case 15:vMidID[0] =
MidID(0,0);
1203 vMidID[1] =
MidID(1,0);
1204 vMidID[2] =
MidID(2,15);
1205 vMidID[3] =
MidID(1,2);
1206 vMidID[4] =
MidID(1,3);
1207 vMidID[5] =
MidID(2,3);
1208 vMidID[6] =
MidID(3,4);
1209 vMidID[7] =
MidID(2,2);
1213 default:
UG_THROW(
"Octahedron only has 16 SCVs (no. 0-15), but requested no. " << i <<
".");
1245 numSCV = refElem.
num(0);
1246 numSCVF = refElem.
num(1);
1250 UG_WARNING(
"Pyramid Finite Volume Geometry for 1st order currently "
1251 "implemented in DimFV1Geom EXPERIMENTATLLY. Please contact "
1252 "Martin Stepniewski or Andreas Vogel if you see this message.")
1254 numSCV = 4*refElem.
num(1);
1255 numSCVF = 2*refElem.
num(1);
1264 UG_THROW (
"fv1_dim_traits_base: Unsupported combination of dimension and reference element.");
1279 From = refElem.
id(1, i, 0, 0);
1280 To = refElem.
id(1, i, 0, 1);
1297 UG_THROW (
"fv1_dim_traits_base: Unsupported combination of dimension and reference element.");
1320 UG_THROW (
"fv1_dim_traits_base: Unsupported combination of dimension and reference element.");
1342 fv1_traits_ReferenceFace3d::NormalOnSCVF_Face<ReferenceTriangle>(outNormal, vSCVFCorner, vElemCorner);
1524 template <
typename TRefElem,
int TWorldDim>
1535 template <
int TOrder,
typename TRefElem,
int TWorldDim>
struct fvho_traits
a mathematical Vector with N entries.
Definition: math_vector.h:97
Definition: reference_element.h:345
size_t num(int dim) const
returns the number of geometric objects of dim
Definition: reference_element.h:95
int id(int dim_i, size_t i, int dim_j, size_t j) const
id of object j in dimension dim_j of obj i in dimension dim_i
Definition: reference_element.h:127
reference element for a hexahedron
Definition: reference_element.h:648
Definition: reference_element.h:699
Definition: reference_element.h:595
Definition: reference_element.h:546
static const int numEdges
number of eges
Definition: reference_element.h:558
Definition: reference_element.h:445
Definition: reference_element.h:494
Definition: reference_element.h:394
Definition: reference_element.h:303
#define UG_THROW(msg)
Definition: error.h:57
#define UG_WARNING(msg)
Definition: log.h:328
double number
Definition: types.h:124
void VecNormalize(vector_t &vOut, const vector_t &v)
scales a vector_t to unit length
Definition: math_vector_functions_common_impl.hpp:501
void VecSubtract(vector_t &vOut, const vector_t &v1, const vector_t &v2)
subtracts v2 from v1 and stores the result in a vOut
Definition: math_vector_functions_common_impl.hpp:226
vector_t::value_type VecDistance(const vector_t &v1, const vector_t &v2)
returns the distance of two vector_ts.
Definition: math_vector_functions_common_impl.hpp:375
void VecAdd(vector_t &vOut, const vector_t &v1, const vector_t &v2)
adds two MathVector<N>s and stores the result in a third one
Definition: math_vector_functions_common_impl.hpp:185
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
ReferenceObjectID
these ids are used to identify the shape of a geometric object.
Definition: grid_base_objects.h:74
@ ROID_PYRAMID
Definition: grid_base_objects.h:83
@ ROID_OCTAHEDRON
Definition: grid_base_objects.h:84
void HangingNormalOnSCVF(MathVector< TWorldDim > &outNormal, const MathVector< TWorldDim > *vCornerCoords)
Definition: fv_util.h:1525
void ElementNormal< ReferenceQuadrilateral, 3 >(MathVector< 3 > &normalOut, const MathVector< 3 > *vCornerCoords)
Normal to a Quadrilateral in 3d.
Definition: geometry_util.h:579
void ElementNormal< ReferenceTriangle, 3 >(MathVector< 3 > &normalOut, const MathVector< 3 > *vCornerCoords)
Normal to a Triangle in 3d.
Definition: geometry_util.h:556
void ElementNormal< ReferenceEdge, 2 >(MathVector< 2 > &normalOut, const MathVector< 2 > *vCornerCoords)
Normal to a Line in 2d.
Definition: geometry_util.h:500
@ 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
void ElementNormal< ReferenceVertex, 1 >(MathVector< 1 > &normalOut, const MathVector< 1 > *vCornerCoords)
Normal to a Point in 1d.
Definition: geometry_util.h:436
void AveragePositions(TPosition &vOut, const TPosition *vCornerCoords, size_t num)
averages positions by arithmetic mean
Definition: fv_util.h:59
helper class to store dimension and id of a midpoint of a sub-element
Definition: fv_geom_base.h:41
static void NormalOnSCVF(MathVector< 3 > &outNormal, const MathVector< 3 > *vSCVFCorner, const MathVector< 3 > *vElemCorner)
Definition: fv_util.h:1334
Base for the Traits for Finite Volumes for a generic element of the fixed dimensionalities.
Definition: fv_util.h:1227
static void get_dim_scvf_from_to(const ref_elem_type &refElem, ReferenceObjectID roid, size_t i, size_t &From, size_t &To)
returns the 'from' and 'to' corner indices for a scvf
Definition: fv_util.h:1269
static size_t dim_scv_node_id(const ref_elem_type &refElem, ReferenceObjectID roid, size_t i)
returns the node id for a scv
Definition: fv_util.h:1302
static const int dim
dimension of reference element
Definition: fv_util.h:1229
static void dim_get_num_SCV_and_SCVF(const ref_elem_type &refElem, ReferenceObjectID roid, size_t &numSCV, size_t &numSCVF)
returns the number of the SCV
Definition: fv_util.h:1236
DimReferenceElement< dim > ref_elem_type
generic reference element type
Definition: fv_util.h:1232
Traits for Finite Volumes for a generic element of the fixed dimensionalities.
Definition: fv_util.h:1325
static void NormalOnBF(MathVector< 1 > &outNormal, const MathVector< 1 > *vSCVFCorner, const MathVector< 1 > *vElemCorner)
Definition: fv_util.h:239
static void NormalOnSCVF(MathVector< 1 > &outNormal, const MathVector< 1 > *vSCVFCorner, const MathVector< 1 > *vElemCorner)
Definition: fv_util.h:232
static void NormalOnSCVF(MathVector< 2 > &outNormal, const MathVector< 2 > *vSCVFCorner, const MathVector< 2 > *vElemCorner)
Definition: fv_util.h:251
static void NormalOnBF(MathVector< 2 > &outNormal, const MathVector< 2 > *vSCVFCorner, const MathVector< 2 > *vElemCorner)
Definition: fv_util.h:258
static void NormalOnBF(MathVector< 3 > &outNormal, const MathVector< 3 > *vSCVFCorner, const MathVector< 3 > *vElemCorner)
Definition: fv_util.h:277
static void NormalOnSCVF(MathVector< 3 > &outNormal, const MathVector< 3 > *vSCVFCorner, const MathVector< 3 > *vElemCorner)
Definition: fv_util.h:270
static void NormalOnBF(MathVector< 3 > &outNormal, const MathVector< 3 > *vSCVFCorner, const MathVector< 3 > *vElemCorner)
Definition: fv_util.h:561
static void NormalOnSCVF(MathVector< 3 > &outNormal, const MathVector< 3 > *vSCVFCorner, const MathVector< 3 > *vElemCorner)
Definition: fv_util.h:557
static void NormalOnSCVF(MathVector< 3 > &outNormal, const MathVector< 3 > *vSCVFCorner, const MathVector< 3 > *vElemCorner)
Definition: fv_util.h:392
static void NormalOnBF(MathVector< 3 > &outNormal, const MathVector< 3 > *vSCVFCorner, const MathVector< 3 > *vElemCorner)
Definition: fv_util.h:396
static void NormalOnSCVF(MathVector< 3 > &outNormal, const MathVector< 3 > *vSCVFCorner, const MathVector< 3 > *vElemCorner)
Definition: fv_util.h:372
static void NormalOnBF(MathVector< 3 > &outNormal, const MathVector< 3 > *vSCVFCorner, const MathVector< 3 > *vElemCorner)
Definition: fv_util.h:376
Definition: fv_util.h:214
ReferenceVertex scvf_type
Definition: fv_util.h:224
static const size_t maxNumSCV
Definition: fv_util.h:216
static const size_t NumCornersOfBF
Definition: fv_util.h:221
static const size_t maxNumSCVF
Definition: fv_util.h:215
ReferenceEdge scv_type
Definition: fv_util.h:223
static const size_t NumCornersOfSCVF
Definition: fv_util.h:219
static const size_t maxNSH
Definition: fv_util.h:217
ReferenceVertex bf_type
Definition: fv_util.h:225
static const size_t NumCornersOfSCV
Definition: fv_util.h:220
Definition: fv_util.h:305
static void NormalOnBF(MathVector< 2 > &outNormal, const MathVector< 2 > *vSCVFCorner, const MathVector< 2 > *vElemCorner)
Definition: fv_util.h:310
static void NormalOnSCVF(MathVector< 2 > &outNormal, const MathVector< 2 > *vSCVFCorner, const MathVector< 2 > *vElemCorner)
Definition: fv_util.h:306
Definition: fv_util.h:319
static void NormalOnBF(MathVector< 3 > &outNormal, const MathVector< 3 > *vSCVFCorner, const MathVector< 3 > *vElemCorner)
Definition: fv_util.h:356
static void NormalOnSCVF(MathVector< 3 > &outNormal, const MathVector< 3 > *vSCVFCorner, const MathVector< 3 > *vElemCorner)
Definition: fv_util.h:350
static void NormalOnSCVF_Face(MathVector< 3 > &outNormal, const MathVector< 3 > *vSCVFCorner, const MathVector< 3 > *vElemCorner)
Definition: fv_util.h:321
Definition: fv_util.h:290
static const size_t maxNumSCVF
Definition: fv_util.h:291
static const size_t NumCornersOfBF
Definition: fv_util.h:297
static const size_t NumCornersOfSCV
Definition: fv_util.h:296
ReferenceQuadrilateral scv_type
Definition: fv_util.h:299
static const size_t maxNSH
Definition: fv_util.h:293
static const size_t maxNumSCV
Definition: fv_util.h:292
ReferenceEdge scvf_type
Definition: fv_util.h:300
static const size_t NumCornersOfSCVF
Definition: fv_util.h:295
ReferenceEdge bf_type
Definition: fv_util.h:301
Octahedra: dimension-independent part of the FV1 traits.
Definition: fv_util.h:573
@ MAXSUBSTRUCTCORNERS
Definition: fv_util.h:594
static const size_t numSCVF
overridden field from fv1_traits_most_common
Definition: fv_util.h:584
static size_t substruct_num(int dim_i, size_t i, int dim_j)
returns the number of objects of dim for a sub-geometric object of the implicit interior substructure
Definition: fv_util.h:719
static size_t scv_node_id(const ReferenceOctahedron &refElem, size_t i)
returns the node id for a scv (overridden function from fv1_traits_most_common)
Definition: fv_util.h:810
static size_t scvf_from_to(const ReferenceOctahedron &refElem, size_t i, size_t ft)
returns the 'from' and 'to' corner indices for a scvf (overridden function from fv1_traits_most_commo...
Definition: fv_util.h:761
static int substruct_coID(int dim_i, size_t i, size_t j)
returns the id of corner j of obj i in dimension dim_i of the implicit interior substructure
Definition: fv_util.h:611
@ MAXDIM
Definition: fv_util.h:588
@ MAXSUBSTRUCTOBJECTS
Definition: fv_util.h:591
static size_t substruct_num(int dim)
returns the number of implicit interior substructure geometric objects of dim
Definition: fv_util.h:691
static void scvf_mid_id(const ReferenceOctahedron &refElem, MidID *vMidID, size_t i)
Calculates array vMidID for scvf i.
Definition: fv_util.h:846
static void scv_mid_id(const ReferenceOctahedron &refElem, MidID *vMidID, size_t i)
Calculates array vMidID for scv i.
Definition: fv_util.h:1029
static const size_t numSCV
overridden field from fv1_traits_most_common
Definition: fv_util.h:582
Pyramids: dimension-independent part of the FV1 traits.
Definition: fv_util.h:455
static void scvf_mid_id(const ReferencePyramid &refElem, MidID *vMidID, size_t i)
Calculates array vMidID for scvf i.
Definition: fv_util.h:495
ReferenceTetrahedron scv_type
Definition: fv_util.h:464
ReferenceQuadrilateral bf_type
Definition: fv_util.h:466
static const size_t NumCornersOfSCV
Definition: fv_util.h:461
static size_t scvf_from_to(const ReferencePyramid &refElem, size_t i, size_t ft)
returns the 'from' and 'to' corner indices for a scvf (overridden function from fv1_traits_most_commo...
Definition: fv_util.h:470
static const size_t NumCornersOfSCVF
Definition: fv_util.h:460
ReferenceTriangle scvf_type
Definition: fv_util.h:465
static const size_t numSCVF
overridden field from fv1_traits_most_common
Definition: fv_util.h:458
static const size_t NumCornersOfBF
Definition: fv_util.h:462
static size_t scv_node_id(const ReferencePyramid &refElem, size_t i)
returns the node id for a scv (overridden function from fv1_traits_most_common)
Definition: fv_util.h:481
static const size_t numSCV
overridden field from fv1_traits_most_common
Definition: fv_util.h:456
static void scv_mid_id(const ReferencePyramid &refElem, MidID *vMidID, size_t i)
Calculates array vMidID for scv i.
Definition: fv_util.h:520
Definition: fv_util.h:409
static const size_t maxNumSCV
Definition: fv_util.h:411
static const size_t NumCornersOfBF
Definition: fv_util.h:416
static const size_t NumCornersOfSCVF
Definition: fv_util.h:414
ReferenceQuadrilateral bf_type
Definition: fv_util.h:420
static const size_t maxNumSCVF
Definition: fv_util.h:410
static void NormalOnBF(MathVector< 3 > &outNormal, const MathVector< 3 > *vSCVFCorner, const MathVector< 3 > *vElemCorner)
Definition: fv_util.h:426
static const size_t maxNSH
Definition: fv_util.h:412
ReferenceHexahedron scv_type
Definition: fv_util.h:418
static const size_t NumCornersOfSCV
Definition: fv_util.h:415
static void NormalOnSCVF(MathVector< 3 > &outNormal, const MathVector< 3 > *vSCVFCorner, const MathVector< 3 > *vElemCorner)
Definition: fv_util.h:422
ReferenceQuadrilateral scvf_type
Definition: fv_util.h:419
Base class, some fields are redefined in the instantiations for particular elements.
Definition: fv_util.h:77
static const size_t numSCVF
number of SubControlVolumeFaces (for most of the elements - overridden for e.g. ROID_PYRAMID and ROID...
Definition: fv_util.h:85
static size_t scv_node_id(const ref_elem_type &refElem, size_t i)
returns the node id for a scv
Definition: fv_util.h:100
static size_t scvf_from_to(const ref_elem_type &refElem, size_t i, size_t ft)
returns the 'from' and 'to' corner indices for a scvf
Definition: fv_util.h:89
static const size_t numSCV
number of SubControlVolumes (for most of the elements - overridden for e.g. ROID_PYRAMID and ROID_OCT...
Definition: fv_util.h:82
TRefElem ref_elem_type
type of reference element
Definition: fv_util.h:79
static void scv_mid_id(const ref_elem_type &refElem, MidID *vMidID, size_t i)
Calculates array vMidID for scv i.
Definition: fv_util.h:138
static void scvf_mid_id(const ref_elem_type &refElem, MidID *vMidID, size_t i)
Calculates array vMidID for scvf i.
Definition: fv_util.h:110
Traits for Finite Volumes (dummy implementation, s. the instantiations below)
Definition: fv_util.h:178
static const size_t NumCornersOfSCV
Definition: fv_util.h:188
static const size_t maxNSH
Definition: fv_util.h:182
void scv_type
Definition: fv_util.h:204
static void NormalOnBF(MathVector< TWorldDim > &outNormal, const MathVector< TWorldDim > *vSCVFCorner, const MathVector< TWorldDim > *vElemCorner)
static void NormalOnSCVF(MathVector< TWorldDim > &outNormal, const MathVector< TWorldDim > *vSCVFCorner, const MathVector< TWorldDim > *vElemCorner)
static const size_t NumCornersOfSCVF
Definition: fv_util.h:185
void bf_type
Definition: fv_util.h:206
static const size_t NumCornersOfBF
Definition: fv_util.h:191
static const size_t maxNumSCV
Definition: fv_util.h:181
void scvf_type
Definition: fv_util.h:205
static const size_t maxNumSCVF
Definition: fv_util.h:180
Traits for Finite Volumes of higher order.
Definition: fv_util.h:1536
static const size_t MaxNumCornersOfSCV
Definition: fv_util.h:1539
static void NormalOnSCVF(MathVector< TWorldDim > &outNormal, const MathVector< TWorldDim > *vCornerCoords)
void scv_type
Definition: fv_util.h:1541
static const size_t NumCornersOfSCVF
Definition: fv_util.h:1538
static const size_t NumSubElem
Definition: fv_util.h:1544
ReferenceEdge elem_type_3
Definition: fv_util.h:1489
ReferenceEdge elem_type_1
Definition: fv_util.h:1487
ReferenceEdge elem_type_4
Definition: fv_util.h:1490
ReferenceEdge scv_type
Definition: fv_util.h:1485
ReferenceEdge elem_type_0
Definition: fv_util.h:1486
ReferenceEdge elem_type_2
Definition: fv_util.h:1488
ReferenceQuadrilateral elem_type_1
Definition: fv_util.h:1499
ReferenceTriangle elem_type_0
Definition: fv_util.h:1498
ReferenceQuadrilateral elem_type_4
Definition: fv_util.h:1502
ReferenceTriangle elem_type_2
Definition: fv_util.h:1500
ReferenceQuadrilateral elem_type_3
Definition: fv_util.h:1501
ReferenceQuadrilateral scv_type
Definition: fv_util.h:1497
ReferenceTetrahedron elem_type_0
Definition: fv_util.h:1510
ReferencePyramid elem_type_1
Definition: fv_util.h:1511
ReferenceTetrahedron scv_type
Definition: fv_util.h:1509
ReferenceHexahedron elem_type_3
Definition: fv_util.h:1513
ReferencePrism elem_type_2
Definition: fv_util.h:1512
ReferenceOctahedron elem_type_4
Definition: fv_util.h:1514
Definition: fv_util.h:1472
void elem_type_3
Definition: fv_util.h:1477
void elem_type_2
Definition: fv_util.h:1476
void elem_type_0
Definition: fv_util.h:1474
void elem_type_4
Definition: fv_util.h:1478
void scv_type
Definition: fv_util.h:1473
static const size_t MaxNumCornersOfSCV
Definition: fv_util.h:1480
static const size_t NumCornersOfSCVF
Definition: fv_util.h:1479
void elem_type_1
Definition: fv_util.h:1475
static void NormalOnSCVF(MathVector< 1 > &outNormal, const MathVector< 1 > *vCornerCoords)
Definition: fv_util.h:1378
static void NormalOnSCVF(MathVector< 2 > &outNormal, const MathVector< 2 > *vCornerCoords)
Definition: fv_util.h:1384
static void NormalOnSCVF(MathVector< 3 > &outNormal, const MathVector< 3 > *vCornerCoords)
Definition: fv_util.h:1390
static void NormalOnSCVF(MathVector< 2 > &outNormal, const MathVector< 2 > *vCornerCoords)
Definition: fv_util.h:1419
static void NormalOnSCVF(MathVector< 3 > &outNormal, const MathVector< 3 > *vCornerCoords)
Definition: fv_util.h:1425
static void NormalOnSCVF(MathVector< 2 > &outNormal, const MathVector< 2 > *vCornerCoords)
Definition: fv_util.h:1407
static void NormalOnSCVF(MathVector< 3 > &outNormal, const MathVector< 3 > *vCornerCoords)
Definition: fv_util.h:1413
Definition: fv_util.h:1370
static const size_t MaxNumCornersOfSCV
Definition: fv_util.h:1372
ReferenceEdge scv_type
Definition: fv_util.h:1373
static const size_t NumCornersOfSCVF
Definition: fv_util.h:1371
Definition: fv_util.h:1399
ReferenceQuadrilateral scv_type
Definition: fv_util.h:1402
static const size_t NumCornersOfSCVF
Definition: fv_util.h:1400
static const size_t MaxNumCornersOfSCV
Definition: fv_util.h:1401
Definition: fv_util.h:1434
static void NormalOnSCVF(MathVector< 3 > &outNormal, const MathVector< 3 > *vCornerCoords)
Definition: fv_util.h:1435
ReferenceTetrahedron scv_type
Definition: fv_util.h:1438
Traits for hanging finite volume (dummy implementation)
Definition: fv_util.h:1356
static const size_t NumCornersOfSCVF
Definition: fv_util.h:1357
static const size_t MaxNumCornersOfSCV
Definition: fv_util.h:1358
static void NormalOnSCVF(MathVector< TWorldDim > &outNormal, const MathVector< TWorldDim > *vCornerCoords)
void scv_type
Definition: fv_util.h:1362