35#include "../CConfig.hpp"
84 unsigned short val_orderExact);
108 unsigned long typeErrorMessage = 0);
127 static void InverseMatrix(
unsigned short n, vector<su2double>&
A);
135 void GradVandermonde1D(
unsigned short nDOFs,
const vector<su2double>& r, vector<su2double>& VDr);
143 void Vandermonde1D(
unsigned short nDOFs,
const vector<su2double>& r, vector<su2double>&
V);
155 const vector<su2double>& dLagBasisPoints);
166 vector<su2double>& lagBasisPoints);
191 const bool swapFaceInElement,
unsigned short& nDOFsElem,
192 vector<su2double>& drLagBasisIntegration,
193 vector<su2double>& dsLagBasisIntegration,
194 vector<su2double>& dtLagBasisIntegration);
207 const vector<su2double>& s, vector<su2double>& VDr, vector<su2double>& VDs);
220 const vector<su2double>& s, vector<su2double>& VDr, vector<su2double>& VDs);
235 const vector<su2double>& s,
const vector<su2double>& t, vector<su2double>& VDr,
236 vector<su2double>& VDs, vector<su2double>& VDt);
251 const vector<su2double>& s,
const vector<su2double>& t, vector<su2double>& VDr,
252 vector<su2double>& VDs, vector<su2double>& VDt);
267 const vector<su2double>& s,
const vector<su2double>& t, vector<su2double>& VDr,
268 vector<su2double>& VDs, vector<su2double>& VDt);
283 const vector<su2double>& s,
const vector<su2double>& t, vector<su2double>& VDr,
284 vector<su2double>& VDs, vector<su2double>& VDt);
301 unsigned short& nDOFs, vector<su2double>& rDOFs,
302 vector<su2double>& matVandermondeInv,
303 vector<su2double>& lagBasisPoints,
304 vector<su2double>& drLagBasisPoints);
326 const unsigned short nPoly,
const vector<su2double>& rPoints,
const vector<su2double>& sPoints,
327 unsigned short& nDOFs, vector<su2double>& rDOFs, vector<su2double>& sDOFs, vector<su2double>& matVandermondeInv,
328 vector<su2double>& lagBasisPoints, vector<su2double>& drLagBasisPoints, vector<su2double>& dsLagBasisPoints);
350 const unsigned short nPoly,
const vector<su2double>& rPoints,
const vector<su2double>& sPoints,
351 unsigned short& nDOFs, vector<su2double>& rDOFs, vector<su2double>& sDOFs, vector<su2double>& matVandermondeInv,
352 vector<su2double>& lagBasisPoints, vector<su2double>& drLagBasisPoints, vector<su2double>& dsLagBasisPoints);
379 const unsigned short nPoly,
const vector<su2double>& rPoints,
const vector<su2double>& sPoints,
380 const vector<su2double>& tPoints,
unsigned short& nDOFs, vector<su2double>& rDOFs, vector<su2double>& sDOFs,
381 vector<su2double>& tDOFs, vector<su2double>& matVandermondeInv, vector<su2double>& lagBasisPoints,
382 vector<su2double>& drLagBasisPoints, vector<su2double>& dsLagBasisPoints, vector<su2double>& dtLagBasisPoints);
409 const unsigned short nPoly,
const vector<su2double>& rPoints,
const vector<su2double>& sPoints,
410 const vector<su2double>& tPoints,
unsigned short& nDOFs, vector<su2double>& rDOFs, vector<su2double>& sDOFs,
411 vector<su2double>& tDOFs, vector<su2double>& matVandermondeInv, vector<su2double>& lagBasisPoints,
412 vector<su2double>& drLagBasisPoints, vector<su2double>& dsLagBasisPoints, vector<su2double>& dtLagBasisPoints);
439 const unsigned short nPoly,
const vector<su2double>& rPoints,
const vector<su2double>& sPoints,
440 const vector<su2double>& tPoints,
unsigned short& nDOFs, vector<su2double>& rDOFs, vector<su2double>& sDOFs,
441 vector<su2double>& tDOFs, vector<su2double>& matVandermondeInv, vector<su2double>& lagBasisPoints,
442 vector<su2double>& drLagBasisPoints, vector<su2double>& dsLagBasisPoints, vector<su2double>& dtLagBasisPoints);
469 const unsigned short nPoly,
const vector<su2double>& rPoints,
const vector<su2double>& sPoints,
470 const vector<su2double>& tPoints,
unsigned short& nDOFs, vector<su2double>& rDOFs, vector<su2double>& sDOFs,
471 vector<su2double>& tDOFs, vector<su2double>& matVandermondeInv, vector<su2double>& lagBasisPoints,
472 vector<su2double>& drLagBasisPoints, vector<su2double>& dsLagBasisPoints, vector<su2double>& dtLagBasisPoints);
488 void MatMulRowMajor(
const unsigned short nDOFs,
const unsigned short nPoints,
const vector<su2double>&
A,
489 const vector<su2double>&
B, vector<su2double>&
C);
524 const vector<su2double>& s, vector<su2double>&
V);
535 const vector<su2double>& s, vector<su2double>&
V);
547 const vector<su2double>& s,
const vector<su2double>& t, vector<su2double>&
V);
559 const vector<su2double>& s,
const vector<su2double>& t, vector<su2double>&
V);
570 void Vandermonde3D_Prism(
unsigned short nPoly,
unsigned short nDOFs,
const vector<su2double>& r,
571 const vector<su2double>& s,
const vector<su2double>& t, vector<su2double>&
V);
583 const vector<su2double>& s,
const vector<su2double>& t, vector<su2double>&
V);
601 void GaussLegendrePoints1D(vector<su2double>& GLPoints, vector<su2double>& GLWeights);
612 su2double GradNormJacobi(
unsigned short n,
unsigned short alpha,
unsigned short beta,
su2double x);
618 void IntegrationPointsLine(
void);
624 void IntegrationPointsTriangle(
void);
630 void IntegrationPointsQuadrilateral(
void);
636 void IntegrationPointsTetrahedron(
void);
642 void IntegrationPointsPyramid(
void);
648 void IntegrationPointsPrism(
void);
654 void IntegrationPointsHexahedron(
void);
664 su2double NormJacobi(
unsigned short n,
unsigned short alpha,
unsigned short beta,
su2double x);
675 unsigned short nPoly;
676 unsigned short nDOFs;
678 unsigned short VTK_Type1;
679 unsigned short VTK_Type2;
681 vector<su2double> rDOFs;
682 vector<su2double> sDOFs;
683 vector<su2double> tDOFs;
685 vector<su2double> lagBasisIntegration;
686 vector<su2double> lagBasisIntegrationTrans;
689 vector<su2double> lagBasisSolDOFs;
693 drLagBasisIntegration;
695 dsLagBasisIntegration;
697 dtLagBasisIntegration;
699 vector<su2double> matVandermondeInv;
705 vector<su2double> matDerBasisIntTrans;
708 vector<su2double> matDerBasisSolDOFs;
710 vector<su2double> matDerBasisOwnDOFs;
714 vector<su2double> mat2ndDerBasisInt;
718 vector<unsigned short> connFace0;
720 vector<unsigned short> connFace1;
722 vector<unsigned short> connFace2;
724 vector<unsigned short> connFace3;
726 vector<unsigned short> connFace4;
728 vector<unsigned short> connFace5;
731 vector<unsigned short> subConn1ForPlotting;
733 vector<unsigned short> subConn2ForPlotting;
753 unsigned short val_orderExact = 0,
const vector<su2double>* rLocSolDOFs =
nullptr,
754 const vector<su2double>* sLocSolDOFs =
nullptr,
const vector<su2double>* tLocSolDOFs =
nullptr);
789 vector<vector<su2double> >& dLagBasis);
904 inline unsigned short GetNDOFs(
void)
const {
return nDOFs; }
910 inline unsigned short GetNPoly(
void)
const {
return nPoly; }
930 inline const unsigned short*
GetSubConnType1(
void)
const {
return subConn1ForPlotting.data(); }
950 inline const unsigned short*
GetSubConnType2(
void)
const {
return subConn2ForPlotting.data(); }
963 inline const vector<su2double>*
GetRDOFs(
void)
const {
return &rDOFs; }
970 inline const vector<su2double>*
GetSDOFs(
void)
const {
return &sDOFs; }
977 inline const vector<su2double>*
GetTDOFs(
void)
const {
return &tDOFs; }
986 bool SameStandardElement(
unsigned short val_VTK_Type,
unsigned short val_nPoly,
bool val_constJac);
1005 void ChangeDirectionQuadConn(vector<unsigned short>& connQuad,
unsigned short vert0,
unsigned short vert1,
1006 unsigned short vert2,
unsigned short vert3)
const;
1016 void ChangeDirectionTriangleConn(vector<unsigned short>& connTriangle,
unsigned short vert0,
unsigned short vert1,
1017 unsigned short vert2)
const;
1037 void CreateBasisFunctionsAndMatrixDerivatives(
const vector<su2double>& rLoc,
const vector<su2double>& sLoc,
1038 const vector<su2double>& tLoc, vector<su2double>& matVandermondeInv,
1039 vector<su2double>& lagBasis, vector<su2double>& matDerBasis);
1043 void DataStandardLine(
void);
1048 void DataStandardTriangle(
void);
1053 void DataStandardQuadrilateral(
void);
1058 void DataStandardTetrahedron(
void);
1063 void DataStandardPyramid(
void);
1068 void DataStandardPrism(
void);
1073 void DataStandardHexahedron(
void);
1079 void SubConnTetrahedron(
void);
1085 void SubConnPyramid(
void);
1091 void SubConnPrism(
void);
1097 void SubConnHexahedron(
void);
1108 unsigned short nDOFsFaceSide0;
1109 unsigned short nDOFsFaceSide1;
1111 unsigned short nPolyElemSide0;
1112 unsigned short nPolyElemSide1;
1113 unsigned short nDOFsElemSide0;
1114 unsigned short nDOFsElemSide1;
1115 unsigned short VTK_TypeElemSide0;
1116 unsigned short VTK_TypeElemSide1;
1118 bool swapFaceInElementSide0;
1121 bool swapFaceInElementSide1;
1128 vector<su2double> rDOFsFaceSide0;
1129 vector<su2double> rDOFsFaceSide1;
1130 vector<su2double> sDOFsFaceSide0;
1131 vector<su2double> sDOFsFaceSide1;
1133 vector<su2double> lagBasisFaceIntegrationSide0;
1135 vector<su2double> lagBasisFaceIntegrationSide1;
1138 vector<su2double> lagBasisFaceIntegrationTransposeSide0;
1139 vector<su2double> lagBasisFaceIntegrationTransposeSide1;
1141 vector<su2double> drLagBasisFaceIntegrationSide0;
1143 vector<su2double> drLagBasisFaceIntegrationSide1;
1145 vector<su2double> dsLagBasisFaceIntegrationSide0;
1147 vector<su2double> dsLagBasisFaceIntegrationSide1;
1150 vector<su2double> drLagBasisElemIntegrationSide0;
1152 vector<su2double> drLagBasisElemIntegrationSide1;
1154 vector<su2double> dsLagBasisElemIntegrationSide0;
1156 vector<su2double> dsLagBasisElemIntegrationSide1;
1158 vector<su2double> dtLagBasisElemIntegrationSide0;
1160 vector<su2double> dtLagBasisElemIntegrationSide1;
1164 matDerBasisElemIntegrationSide0;
1168 matDerBasisElemIntegrationSide1;
1172 vector<su2double> matDerBasisElemIntegrationTransposeSide0;
1175 vector<su2double> matDerBasisElemIntegrationTransposeSide1;
1203 unsigned short val_nPolySide0,
unsigned short val_VTK_TypeSide1,
1204 unsigned short val_nPolySide1,
bool val_constJac,
bool val_swapFaceInElementSide0,
1205 bool val_swapFaceInElementSide1,
CConfig* config,
unsigned short val_orderExact = 0);
1270 return matDerBasisElemIntegrationSide0.data();
1279 return matDerBasisElemIntegrationSide1.data();
1289 return matDerBasisElemIntegrationTransposeSide0.data();
1299 return matDerBasisElemIntegrationTransposeSide1.data();
1322 return lagBasisFaceIntegrationTransposeSide0.data();
1331 return lagBasisFaceIntegrationTransposeSide1.data();
1413 bool SameStandardMatchingFace(
unsigned short val_VTK_TypeFace,
bool val_constJac,
unsigned short val_VTK_TypeSide0,
1414 unsigned short val_nPolySide0,
unsigned short val_VTK_TypeSide1,
1415 unsigned short val_nPolySide1,
bool val_swapFaceInElementSide0,
1416 bool val_swapFaceInElementSide1);
1441 unsigned short nDOFsFace;
1443 unsigned short nPolyElem;
1444 unsigned short nDOFsElem;
1445 unsigned short VTK_TypeElem;
1447 bool swapFaceInElement;
1453 vector<su2double> rDOFsFace;
1454 vector<su2double> sDOFsFace;
1456 vector<su2double> lagBasisFaceIntegration;
1458 vector<su2double> lagBasisFaceIntegrationTranspose;
1460 vector<su2double> drLagBasisFaceIntegration;
1462 vector<su2double> dsLagBasisFaceIntegration;
1465 vector<su2double> drLagBasisElemIntegration;
1467 vector<su2double> dsLagBasisElemIntegration;
1469 vector<su2double> dtLagBasisElemIntegration;
1472 vector<su2double> matDerBasisElemIntegration;
1476 vector<su2double> matDerBasisElemIntegrationTranspose;
1480 vector<unsigned short> subConnForPlotting;
1496 unsigned short val_nPolyElem,
bool val_constJac,
bool val_swapFaceInElement,
CConfig* config,
1497 unsigned short val_orderExact = 0);
1550 return matDerBasisElemIntegrationTranspose.data();
1566 return lagBasisFaceIntegrationTranspose.data();
1621 inline const unsigned short*
GetSubFaceConn(
void)
const {
return subConnForPlotting.data(); }
1633 unsigned short val_nPolyElem,
bool val_swapFaceInElem);
#define C(i, j)
Definition blas_structure.cpp:133
#define B(i, j)
Definition blas_structure.cpp:132
Main class for defining the problem; basically this class reads the configuration file,...
Definition CConfig.hpp:64
Class to define a FEM standard boundary face.
Definition fem_standard_element.hpp:1439
unsigned short GetNSubFaces(void) const
Function, which makes available the number of linear subfaces used for plotting, among others.
Definition fem_standard_element.hpp:1601
const su2double * GetDrBasisElemIntegration(void) const
Function, which makes available the r-derivatives of the element basis functions in the integration p...
Definition fem_standard_element.hpp:1520
unsigned short GetNDOFsFace(void) const
Function, which makes available the number of DOFs of the face.
Definition fem_standard_element.hpp:1594
const su2double * GetBasisFaceIntegration(void) const
Function, which makes available the face basis functions in the integration points.
Definition fem_standard_element.hpp:1558
const su2double * GetBasisFaceIntegrationTranspose(void) const
Function, which makes available transpose matrix of the face basis functions in the integration point...
Definition fem_standard_element.hpp:1565
const su2double * GetMatDerBasisElemIntegrationTranspose(void) const
Function, which makes available the transpose of the matrix with the derivatives of the element basis...
Definition fem_standard_element.hpp:1549
unsigned short GetNDOFsPerSubFace(void) const
Function, which makes available the number of DOFs of a linear subface, used for plotting,...
Definition fem_standard_element.cpp:3583
passivedouble WorkEstimateMetis(CConfig *config)
Function, which estimates the amount of work for an element of this type. This information is used to...
Definition fem_work_estimate_metis.cpp:41
su2double GetPenaltyConstant(void) const
Function, which makes available the penalty constant for this standard face.
Definition fem_standard_element.hpp:1614
const su2double * GetDsBasisElemIntegration(void) const
Function, which makes available the s-derivatives of the element basis functions in the integration p...
Definition fem_standard_element.hpp:1527
unsigned short GetNDOFsElem(void) const
Function, which makes available the number of DOFs of the adjacent element.
Definition fem_standard_element.hpp:1588
const su2double * GetDtBasisElemIntegration(void) const
Function, which makes available the t-derivatives of the element basis functions in the integration p...
Definition fem_standard_element.hpp:1534
const su2double * GetDsBasisFaceIntegration(void) const
Function, which makes available the s-derivatives of the face basis functions in the integration poin...
Definition fem_standard_element.hpp:1581
CFEMStandardBoundaryFace(const CFEMStandardBoundaryFace &other)
Copy constructor.
Definition fem_standard_element.hpp:1503
bool SameStandardBoundaryFace(unsigned short val_VTK_TypeFace, bool val_constJac, unsigned short val_VTK_TypeElem, unsigned short val_nPolyElem, bool val_swapFaceInElem)
Function, which checks if the function arguments correspond to this standard face.
Definition fem_standard_element.cpp:3607
const unsigned short * GetSubFaceConn(void) const
Function, which makes available the the connectivity of the linear subfaces as a const pointer.
Definition fem_standard_element.hpp:1621
const su2double * GetDrBasisFaceIntegration(void) const
Function, which makes available the r-derivatives of the face basis functions in the integration poin...
Definition fem_standard_element.hpp:1574
CFEMStandardBoundaryFace & operator=(const CFEMStandardBoundaryFace &other)
Assignment operator.
Definition fem_standard_element.hpp:1510
passivedouble WorkEstimateMetisWallFunctions(CConfig *config, const unsigned short nPointsWF)
Function, which estimates the additional amount of work for an element of this type when a wall funct...
Definition fem_work_estimate_metis.cpp:46
const su2double * GetMatDerBasisElemIntegration(void) const
Function, which makes available the matrix with the derivatives of the element basis functions in the...
Definition fem_standard_element.hpp:1541
Base class for a FEM standard element.
Definition fem_standard_element.hpp:45
void GradVandermonde2D_Triangle(unsigned short nPoly, unsigned short nDOFs, const vector< su2double > &r, const vector< su2double > &s, vector< su2double > &VDr, vector< su2double > &VDs)
Function, which computes the gradients of the Vandermonde matrix for a standard triangle.
Definition fem_standard_element.cpp:1010
void Vandermonde3D_Pyramid(unsigned short nPoly, unsigned short nDOFs, const vector< su2double > &r, const vector< su2double > &s, const vector< su2double > &t, vector< su2double > &V)
Function, which computes the Vandermonde matrix for a standard pyramid.
Definition fem_standard_element.cpp:1271
void SubConnForPlottingTriangle(const unsigned short nPoly, vector< unsigned short > &subConn)
Function, which computes the local connectivity of linear subelements of a triangle,...
Definition fem_standard_element.cpp:935
void Copy(const CFEMStandardElementBase &other)
Function, which copies the data of the given object into the current object.
Definition fem_standard_element.cpp:250
vector< su2double > tIntegration
t-location of the integration points for this standard element, if needed.
Definition fem_standard_element.hpp:57
void LagrangianBasisFunctionAndDerivativesTetrahedron(const unsigned short nPoly, const vector< su2double > &rPoints, const vector< su2double > &sPoints, const vector< su2double > &tPoints, unsigned short &nDOFs, vector< su2double > &rDOFs, vector< su2double > &sDOFs, vector< su2double > &tDOFs, vector< su2double > &matVandermondeInv, vector< su2double > &lagBasisPoints, vector< su2double > &drLagBasisPoints, vector< su2double > &dsLagBasisPoints, vector< su2double > &dtLagBasisPoints)
Function, which determines the values of the Lagrangian interpolation functions and its derivatives i...
Definition fem_standard_element.cpp:580
su2double ViscousPenaltyParameter(const unsigned short VTK_TypeElem, const unsigned short nPolyElem) const
Function, which computes the constant in the penalty terms for a a viscous discretization.
Definition fem_standard_element.cpp:1579
vector< su2double > sIntegration
s-location of the integration points for this standard element, if needed.
Definition fem_standard_element.hpp:55
void GradVandermonde1D(unsigned short nDOFs, const vector< su2double > &r, vector< su2double > &VDr)
Function, which computes the gradient of the Vandermonde matrix for a standard 1D edge.
Definition fem_standard_element.cpp:155
unsigned short GetVTK_Type(void) const
Function, which makes available the type of the element.
Definition fem_standard_element.hpp:91
void CheckSumLagrangianBasisFunctions(const unsigned short nPoints, const unsigned short nDOFs, vector< su2double > &lagBasisPoints)
Function, which checks if the sum of the given Lagrangian interpolation functions is 1 in the points.
Definition fem_standard_element.cpp:233
void GradVandermonde3D_Tetrahedron(unsigned short nPoly, unsigned short nDOFs, const vector< su2double > &r, const vector< su2double > &s, const vector< su2double > &t, vector< su2double > &VDr, vector< su2double > &VDs, vector< su2double > &VDt)
Function, which computes the gradients of the Vandermonde matrix for a standard tetrahedron.
Definition fem_standard_element.cpp:1160
bool constJacobian
Whether or not the element has a constant Jacobian.
Definition fem_standard_element.hpp:51
void Vandermonde2D_Triangle(unsigned short nPoly, unsigned short nDOFs, const vector< su2double > &r, const vector< su2double > &s, vector< su2double > &V)
Function, which computes the Vandermonde matrix for a standard triangle.
Definition fem_standard_element.cpp:976
void Vandermonde1D(unsigned short nDOFs, const vector< su2double > &r, vector< su2double > &V)
Function, which computes the Vandermonde matrix for a standard 1D edge.
Definition fem_standard_element.cpp:139
void CheckSumDerivativesLagrangianBasisFunctions(const unsigned short nPoints, const unsigned short nDOFs, const vector< su2double > &dLagBasisPoints)
Function, which checks if the sum of the given derivatives of the Lagrangian interpolation functions ...
Definition fem_standard_element.cpp:220
void Vandermonde2D_Quadrilateral(unsigned short nPoly, unsigned short nDOFs, const vector< su2double > &r, const vector< su2double > &s, vector< su2double > &V)
Function, which computes the Vandermonde matrix for a standard quadrilateral.
Definition fem_standard_element.cpp:1065
void GradVandermonde3D_Pyramid(unsigned short nPoly, unsigned short nDOFs, const vector< su2double > &r, const vector< su2double > &s, const vector< su2double > &t, vector< su2double > &VDr, vector< su2double > &VDs, vector< su2double > &VDt)
Function, which computes the gradients of the Vandermonde matrix for a standard pyramid.
Definition fem_standard_element.cpp:1318
void SubConnForPlottingQuadrilateral(const unsigned short nPoly, vector< unsigned short > &subConn)
Function, which computes the local connectivity of linear subelements of a quadrilateral,...
Definition fem_standard_element.cpp:913
unsigned short VTK_Type
Element type using the VTK convention.
Definition fem_standard_element.hpp:47
void MatMulRowMajor(const unsigned short nDOFs, const unsigned short nPoints, const vector< su2double > &A, const vector< su2double > &B, vector< su2double > &C)
Function, which carries out a matrix matrix multiplication to obtain data in points and stores the re...
Definition fem_standard_element.cpp:874
void LagrangianBasisFunctionAndDerivativesPrism(const unsigned short nPoly, const vector< su2double > &rPoints, const vector< su2double > &sPoints, const vector< su2double > &tPoints, unsigned short &nDOFs, vector< su2double > &rDOFs, vector< su2double > &sDOFs, vector< su2double > &tDOFs, vector< su2double > &matVandermondeInv, vector< su2double > &lagBasisPoints, vector< su2double > &drLagBasisPoints, vector< su2double > &dsLagBasisPoints, vector< su2double > &dtLagBasisPoints)
Function, which determines the values of the Lagrangian interpolation functions and its derivatives i...
Definition fem_standard_element.cpp:732
vector< su2double > rIntegration
r-location of the integration points for this standard element.
Definition fem_standard_element.hpp:53
void LagrangianBasisFunctionAndDerivativesQuadrilateral(const unsigned short nPoly, const vector< su2double > &rPoints, const vector< su2double > &sPoints, unsigned short &nDOFs, vector< su2double > &rDOFs, vector< su2double > &sDOFs, vector< su2double > &matVandermondeInv, vector< su2double > &lagBasisPoints, vector< su2double > &drLagBasisPoints, vector< su2double > &dsLagBasisPoints)
Function, which determines the values of the Lagrangian interpolation functions and its derivatives i...
Definition fem_standard_element.cpp:520
unsigned short nIntegration
Number of points used in the numerical integration.
Definition fem_standard_element.hpp:49
void LagrangianBasisFunctionAndDerivativesPyramid(const unsigned short nPoly, const vector< su2double > &rPoints, const vector< su2double > &sPoints, const vector< su2double > &tPoints, unsigned short &nDOFs, vector< su2double > &rDOFs, vector< su2double > &sDOFs, vector< su2double > &tDOFs, vector< su2double > &matVandermondeInv, vector< su2double > &lagBasisPoints, vector< su2double > &drLagBasisPoints, vector< su2double > &dsLagBasisPoints, vector< su2double > &dtLagBasisPoints)
Function, which determines the values of the Lagrangian interpolation functions and its derivatives i...
Definition fem_standard_element.cpp:650
void GradVandermonde2D_Quadrilateral(unsigned short nPoly, unsigned short nDOFs, const vector< su2double > &r, const vector< su2double > &s, vector< su2double > &VDr, vector< su2double > &VDs)
Function, which computes the gradients of the Vandermonde matrix for a standard quadrilateral.
Definition fem_standard_element.cpp:1087
virtual ~CFEMStandardElementBase()=default
Destructor. Nothing to be done, because the vectors are deleted automatically.
CFEMStandardElementBase()=default
Constructor. Nothing to be done.
void Vandermonde3D_Hexahedron(unsigned short nPoly, unsigned short nDOFs, const vector< su2double > &r, const vector< su2double > &s, const vector< su2double > &t, vector< su2double > &V)
Function, which computes the Vandermonde matrix for a standard hexahedron.
Definition fem_standard_element.cpp:1524
void LagrangianBasisFunctionAndDerivativesTriangle(const unsigned short nPoly, const vector< su2double > &rPoints, const vector< su2double > &sPoints, unsigned short &nDOFs, vector< su2double > &rDOFs, vector< su2double > &sDOFs, vector< su2double > &matVandermondeInv, vector< su2double > &lagBasisPoints, vector< su2double > &drLagBasisPoints, vector< su2double > &dsLagBasisPoints)
Function, which determines the values of the Lagrangian interpolation functions and its derivatives i...
Definition fem_standard_element.cpp:459
vector< su2double > wIntegration
The weights of the integration points for this standard element.
Definition fem_standard_element.hpp:58
unsigned short GetNIntegration(void) const
Function, which makes available the number of integration points for this standard element.
Definition fem_standard_element.hpp:114
void LagrangianBasisFunctionAndDerivativesHexahedron(const unsigned short nPoly, const vector< su2double > &rPoints, const vector< su2double > &sPoints, const vector< su2double > &tPoints, unsigned short &nDOFs, vector< su2double > &rDOFs, vector< su2double > &sDOFs, vector< su2double > &tDOFs, vector< su2double > &matVandermondeInv, vector< su2double > &lagBasisPoints, vector< su2double > &drLagBasisPoints, vector< su2double > &dsLagBasisPoints, vector< su2double > &dtLagBasisPoints)
Function, which determines the values of the Lagrangian interpolation functions and its derivatives i...
Definition fem_standard_element.cpp:804
void GradVandermonde3D_Prism(unsigned short nPoly, unsigned short nDOFs, const vector< su2double > &r, const vector< su2double > &s, const vector< su2double > &t, vector< su2double > &VDr, vector< su2double > &VDs, vector< su2double > &VDt)
Function, which computes the gradients of the Vandermonde matrix for a standard prism.
Definition fem_standard_element.cpp:1453
void LagrangianBasisFunctionAndDerivativesLine(const unsigned short nPoly, const vector< su2double > &rPoints, unsigned short &nDOFs, vector< su2double > &rDOFs, vector< su2double > &matVandermondeInv, vector< su2double > &lagBasisPoints, vector< su2double > &drLagBasisPoints)
Function, which determines the values of the Lagrangian interpolation functions and its derivatives i...
Definition fem_standard_element.cpp:412
unsigned short GetOrderExact(void) const
Function, which makes available the polynomial order that must be integrated exactly.
Definition fem_standard_element.hpp:120
const su2double * GetWeightsIntegration(void) const
Function, which makes available the weights in the integration points.
Definition fem_standard_element.hpp:97
static unsigned short GetNDOFsStatic(unsigned short VTK_Type, unsigned short nPoly, unsigned long typeErrorMessage=0)
Static function, which makes available the number of DOFs for an element corresponding to the argumen...
Definition fem_standard_element.cpp:36
void Vandermonde3D_Tetrahedron(unsigned short nPoly, unsigned short nDOFs, const vector< su2double > &r, const vector< su2double > &s, const vector< su2double > &t, vector< su2double > &V)
Function, which computes the Vandermonde matrix for a standard tetrahedron.
Definition fem_standard_element.cpp:1112
void GradVandermonde3D_Hexahedron(unsigned short nPoly, unsigned short nDOFs, const vector< su2double > &r, const vector< su2double > &s, const vector< su2double > &t, vector< su2double > &VDr, vector< su2double > &VDs, vector< su2double > &VDt)
Function, which computes the gradients of the Vandermonde matrix for a standard hexahedron.
Definition fem_standard_element.cpp:1548
static void InverseMatrix(unsigned short n, vector< su2double > &A)
Static function, which computes the inverse of the given square matrix.
Definition fem_standard_element.cpp:79
unsigned short orderExact
Polynomial order that must be integrated exactly by the integration rule.
Definition fem_standard_element.hpp:48
void SubConnForPlottingLine(const unsigned short nPoly, vector< unsigned short > &subConn)
Function, which computes the local connectivity of linear subelements of a line, which can be used fo...
Definition fem_standard_element.cpp:902
void Vandermonde3D_Prism(unsigned short nPoly, unsigned short nDOFs, const vector< su2double > &r, const vector< su2double > &s, const vector< su2double > &t, vector< su2double > &V)
Function, which computes the Vandermonde matrix for a standard prism.
Definition fem_standard_element.cpp:1413
void DerivativesBasisFunctionsAdjacentElement(unsigned short VTK_TypeElem, unsigned short nPolyElem, const bool swapFaceInElement, unsigned short &nDOFsElem, vector< su2double > &drLagBasisIntegration, vector< su2double > &dsLagBasisIntegration, vector< su2double > &dtLagBasisIntegration)
Function, which computes the values of the derivatives of the basis functions of the adjacent element...
Definition fem_standard_element.cpp:262
Class to define a FEM standard element.
Definition fem_standard_element.hpp:673
unsigned short GetNPoly(void) const
Function, which makes available the polynomial degree for this standard element.
Definition fem_standard_element.hpp:910
const su2double * GetDerMatBasisFunctionsIntTrans(void) const
Function, which makes available the transpose matrix of the derivative of the basis functions in the ...
Definition fem_standard_element.hpp:843
su2double * GetDrBasisFunctionsIntegration(void)
Function, which makes available the r-derivatives of the basis functions in the integration points.
Definition fem_standard_element.hpp:813
su2double * GetBasisFunctionsIntegration(void)
Function, which makes available the values of the basis functions in the integration points.
Definition fem_standard_element.hpp:795
void BasisFunctionsAndDerivativesInPoint(const su2double *parCoor, vector< su2double > &lagBasis, vector< vector< su2double > > &dLagBasis)
Function, which computes the Lagrangian basis functions and its derivatives for the given parametric ...
Definition fem_standard_element.cpp:1955
const su2double * GetBasisFunctionsIntegrationTrans(void) const
Function, which makes available the transpose of the basis functions in the integration points.
Definition fem_standard_element.hpp:801
const su2double * GetBasisFunctionsSolDOFs(void) const
Function, which makes available the values of the basis functions in the solution DOFs.
Definition fem_standard_element.hpp:807
const vector< su2double > * GetTDOFs(void) const
Function, which makes available the t-location of the DOFs as a const pointer to the vector.
Definition fem_standard_element.hpp:977
CFEMStandardElement(const CFEMStandardElement &other)
Copy constructor.
Definition fem_standard_element.hpp:759
unsigned short * GetConnFace5(void)
Function, which makes available the connectivity of face 5.
Definition fem_standard_element.hpp:898
const su2double * GetMatVandermondeInv(void) const
Function, which makes available the matrix storage of the inverse of Vandermonde matrix of solution D...
Definition fem_standard_element.hpp:831
unsigned short * GetConnFace1(void)
Function, which makes available the connectivity of face 1.
Definition fem_standard_element.hpp:874
const su2double * GetMatBasisFunctionsIntegration(void) const
Function, which makes available the matrix storage of the basis functions in the integration points.
Definition fem_standard_element.hpp:837
unsigned short * GetConnFace3(void)
Function, which makes available the connectivity of face 3.
Definition fem_standard_element.hpp:886
unsigned short * GetConnFace4(void)
Function, which makes available the connectivity of face 4.
Definition fem_standard_element.hpp:892
void BasisFunctionsInPoint(const su2double *parCoor, vector< su2double > &lagBasis)
Function, which computes the Lagrangian basis functions for the given parametric coordinates.
Definition fem_standard_element.cpp:1889
bool SameStandardElement(unsigned short val_VTK_Type, unsigned short val_nPoly, bool val_constJac)
Function, which checks if the function arguments correspond to this standard element.
Definition fem_standard_element.cpp:2015
unsigned short GetNDOFs(void) const
Function, which makes available the number of DOFs for this standard element.
Definition fem_standard_element.hpp:904
const unsigned short * GetSubConnType2(void) const
Function, which makes available the the connectivity of the linear elements of type 2 as a const poin...
Definition fem_standard_element.hpp:950
unsigned short GetNSubElemsType1(void) const
Function, which makes available the number of sub-elements of type 1 for plotting.
Definition fem_standard_element.hpp:922
CFEMStandardElement & operator=(const CFEMStandardElement &other)
Assignment operator.
Definition fem_standard_element.hpp:766
unsigned short * GetConnFace2(void)
Function, which makes available the connectivity of face 2.
Definition fem_standard_element.hpp:880
const su2double * GetMatDerBasisFunctionsOwnDOFs(void) const
Function, which makes available the matrix storage of the derivative of the basis functions in the ow...
Definition fem_standard_element.hpp:849
su2double * GetDsBasisFunctionsIntegration(void)
Function, which makes available the s-derivatives of the basis functions in the integration points.
Definition fem_standard_element.hpp:819
const unsigned short * GetSubConnType1(void) const
Function, which makes available the the connectivity of the linear elements of type 1 as a const poin...
Definition fem_standard_element.hpp:930
unsigned short GetVTK_Type2(void) const
Function, which makes available the type of the element in subConn2ForPlotting.
Definition fem_standard_element.hpp:936
unsigned short GetNDOFsPerSubElem(unsigned short val_VTK_Type) const
Function, which makes available the number of DOFs of a linear element, used for plotting.
Definition fem_standard_element.cpp:2897
passivedouble WorkEstimateMetis(CConfig *config)
Function, which estimates the amount of work for an element of this type. This information is used to...
Definition fem_work_estimate_metis.cpp:31
const vector< su2double > * GetSDOFs(void) const
Function, which makes available the s-location of the DOFs as a const pointer to the vector.
Definition fem_standard_element.hpp:970
const vector< su2double > * GetRDOFs(void) const
Function, which makes available the r-location of the DOFs as a const pointer to the vector.
Definition fem_standard_element.hpp:963
const su2double * GetMat2ndDerBasisFunctionsInt(void) const
Function, which makes available the matrix storage of the second derivativex of the basis functions i...
Definition fem_standard_element.hpp:862
unsigned short * GetConnFace0(void)
Function, which makes available the connectivity of face 0.
Definition fem_standard_element.hpp:868
unsigned short GetNSubElemsType2(void) const
Function, which makes available the number of sub-elements of type 2 for plotting.
Definition fem_standard_element.hpp:942
su2double * GetDtBasisFunctionsIntegration(void)
Function, which makes available the t-derivatives of the basis functions in the integration points.
Definition fem_standard_element.hpp:825
unsigned short GetVTK_Type1(void) const
Function, which makes available the type of the element in subConn1ForPlotting.
Definition fem_standard_element.hpp:916
const su2double * GetMatDerBasisFunctionsSolDOFs(void) const
Function, which makes available the matrix storage of the derivative of the basis functions in the so...
Definition fem_standard_element.hpp:855
Class to define a FEM standard internal face.
Definition fem_standard_element.hpp:1106
unsigned short GetNDOFsElemSide1(void) const
Function, which makes available the number of DOFs of the element on side 1 of the face.
Definition fem_standard_element.hpp:1374
unsigned short GetNDOFsElemSide0(void) const
Function, which makes available the number of DOFs of the element on side 0 of the face.
Definition fem_standard_element.hpp:1367
CFEMStandardInternalFace(const CFEMStandardInternalFace &other)
Copy constructor.
Definition fem_standard_element.hpp:1210
unsigned short GetNDOFsFaceSide1(void) const
Function, which makes available the number of DOFs on side 1 of the face.
Definition fem_standard_element.hpp:1386
const su2double * GetMatDerBasisElemIntegrationSide1(void) const
Function, which makes available the matrix with the derivatives of the element basis functions of sid...
Definition fem_standard_element.hpp:1278
const su2double * GetMatDerBasisElemIntegrationSide0(void) const
Function, which makes available the matrix with the derivatives of the element basis functions of sid...
Definition fem_standard_element.hpp:1269
su2double * GetDrBasisFaceIntegrationSide1(void)
Function, which makes available the r-derivatives of the face basis functions of side 1 in the integr...
Definition fem_standard_element.hpp:1346
bool SameStandardMatchingFace(unsigned short val_VTK_TypeFace, bool val_constJac, unsigned short val_VTK_TypeSide0, unsigned short val_nPolySide0, unsigned short val_VTK_TypeSide1, unsigned short val_nPolySide1, bool val_swapFaceInElementSide0, bool val_swapFaceInElementSide1)
Function, which checks if the function arguments correspond to this standard face.
Definition fem_standard_element.cpp:3397
CFEMStandardInternalFace & operator=(const CFEMStandardInternalFace &other)
Assignment operator.
Definition fem_standard_element.hpp:1217
su2double * GetDrBasisFaceIntegrationSide0(void)
Function, which makes available the r-derivatives of the face basis functions of side 0 in the integr...
Definition fem_standard_element.hpp:1339
su2double * GetDsBasisFaceIntegrationSide0(void)
Function, which makes available the s-derivatives of the face basis functions of side 0 in the integr...
Definition fem_standard_element.hpp:1353
const su2double * GetBasisFaceIntegrationTransposeSide0(void) const
Function, which makes available transpose matrix of the face basis functions of side 0 in the integra...
Definition fem_standard_element.hpp:1321
const su2double * GetBasisFaceIntegrationSide0(void) const
Function, which makes available the face basis functions of side 0 in the integration points.
Definition fem_standard_element.hpp:1307
su2double * GetDrBasisElemIntegrationSide0(void)
Function, which makes available the r-derivatives of the elements basis functions of side 0 in the in...
Definition fem_standard_element.hpp:1227
su2double * GetDsBasisElemIntegrationSide0(void)
Function, which makes available the s-derivatives of the elements basis functions of side 0 in the in...
Definition fem_standard_element.hpp:1241
su2double * GetDsBasisElemIntegrationSide1(void)
Function, which makes available the s-derivatives of the elements basis functions of side 1 in the in...
Definition fem_standard_element.hpp:1248
passivedouble WorkEstimateMetis(CConfig *config)
Function, which estimates the amount of work for an element of this type. This information is used to...
Definition fem_work_estimate_metis.cpp:36
const su2double * GetBasisFaceIntegrationSide1(void) const
Function, which makes available the face basis functions of side 1 in the integration points.
Definition fem_standard_element.hpp:1314
const su2double * GetBasisFaceIntegrationTransposeSide1(void) const
Function, which makes available transpose matrix of the face basis functions of side 1 in the integra...
Definition fem_standard_element.hpp:1330
su2double * GetDsBasisFaceIntegrationSide1(void)
Function, which makes available the s-derivatives of the face basis functions of side 1 in the integr...
Definition fem_standard_element.hpp:1360
const su2double * GetMatDerBasisElemIntegrationTransposeSide1(void) const
Function, which makes available the transpose of the matrix with the derivatives of the element basis...
Definition fem_standard_element.hpp:1298
su2double GetPenaltyConstant(void) const
Function, which makes available the penalty constant for this standard face.
Definition fem_standard_element.hpp:1392
su2double * GetDtBasisElemIntegrationSide1(void)
Function, which makes available the t-derivatives of the elements basis functions of side 1 in the in...
Definition fem_standard_element.hpp:1262
const su2double * GetMatDerBasisElemIntegrationTransposeSide0(void) const
Function, which makes available the transpose of the matrix with the derivatives of the element basis...
Definition fem_standard_element.hpp:1288
su2double * GetDtBasisElemIntegrationSide0(void)
Function, which makes available the t-derivatives of the elements basis functions of side 0 in the in...
Definition fem_standard_element.hpp:1255
unsigned short GetNDOFsFaceSide0(void) const
Function, which makes available the number of DOFs on side 0 of the face.
Definition fem_standard_element.hpp:1380
su2double * GetDrBasisElemIntegrationSide1(void)
Function, which makes available the r-derivatives of the elements basis functions of side 1 in the in...
Definition fem_standard_element.hpp:1234
double passivedouble
Definition code_config.hpp:129
passivedouble su2double
Definition code_config.hpp:181
@ V
Menter k-w SST model with vorticity production terms.