24 #ifndef DBLDEF_FORWARD_3D
25 #define DBLDEF_FORWARD_3D
149 virtual void calVectorXOfReciprocityAlgorithm(
const std::complex<double>*
const vecIn,
const int blkID, std::complex<double>*
const vecOut, std::vector<int>& nonZeroRows ) = 0;
185 void calculateDerivativesOfEMField(
const int numInterpolatorVectors,
const std::complex<double>*
const solutionForInterpolatorVectors, std::complex<double>*
const derivatives );
195 virtual std::complex<double>
calcVoltageDifference(
const int nElem,
const int*
const elememtsIncludingDipole,
const int*
const facesIncludingDipole,
273 std::cerr <<
"Error : Copy constructer of the class Forward3D is not implemented." << std::endl;
279 std::cerr <<
"Error : Copy constructer of the class Forward3D is not implemented." << std::endl;
Definition: ComplexSparseSquareSymmetricMatrix.h:32
Definition: Forward3D.h:37
virtual void calcInterpolatorVectorOfElectricFieldXDirection(const int iElem, const double xLocal, const double yLocal, const double zLocal, const int irhs, const std::complex< double > &factor=std::complex< double >(1.0, 0.0))=0
virtual std::complex< double > calcValueMagneticFieldXDirection(const int iElem, const double xLocal, const double yLocal, const double zLocal) const =0
virtual std::complex< double > calcValueElectricFieldTangentialX(const int iElem, const int iFace, const double uCoord, const double vCoord) const =0
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))=0
virtual void calcInterpolatorVectorOfVoltageDifference(const int nElem, const int *elememtsIncludingDipole, const CommonParameters::locationXY *localCoordinateValuesStartPoint, const CommonParameters::locationXY *localCoordinateValuesEndPoint, const int irhs)=0
void addValuesToRhsVectors(const int irow, const int irhs, const std::complex< double > &val)
Definition: Forward3D.cpp:118
int m_numOfEquation
Definition: Forward3D.h:220
virtual std::complex< double > calcValueElectricFieldYDirection(const int iElem, const double xLocal, const double yLocal, const double zLocal) const =0
virtual void forwardCalculation(const double freq, const int iPol)=0
Definition: Forward3D.cpp:87
Forward3D()
Definition: Forward3D.cpp:37
void allcateMemoryForDerivativeOfInterpolatorVectors(const int numInterpolatorVectors)
int getPolarizationCurrent() const
Definition: Forward3D.cpp:405
virtual void calcInterpolatorVectorOfVoltageDifference(const int nElem, const int *elememtsIncludingDipole, const int *const facesIncludingDipole, const CommonParameters::AreaCoords *const areaCoordValStartPoint, const CommonParameters::AreaCoords *const areaCoordValEndPoint, const int irhs)=0
int getNumOfEquationDegenerated() const
Definition: Forward3D.cpp:420
bool m_hasSetIDsLocal2Global
Definition: Forward3D.h:229
int ** m_IDsLocal2Global
Definition: Forward3D.h:226
void setFrequencyCurrent(const double freq)
Definition: Forward3D.cpp:98
virtual std::complex< double > calcValueMagneticFieldYDirection(const int iElem, const double xLocal, const double yLocal, const double zLocal) const =0
virtual void copySolutionVectorDegenerated(const int iPol, std::complex< double > *solutionVector) const
Definition: Forward3D.cpp:393
virtual void calcInterpolatorVectorOfElectricFieldZDirection(const int iElem, const double xLocal, const double yLocal, const double zLocal, const int irhs, const std::complex< double > &factor=std::complex< double >(1.0, 0.0))=0
virtual void calcInterpolatorVectorOfMagneticFieldYDirection(const int iElem, const double xLocal, const double yLocal, const double zLocal, const int irhs, const std::complex< double > &factor=std::complex< double >(1.0, 0.0))=0
int m_numOfEquationDegenerated
Definition: Forward3D.h:223
void calculateDerivativesOfEMField(const int numInterpolatorVectors, const std::complex< double > *const solutionForInterpolatorVectors, std::complex< double > *const derivatives)
Definition: Forward3D.cpp:218
Forward3D(const Forward3D &rhs)
Definition: Forward3D.h:272
virtual std::complex< double > calcValueElectricFieldXDirectionFromEdgesOnEarthSurface(const int iElem, const int iFace, const double uCoord, const double vCoord) const =0
std::map< int, int > m_globalIDSlave2Master[2]
Definition: Forward3D.h:241
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))=0
virtual std::complex< double > calcValueElectricFieldXDirection(const int iElem, const double xLocal, const double yLocal, const double zLocal) const =0
double m_frequencyCurrent
Definition: Forward3D.h:287
virtual std::complex< double > calcVoltageDifference(const int nElem, const int *const elememtsIncludingDipole, const int *const facesIncludingDipole, const CommonParameters::AreaCoords *const areaCoordValStartPoint, const CommonParameters::AreaCoords *const areaCoordValEndPoint) const =0
std::map< int, std::complex< double > > m_globalID2NonZeroValues
Definition: Forward3D.h:235
void setPolarizationCurrent(const int iPol)
Definition: Forward3D.cpp:93
std::complex< double > * m_solution
Definition: Forward3D.h:250
virtual void calcInterpolatorVectorOfRotatedElectricFieldZDirection(const int iElem, const double xLocal, const double yLocal, const double zLocal, const int irhs, const std::complex< double > &factor=std::complex< double >(1.0, 0.0))=0
virtual const MeshData * getPointerToMeshData() const =0
virtual void calVectorXOfReciprocityAlgorithm(const std::complex< double > *const vecIn, const int blkID, std::complex< double > *const vecOut, std::vector< int > &nonZeroRows)=0
virtual std::complex< double > calcVoltageDifference(const int nElem, const int *elememtsIncludingDipole, const CommonParameters::locationXY *localCoordinateValuesStartPoint, const CommonParameters::locationXY *localCoordinateValuesEndPoint) const =0
bool m_hasIDsGlobal2AfterDegenerated[2]
Definition: Forward3D.h:238
virtual std::complex< double > calcValueElectricFieldZDirection(const int iElem, const double xLocal, const double yLocal, const double zLocal) const =0
void releaseMemoryOfMatrixAndSolver()
Definition: Forward3D.cpp:430
double getFrequencyCurrent() const
Definition: Forward3D.cpp:410
virtual ~Forward3D()
Definition: Forward3D.cpp:58
virtual void setNonZeroValues(ComplexSparseSquareSymmetricMatrix &matrix)=0
virtual std::complex< double > calcValueRotatedElectricFieldZDirection(const int iElem, const double xLocal, const double yLocal, const double zLocal) const =0
Forward3D & operator=(const Forward3D &rhs)
Definition: Forward3D.h:278
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))=0
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))=0
void setOrderOfFiniteElement(const int order)
Definition: Forward3D.cpp:103
virtual std::complex< double > calcValueElectricFieldTangentialY(const int iElem, const int iFace, const double uCoord, const double vCoord) const =0
int * m_IDsGlobal2AfterDegenerated[2]
Definition: Forward3D.h:232
int getOrderOfFiniteElement() const
Definition: Forward3D.cpp:415
void solvePhaseForRhsConsistingInterpolatorVectors(const int numInterpolatorVectors, std::complex< double > *solutionForInterpolatorVectors)
Definition: Forward3D.cpp:163
virtual void calcInterpolatorVectorOfElectricFieldYDirection(const int iElem, const double xLocal, const double yLocal, const double zLocal, const int irhs, const std::complex< double > &factor=std::complex< double >(1.0, 0.0))=0
virtual void callInputMeshData()=0
virtual int getNumOfEquationFinallySolved() const
Definition: Forward3D.cpp:425
ComplexSparseSquareSymmetricMatrix m_matrix3DAnalysis
Definition: Forward3D.h:244
virtual void setNonZeroStrucuture(ComplexSparseSquareSymmetricMatrix &matrix)=0
virtual std::complex< double > calcValueElectricFieldTangentialXFromAllEdges(const int iElem, const int iFace, const double xLocal, const double yLocal, const double zLocal) const =0
virtual std::complex< double > calcValueElectricFieldTangentialYFromAllEdges(const int iElem, const int iFace, const double xLocal, const double yLocal, const double zLocal) const =0
virtual std::complex< double > calcValueMagneticFieldZDirection(const int iElem, const double xLocal, const double yLocal, const double zLocal) const =0
virtual std::complex< double > calcValueElectricFieldYDirectionFromEdgesOnEarthSurface(const int iElem, const int iFace, const double uCoord, const double vCoord) const =0
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))=0
void initializeSparseSolver()
Definition: Forward3D.cpp:436
bool m_hasMatrixStructureSetAndAnalyzed
Definition: Forward3D.h:247
int m_polarizationCurrent
Definition: Forward3D.h:284
int m_orderOfFiniteElement
Definition: Forward3D.h:290
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))=0
virtual void calcInterpolatorVectorOfMagneticFieldZDirection(const int iElem, const double xLocal, const double yLocal, const double zLocal, const int irhs, const std::complex< double > &factor=std::complex< double >(1.0, 0.0))=0
void initializeRhsVectors(const int nrhs)
Definition: Forward3D.cpp:137
virtual void calcInterpolatorVectorOfMagneticFieldXDirection(const int iElem, const double xLocal, const double yLocal, const double zLocal, const int irhs, const std::complex< double > &factor=std::complex< double >(1.0, 0.0))=0
virtual void outputResultToVTK() const =0
Definition: MeshData.h:31
Definition: CommonParameters.h:99
Definition: CommonParameters.h:38
Definition: Forward3D.h:200
double mat11
Definition: Forward3D.h:201
double mat12
Definition: Forward3D.h:202
double mat22
Definition: Forward3D.h:204
double mat21
Definition: Forward3D.h:203
Definition: Forward3D.h:207
double mat11
Definition: Forward3D.h:208
double mat13
Definition: Forward3D.h:210
double mat33
Definition: Forward3D.h:216
double mat23
Definition: Forward3D.h:213
double mat22
Definition: Forward3D.h:212
double mat32
Definition: Forward3D.h:215
double mat31
Definition: Forward3D.h:214
double mat12
Definition: Forward3D.h:209
double mat21
Definition: Forward3D.h:211