FEMTIC
Classes | Public Member Functions | Protected Member Functions | Protected Attributes | Private Member Functions | Private Attributes | List of all members
Forward3D Class Referenceabstract

#include <Forward3D.h>

Inheritance diagram for Forward3D:
Inheritance graph
[legend]
Collaboration diagram for Forward3D:
Collaboration graph
[legend]

Classes

struct  Matrix2x2
 
struct  Matrix3x3
 

Public Member Functions

 Forward3D ()
 
virtual ~Forward3D ()
 
virtual void forwardCalculation (const double freq, const int iPol)=0
 
virtual std::complex< double > calcValueElectricFieldXDirection (const int iElem, const double xLocal, const double yLocal, const double zLocal) const =0
 
virtual std::complex< double > calcValueElectricFieldYDirection (const int iElem, const double xLocal, const double yLocal, const double zLocal) const =0
 
virtual std::complex< double > calcValueElectricFieldZDirection (const int iElem, const double xLocal, const double yLocal, const double zLocal) const =0
 
virtual std::complex< double > calcValueRotatedElectricFieldZDirection (const int iElem, const double xLocal, const double yLocal, const double zLocal) const =0
 
virtual std::complex< double > calcValueElectricFieldXDirectionFromEdgesOnEarthSurface (const int iElem, const int iFace, const double uCoord, const double vCoord) const =0
 
virtual std::complex< double > calcValueElectricFieldYDirectionFromEdgesOnEarthSurface (const int iElem, const int iFace, const double uCoord, const double vCoord) const =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 > calcValueElectricFieldTangentialX (const int iElem, const int iFace, const double uCoord, const double vCoord) const =0
 
virtual std::complex< double > calcValueElectricFieldTangentialY (const int iElem, const int iFace, const double uCoord, const double vCoord) const =0
 
virtual std::complex< double > calcValueMagneticFieldXDirection (const int iElem, const double xLocal, const double yLocal, const double zLocal) const =0
 
virtual std::complex< double > calcValueMagneticFieldYDirection (const int iElem, 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 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 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 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 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 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 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
 
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 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
 
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 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 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 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
 
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
 
virtual void calcInterpolatorVectorOfVoltageDifference (const int nElem, const int *elememtsIncludingDipole, const CommonParameters::locationXY *localCoordinateValuesStartPoint, const CommonParameters::locationXY *localCoordinateValuesEndPoint, const int irhs)=0
 
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
 
virtual void setNonZeroStrucuture (ComplexSparseSquareSymmetricMatrix &matrix)=0
 
virtual void setNonZeroValues (ComplexSparseSquareSymmetricMatrix &matrix)=0
 
virtual void calVectorXOfReciprocityAlgorithm (const std::complex< double > *const vecIn, const int blkID, std::complex< double > *const vecOut, std::vector< int > &nonZeroRows)=0
 
virtual void copySolutionVectorDegenerated (const int iPol, std::complex< double > *solutionVector) const
 
virtual void callInputMeshData ()=0
 
virtual const MeshDatagetPointerToMeshData () const =0
 
int getPolarizationCurrent () const
 
double getFrequencyCurrent () const
 
int getOrderOfFiniteElement () const
 
int getNumOfEquationDegenerated () const
 
virtual int getNumOfEquationFinallySolved () const
 
void releaseMemoryOfMatrixAndSolver ()
 
void initializeRhsVectors (const int nrhs)
 
void solvePhaseForRhsConsistingInterpolatorVectors (const int numInterpolatorVectors, std::complex< double > *solutionForInterpolatorVectors)
 
void calculateDerivativesOfEMField (const int numInterpolatorVectors, const std::complex< double > *const solutionForInterpolatorVectors, std::complex< double > *const derivatives)
 
void allcateMemoryForDerivativeOfInterpolatorVectors (const int numInterpolatorVectors)
 
virtual std::complex< double > calcVoltageDifference (const int nElem, const int *elememtsIncludingDipole, const CommonParameters::locationXY *localCoordinateValuesStartPoint, const CommonParameters::locationXY *localCoordinateValuesEndPoint) const =0
 
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
 

Protected Member Functions

void setPolarizationCurrent (const int iPol)
 
void setFrequencyCurrent (const double freq)
 
void setOrderOfFiniteElement (const int order)
 
void addValuesToRhsVectors (const int irow, const int irhs, const std::complex< double > &val)
 
virtual void outputResultToVTK () const =0
 
void initializeSparseSolver ()
 

Protected Attributes

int m_numOfEquation
 
int m_numOfEquationDegenerated
 
int ** m_IDsLocal2Global
 
bool m_hasSetIDsLocal2Global
 
int * m_IDsGlobal2AfterDegenerated [2]
 
std::map< int, std::complex< double > > m_globalID2NonZeroValues
 
bool m_hasIDsGlobal2AfterDegenerated [2]
 
std::map< int, int > m_globalIDSlave2Master [2]
 
ComplexSparseSquareSymmetricMatrix m_matrix3DAnalysis
 
bool m_hasMatrixStructureSetAndAnalyzed
 
std::complex< double > * m_solution
 

Private Member Functions

 Forward3D (const Forward3D &rhs)
 
Forward3Doperator= (const Forward3D &rhs)
 

Private Attributes

int m_polarizationCurrent
 
double m_frequencyCurrent
 
int m_orderOfFiniteElement
 

Constructor & Destructor Documentation

◆ Forward3D() [1/2]

Forward3D::Forward3D ( )

◆ ~Forward3D()

Forward3D::~Forward3D ( )
virtual

◆ Forward3D() [2/2]

Forward3D::Forward3D ( const Forward3D rhs)
inlineprivate

Member Function Documentation

◆ addValuesToRhsVectors()

void Forward3D::addValuesToRhsVectors ( const int  irow,
const int  irhs,
const std::complex< double > &  val 
)
protected

◆ allcateMemoryForDerivativeOfInterpolatorVectors()

void Forward3D::allcateMemoryForDerivativeOfInterpolatorVectors ( const int  numInterpolatorVectors)

◆ calcInterpolatorVectorOfElectricFieldTangentialX()

virtual void Forward3D::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) 
)
pure virtual

