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 #ifndef __NSP2DQ41_H
00038 #define __NSP2DQ41_H
00039
00040 #include "Equa_Fluid.h"
00041 #include "Quad4.h"
00042 #include "Line2.h"
00043 #include "UserData.h"
00044
00045 namespace OFELI {
00046
00058 class NSP2DQ41 : virtual public Equa_Fluid<double,4,8,2,4>
00059 {
00060
00061 public :
00062
00065 NSP2DQ41()
00066 {
00067 _quad = NULL;
00068 _ln = NULL;
00069 #ifdef _OFELI_DEBUG
00070 std::clog << "An instance of class NSP2DQ41 is constructed.\n";
00071 std::clog << "File : " << __FILE__ << ", Line : " << __LINE__ << endl;
00072 #endif
00073 }
00074
00076 NSP2DQ41(const Element *el);
00077
00079 NSP2DQ41(const Side *sd);
00080
00082 NSP2DQ41(const Element *el, const Vect<double> &u, const double &time=0.);
00083
00085 NSP2DQ41(const Side *sd, const Vect<double> &u, const double &time=0.);
00086
00088 ~NSP2DQ41();
00089
00091 void Viscosity(double visc) { _visc = visc; }
00092
00094 void Density(double dens) { _dens = dens; }
00095
00097 void LMass(double coef=1.);
00098
00100 void Mass(double coef=1.);
00101
00103 void Viscous(double coef=1.);
00104
00106 void RHS_Viscous(double coef=1.);
00107
00109 void Penal(double coef=1.);
00110
00113 void LHS1_Convection(double coef=1.);
00114
00117 void LHS2_Convection(double coef=1.);
00118
00120 void RHS_Convection(double coef=1.);
00121
00123 void BodyRHS(UserData<double> &ud);
00124
00126 void BoundaryRHS(UserData<double> &ud);
00127
00133 void Periodic(double coef=1.e20);
00134
00136 double Pressure(double coef=1.);
00137
00139 void PresMat();
00140
00142 LocalVect<double,4> PM() { return _PM; }
00143
00144 private :
00145
00146 Quad4 *_quad;
00147 Line2 *_ln;
00148 double _gauss[2], _xl[4], _yl[4];
00149 double _cgx, _cgy;
00150 LocalVect<double,4> _PM;
00151 };
00152
00153 }
00154
00155 #endif