FEMTIC
Public Member Functions | Private Member Functions | Private Attributes | Static Private Attributes | List of all members
Forward2DNonConformingQuadrilateralElement0thOrderEdgeBased Class Reference

#include <Forward2DNonConformingQuadrilateralElement0thOrderEdgeBased.h>

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

Public Member Functions

 Forward2DNonConformingQuadrilateralElement0thOrderEdgeBased (const int planeID, const int iPol)
 
 ~Forward2DNonConformingQuadrilateralElement0thOrderEdgeBased ()
 
virtual void calcEMFieldsOfBoundaryPlanes (const double freq, const MeshDataNonConformingHexaElement *const pMeshData)
 
- Public Member Functions inherited from Forward2DQuadrilateralElementEdgeBased
 Forward2DQuadrilateralElementEdgeBased (const int planeID, const int iPol)
 
 ~Forward2DQuadrilateralElementEdgeBased ()
 
- Public Member Functions inherited from Forward2DQuadrilateralElement
 Forward2DQuadrilateralElement (const int planeID, const int iPol)
 
 ~Forward2DQuadrilateralElement ()
 
- Public Member Functions inherited from Forward2D
 Forward2D (const int planeID, const int iPol)
 
 ~Forward2D ()
 
std::complex< double > getSolutionDirectly (const int freedum) const
 
std::complex< double > getSolutionFromLocalID (const int iElem, const int localID) const
 

Private Member Functions

 Forward2DNonConformingQuadrilateralElement0thOrderEdgeBased ()
 
 Forward2DNonConformingQuadrilateralElement0thOrderEdgeBased (const Forward2DNonConformingQuadrilateralElement0thOrderEdgeBased &rhs)
 
Forward2DNonConformingQuadrilateralElement0thOrderEdgeBasedoperator= (const Forward2DNonConformingQuadrilateralElement0thOrderEdgeBased &rhs)
 
void calcArrayConvertLocalID2Global (const MeshDataNonConformingHexaElement *const pMeshData)
 
void makeMapSlaveDofToMasterDofAndFactors (const MeshDataNonConformingHexaElement *const pMeshData)
 
int getTypeOfOuterEdgeOfBoundaryPlanes (const int edgeIDLocal2D) const
 
double getShapeFuncH (const double xi, const double eta, const int num, const Forward2D::Matrix2x2 &invJacobMat) const
 
double getShapeFuncV (const double xi, const double eta, const int num, const Forward2D::Matrix2x2 &invJacobMat) const
 
double getShapeFuncRotated (const double xi, const double eta, const int num, const Forward2D::Matrix2x2 &invJacobMat) const
 
virtual std::complex< double > calcValueElectricFieldHorizontal (const int iElem, const double xi, const double eta, const MeshDataNonConformingHexaElement *const pMeshDataElement) const
 
virtual std::complex< double > calcValueElectricFieldVertical (const int iElem, const double xi, const double eta, const MeshDataNonConformingHexaElement *const pMeshDataElement) const
 
virtual std::complex< double > calcValueMagneticFieldPerpendicular (const double freq, const int iElem, const double xi, const double eta, const MeshDataNonConformingHexaElement *const pMeshDataElement) const
 
double calcJacobianMatrixOnZXPlaneOfBoundary (const MeshDataNonConformingHexaElement *const pMeshData, const int elemID2D, const double xi, const double eta, Forward2D::Matrix2x2 &jacobMat) const
 
double calcJacobianMatrixOnYZPlaneOfBoundary (const MeshDataNonConformingHexaElement *const pMeshData, const int elemID2D, const double xi, const double eta, Forward2D::Matrix2x2 &jacobMat) const
 
double calcJacobianMatrix (const MeshDataNonConformingHexaElement *const pMeshData, const int elemID2D, const double xi, const double eta, Forward2D::Matrix2x2 &jacobMat) const
 
void calcInverseOfJacobianMatrix (const Forward2D::Matrix2x2 &jacobMat, const double determinant, Forward2D::Matrix2x2 &invJacobMat) const
 
void addMasterDofAndFactorPair (const int slaveDof, const int masterDof, const double factor)
 
void setNonZeroStrucuture (const MeshDataNonConformingHexaElement *const pMeshData)
 
void setNonZeroValues (const double freq, const MeshDataNonConformingHexaElement *const pMeshData)
 
bool faceSlaveElements (const int iElem, const int iEdge, const MeshDataNonConformingHexaElement *const pMeshData) const
 
bool isOuterEdge (const int iElem, const int iEdge, const MeshDataNonConformingHexaElement *const pMeshData) const
 
int getNeighborFaceIndexFromEdgeIndex (const int iEdge) const
 

Private Attributes

double m_integralPointXi [m_numIntegralPoints]
 
