73 std::vector<su2activematrix>
Kab;
82 unsigned long iDV = 0;
83 unsigned long iDe = 0;
90 std::vector<std::vector<su2activematrix>>
108 CElement(
unsigned short ngauss,
unsigned short nnodes,
unsigned short ndim);
157 RefCoord(iNode, iDim) = val_CoordRef;
203 for (
auto iNode = 0u; iNode <
nNodes; ++iNode) {
242 inline void Add_Mab(
unsigned short nodeA,
unsigned short nodeB,
const su2double& val_Mab) {
243 Mab(nodeA, nodeB) += val_Mab;
252 template <
typename Matrix>
253 inline void Add_Kab(
unsigned short nodeA,
unsigned short nodeB,
Matrix& val_Kab) {
254 for (
unsigned short iDim = 0; iDim <
nDim; iDim++)
255 for (
unsigned short jDim = 0; jDim <
nDim; jDim++)
Kab[nodeA](nodeB, iDim *
nDim + jDim) += val_Kab[iDim][jDim];
263 template <
typename Matrix>
265 for (
unsigned short iDim = 0; iDim <
nDim; iDim++)
266 for (
unsigned short jDim = 0; jDim <
nDim; jDim++)
Kab[nodeA](nodeB, iDim *
nDim + jDim) += val_Kab[jDim][iDim];
276 Ks_ab(nodeA, nodeB) += val_Ks_ab;
285 for (
unsigned short iDim = 0; iDim <
nDim; iDim++)
Kt_a(nodeA, iDim) += val_Kt_a[iDim];
294 for (
unsigned short iDim = 0; iDim <
nDim; iDim++)
FDL_a(nodeA, iDim) += val_FDL_a[iDim];
316 inline const su2double*
Get_Kab(
unsigned short nodeA,
unsigned short nodeB)
const {
return Kab[nodeA][nodeB]; }
356 return GaussPoint[iGauss].GetGradNi_Xj(iNode, iDim);
367 return GaussPoint[iGauss].GetGradNi_xj(iNode, iDim);
412 inline void Set_iDe(
unsigned long val_iDe) {
iDe = val_iDe; }
505 template <
class MatrixType>
506 inline void Add_DHiDHj(
const MatrixType& val,
unsigned short nodeA,
unsigned short nodeB) {
507 unsigned short iDim, jDim;
508 for (iDim = 0; iDim <
nDim; iDim++) {
509 for (jDim = 0; jDim <
nDim; jDim++) {
510 DHiDHj[nodeA][nodeB][iDim][jDim] += val[iDim][jDim];
521 template <
class MatrixType>
522 inline void Add_DHiDHj_T(
const MatrixType& val,
unsigned short nodeA,
unsigned short nodeB) {
523 unsigned short iDim, jDim;
524 for (iDim = 0; iDim <
nDim; iDim++) {
525 for (jDim = 0; jDim <
nDim; jDim++) {
526 DHiDHj[nodeA][nodeB][iDim][jDim] += val[jDim][iDim];
554template <
unsigned short NGAUSS,
unsigned short NNODE,
unsigned short NDIM>
561 return Jacobian[0][0];
565 ad[0][0] = Jacobian[1][1];
566 ad[0][1] = -Jacobian[0][1];
567 ad[1][0] = -Jacobian[1][0];
568 ad[1][1] = Jacobian[0][0];
570 return ad[0][0] * ad[1][1] - ad[0][1] * ad[1][0];
574 ad[0][0] = Jacobian[1][1] * Jacobian[2][2] - Jacobian[1][2] * Jacobian[2][1];
575 ad[0][1] = Jacobian[0][2] * Jacobian[2][1] - Jacobian[0][1] * Jacobian[2][2];
576 ad[0][2] = Jacobian[0][1] * Jacobian[1][2] - Jacobian[0][2] * Jacobian[1][1];
577 ad[1][0] = Jacobian[1][2] * Jacobian[2][0] - Jacobian[1][0] * Jacobian[2][2];
578 ad[1][1] = Jacobian[0][0] * Jacobian[2][2] - Jacobian[0][2] * Jacobian[2][0];
579 ad[1][2] = Jacobian[0][2] * Jacobian[1][0] - Jacobian[0][0] * Jacobian[1][2];
580 ad[2][0] = Jacobian[1][0] * Jacobian[2][1] - Jacobian[1][1] * Jacobian[2][0];
581 ad[2][1] = Jacobian[0][1] * Jacobian[2][0] - Jacobian[0][0] * Jacobian[2][1];
582 ad[2][2] = Jacobian[0][0] * Jacobian[1][1] - Jacobian[0][1] * Jacobian[1][0];
584 return Jacobian[0][0] * ad[0][0] + Jacobian[0][1] * ad[1][0] + Jacobian[0][2] * ad[2][0];
588 static_assert(NDIM == 1 || NDIM == 2 || NDIM == 3,
"ComputeGrad_impl expects 1D, 2D or 3D");
604 template <FrameType FRAME>
606 su2double Jacobian[NDIM][NDIM], ad[NDIM][NDIM];
607 unsigned short iNode, iDim, jDim, iGauss;
613 for (iGauss = 0; iGauss < NGAUSS; iGauss++) {
617 for (iDim = 0; iDim < NDIM; iDim++)
618 for (jDim = 0; jDim < NDIM; jDim++) Jacobian[iDim][jDim] = 0.0;
620 for (iNode = 0; iNode < NNODE; iNode++)
621 for (iDim = 0; iDim < NDIM; iDim++)
622 for (jDim = 0; jDim < NDIM; jDim++) Jacobian[iDim][jDim] += Coord(iNode, jDim) *
dNiXj[iGauss][iNode][iDim];
626 Jacobian[0][0] = (Coord[1][0] - Coord[0][0]);
631 auto detJac = JacobianAdjoint(Jacobian, ad);
640 for (iDim = 0; iDim < NDIM; iDim++)
641 for (jDim = 0; jDim < NDIM; jDim++) Jacobian[iDim][jDim] = ad[iDim][jDim] / detJac;
645 for (iNode = 0; iNode < NNODE; iNode++) {
646 for (iDim = 0; iDim < NDIM; iDim++) {
648 for (jDim = 0; jDim < NDIM; jDim++) GradNi_Xj += Jacobian[iDim][jDim] *
dNiXj[iGauss][iNode][jDim];
651 GaussPoint[iGauss].SetGradNi_Xj(GradNi_Xj, iDim, iNode);
653 GaussPoint[iGauss].SetGradNi_xj(GradNi_Xj, iDim, iNode);
659 template <FrameType FRAME>
666 unsigned short iNode, iDim, iGauss;
670 Jacobian[0] = (Coord[1][0] - Coord[0][0]);
671 Jacobian[1] = (Coord[1][1] - Coord[0][1]);
672 const su2double JTJ = Jacobian[0] * Jacobian[0] + Jacobian[1] * Jacobian[1];
675 for (iGauss = 0; iGauss < NGAUSS; iGauss++) {
678 for (iNode = 0; iNode < NNODE; iNode++) {
679 for (iDim = 0; iDim < NDIM + 1; iDim++) {
680 val_grad = Jacobian[iDim] *
dNiXj[iGauss][iNode][0] / JTJ;
681 GaussPoint[iGauss].SetGradNi_Xj(val_grad, iDim, iNode);
686 }
else if (NDIM == 2) {
687 su2double Jacobian[NDIM + 1][NDIM], JTJ[NDIM][NDIM];
689 unsigned short iShape, iDim, jDim, jVertex, kDim, iGauss;
691 for (iGauss = 0; iGauss < NGAUSS; iGauss++) {
695 for (iDim = 0; iDim < NDIM + 1; iDim++) {
696 for (jVertex = 0; jVertex < NDIM; jVertex++) {
697 Jacobian[iDim][jVertex] = Coord[jVertex + 1][iDim] - Coord[0][iDim];
702 for (iDim = 0; iDim < NDIM + 1; iDim++) {
703 Jacobian[iDim][0] = (Coord[1][iDim] - Coord[0][iDim]) / 2;
704 Jacobian[iDim][1] = (Coord[3][iDim] - Coord[0][iDim]) / 2;
708 for (iDim = 0; iDim < NDIM; iDim++) {
709 for (jDim = 0; jDim < NDIM; jDim++) {
710 JTJ[iDim][jDim] = 0.0;
711 for (kDim = 0; kDim < NDIM + 1; kDim++) {
712 JTJ[iDim][jDim] += Jacobian[kDim][iDim] * Jacobian[kDim][jDim];
718 const su2double detJacobian = JTJ[0][0] * JTJ[1][1] - JTJ[0][1] * JTJ[1][0];
720 volJacobian =
sqrt(detJacobian);
727 JTJinv[0][0] = JTJ[1][1] / detJacobian;
728 JTJinv[1][1] = JTJ[0][0] / detJacobian;
729 JTJinv[0][1] = -JTJ[0][1] / detJacobian;
730 JTJinv[1][0] = -JTJ[1][0] / detJacobian;
734 for (iDim = 0; iDim < NDIM; iDim++) {
735 for (jDim = 0; jDim < NDIM + 1; jDim++) {
736 Jdagger[iDim][jDim] = 0.0;
737 for (kDim = 0; kDim < NDIM; kDim++) {
738 Jdagger[iDim][jDim] += JTJinv[iDim][kDim] * Jacobian[jDim][kDim];
744 for (iShape = 0; iShape < NNODE; iShape++) {
745 for (iDim = 0; iDim < NDIM + 1; iDim++) {
747 for (jDim = 0; jDim < NDIM; jDim++) {
748 GradOut[iDim] += Jdagger[jDim][iDim] *
dNiXj[iGauss][iShape][jDim];
750 GaussPoint[iGauss].SetGradNi_Xj(GradOut[iDim], iDim, iShape);
782 enum :
unsigned short { NGAUSS = 1 };
783 enum :
unsigned short { NNODE = 3 };
784 enum :
unsigned short { NDIM = 2 };
808 enum :
unsigned short { NGAUSS = 4 };
809 enum :
unsigned short { NNODE = 4 };
810 enum :
unsigned short { NDIM = 2 };
822 Ni[0] = 0.25 * (1.0 - Xi) * (1.0 - Eta);
823 Ni[1] = 0.25 * (1.0 + Xi) * (1.0 - Eta);
824 Ni[2] = 0.25 * (1.0 + Xi) * (1.0 + Eta);
825 Ni[3] = 0.25 * (1.0 - Xi) * (1.0 + Eta);
832 dNi[0][0] = -0.25 * (1.0 - Eta);
833 dNi[0][1] = -0.25 * (1.0 - Xi);
834 dNi[1][0] = 0.25 * (1.0 - Eta);
835 dNi[1][1] = -0.25 * (1.0 + Xi);
836 dNi[2][0] = 0.25 * (1.0 + Eta);
837 dNi[2][1] = 0.25 * (1.0 + Xi);
838 dNi[3][0] = -0.25 * (1.0 + Eta);
839 dNi[3][1] = 0.25 * (1.0 - Xi);
858 enum :
unsigned short { NGAUSS = 1 };
859 enum :
unsigned short { NNODE = 4 };
860 enum :
unsigned short { NDIM = 3 };
883 enum :
unsigned short { NGAUSS = 8 };
884 enum :
unsigned short { NNODE = 8 };
885 enum :
unsigned short { NDIM = 3 };
909 enum :
unsigned short { NGAUSS = 5 };
910 enum :
unsigned short { NNODE = 5 };
911 enum :
unsigned short { NDIM = 3 };
936 enum :
unsigned short { NGAUSS = 6 };
937 enum :
unsigned short { NNODE = 6 };
938 enum :
unsigned short { NDIM = 3 };
962 enum :
unsigned short { NGAUSS = 3 };
963 enum :
unsigned short { NNODE = 3 };
964 enum :
unsigned short { NDIM = 2 };
988 enum :
unsigned short { NGAUSS = 4 };
989 enum :
unsigned short { NNODE = 4 };
990 enum :
unsigned short { NDIM = 3 };
1014 enum :
unsigned short { NGAUSS = 6 };
1015 enum :
unsigned short { NNODE = 5 };
1016 enum :
unsigned short { NDIM = 3 };
1040 enum :
unsigned short { NGAUSS = 2 };
1041 enum :
unsigned short { NNODE = 2 };
1042 enum :
unsigned short { NDIM = 1 };
Light classes to define finite element properties.
Light-weight class to store Gaussian point information.
A templated matrix/vector-like object.
Definition C2DContainer.hpp:374
void setConstant(const Scalar_t &value) noexcept
Set value of all entries to "value".
Definition C2DContainer.hpp:549
Templated class to implement the computation of gradients for specific element sizes.
Definition CElement.hpp:555
void ComputeGrad_impl(void)
Implementation of gradient computation leveraging the static sizes.
Definition CElement.hpp:605
void ComputeGrad_Linear(void) final
Set the value of the gradient of the shape functions wrt the reference configuration.
Definition CElement.hpp:761
void ComputeGrad_NonLinear(void) final
Set the value of the gradient of the shape functions wrt the current configuration.
Definition CElement.hpp:766
CElementWithKnownSizes()
Constructor of the class.
Definition CElement.hpp:598
void ComputeGrad_SurfaceEmbedded() final
Overload needed for deformed 2D elements on a surface in 3D or 1D elements on a 2D curve.
Definition CElement.hpp:771
void ComputeGrad_impl_surf_embedded()
Definition CElement.hpp:660
su2double GaussCoord[NGAUSS][NDIM]
Coordinates of the integration points.
Definition CElement.hpp:590
su2double dNiXj[NGAUSS][NNODE][NDIM]
Shape function derivatives evaluated at the Gauss points.
Definition CElement.hpp:591
Abstract class for defining finite elements.
Definition CElement.hpp:58
void Add_Kab(unsigned short nodeA, unsigned short nodeB, Matrix &val_Kab)
Add the value of a submatrix K relating nodes a and b, for the constitutive term.
Definition CElement.hpp:253
void Add_Mab(unsigned short nodeA, unsigned short nodeB, const su2double &val_Mab)
Add the value of the diagonal term for the mass matrix.
Definition CElement.hpp:242
su2double GetWeight(unsigned short iGauss) const
Get the weight of the corresponding Gaussian Point.
Definition CElement.hpp:214
su2double GetNi_Extrap(unsigned short iNode, unsigned short iGauss) const
Retrieve the value of the gradient of the shape functions respect to the reference configuration.
Definition CElement.hpp:376
void SetTemperature(unsigned short iNode, const su2double &val_Temperature)
Set the value of the temperature of a node.
Definition CElement.hpp:173
const su2double * Get_FDL_a(unsigned short nodeA) const
Return the values of the dead load components of the residual for node a.
Definition CElement.hpp:338
su2double Get_NodalStress(unsigned short iNode, unsigned short iVar) const
Retrieve the value of the nodal stress for an element.
Definition CElement.hpp:396
su2double GetGradNi_x(unsigned short iNode, unsigned short iGauss, unsigned short iDim) const
Retrieve the value of the gradient of the shape functions respect to the current configuration.
Definition CElement.hpp:366
unsigned long iDV
ID of the Design Variable (if it is element based).
Definition CElement.hpp:82
@ MAXNDIM
Definition CElement.hpp:60
void SetCurr_Coord(unsigned short iNode, unsigned short iDim, const su2double &val_CoordCurr)
Set the value of the coordinate of the nodes in the current configuration.
Definition CElement.hpp:166
unsigned long Get_iProp(void) const
Return the value of the identifier for the Element Property.
Definition CElement.hpp:430
void ClearElement(void)
Sets matrices to 0.
Definition CElement.cpp:70
void Add_Ks_ab(unsigned short nodeA, unsigned short nodeB, const su2double &val_Ks_ab)
Add the value of the diagonal term for the stress contribution to the stiffness of the system.
Definition CElement.hpp:275
su2double GetCurr_Coord(unsigned short iNode, unsigned short iDim) const
Get the value of the coordinate of the nodes in the current configuration.
Definition CElement.hpp:196
virtual ~CElement(void)=default
Destructor of the class.
unsigned long iDe
ID of the dielectric elastomer.
Definition CElement.hpp:83
const su2double * Get_Kt_a(unsigned short nodeA) const
Return the values of the nodal stress components of the residual for node a.
Definition CElement.hpp:331
void ClearStress(void)
Restarts the values of stress in the element.
Definition CElement.hpp:300
su2double GetNi(unsigned short iNode, unsigned short iGauss) const
Retrieve the value of the shape functions.
Definition CElement.hpp:346
su2double GetJ_x(unsigned short iGauss) const
Get the jacobian respect to the current configuration for the Gaussian Point iGauss.
Definition CElement.hpp:228
su2double GetGradNi_X(unsigned short iNode, unsigned short iGauss, unsigned short iDim) const
Retrieve the value of the gradient of the shape functions respect to the reference configuration.
Definition CElement.hpp:355
void Set_ElProperties(const CProperty *element_property)
Store the values of the identifiers for element properties.
Definition CElement.hpp:402
std::vector< su2activematrix > Kab
Structure for the constitutive component of the tangent matrix.
Definition CElement.hpp:73
void Set_iDe(unsigned long val_iDe)
Store the value of the identifier for the Dielectric Elastomers.
Definition CElement.hpp:412
void SetRef_Coord(unsigned short iNode, unsigned short iDim, const su2double &val_CoordRef)
Set the value of the coordinate of the nodes in the reference configuration.
Definition CElement.hpp:156
virtual void ComputeGrad_NonLinear(void)=0
Set the value of the gradient of the shape functions wrt the current configuration.
void SetPreaccOut_Mab(void)
Register the mass matrix as a pre-accumulation output.
Definition CElement.hpp:484
su2double ComputeCurrentArea(void) const
Compute the value of the area of the element in current coordinates (wrapper to ComputeArea(CURRENT))...
Definition CElement.hpp:457
su2double Get_HiHj(unsigned short nodeA, unsigned short nodeB)
Get the scalar product of the shape functions to the tangent matrix.
Definition CElement.hpp:537
const su2double * Get_Kab(unsigned short nodeA, unsigned short nodeB) const
Return the value of the submatrix K relating nodes a and b.
Definition CElement.hpp:316
void Add_HiHj(su2double val, unsigned short nodeA, unsigned short nodeB)
Add the scalar product of the shape functions to the tangent matrix.
Definition CElement.hpp:497
su2activematrix HiHj
Scalar product of 2 ansatz functions.
Definition CElement.hpp:89
unsigned long Get_iDe(void) const
Return the value of the identifier for the Dielectric Elastomers.
Definition CElement.hpp:418
void Add_Kt_a(unsigned short nodeA, const su2double *val_Kt_a)
Add the value of the nodal stress term for the computation of the residual.
Definition CElement.hpp:284
su2double GetJ_X(unsigned short iGauss) const
Get the Jacobian respect to the reference configuration for the Gaussian Point iGauss.
Definition CElement.hpp:221
void SetPreaccIn_Coords(bool nonlinear=true)
Register the current and reference coordinates of the element as pre-accumulation inputs the latter a...
Definition CElement.hpp:470
unsigned short GetnNodes(void) const
Retrieve the number of nodes of the element.
Definition CElement.hpp:142
su2activematrix NodalStress
Stress at the nodes.
Definition CElement.hpp:68
std::vector< std::vector< su2activematrix > > DHiDHj
Scalar product of the gradients of 2 ansatz functions.
Definition CElement.hpp:91
su2activematrix Kt_a
Matrix of nodal stress terms for residual computation.
Definition CElement.hpp:76
unsigned short nNodes
Number of geometric points.
Definition CElement.hpp:86
void Add_Kab_T(unsigned short nodeA, unsigned short nodeB, Matrix &val_Kab)
Add the value of a submatrix K relating nodes a and b, for the constitutive term (symmetric terms nee...
Definition CElement.hpp:264
unsigned long Get_iDV(void) const
Return the value of the identifier for the Design Variable.
Definition CElement.hpp:424
void Add_DHiDHj(const MatrixType &val, unsigned short nodeA, unsigned short nodeB)
Add the scalar product of the gradients of shape functions to the tangent matrix.
Definition CElement.hpp:506
void SetTemperature(const su2double &val_Temperature)
Set the value of the temperature of all nodes.
Definition CElement.hpp:180
su2activematrix CurrentCoord
Coordinates in the current frame.
Definition CElement.hpp:64
su2double ComputeCurrentVolume(void) const
Compute the value of the volume of the element in current coordinates (wrapper to ComputeVolume(CURRE...
Definition CElement.hpp:463
unsigned short GetnGaussPoints(void) const
Retrieve the number of nodes of the element.
Definition CElement.hpp:148
su2activematrix RefCoord
Coordinates in the reference frame.
Definition CElement.hpp:65
void SetPreaccOut_FDL_a(void)
Register the dead load as a pre-accumulation output.
Definition CElement.hpp:489
su2activematrix NodalExtrap
Coordinates of the nodal points for Gaussian extrapolation.
Definition CElement.hpp:67
virtual su2double ComputeLength(const FrameType mode=REFERENCE) const
Compute the value of the length of the element.
Definition CElement.hpp:437
su2double GetTemperature(unsigned short iGauss) const
Get the value of the temperature at a Gaussian integration point.
Definition CElement.hpp:201
unsigned long iProp
ID of the Element Property.
Definition CElement.hpp:81
void Add_DHiDHj_T(const MatrixType &val, unsigned short nodeA, unsigned short nodeB)
Add the transposed scalar product of the gradients of shape functions to the tangent matrix.
Definition CElement.hpp:522
su2activematrix FDL_a
Matrix of dead loads for residual computation.
Definition CElement.hpp:77
su2double GetRef_Coord(unsigned short iNode, unsigned short iDim) const
Get the value of the coordinate of the nodes in the reference configuration.
Definition CElement.hpp:188
su2activevector NodalTemperature
Temperature at the nodes.
Definition CElement.hpp:70
FrameType
Definition CElement.hpp:94
@ REFERENCE
Definition CElement.hpp:94
@ CURRENT
Definition CElement.hpp:94
su2double Get_Mab(unsigned short nodeA, unsigned short nodeB) const
Return the value of the diagonal term for the mass matrix, relating nodes a and b.
Definition CElement.hpp:308
void Add_FDL_a(unsigned short nodeA, const su2double *val_FDL_a)
Add the value of the dead load for the computation of the residual.
Definition CElement.hpp:293
void Add_NodalStress(unsigned short iNode, unsigned short iVar, const su2double &val_Stress)
Add a value to the nodal stress for an element.
Definition CElement.hpp:386
su2double GetElement_Pressure(void) const
Retrieve the value of the pressure in the element for incompressible materials.
Definition CElement.hpp:234
virtual void ComputeGrad_Linear(void)=0
Set the value of the gradient of the shape functions wrt the reference configuration.
std::vector< CGaussVariable > GaussPoint
Vector of Gaussian Points.
Definition CElement.hpp:62
su2activematrix & Get_DHiDHj(unsigned short nodeA, unsigned short nodeB)
Get the scalar product of the gradients of shape functions to the tangent matrix.
Definition CElement.hpp:545
su2double el_Pressure
Pressure in the element.
Definition CElement.hpp:79
su2activematrix Mab
Structure for the nodal components of the mass matrix.
Definition CElement.hpp:74
virtual void ComputeGrad_SurfaceEmbedded(void)=0
Set the value of the gradient of the shape functions wrt the reference configuration.
unsigned short nDim
Number of dimension of the problem.
Definition CElement.hpp:87
CElement(void)=delete
Default constructor of the class, deleted to make sure derived classes always call the allocating con...
virtual su2double ComputeVolume(const FrameType mode=REFERENCE) const
Compute the value of the volume of the element.
Definition CElement.hpp:451
su2activevector GaussWeight
Weight of the Gaussian Points for the integration.
Definition CElement.hpp:66
unsigned short nGaussPoints
Number of gaussian points.
Definition CElement.hpp:85
virtual su2double ComputeArea(const FrameType mode=REFERENCE) const
Compute the value of the area of the element.
Definition CElement.hpp:444
su2double Get_Ks_ab(unsigned short nodeA, unsigned short nodeB) const
Return the value of the diagonal term for the stress contribution, relating nodes a and b.
Definition CElement.hpp:324
su2activematrix Ks_ab
Structure for the stress component of the tangent matrix.
Definition CElement.hpp:75
void SetPreaccOut_Kt_a(void)
Register the stress residual as a pre-accumulation output. When computing the element stiffness matri...
Definition CElement.hpp:479
Hexahedral element with 8 Gauss Points.
Definition CElement.hpp:881
su2double ComputeVolume(const FrameType mode=REFERENCE) const override
Compute the value of the volume of the element.
Definition CHEXA8.cpp:174
CHEXA8()
Constructor of the class.
Definition CHEXA8.cpp:30
Line element with 2 Gauss Points.
Definition CElement.hpp:1038
CLINE()
Constructor of the class.
Definition CLINE.cpp:30
su2double ComputeLength(const FrameType mode=REFERENCE) const override
Compute the value of the area of the element.
Definition CLINE.cpp:59
Prism element with 6 Gauss Points.
Definition CElement.hpp:934
su2double ComputeVolume(const FrameType mode=REFERENCE) const override
Compute the value of the volume of the element.
Definition CPRISM6.cpp:150
CPRISM6()
Constructor of the class.
Definition CPRISM6.cpp:30
Pyramid element with 5 Gauss Points.
Definition CElement.hpp:907
CPYRAM5()
Constructor of the class.
Definition CPYRAM5.cpp:30
su2double ComputeVolume(const FrameType mode=REFERENCE) const override
Compute the value of the volume of the element.
Definition CPYRAM5.cpp:135
Pyramid element with 6 Gauss Points.
Definition CElement.hpp:1012
su2double ComputeVolume(const FrameType mode=REFERENCE) const override
Compute the value of the volume of the element.
Definition CPYRAM6.cpp:139
CPYRAM6()
Constructor of the class.
Definition CPYRAM6.cpp:30
Base class for defining element properties.
Definition CElementProperty.hpp:37
virtual unsigned long GetElectric_Prop(void) const
Get index of the electric properties.
Definition CElementProperty.hpp:66
virtual unsigned long GetDV(void) const
Get index of the design variable.
Definition CElementProperty.hpp:71
unsigned long GetMat_Prop(void) const
Get index of the physical properties.
Definition CElementProperty.hpp:61
Quadrilateral element with 4 Gauss Points.
Definition CElement.hpp:806
static void ShapeFunctionJacobian(const su2double &Xi, const su2double &Eta, su2double dNi[][2])
Shape function Jacobian (dNi) evaluated at point Xi,Eta.
Definition CElement.hpp:831
CQUAD4()
Constructor of the class.
Definition CQUAD4.cpp:30
su2double ComputeArea(const FrameType mode=REFERENCE) const override
Compute the value of the area of the element.
Definition CQUAD4.cpp:91
static void ShapeFunctions(const su2double &Xi, const su2double &Eta, su2double *Ni)
Shape functions (Ni) evaluated at point Xi,Eta.
Definition CElement.hpp:821
Tetrahedral element with 1 Gauss Point.
Definition CElement.hpp:856
su2double ComputeVolume(const FrameType mode=REFERENCE) const override
Compute the value of the volume of the element.
Definition CTETRA1.cpp:83
CTETRA1()
Constructor of the class.
Definition CTETRA1.cpp:31
Tetrahedral element with 4 Gauss Points.
Definition CElement.hpp:986
su2double ComputeVolume(const FrameType mode=REFERENCE) const override
Compute the value of the area of the element.
Definition CTETRA4.cpp:97
CTETRA4()
Constructor of the class.
Definition CTETRA4.cpp:31
Tria element with 1 Gauss Points.
Definition CElement.hpp:780
CTRIA1()
Constructor of the class.
Definition CTRIA1.cpp:30
su2double ComputeArea(const FrameType mode=REFERENCE) const override
Compute the value of the area of the element.
Definition CTRIA1.cpp:71
Tria element with 3 Gauss Points.
Definition CElement.hpp:960
su2double ComputeArea(const FrameType mode=REFERENCE) const override
Compute the value of the area of the element.
Definition CTRIA3.cpp:77
CTRIA3()
Constructor of the class.
Definition CTRIA3.cpp:30
Scalar_t * data() noexcept
Definition C2DContainer.hpp:222
#define FORCEINLINE
Definition code_config.hpp:44
passivedouble su2double
Definition code_config.hpp:181
FORCEINLINE ARRAY_T sqrt(const ARRAY_T &x)
Definition special_vectorization.hpp:116
void SetPreaccOut(Ts &&... data)
Sets the scalar outputs of a preaccumulation section.
Definition ad_structure.hpp:222
void SetPreaccIn(Ts &&... data)
Sets the scalar inputs of a preaccumulation section.
Definition ad_structure.hpp:186