◆ calcInterpolatorVectorOfElectricFieldTangentialXFromAllEdges()

virtual void Forward3D::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) 
)
pure virtual

◆ calcInterpolatorVectorOfElectricFieldTangentialY()

virtual void Forward3D::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) 
)
pure virtual

◆ calcInterpolatorVectorOfElectricFieldTangentialYFromAllEdges()

virtual void Forward3D::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) 
)
pure virtual

◆ calcInterpolatorVectorOfElectricFieldXDirection()

virtual void Forward3D::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) 
)
pure virtual

◆ calcInterpolatorVectorOfElectricFieldXDirectionFromEdgesOnEarthSurface()

virtual void Forward3D::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) 
)
pure virtual

◆ calcInterpolatorVectorOfElectricFieldYDirection()

virtual void Forward3D::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) 
)
pure virtual

◆ calcInterpolatorVectorOfElectricFieldYDirectionFromEdgesOnEarthSurface()

virtual void Forward3D::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) 
)
pure virtual

◆ calcInterpolatorVectorOfElectricFieldZDirection()

virtual void Forward3D::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) 
)
pure virtual

◆ calcInterpolatorVectorOfMagneticFieldXDirection()

virtual void Forward3D::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) 
)
pure virtual

◆ calcInterpolatorVectorOfMagneticFieldYDirection()

virtual void Forward3D::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) 
)
pure virtual

◆ calcInterpolatorVectorOfMagneticFieldZDirection()

virtual void Forward3D::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) 
)
pure virtual

◆ calcInterpolatorVectorOfRotatedElectricFieldZDirection()

virtual void Forward3D::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) 
)
pure virtual

◆ calcInterpolatorVectorOfVoltageDifference() [1/2]

virtual void Forward3D::calcInterpolatorVectorOfVoltageDifference ( const int  nElem,
const int *  elememtsIncludingDipole,
const CommonParameters::locationXY localCoordinateValuesStartPoint,
const CommonParameters::locationXY localCoordinateValuesEndPoint,
const int  irhs 
)
pure virtual

◆ calcInterpolatorVectorOfVoltageDifference() [2/2]

virtual void Forward3D::calcInterpolatorVectorOfVoltageDifference ( const int  nElem,
const int *  elememtsIncludingDipole,
const int *const  facesIncludingDipole,
const CommonParameters::AreaCoords *const  areaCoordValStartPoint,
const CommonParameters::AreaCoords *const  areaCoordValEndPoint,
const int  irhs 
)
pure virtual

◆ calculateDerivativesOfEMField()

