Eddy current problems in 2-D domains using solenoidal approximation. More...

#include <EC2D1T3.h>

Inheritance diagram for EC2D1T3:
Equa_Electromagnetics< 3, 6, 2, 4 > Equation< NEN_, NEE_, NSN_, NSE_ > Equa

Public Member Functions

 EC2D1T3 ()
 Default constructor.
 
 EC2D1T3 (Mesh &ms)
 Constructor using mesh.
 
 EC2D1T3 (Mesh &ms, Vect< real_t > &u)
 Constructor using mesh and solution vector.
 
 ~EC2D1T3 ()
 Destructor.
 
void setData (real_t omega, real_t volt)
 Define data for equation.
 
void build ()
 Build the linear system of equations.
 
void Magnetic (real_t coef=1.)
 Add magnetic contribution to matrix.
 
void Electric (real_t coef=1.)
 Add electric contribution to matrix.
 
real_t Joule ()
 Compute Joule density in element.
 
void IntegMF (real_t &vr, real_t &vi)
 Add element integral contribution.
 
void IntegND (const Vect< real_t > &h, real_t &vr, real_t &vi)
 Compute integral of normal derivative on edge.
 
real_t VacuumArea ()
 Add contribution to vacuum area calculation.
 
- Public Member Functions inherited from Equation< NEN_, NEE_, NSN_, NSE_ >
 Equation ()
 
 Equation (Mesh &mesh)
 Constructor with mesh instance.
 
 Equation (Mesh &mesh, Vect< real_t > &u)
 Constructor with mesh instance and solution vector.
 
 Equation (Mesh &mesh, Vect< real_t > &u, real_t &init_time, real_t &final_time, real_t &time_step)
 Constructor with mesh instance, matrix and right-hand side.
 
 ~Equation ()
 Destructor.
 
void updateBC (const Element &el, const Vect< real_t > &bc)
 Update Right-Hand side by taking into account essential boundary conditions.
 
void DiagBC (DOFSupport dof_type=NODE_DOF, int dof=0)
 Update element matrix to impose bc by diagonalization technique.
 
void LocalNodeVector (Vect< real_t > &b)
 Localize element vector from a Vect instance.
 
void ElementNodeVector (const Vect< real_t > &b, LocalVect< real_t, NEE_ > &be)
 Localize element vector from a Vect instance.
 
void SideNodeVector (const Vect< real_t > &b, LocalVect< real_t, NSE_ > &bs)
 Localize side vector from a Vect instance.
 
void SideSideVector (const Vect< real_t > &b, vector< real_t > &bs)
 Localize side vector from a Vect instance.
 
void ElementNodeVectorSingleDOF (const Vect< real_t > &b, LocalVect< real_t, NEN_ > &be)
 Localize Element Vector from a Vect instance.
 
void ElementNodeVector (const Vect< real_t > &b, LocalVect< real_t, NEN_ > &be, int dof)
 Localize Element Vector from a Vect instance.
 
void ElementSideVector (const Vect< real_t > &b, LocalVect< real_t, NSE_ > &be)
 Localize Element Vector from a Vect instance.
 
void ElementVector (const Vect< real_t > &b, DOFSupport dof_type=NODE_DOF, int flag=0)
 Localize element vector.
 
void SideVector (const Vect< real_t > &b, vector< real_t > &sb)
 Localize side vector.
 
void ElementNodeCoordinates ()
 Localize coordinates of element nodes.
 
void SideNodeCoordinates ()
 Localize coordinates of side nodes.
 
void ElementAssembly (Matrix< real_t > *A)
 Assemble element matrix into global one.
 
void ElementAssembly (BMatrix< real_t > &A)
 Assemble element matrix into global one.
 
void ElementAssembly (SkSMatrix< real_t > &A)
 Assemble element matrix into global one.
 
void ElementAssembly (SkMatrix< real_t > &A)
 Assemble element matrix into global one.
 
void ElementAssembly (SpMatrix< real_t > &A)
 Assemble element matrix into global one.
 
void ElementAssembly (TrMatrix< real_t > &A)
 Assemble element matrix into global one.
 
void DGElementAssembly (Matrix< real_t > *A)
 Assemble element matrix into global one for the Discontinuous Galerkin approximation.
 
void DGElementAssembly (SkSMatrix< real_t > &A)
 Assemble element matrix into global one for the Discontinuous Galerkin approximation.
 
void DGElementAssembly (SkMatrix< real_t > &A)
 Assemble element matrix into global one for the Discontinuous Galerkin approximation.
 
void DGElementAssembly (SpMatrix< real_t > &A)
 Assemble element matrix into global one for the Discontinuous Galerkin approximation.
 
void DGElementAssembly (TrMatrix< real_t > &A)
 Assemble element matrix into global one for the Discontinuous Galerkin approximation.
 
void SideAssembly (Matrix< real_t > *A)
 Assemble side (edge or face) matrix into global one.
 
