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 __DC2DT6_H
00036 #define __DC2DT6_H
00037
00038
00039 #include "Equa_Therm.h"
00040 #include "UserData.h"
00041 #include "Triang6S.h"
00042 #include "Line3.h"
00043
00044 namespace OFELI {
00045
00061 class DC2DT6 : virtual public Equa_Therm<double,6,6,3,3>
00062 {
00063
00064 public :
00065
00068 DC2DT6();
00069
00072 DC2DT6(const Element *el);
00073
00076 DC2DT6(const Side *sd);
00077
00083 DC2DT6(const Element *el, const Vect<double> &u, double time=0.);
00084
00096 DC2DT6(const Element *el, const Vect<double> &u, double time, double deltat, int scheme);
00097
00103 DC2DT6(const Side *sd, const Vect<double> &u, double time=0.);
00104
00116 DC2DT6(const Side *sd, const Vect<double> &u, double time, double deltat, int scheme);
00117
00118 #ifndef DOXYGEN_SHOULD_SKIP_THIS
00120 DC2DT6(Mesh &ms, SkSMatrix<double> &a, Vect<double> &b);
00121 #endif
00122
00124 ~DC2DT6();
00125
00126 #ifndef DOXYGEN_SHOULD_SKIP_THIS
00128 void Build();
00129 #endif
00130
00131 #ifndef DOXYGEN_SHOULD_SKIP_THIS
00134 // void LCapacityToLHS(double coef=1);
00135 #endif
00136
00137 #ifndef DOXYGEN_SHOULD_SKIP_THIS
00140 // void LCapacityToRHS(double coef=1);
00141 #endif
00142
00143 #ifndef DOXYGEN_SHOULD_SKIP_THIS
00146 // void LCapacity(double coef) { LCapacityToLHS(coef); LCapacityToRHS(coef); }
00147 #endif
00148
00149 #ifndef DOXYGEN_SHOULD_SKIP_THIS
00152 // void CapacityToLHS(double coef=1);
00153 #endif
00154
00155 #ifndef DOXYGEN_SHOULD_SKIP_THIS
00158 // void CapacityToRHS(double coef=1);
00159 #endif
00160
00161 #ifndef DOXYGEN_SHOULD_SKIP_THIS
00164 // void Capacity(double coef=1) { CapacityToLHS(coef); CapacityToRHS(coef); }
00165 #endif
00166
00169 void Diffusion(double coef=1);
00170
00174 void Convection(double coef=1) { coef = 1; }
00175
00179 void Convection(Point<double> &v, double coef=1);
00180
00186 void Convection(const Vect<double> &v, double coef=1);
00187
00193 void _RHSConvection(const Point<double> &v, double coef=1);
00194
00195 #ifndef DOXYGEN_SHOULD_SKIP_THIS
00197 void BodyRHS(UserData<double> &ud);
00198 #endif
00199
00205 void BodyRHS(const Vect<double> &b, int opt=LOCAL_ARRAY);
00206
00207 #ifndef DOXYGEN_SHOULD_SKIP_THIS
00210 void BoundaryRHS(UserData<double> &ud);
00211 #endif
00212
00215 void BoundaryRHS(const Vect<double> &b);
00216
00217 private :
00218
00219 Triang6S *_tr;
00220 Line3 *_ln;
00221 Point<double> _x[6], _s[3];
00222 double _a3;
00223 void ElementSet(const Element *el);
00224 void SideSet(const Side *sd);
00225 };
00226
00227 }
00228
00229 #endif