double m_integralPointEta [m_numIntegralPoints]
 
double m_weights [m_numIntegralPoints]
 
double m_xiAtNode [4]
 
double m_etaAtNode [4]
 
double m_xiAtEdge [4]
 
double m_etaAtEdge [4]
 
bool m_hasMadeMapSlaveDofToMasterDofAndFactors
 
int * m_IDsAfterDegenerated2AfterConstrained
 
int m_numEquationDegeneratedAndConstrained
 
std::vector< std::pair< int, double > > * m_slaveDofToMasterDofAndFactors
 

Static Private Attributes

static const int DIRICHLET_BOUNDARY_NONZERO_VALUE = -1
 
static const int DIRICHLET_BOUNDARY_ZERO_VALUE = -2
 
static const int SLAVE_DOFS = -3
 
static const int m_numGauss = 2
 
static const int m_numIntegralPoints = m_numGauss * m_numGauss
 

Additional Inherited Members

- Protected Types inherited from Forward2DQuadrilateralElementEdgeBased
enum  TypeOfOuterEdge {
  INNER_EDGE = -1 , LOWER_EDGE = 0 , UPPER_EDGE , LEFT_EDGE ,
  RIGHT_EDGE
}
 
- Protected Types inherited from Forward2D
enum  typeOf2DAnalysis {
  NOT_ASSIGNED = -1 , NODE_BASED_FIRST_ORDER = 0 , NODE_BASED_SECOND_ORDER , EDGE_BASED_ZEROTH_ORDER ,
  EDGE_BASED_FIRST_ORDER
}
 
- Protected Member Functions inherited from Forward2DQuadrilateralElementEdgeBased
virtual std::complex< double > calcEx (const int iElem, const double uCoord, const double vCoord, const MeshDataNonConformingHexaElement *const pMeshData) const
 
virtual std::complex< double > calcEy (const int iElem, const double uCoord, const double vCoord, const MeshDataNonConformingHexaElement *const pMeshData) const
 
virtual std::complex< double > calcEz (const int iElem, const double uCoord, const double vCoord, const MeshDataNonConformingHexaElement *const pMeshData) const
 
virtual std::complex< double > calcHx (const double freq, const int iElem, const double uCoord, const double vCoord, const MeshDataNonConformingHexaElement *const pMeshData) const
 
virtual std::complex< double > calcHy (const double freq, const int iElem, const double uCoord, const double vCoord, const MeshDataNonConformingHexaElement *const pMeshData) const
 
virtual std::complex< double > calcHz (const double freq, const int iElem, const double uCoord, const double vCoord, const MeshDataNonConformingHexaElement *const pMeshData) const
 
- Protected Member Functions inherited from Forward2DQuadrilateralElement
void output2DResult (const double freq, const MeshDataNonConformingHexaElement *const pMeshData) const
 
- Protected Member Functions inherited from Forward2D
int calcMode () const
 
- Protected Attributes inherited from Forward2DQuadrilateralElementEdgeBased
std::map< int, std::complex< double > > m_edgesIDGlobal2NonZeroValues
 
- Protected Attributes inherited from Forward2DQuadrilateralElement
int m_numEquations
 
int m_numEquationsDegenerated
 
int m_numNodeTotal2D
 
std::map< int, int > m_nodeIDs3DTo2D
 
- Protected Attributes inherited from Forward2D
int m_planeID
 
int m_polarization
 
ComplexSparseSquareSymmetricMatrix m_matrix2DAnalysis
 
bool m_hasMatrixStructureSetAndAnalyzed
 
std::complex< double > * m_solution
 
int ** m_IDsLocal2Global
 
int ** m_IDsLocal2GlobalDegenerated
 
bool m_hasAlreadySetIDsLocal2Global
 
- Static Protected Attributes inherited from Forward2D
static const bool m_sourceFieldElectric = true
 
static const bool m_specifyTEResultToSidesOfEdgeElement = false
 

Constructor & Destructor Documentation

◆ Forward2DNonConformingQuadrilateralElement0thOrderEdgeBased() [1/3]

Forward2DNonConformingQuadrilateralElement0thOrderEdgeBased::Forward2DNonConformingQuadrilateralElement0thOrderEdgeBased ( const int  planeID,
const int  iPol 
)
explicit

◆ ~Forward2DNonConformingQuadrilateralElement0thOrderEdgeBased()

Forward2DNonConformingQuadrilateralElement0thOrderEdgeBased::~Forward2DNonConformingQuadrilateralElement0thOrderEdgeBased ( )

◆ Forward2DNonConformingQuadrilateralElement0thOrderEdgeBased() [2/3]

Forward2DNonConformingQuadrilateralElement0thOrderEdgeBased::Forward2DNonConformingQuadrilateralElement0thOrderEdgeBased ( )
private