void Forward3D::calculateDerivativesOfEMField ( const int  numInterpolatorVectors,
const std::complex< double > *const  solutionForInterpolatorVectors,
std::complex< double > *const  derivatives 
)

◆ calcValueElectricFieldTangentialX()

virtual std::complex<double> Forward3D::calcValueElectricFieldTangentialX ( const int  iElem,
const int  iFace,
const double  uCoord,
const double  vCoord 
) const
pure virtual

◆ calcValueElectricFieldTangentialXFromAllEdges()

virtual std::complex<double> Forward3D::calcValueElectricFieldTangentialXFromAllEdges ( const int  iElem,
const int  iFace,
const double  xLocal,
const double  yLocal,
const double  zLocal 
) const
pure virtual

◆ calcValueElectricFieldTangentialY()

virtual std::complex<double> Forward3D::calcValueElectricFieldTangentialY ( const int  iElem,
const int  iFace,
const double  uCoord,
const double  vCoord 
) const
pure virtual

◆ calcValueElectricFieldTangentialYFromAllEdges()

virtual std::complex<double> Forward3D::calcValueElectricFieldTangentialYFromAllEdges ( const int  iElem,
const int  iFace,
const double  xLocal,
const double  yLocal,
const double  zLocal 
) const
pure virtual

◆ calcValueElectricFieldXDirection()

virtual std::complex<double> Forward3D::calcValueElectricFieldXDirection ( const int  iElem,
const double  xLocal,
const double  yLocal,
const double  zLocal 
) const
pure virtual

◆ calcValueElectricFieldXDirectionFromEdgesOnEarthSurface()

virtual std::complex<double> Forward3D::calcValueElectricFieldXDirectionFromEdgesOnEarthSurface ( const int  iElem,
const int  iFace,
const double  uCoord,
const double  vCoord 
) const
pure virtual

◆ calcValueElectricFieldYDirection()

virtual std::complex<double> Forward3D::calcValueElectricFieldYDirection ( const int  iElem,
const double  xLocal,
const double  yLocal,
const double  zLocal 
) const
pure virtual

◆ calcValueElectricFieldYDirectionFromEdgesOnEarthSurface()

virtual std::complex<double> Forward3D::calcValueElectricFieldYDirectionFromEdgesOnEarthSurface ( const int  iElem,
const int  iFace,
const double  uCoord,
const double  vCoord 
) const
pure virtual

◆ calcValueElectricFieldZDirection()

virtual std::complex<double> Forward3D::calcValueElectricFieldZDirection ( const int  iElem,
const double  xLocal,
const double  yLocal,
const double  zLocal 
) const
pure virtual

◆ calcValueMagneticFieldXDirection()

virtual std::complex<double> Forward3D::calcValueMagneticFieldXDirection ( const int  iElem,
const double  xLocal,
const double  yLocal,
const double  zLocal 
) const
pure virtual

◆ calcValueMagneticFieldYDirection()

virtual std::complex<double> Forward3D::calcValueMagneticFieldYDirection ( const int  iElem,
const double  xLocal,
const double  yLocal,
const double  zLocal 
) const
pure virtual

◆ calcValueMagneticFieldZDirection()

virtual std::complex<double> Forward3D::calcValueMagneticFieldZDirection ( const int  iElem,
const double  xLocal,
const double  yLocal,
const double  zLocal 
) const
pure virtual

◆ calcValueRotatedElectricFieldZDirection()

virtual std::complex<double> Forward3D::calcValueRotatedElectricFieldZDirection ( const int  iElem,
const double  xLocal,
const double  yLocal,
const double  zLocal 
) const
pure virtual

◆ calcVoltageDifference() [1/2]

virtual std::complex<double> Forward3D::calcVoltageDifference ( const int  nElem,
const int *const  elememtsIncludingDipole,
const int *const  facesIncludingDipole,
const CommonParameters::AreaCoords *const  areaCoordValStartPoint,
const CommonParameters::AreaCoords *const  areaCoordValEndPoint 
) const
pure virtual

◆ calcVoltageDifference() [2/2]

virtual std::complex<double> Forward3D::calcVoltageDifference ( const int  nElem,
const int *  elememtsIncludingDipole,
const CommonParameters::locationXY localCoordinateValuesStartPoint,
const CommonParameters::locationXY localCoordinateValuesEndPoint 
) const
pure virtual

◆ callInputMeshData()

virtual void Forward3D::callInputMeshData ( )
pure virtual

