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
00036
00037
00038 #ifndef __EC2DB2T3_H
00039 #define __EC2DB2T3_H
00040
00041
00042 #include "Equa_Electromagnetics.h"
00043 #include "Triang3.h"
00044 #include "SpMatrix.h"
00045 #include "SkMatrix.h"
00046
00047 namespace OFELI {
00048
00049
00050 class EC2DB2T3 : virtual public Equa_Electromagnetics<double,3,6,2,4>
00051 {
00052
00053 public :
00054
00056 EC2DB2T3()
00057 {
00058 _tr = NULL;
00059 #ifdef _OFELI_DEBUG
00060 std::clog << "An instance of class EC2DB2T3 is constructed.\n";
00061 std::clog << "File : " << __FILE__ << ", Line : " << __LINE__ << endl;
00062 #endif
00063 }
00064
00066 EC2DB2T3(Element *el);
00067
00069 EC2DB2T3(Side *sd);
00070
00072 ~EC2DB2T3() {
00073 if (_tr) { delete _tr; _tr = NULL; }
00074 #ifdef _OFELI_DEBUG
00075 std::clog << "An instance of class EC2DB2T3 is destructed.\n";
00076 std::clog << "File : " << __FILE__ << ", Line : " << __LINE__ << endl;
00077 #endif
00078 }
00079
00082 void RHS(double coef=1.);
00083
00086 void EMatr(double omega);
00087
00093 std::complex<double> Const(double omega, const LocalVect<double,6> &u, std::complex<double> &I);
00094
00098 double MagneticPressure(const LocalVect<double,6> &u);
00099
00101 LocalMatrix<double,6,6> &Matrix() { return M; }
00102
00104 LocalVect<double,6> &RHS() { return B; }
00105
00106
00107
00108
00109
00110
00111 private :
00112
00113 size_t _ns;
00114 double _a3;
00115 Triang3 *_tr;
00116 LocalMatrix<double,6,6> M;
00117 LocalVect<double,6> B, P;
00118 };
00119
00120 }
00121
00122 #endif