◆ Forward2DNonConformingQuadrilateralElement0thOrderEdgeBased() [3/3]

Forward2DNonConformingQuadrilateralElement0thOrderEdgeBased::Forward2DNonConformingQuadrilateralElement0thOrderEdgeBased ( const Forward2DNonConformingQuadrilateralElement0thOrderEdgeBased rhs)
private

Member Function Documentation

◆ addMasterDofAndFactorPair()

void Forward2DNonConformingQuadrilateralElement0thOrderEdgeBased::addMasterDofAndFactorPair ( const int  slaveDof,
const int  masterDof,
const double  factor 
)
private

◆ calcArrayConvertLocalID2Global()

void Forward2DNonConformingQuadrilateralElement0thOrderEdgeBased::calcArrayConvertLocalID2Global ( const MeshDataNonConformingHexaElement *const  pMeshData)
private

◆ calcEMFieldsOfBoundaryPlanes()

void Forward2DNonConformingQuadrilateralElement0thOrderEdgeBased::calcEMFieldsOfBoundaryPlanes ( const double  freq,
const MeshDataNonConformingHexaElement *const  pMeshData 
)
virtual

◆ calcInverseOfJacobianMatrix()

void Forward2DNonConformingQuadrilateralElement0thOrderEdgeBased::calcInverseOfJacobianMatrix ( const Forward2D::Matrix2x2 jacobMat,
const double  determinant,
Forward2D::Matrix2x2 invJacobMat 
) const
private

◆ calcJacobianMatrix()

double Forward2DNonConformingQuadrilateralElement0thOrderEdgeBased::calcJacobianMatrix ( const MeshDataNonConformingHexaElement *const  pMeshData,
const int  elemID2D,
const double  xi,
const double  eta,
Forward2D::Matrix2x2 jacobMat 
) const
private

◆ calcJacobianMatrixOnYZPlaneOfBoundary()

double Forward2DNonConformingQuadrilateralElement0thOrderEdgeBased::calcJacobianMatrixOnYZPlaneOfBoundary ( const MeshDataNonConformingHexaElement *const  pMeshData,
const int  elemID2D,
const double  xi,
const double  eta,
Forward2D::Matrix2x2 jacobMat 
) const
private

◆ calcJacobianMatrixOnZXPlaneOfBoundary()

double Forward2DNonConformingQuadrilateralElement0thOrderEdgeBased::calcJacobianMatrixOnZXPlaneOfBoundary ( const MeshDataNonConformingHexaElement *const  pMeshData,
const int  elemID2D,
const double  xi,
const double  eta,
Forward2D::Matrix2x2 jacobMat 
) const
private

◆ calcValueElectricFieldHorizontal()

std::complex< double > Forward2DNonConformingQuadrilateralElement0thOrderEdgeBased::calcValueElectricFieldHorizontal ( const int  iElem,
const double  xi,
const double  eta,
const MeshDataNonConformingHexaElement *const  pMeshDataElement 
) const
privatevirtual

◆ calcValueElectricFieldVertical()

std::complex< double > Forward2DNonConformingQuadrilateralElement0thOrderEdgeBased::calcValueElectricFieldVertical ( const int  iElem,
const double  xi,
const double  eta,
const MeshDataNonConformingHexaElement *const  pMeshDataElement 
) const
privatevirtual

◆ calcValueMagneticFieldPerpendicular()

std::complex< double > Forward2DNonConformingQuadrilateralElement0thOrderEdgeBased::calcValueMagneticFieldPerpendicular ( const double  freq,
const int  iElem,
const double  xi,
const double  eta,
const MeshDataNonConformingHexaElement *const  pMeshDataElement 
) const
privatevirtual

◆ faceSlaveElements()

bool Forward2DNonConformingQuadrilateralElement0thOrderEdgeBased::faceSlaveElements ( const int  iElem,
const int  iEdge,
const MeshDataNonConformingHexaElement *const  pMeshData 
) const
private

◆ getNeighborFaceIndexFromEdgeIndex()

int Forward2DNonConformingQuadrilateralElement0thOrderEdgeBased::getNeighborFaceIndexFromEdgeIndex ( const int  iEdge) const
private

◆ getShapeFuncH()

double Forward2DNonConformingQuadrilateralElement0thOrderEdgeBased::getShapeFuncH ( const double  xi,
const double  eta,
const int  num,
const Forward2D::Matrix2x2 invJacobMat 
) const
private

◆ getShapeFuncRotated()

double Forward2DNonConformingQuadrilateralElement0thOrderEdgeBased::getShapeFuncRotated ( const double  xi,
const double  eta,
const int  num,
const Forward2D::Matrix2x2 invJacobMat 
) const
private