◆ calVectorXOfReciprocityAlgorithm()

virtual void Forward3D::calVectorXOfReciprocityAlgorithm ( const std::complex< double > *const  vecIn,
const int  blkID,
std::complex< double > *const  vecOut,
std::vector< int > &  nonZeroRows 
)
pure virtual

◆ copySolutionVectorDegenerated()

void Forward3D::copySolutionVectorDegenerated ( const int  iPol,
std::complex< double > *  solutionVector 
) const
virtual

◆ forwardCalculation()

void Forward3D::forwardCalculation ( const double  freq,
const int  iPol 
)
pure virtual

◆ getFrequencyCurrent()

double Forward3D::getFrequencyCurrent ( ) const

◆ getNumOfEquationDegenerated()

int Forward3D::getNumOfEquationDegenerated ( ) const

◆ getNumOfEquationFinallySolved()

int Forward3D::getNumOfEquationFinallySolved ( ) const
virtual

◆ getOrderOfFiniteElement()

int Forward3D::getOrderOfFiniteElement ( ) const

◆ getPointerToMeshData()

virtual const MeshData* Forward3D::getPointerToMeshData ( ) const
pure virtual

◆ getPolarizationCurrent()

int Forward3D::getPolarizationCurrent ( ) const

◆ initializeRhsVectors()

void Forward3D::initializeRhsVectors ( const int  nrhs)

◆ initializeSparseSolver()

void Forward3D::initializeSparseSolver ( )
protected

◆ operator=()

Forward3D& Forward3D::operator= ( const Forward3D rhs)
inlineprivate

◆ outputResultToVTK()

virtual void Forward3D::outputResultToVTK ( ) const
protectedpure virtual

◆ releaseMemoryOfMatrixAndSolver()

void Forward3D::releaseMemoryOfMatrixAndSolver ( )

◆ setFrequencyCurrent()

void Forward3D::setFrequencyCurrent ( const double  freq)
protected

◆ setNonZeroStrucuture()

virtual void Forward3D::setNonZeroStrucuture ( ComplexSparseSquareSymmetricMatrix matrix)
pure virtual

◆ setNonZeroValues()

virtual void Forward3D::setNonZeroValues ( ComplexSparseSquareSymmetricMatrix matrix)
pure virtual

◆ setOrderOfFiniteElement()

void Forward3D::setOrderOfFiniteElement ( const int  order)
protected

◆ setPolarizationCurrent()

void Forward3D::setPolarizationCurrent ( const int  iPol)
protected

◆ solvePhaseForRhsConsistingInterpolatorVectors()

void Forward3D::solvePhaseForRhsConsistingInterpolatorVectors ( const int  numInterpolatorVectors,
std::complex< double > *  solutionForInterpolatorVectors 
)

Member Data Documentation

◆ m_frequencyCurrent

double Forward3D::m_frequencyCurrent
private

◆ m_globalID2NonZeroValues

std::map< int, std::complex<double> > Forward3D::m_globalID2NonZeroValues
protected

◆ m_globalIDSlave2Master

std::map<int, int> Forward3D::m_globalIDSlave2Master[2]
protected

◆ m_hasIDsGlobal2AfterDegenerated

bool Forward3D::m_hasIDsGlobal2AfterDegenerated[2]
protected

◆ m_hasMatrixStructureSetAndAnalyzed

bool Forward3D::m_hasMatrixStructureSetAndAnalyzed
protected

◆ m_hasSetIDsLocal2Global

bool Forward3D::m_hasSetIDsLocal2Global
protected

◆ m_IDsGlobal2AfterDegenerated

int* Forward3D::m_IDsGlobal2AfterDegenerated[2]
protected

◆ m_IDsLocal2Global

int** Forward3D::m_IDsLocal2Global
protected

◆ m_matrix3DAnalysis

ComplexSparseSquareSymmetricMatrix Forward3D::m_matrix3DAnalysis
protected

◆ m_numOfEquation

int Forward3D::m_numOfEquation
protected

◆ m_numOfEquationDegenerated

int Forward3D::m_numOfEquationDegenerated
protected

◆ m_orderOfFiniteElement

int Forward3D::m_orderOfFiniteElement
private

◆ m_polarizationCurrent

int Forward3D::m_polarizationCurrent
private

◆ m_solution

std::complex<double>* Forward3D::m_solution
protected

The documentation for this class was generated from the following files: