00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022
00023
00024
00025
00026
00027
00028
00029
00030
00031
00032
00033
00034
00035 #ifndef __FE_ELECTROMAGNETICS_H
00036 #define __FE_ELECTROMAGNETICS_H
00037
00038 #include "Equation.h"
00039 using std::complex;
00040 using std::abs;
00041
00042 namespace OFELI {
00043
00066 template<class T_, size_t NEN_, size_t NEE_, size_t NSN_, size_t NSE_> class Equa_Electromagnetics;
00067
00068 template<class T_, size_t NEN_, size_t NEE_, size_t NSN_, size_t NSE_>
00069 class Equa_Electromagnetics : virtual public Equation<T_,NEN_,NEE_,NSN_,NSE_>
00070 {
00071
00072 public:
00073
00074 using Equation<T_,NEN_,NEE_,NSN_,NSE_>::setMaterialProperty;
00075 using Equation<T_,NEN_,NEE_,NSN_,NSE_>::_theElement;
00076 using Equation<T_,NEN_,NEE_,NSN_,NSE_>::_theSide;
00077
00078 protected:
00079
00081 void MagneticPermeability(const double &mu) { _mu = mu; }
00082
00084 void MagneticPermeability(const char *exp) { setMaterialProperty(exp,"Magnetic Permeability"); }
00085
00087 void ElectricConductivity(const double &sigma) { _sigma = sigma; }
00088
00090 void ElectricConductivity(const char *exp) { setMaterialProperty(exp,"Electric Conductivity"); }
00091
00093 void ElectricResistivity(const double &rho) { _rho = rho; }
00094
00096 void ElectricResistivity(const char *exp) { setMaterialProperty(exp,"Electric Resistivity"); }
00097
00099 void setMaterial()
00100 {
00101 _sigma = _theElement->getMaterial()->ElectricConductivity();
00102 _rho = _theElement->getMaterial()->ElectricResistivity();
00103 _mu = _theElement->getMaterial()->MagneticPermeability();
00104 }
00105 #ifndef DOXYGEN_SHOULD_SKIP_THIS
00106 Point<double> _x[NEN_];
00107 double _mu, _sigma, _rho, _body_source, _bound_source;
00108 #endif
00109
00110 };
00111
00112 }
00113
00114 #endif