◆ getShapeFuncV()

double Forward2DNonConformingQuadrilateralElement0thOrderEdgeBased::getShapeFuncV ( const double  xi,
const double  eta,
const int  num,
const Forward2D::Matrix2x2 invJacobMat 
) const
private

◆ getTypeOfOuterEdgeOfBoundaryPlanes()

int Forward2DNonConformingQuadrilateralElement0thOrderEdgeBased::getTypeOfOuterEdgeOfBoundaryPlanes ( const int  edgeIDLocal2D) const
private

◆ isOuterEdge()

bool Forward2DNonConformingQuadrilateralElement0thOrderEdgeBased::isOuterEdge ( const int  iElem,
const int  iEdge,
const MeshDataNonConformingHexaElement *const  pMeshData 
) const
private

◆ makeMapSlaveDofToMasterDofAndFactors()

void Forward2DNonConformingQuadrilateralElement0thOrderEdgeBased::makeMapSlaveDofToMasterDofAndFactors ( const MeshDataNonConformingHexaElement *const  pMeshData)
private

◆ operator=()

Forward2DNonConformingQuadrilateralElement0thOrderEdgeBased& Forward2DNonConformingQuadrilateralElement0thOrderEdgeBased::operator= ( const Forward2DNonConformingQuadrilateralElement0thOrderEdgeBased rhs)
private

◆ setNonZeroStrucuture()

void Forward2DNonConformingQuadrilateralElement0thOrderEdgeBased::setNonZeroStrucuture ( const MeshDataNonConformingHexaElement *const  pMeshData)
private

◆ setNonZeroValues()

void Forward2DNonConformingQuadrilateralElement0thOrderEdgeBased::setNonZeroValues ( const double  freq,
const MeshDataNonConformingHexaElement *const  pMeshData 
)
private

Member Data Documentation

◆ DIRICHLET_BOUNDARY_NONZERO_VALUE

const int Forward2DNonConformingQuadrilateralElement0thOrderEdgeBased::DIRICHLET_BOUNDARY_NONZERO_VALUE = -1
staticprivate

◆ DIRICHLET_BOUNDARY_ZERO_VALUE

const int Forward2DNonConformingQuadrilateralElement0thOrderEdgeBased::DIRICHLET_BOUNDARY_ZERO_VALUE = -2
staticprivate

◆ m_etaAtEdge

double Forward2DNonConformingQuadrilateralElement0thOrderEdgeBased::m_etaAtEdge[4]
private

◆ m_etaAtNode

double Forward2DNonConformingQuadrilateralElement0thOrderEdgeBased::m_etaAtNode[4]
private

◆ m_hasMadeMapSlaveDofToMasterDofAndFactors

bool Forward2DNonConformingQuadrilateralElement0thOrderEdgeBased::m_hasMadeMapSlaveDofToMasterDofAndFactors
private

◆ m_IDsAfterDegenerated2AfterConstrained

int* Forward2DNonConformingQuadrilateralElement0thOrderEdgeBased::m_IDsAfterDegenerated2AfterConstrained
private

◆ m_integralPointEta

double Forward2DNonConformingQuadrilateralElement0thOrderEdgeBased::m_integralPointEta[m_numIntegralPoints]
private

◆ m_integralPointXi

double Forward2DNonConformingQuadrilateralElement0thOrderEdgeBased::m_integralPointXi[m_numIntegralPoints]
private

◆ m_numEquationDegeneratedAndConstrained

int Forward2DNonConformingQuadrilateralElement0thOrderEdgeBased::m_numEquationDegeneratedAndConstrained
private

◆ m_numGauss

const int Forward2DNonConformingQuadrilateralElement0thOrderEdgeBased::m_numGauss = 2
staticprivate

◆ m_numIntegralPoints

const int Forward2DNonConformingQuadrilateralElement0thOrderEdgeBased::m_numIntegralPoints = m_numGauss * m_numGauss
staticprivate

◆ m_slaveDofToMasterDofAndFactors

std::vector< std::pair<int,double> >* Forward2DNonConformingQuadrilateralElement0thOrderEdgeBased::m_slaveDofToMasterDofAndFactors
private

◆ m_weights

double Forward2DNonConformingQuadrilateralElement0thOrderEdgeBased::m_weights[m_numIntegralPoints]
private

◆ m_xiAtEdge

double Forward2DNonConformingQuadrilateralElement0thOrderEdgeBased::m_xiAtEdge[4]
private

◆ m_xiAtNode

double Forward2DNonConformingQuadrilateralElement0thOrderEdgeBased::m_xiAtNode[4]
private

◆ SLAVE_DOFS

const int Forward2DNonConformingQuadrilateralElement0thOrderEdgeBased::SLAVE_DOFS = -3
staticprivate

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