void SideAssembly (SkSMatrix< real_t > &A)
 Assemble side (edge or face) matrix into global one.
 
void SideAssembly (SkMatrix< real_t > &A)
 Assemble side (edge or face) matrix into global one.
 
void SideAssembly (SpMatrix< real_t > &A)
 Assemble side (edge or face) matrix into global one.
 
void ElementAssembly (Vect< real_t > &v)
 Assemble element vector into global one.
 
void SideAssembly (Vect< real_t > &v)
 Assemble side (edge or face) vector into global one.
 
void AxbAssembly (const Element &el, const Vect< real_t > &x, Vect< real_t > &b)
 Assemble product of element matrix by element vector into global vector.
 
void AxbAssembly (const Side &sd, const Vect< real_t > &x, Vect< real_t > &b)
 Assemble product of side matrix by side vector into global vector.
 
size_t getNbNodes () const
 Return number of element nodes.
 
size_t getNbEq () const
 Return number of element equations.
 
real_t setMaterialProperty (const string &exp, const string &prop)
 Define a material property by an algebraic expression.
 
- Public Member Functions inherited from Equa
 Equa ()
 Default constructor.
 
virtual ~Equa ()
 Destructor.
 
void setMesh (Mesh &m)
 Define mesh and renumber DOFs after removing imposed ones.
 
MeshgetMesh () const
 Return reference to Mesh instance.
 
LinearSolvergetLinearSolver ()
 Return reference to linear solver instance.
 
Matrix< real_t > * getMatrix () const
 Return pointer to matrix.
 
void setSolver (Iteration ls, Preconditioner pc=IDENT_PREC)
 Choose solver for the linear system.
 
void setMatrixType (int t)
 Choose type of matrix.
 
int solveLinearSystem (Matrix< real_t > *A, Vect< real_t > &b, Vect< real_t > &x)
 Solve the linear system with given matrix and right-hand side.
 
int solveLinearSystem (Vect< real_t > &b, Vect< real_t > &x)
 Solve the linear system with given right-hand side.
 
void LinearSystemInfo ()
 Print info on linear system solver.
 

Additional Inherited Members

- Protected Member Functions inherited from Equa_Electromagnetics< 3, 6, 2, 4 >
void MagneticPermeability (const real_t &mu)
 Set (constant) magnetic permeability.
 
void MagneticPermeability (const string &exp)
 Set magnetic permeability given by an algebraic expression.
 
void ElectricConductivity (const real_t &sigma)
 Set (constant) electric conductivity.
 
void ElectricConductivity (const string &exp)
 set electric conductivity given by an algebraic expression
 
void setMaterial ()
 Set material properties.
 

Detailed Description

Eddy current problems in 2-D domains using solenoidal approximation.

Builds finite element arrays for time harmonic eddy current problems in 2-D domains with solenoidal configurations (Magnetic field has only one nonzero component). Magnetic field is constant in the vacuum, and then zero in the outer vacuum.
Uses 3-Node triangles.

The unknown is the time-harmonic magnetic induction (complex valued) but stored in 2-degree of freedom real-valued vector. Therefore, mesh must be defined with 2 degrees of freedom per node

Author
Rachid Touzani

Constructor & Destructor Documentation

◆ EC2D1T3() [1/2]

EC2D1T3 ( Mesh ms)

Constructor using mesh.

Parameters
[in]msMesh instance

◆ EC2D1T3() [2/2]

EC2D1T3 ( Mesh ms,
Vect< real_t > &  u 
)

Constructor using mesh and solution vector.

Parameters
[in]msMesh instance
[in,out]uReference to solution vector instance

Member Function Documentation

◆ build()

void build ( )

Build the linear system of equations.

Before using this function, one must have properly selected appropriate options for:

  • The choice of a steady state or transient analysis. By default, the analysis is stationary
  • In the case of transient analysis, the choice of a time integration scheme and a lumped or consistent capacity matrix. If transient analysis is chosen, the lumped capacity matrix option is chosen by default, and the implicit Euler scheme is used by default for time integration.

◆ Electric()

void Electric ( real_t  coef = 1.)

Add electric contribution to matrix.

Parameters
[in]coefCoefficient to multiply by [Default: 1]

◆ IntegND()

void IntegND ( const Vect< real_t > &  h,
real_t &  vr,
real_t &  vi 
)

Compute integral of normal derivative on edge.

Parameters
[in]hVect instance containing magnetic field at nodes
[in]vrReal part of the integral
[in]viImaginary part of the integral
Note
This member function is to be called within each element, it detects boundary sides as the ones with nonzero code

◆ Magnetic()

void Magnetic ( real_t  coef = 1.)

Add magnetic contribution to matrix.

Parameters
[in]coefCoefficient to multiply by [Default: 1]

◆ setData()

void setData ( real_t  omega,
real_t  volt 
)

Define data for equation.

Parameters
[in]omegaAngular frequency
[in]voltVoltage