FEMTIC
Forward3DTetraElement0thOrder.h
Go to the documentation of this file.
1 //-------------------------------------------------------------------------------------------------------
2 // The MIT License (MIT)
3 //
4 // Copyright (c) 2021 Yoshiya Usui
5 //
6 // Permission is hereby granted, free of charge, to any person obtaining a copy
7 // of this software and associated documentation files (the "Software"), to deal
8 // in the Software without restriction, including without limitation the rights
9 // to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
10 // copies of the Software, and to permit persons to whom the Software is
11 // furnished to do so, subject to the following conditions:
12 //
13 // The above copyright notice and this permission notice shall be included in all
14 // copies or substantial portions of the Software.
15 //
16 // THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
17 // IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
18 // FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
19 // AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
20 // LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
21 // OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
22 // SOFTWARE.
23 //-------------------------------------------------------------------------------------------------------
24 #ifndef DBLDEF_FORWARD_3D_TETRA_ELEMENT_0TH_ORDER
25 #define DBLDEF_FORWARD_3D_TETRA_ELEMENT_0TH_ORDER
26 
27 #include "Forward3D.h"
28 #include "MeshDataTetraElement.h"
30 #include <set>
31 
32 // Class of 3D forward calculation by using 0th order tetra element
34 
35 public:
36 
37  // Constructer
39 
40  // Destructer
42 
43  //Run 3D forward calculation
44  virtual void forwardCalculation( const double freq, const int iPol );
45 
46  // Calculate X component of electric field
47  virtual std::complex<double> calcValueElectricFieldXDirection( const int iElem, const double uCoord, const double vCoord, const double wCoord ) const;
48 
49  // Calculate Y component of electric field
50  virtual std::complex<double> calcValueElectricFieldYDirection( const int iElem, const double uCoord, const double vCoord, const double wCoord ) const;
51 
52  // Calculate Z component of electric field
53  virtual std::complex<double> calcValueElectricFieldZDirection( const int iElem, const double uCoord, const double vCoord, const double wCoord ) const;
54 
55  // Calculate X component of electric field only from the edges on the Earth's surface
56  virtual std::complex<double> calcValueElectricFieldXDirectionFromEdgesOnEarthSurface( const int iElem, const int iFace, const double uCoord, const double vCoord ) const;
57 
58  // Calculate Y component of electric field only from the edges on the Earth's surface
59  virtual std::complex<double> calcValueElectricFieldYDirectionFromEdgesOnEarthSurface( const int iElem, const int iFace, const double uCoord, const double vCoord ) const;
60 
61  // Calculate tangential electric field directed to X from all edges of owner element
62  virtual std::complex<double> calcValueElectricFieldTangentialXFromAllEdges( const int iElem, const int iFace, const double xLocal, const double yLocal, const double zLocal ) const;
63 
64  // Calculate tangential electric field directed to Y from all edges of owner element
65  virtual std::complex<double> calcValueElectricFieldTangentialYFromAllEdges( const int iElem, const int iFace, const double xLocal, const double yLocal, const double zLocal ) const;
66 
67  // Calculate tangential electric field directed to X
68  virtual std::complex<double> calcValueElectricFieldTangentialX( const int iElem, const int iFace, const double uCoord, const double vCoord ) const;
69 
70  // Calculate tangential electric field directed to Y
71  virtual std::complex<double> calcValueElectricFieldTangentialY( const int iElem, const int iFace, const double uCoord, const double vCoord ) const;
72 
73  // Calculate Z component of rotated electric field
74  virtual std::complex<double> calcValueRotatedElectricFieldZDirection( const int iElem, const double uCoord, const double vCoord, const double wCoord ) const;
75 
76  // Calculate normal component of rotated electric field
77  virtual std::complex<double> calcValueRotatedElectricFieldNormal( const int iElem, const int iFace, const double uCoord, const double vCoord ) const;
78 
79  // Calculate X component of magnetic field
80  virtual std::complex<double> calcValueMagneticFieldXDirection( const int iElem, const double uCoord, const double vCoord, const double wCoord ) const;
81 
82  // Calculate Y component of magnetic field
83  virtual std::complex<double> calcValueMagneticFieldYDirection( const int iElem, const double uCoord, const double vCoord, const double wCoord ) const;
84 
85  // Calculate Z component of magnetic field
86  virtual std::complex<double> calcValueMagneticFieldZDirection( const int iElem, const double uCoord, const double vCoord, const double wCoord ) const;
87 
88  // Calculate difference of voltage for brick element
89  virtual std::complex<double> calcVoltageDifference( const int nElem, const int* elememtsIncludingDipole,
90  const CommonParameters::locationXY* localCoordinateValuesStartPoint, const CommonParameters::locationXY* localCoordinateValuesEndPoint ) const;
91 
92  // Calculate difference of voltage
93  virtual std::complex<double> calcVoltageDifference( const int nElem, const int* const elememtsIncludingDipole, const int* const facesIncludingDipole,
94  const CommonParameters::AreaCoords* const areaCoordValStartPoint, const CommonParameters::AreaCoords* const areaCoordValEndPoint ) const;
95 
96  // Calculate interpolator vector of X component of electric field
97  virtual void calcInterpolatorVectorOfElectricFieldXDirection( const int iElem, const double uCoord, const double vCoord, const double wCoord, const int irhs, const std::complex<double>& factor = std::complex<double>(1.0,0.0) );
98 
99  // Calculate interpolator vector of Y component of electric field
100  virtual void calcInterpolatorVectorOfElectricFieldYDirection( const int iElem, const double uCoord, const double vCoord, const double wCoord, const int irhs, const std::complex<double>& factor = std::complex<double>(1.0,0.0) );
101 
102  // Calculate interpolator vector of Z component of electric field
103  virtual void calcInterpolatorVectorOfElectricFieldZDirection( const int iElem, const double uCoord, const double vCoord, const double wCoord, const int irhs, const std::complex<double>& factor = std::complex<double>(1.0,0.0) );
104 
105  // Calculate interpolator vector of Z component of rotated electric field
106  virtual void calcInterpolatorVectorOfRotatedElectricFieldZDirection( const int iElem, const double uCoord, const double vCoord, const double wCoord, const int irhs, const std::complex<double>& factor = std::complex<double>(1.0,0.0) );
107 
108  // Calculate interpolator vector of X component of electric field only from the edges on the Earth's surface
109  virtual void calcInterpolatorVectorOfElectricFieldXDirectionFromEdgesOnEarthSurface( const int iElem, const int iFace, const double uCoord, const double vCoord, const int irhs, const std::complex<double>& factor = std::complex<double>(1.0,0.0) );
110 
111  // Calculate interpolator vector of Y component of electric field only from the edges on the Earth's surface
112  virtual void calcInterpolatorVectorOfElectricFieldYDirectionFromEdgesOnEarthSurface( const int iElem, const int iFace, const double uCoord, const double vCoord, const int irhs, const std::complex<double>& factor = std::complex<double>(1.0,0.0) );
113 
114  // Calculate interpolator vector of tangential electric field directed to X from all edges
115  virtual void calcInterpolatorVectorOfElectricFieldTangentialXFromAllEdges( const int iElem, const int iFace, const double xLocal, const double yLocal, const double zLocal, const int irhs, const std::complex<double>& factor = std::complex<double>(1.0,0.0) );
116 
117  // Calculate interpolator vector of tangential electric field directed to Y from all edges
118  virtual void calcInterpolatorVectorOfElectricFieldTangentialYFromAllEdges( const int iElem, const int iFace, const double xLocal, const double yLocal, const double zLocal, const int irhs, const std::complex<double>& factor = std::complex<double>(1.0,0.0) );
119 
120  // Calculate interpolator vector of tangential electric field directed to X
121  virtual void calcInterpolatorVectorOfElectricFieldTangentialX( const int iElem, const int iFace, const double uCoord, const double vCoord, const int irhs, const std::complex<double>& factor = std::complex<double>(1.0,0.0) );
122 
123  // Calculate interpolator vector of tangential electric field directed to Y
124  virtual void calcInterpolatorVectorOfElectricFieldTangentialY( const int iElem, const int iFace, const double uCoord, const double vCoord, const int irhs, const std::complex<double>& factor = std::complex<double>(1.0,0.0) );
125 
126  // Calculate interpolator vector of normal component of rotated electric field
127  virtual void calcInterpolatorVectorOfRotatedElectricFieldNormal( const int iElem, const int iFace, const double uCoord, const double vCoord, const int irhs, const std::complex<double>& factor = std::complex<double>(1.0,0.0) );
128 
129  // Calculate interpolator vector of X component of magnetic field
130  virtual void calcInterpolatorVectorOfMagneticFieldXDirection( const int iElem, const double uCoord, const double vCoord, const double wCoord, const int irhs, const std::complex<double>& factor = std::complex<double>(1.0,0.0) );
131 
132  // Calculate interpolator vector of Y component of magnetic field
133  virtual void calcInterpolatorVectorOfMagneticFieldYDirection( const int iElem, const double uCoord, const double vCoord, const double wCoord, const int irhs, const std::complex<double>& factor = std::complex<double>(1.0,0.0) );
134 
135  // Calculate interpolator vector of Z component of magnetic field
136  virtual void calcInterpolatorVectorOfMagneticFieldZDirection( const int iElem, const double uCoord, const double vCoord, const double wCoord, const int irhs, const std::complex<double>& factor = std::complex<double>(1.0,0.0) );
137 
138  // Calculate interpolator vector of difference of voltage
139  virtual void calcInterpolatorVectorOfVoltageDifference( const int nElem, const int* elememtsIncludingDipole, const CommonParameters::locationXY* localCoordinateValuesStartPoint, const CommonParameters::locationXY* localCoordinateValuesEndPoint, const int irhs );
140 
141  // Calculate interpolator vector of difference of voltage
142  virtual void calcInterpolatorVectorOfVoltageDifference( const int nElem, const int* elememtsIncludingDipole, const int* const facesIncludingDipole,
143  const CommonParameters::AreaCoords* const areaCoordValStartPoint, const CommonParameters::AreaCoords* const areaCoordValEndPoint, const int irhs );
144 
145  // Set non-zero strucuture of matrix for forward calculation
147 
148  // Set non-zero values of matrix and right-hande side vector for forward calculation
150 
151  //----- DO NOT DELETE FOR FUTURE USE >>>>>
153  //virtual void setNonZeroStrucuture( ComplexSparseSquareSymmetricMatrix& matrix, const int blkID, std::set<int>& nonZeroRowsAndCols );
154 
156  //virtual void setNonZeroValues( ComplexSparseSquareSymmetricMatrix& matrix, const int blkID );
157  //----- DO NOT DELETE FOR FUTURE USE <<<<<
158 
159  // Calculate vector x of the reciprocity algorithm of Rodi (1976)
160  virtual void calVectorXOfReciprocityAlgorithm( const std::complex<double>* const vecIn, const int blkID, std::complex<double>* const vecOut, std::vector<int>& nonZeroRows );
161 
162  // Call function inputMeshData of the class MeshData
163  virtual void callInputMeshData();
164 
165  // Get pointer to the class MeshData
166  virtual const MeshData* getPointerToMeshData() const;
167 
168  // Get pointer to the class MeshDataTetraElement
170 
171 private:
172 
173  const static int DIRICHLET_BOUNDARY_NONZERO_VALUE = -1;// This must be the same as the ones of other functions !!
174 
175  const static int DIRICHLET_BOUNDARY_ZERO_VALUE = -2;// This must be the same as the ones of other functions !!
176 
177  const static int m_numIntegralPoints = 4;
178 
180 
182 
184 
186 
187  const static double m_eps;
188 
189  // Copy constructer
191 
192  // Copy assignment operator
194 
195  // Class of 2D forward calculation using triangle elements
196  //Forward2DTriangleElement* m_Fwd2DTriangleElement[4][2];
198 
200 
202 
203 #ifdef _ANISOTOROPY
204  // Set non-zero values of matrix and right-hande side vector for isotropic medium
205  void setNonZeroValuesIsotropy( ComplexSparseSquareSymmetricMatrix& matrix );
206 
207  // Set non-zero values of matrix and right-hande side vector for anisotropic medium
208  void setNonZeroValuesAnisotropy( ComplexSparseSquareSymmetricMatrix& matrix );
209 #endif
210 
211  // Calculate array converting local IDs to global ones
213 
214  // Calculate array converting global IDs to the ones after degeneration
216 
217  // Calculate array converting global edge IDs non-zero electric field values specified to the edges
219 
220  // Get shape functions of the 1st direction with respect to the reference element coordinate system
221  inline double getShapeFuncReferenceCoordU( const double uLocal, const double vLocal, const double wLocal, const int num ) const;
222 
223  // Get shape functions of the 2nd direction with respect to the reference element coordinate system
224  inline double getShapeFuncReferenceCoordV( const double uLocal, const double vLocal, const double wLocal, const int num ) const;
225 
226  // Get shape functions of the 3rd direction with respect to the reference element coordinate system
227  inline double getShapeFuncReferenceCoordW( const double uLocal, const double vLocal, const double wLocal, const int num ) const;
228 
229  // Get 2D shape functions of the 1st direction with respect to the reference element coordinate system
230  inline double get2DShapeFuncReferenceCoordU( const double uLocal, const double vLocal, const int num ) const;
231 
232  // Get 2D shape functions of the 2nd direction with respect to the reference element coordinate system
233  inline double get2DShapeFuncReferenceCoordV( const double uLocal, const double vLocal, const int num ) const;
234 
235  // Get 2D shape functions rotated with respect to the reference element coordinate system
236  inline double get2DShapeFuncRotated() const;
237 
238  // Get shape functions rotated with respect to the reference element coordinate system ( The 1st direction )
239  inline double getShapeFuncRotatedReferenceCoordU( const int num ) const;
240 
241  // Get shape functions rotated with respect to the reference element coordinate system ( The 2nd direction )
242  inline double getShapeFuncRotatedReferenceCoordV( const int num ) const;
243 
244  // Get shape functions rotated with respect to the reference element coordinate system ( The 3rd direction )
245  inline double getShapeFuncRotatedReferenceCoordW( const int num ) const;
246 
247  // Calculate jacobian matrix of the elements
248  void calcJacobianMatrix( const int elemID, Forward3D::Matrix3x3& JacobMat, double& determinant ) const;
249 
250  // Calculate 2D jacobian matrix of the faces
251  void calc2DJacobianMatrix( const int elemID, const int faceID, Forward3D::Matrix2x2& JacobMat, double& determinant ) const;
252 
253  // Calculate the inclinations of the element's face
254  void calcInclinationsOfElementFace( const int elemID, const int faceID, double& dLengdX, double& dLengdY ) const;
255 
256  // Calculate inverse of jacobian matrix multiplied by determinant
257  void calcInverseOfJacobianMatrix( const Forward3D::Matrix3x3& jacobMat, Forward3D::Matrix3x3& invJacobMat ) const;
258 
259  // Calculate flag of sign inversion. This function used by calcVoltageDifference.
260  bool calcRatioAndReverseFlag( const int faceID, const int edgeIDLocal2D, const CommonParameters::AreaCoords& startPoint, const CommonParameters::AreaCoords& endPoint, double& ratio ) const;
261 
262  // Output results of forward calculation to VTK file
263  virtual void outputResultToVTK() const;
264 
265  // Output results of forward calculation to binary file
266  virtual void outputResultToBinary( const int iFreq, const int iPol ) const;
267 
268  // Calculate integrals of which element matrix consisits
269  void calcIntegrals( const int elemID, double* eMat, double* fMat ) const;
270 
271  // Calculate determinant of 3x3 matrix
272  double calcDeterminant( const double* rowVec0, const double* rowVec1, const double* rowVec2, const int icol ) const;
273 
274 };
275 
276 #endif
Definition: ComplexSparseSquareSymmetricMatrix.h:32
Definition: Forward2DTriangleElement0thOrderEdgeBased.h:30
Definition: Forward3DTetraElement0thOrder.h:33
void calcJacobianMatrix(const int elemID, Forward3D::Matrix3x3 &JacobMat, double &determinant) const
Definition: Forward3DTetraElement0thOrder.cpp:3699
virtual std::complex< double > calcValueElectricFieldYDirectionFromEdgesOnEarthSurface(const int iElem, const int iFace, const double uCoord, const double vCoord) const
Definition: Forward3DTetraElement0thOrder.cpp:473
double m_uCoord[m_numIntegralPoints]
Definition: Forward3DTetraElement0thOrder.h:179
void calcIntegrals(const int elemID, double *eMat, double *fMat) const
Definition: Forward3DTetraElement0thOrder.cpp:4515
Forward2DTriangleElement0thOrderEdgeBased * m_Fwd2DTriangleElement[4]
Definition: Forward3DTetraElement0thOrder.h:197
virtual const MeshData * getPointerToMeshData() const
Definition: Forward3DTetraElement0thOrder.cpp:3022
double m_weights[m_numIntegralPoints]
Definition: Forward3DTetraElement0thOrder.h:185
bool calcRatioAndReverseFlag(const int faceID, const int edgeIDLocal2D, const CommonParameters::AreaCoords &startPoint, const CommonParameters::AreaCoords &endPoint, double &ratio) const
Definition: Forward3DTetraElement0thOrder.cpp:3897
double getShapeFuncReferenceCoordU(const double uLocal, const double vLocal, const double wLocal, const int num) const
Definition: Forward3DTetraElement0thOrder.cpp:3450
void calcArrayConvertIDsGlobal2AfterDegenerated()
Definition: Forward3DTetraElement0thOrder.cpp:3164
virtual void calcInterpolatorVectorOfVoltageDifference(const int nElem, const int *elememtsIncludingDipole, const CommonParameters::locationXY *localCoordinateValuesStartPoint, const CommonParameters::locationXY *localCoordinateValuesEndPoint, const int irhs)
Definition: Forward3DTetraElement0thOrder.cpp:1739
double calcDeterminant(const double *rowVec0, const double *rowVec1, const double *rowVec2, const int icol) const
Definition: Forward3DTetraElement0thOrder.cpp:4648
virtual void setNonZeroValues(ComplexSparseSquareSymmetricMatrix &matrix)
Definition: Forward3DTetraElement0thOrder.cpp:1997
void calcInclinationsOfElementFace(const int elemID, const int faceID, double &dLengdX, double &dLengdY) const
Definition: Forward3DTetraElement0thOrder.cpp:3773
double getShapeFuncRotatedReferenceCoordV(const int num) const
Definition: Forward3DTetraElement0thOrder.cpp:3636
virtual std::complex< double > calcValueMagneticFieldZDirection(const int iElem, const double uCoord, const double vCoord, const double wCoord) const
Definition: Forward3DTetraElement0thOrder.cpp:730
double get2DShapeFuncRotated() const
Definition: Forward3DTetraElement0thOrder.cpp:3600
virtual void calcInterpolatorVectorOfElectricFieldTangentialXFromAllEdges(const int iElem, const int iFace, const double xLocal, const double yLocal, const double zLocal, const int irhs, const std::complex< double > &factor=std::complex< double >(1.0, 0.0))
Definition: Forward3DTetraElement0thOrder.cpp:1368
virtual void forwardCalculation(const double freq, const int iPol)
Definition: Forward3DTetraElement0thOrder.cpp:137
virtual void calcInterpolatorVectorOfElectricFieldYDirection(const int iElem, const double uCoord, const double vCoord, const double wCoord, const int irhs, const std::complex< double > &factor=std::complex< double >(1.0, 0.0))
Definition: Forward3DTetraElement0thOrder.cpp:1116
double getShapeFuncReferenceCoordW(const double uLocal, const double vLocal, const double wLocal, const int num) const
Definition: Forward3DTetraElement0thOrder.cpp:3518
static const int DIRICHLET_BOUNDARY_ZERO_VALUE
Definition: Forward3DTetraElement0thOrder.h:175
virtual void calVectorXOfReciprocityAlgorithm(const std::complex< double > *const vecIn, const int blkID, std::complex< double > *const vecOut, std::vector< int > &nonZeroRows)
Definition: Forward3DTetraElement0thOrder.cpp:2786
const MeshDataTetraElement * getPointerToMeshDataTetraElement() const
Definition: Forward3DTetraElement0thOrder.cpp:3027
virtual void calcInterpolatorVectorOfElectricFieldYDirectionFromEdgesOnEarthSurface(const int iElem, const int iFace, const double uCoord, const double vCoord, const int irhs, const std::complex< double > &factor=std::complex< double >(1.0, 0.0))
Definition: Forward3DTetraElement0thOrder.cpp:1353
Forward3DTetraElement0thOrder & operator=(const Forward3DTetraElement0thOrder &rhs)
void calc2DJacobianMatrix(const int elemID, const int faceID, Forward3D::Matrix2x2 &JacobMat, double &determinant) const
Definition: Forward3DTetraElement0thOrder.cpp:3745
double m_wCoord[m_numIntegralPoints]
Definition: Forward3DTetraElement0thOrder.h:183
virtual void calcInterpolatorVectorOfElectricFieldTangentialX(const int iElem, const int iFace, const double uCoord, const double vCoord, const int irhs, const std::complex< double > &factor=std::complex< double >(1.0, 0.0))
Definition: Forward3DTetraElement0thOrder.cpp:1397
virtual void calcInterpolatorVectorOfRotatedElectricFieldNormal(const int iElem, const int iFace, const double uCoord, const double vCoord, const int irhs, const std::complex< double > &factor=std::complex< double >(1.0, 0.0))
Definition: Forward3DTetraElement0thOrder.cpp:1499
virtual void outputResultToVTK() const
Definition: Forward3DTetraElement0thOrder.cpp:4052
virtual std::complex< double > calcValueElectricFieldXDirection(const int iElem, const double uCoord, const double vCoord, const double wCoord) const
Definition: Forward3DTetraElement0thOrder.cpp:327
double get2DShapeFuncReferenceCoordV(const double uLocal, const double vLocal, const int num) const
Definition: Forward3DTetraElement0thOrder.cpp:3576
void calcArrayConvertLocalID2Global()
Definition: Forward3DTetraElement0thOrder.cpp:3033
double get2DShapeFuncReferenceCoordU(const double uLocal, const double vLocal, const int num) const
Definition: Forward3DTetraElement0thOrder.cpp:3552
virtual void outputResultToBinary(const int iFreq, const int iPol) const
Definition: Forward3DTetraElement0thOrder.cpp:4220
virtual void calcInterpolatorVectorOfElectricFieldTangentialY(const int iElem, const int iFace, const double uCoord, const double vCoord, const int irhs, const std::complex< double > &factor=std::complex< double >(1.0, 0.0))
Definition: Forward3DTetraElement0thOrder.cpp:1448
virtual std::complex< double > calcValueMagneticFieldXDirection(const int iElem, const double uCoord, const double vCoord, const double wCoord) const
Definition: Forward3DTetraElement0thOrder.cpp:650
double getShapeFuncRotatedReferenceCoordW(const int num) const
Definition: Forward3DTetraElement0thOrder.cpp:3668
virtual void setNonZeroStrucuture(ComplexSparseSquareSymmetricMatrix &matrix)
Definition: Forward3DTetraElement0thOrder.cpp:1929
virtual std::complex< double > calcValueElectricFieldXDirectionFromEdgesOnEarthSurface(const int iElem, const int iFace, const double uCoord, const double vCoord) const
Definition: Forward3DTetraElement0thOrder.cpp:458
virtual void calcInterpolatorVectorOfElectricFieldXDirectionFromEdgesOnEarthSurface(const int iElem, const int iFace, const double uCoord, const double vCoord, const int irhs, const std::complex< double > &factor=std::complex< double >(1.0, 0.0))
Definition: Forward3DTetraElement0thOrder.cpp:1337
virtual std::complex< double > calcValueElectricFieldTangentialYFromAllEdges(const int iElem, const int iFace, const double xLocal, const double yLocal, const double zLocal) const
Definition: Forward3DTetraElement0thOrder.cpp:501
virtual ~Forward3DTetraElement0thOrder()
Definition: Forward3DTetraElement0thOrder.cpp:113
static const double m_eps
Definition: Forward3DTetraElement0thOrder.h:187
double m_vCoord[m_numIntegralPoints]
Definition: Forward3DTetraElement0thOrder.h:181
virtual void calcInterpolatorVectorOfMagneticFieldXDirection(const int iElem, const double uCoord, const double vCoord, const double wCoord, const int irhs, const std::complex< double > &factor=std::complex< double >(1.0, 0.0))
Definition: Forward3DTetraElement0thOrder.cpp:1532
static const int DIRICHLET_BOUNDARY_NONZERO_VALUE
Definition: Forward3DTetraElement0thOrder.h:173
virtual std::complex< double > calcValueElectricFieldZDirection(const int iElem, const double uCoord, const double vCoord, const double wCoord) const
Definition: Forward3DTetraElement0thOrder.cpp:413
virtual void callInputMeshData()
Definition: Forward3DTetraElement0thOrder.cpp:3019
virtual void calcInterpolatorVectorOfElectricFieldTangentialYFromAllEdges(const int iElem, const int iFace, const double xLocal, const double yLocal, const double zLocal, const int irhs, const std::complex< double > &factor=std::complex< double >(1.0, 0.0))
Definition: Forward3DTetraElement0thOrder.cpp:1383
static const int m_numIntegralPoints
Definition: Forward3DTetraElement0thOrder.h:177
double getShapeFuncReferenceCoordV(const double uLocal, const double vLocal, const double wLocal, const int num) const
Definition: Forward3DTetraElement0thOrder.cpp:3484
virtual std::complex< double > calcValueElectricFieldTangentialXFromAllEdges(const int iElem, const int iFace, const double xLocal, const double yLocal, const double zLocal) const
Definition: Forward3DTetraElement0thOrder.cpp:487
virtual std::complex< double > calcValueElectricFieldTangentialY(const int iElem, const int iFace, const double uCoord, const double vCoord) const
Definition: Forward3DTetraElement0thOrder.cpp:550
virtual void calcInterpolatorVectorOfElectricFieldXDirection(const int iElem, const double uCoord, const double vCoord, const double wCoord, const int irhs, const std::complex< double > &factor=std::complex< double >(1.0, 0.0))
Definition: Forward3DTetraElement0thOrder.cpp:1039
virtual std::complex< double > calcValueElectricFieldYDirection(const int iElem, const double uCoord, const double vCoord, const double wCoord) const
Definition: Forward3DTetraElement0thOrder.cpp:370
double getShapeFuncRotatedReferenceCoordU(const int num) const
Definition: Forward3DTetraElement0thOrder.cpp:3604
Forward3DTetraElement0thOrder(const Forward3DTetraElement0thOrder &rhs)
virtual void calcInterpolatorVectorOfElectricFieldZDirection(const int iElem, const double uCoord, const double vCoord, const double wCoord, const int irhs, const std::complex< double > &factor=std::complex< double >(1.0, 0.0))
Definition: Forward3DTetraElement0thOrder.cpp:1192
virtual void calcInterpolatorVectorOfMagneticFieldYDirection(const int iElem, const double uCoord, const double vCoord, const double wCoord, const int irhs, const std::complex< double > &factor=std::complex< double >(1.0, 0.0))
Definition: Forward3DTetraElement0thOrder.cpp:1603
virtual void calcInterpolatorVectorOfRotatedElectricFieldZDirection(const int iElem, const double uCoord, const double vCoord, const double wCoord, const int irhs, const std::complex< double > &factor=std::complex< double >(1.0, 0.0))
Definition: Forward3DTetraElement0thOrder.cpp:1268
virtual std::complex< double > calcValueMagneticFieldYDirection(const int iElem, const double uCoord, const double vCoord, const double wCoord) const
Definition: Forward3DTetraElement0thOrder.cpp:690
virtual std::complex< double > calcValueElectricFieldTangentialX(const int iElem, const int iFace, const double uCoord, const double vCoord) const
Definition: Forward3DTetraElement0thOrder.cpp:514
virtual void calcInterpolatorVectorOfMagneticFieldZDirection(const int iElem, const double uCoord, const double vCoord, const double wCoord, const int irhs, const std::complex< double > &factor=std::complex< double >(1.0, 0.0))
Definition: Forward3DTetraElement0thOrder.cpp:1674
bool ** m_signInversion
Definition: Forward3DTetraElement0thOrder.h:201
Forward3DTetraElement0thOrder()
Definition: Forward3DTetraElement0thOrder.cpp:42
void calcInverseOfJacobianMatrix(const Forward3D::Matrix3x3 &jacobMat, Forward3D::Matrix3x3 &invJacobMat) const
Definition: Forward3DTetraElement0thOrder.cpp:3808
void calcArrayConvertIDGlobal2NonZeroValues()
Definition: Forward3DTetraElement0thOrder.cpp:3288
virtual std::complex< double > calcValueRotatedElectricFieldZDirection(const int iElem, const double uCoord, const double vCoord, const double wCoord) const
Definition: Forward3DTetraElement0thOrder.cpp:586
MeshDataTetraElement m_MeshDataTetraElement
Definition: Forward3DTetraElement0thOrder.h:199
virtual std::complex< double > calcVoltageDifference(const int nElem, const int *elememtsIncludingDipole, const CommonParameters::locationXY *localCoordinateValuesStartPoint, const CommonParameters::locationXY *localCoordinateValuesEndPoint) const
Definition: Forward3DTetraElement0thOrder.cpp:792
virtual std::complex< double > calcValueRotatedElectricFieldNormal(const int iElem, const int iFace, const double uCoord, const double vCoord) const
Definition: Forward3DTetraElement0thOrder.cpp:620
Definition: Forward3D.h:37
Definition: MeshDataTetraElement.h:32
Definition: MeshData.h:31
Definition: CommonParameters.h:99
Definition: CommonParameters.h:38
Definition: Forward3D.h:200
Definition: Forward3D.h:207