navierstokes3d.h

Go to the documentation of this file.
00001 #ifndef  __NavierStokes3d_h
00002 #define  __NavierStokes3d_h
00003 
00004 #include  "navierstokes2d.h"
00005 
00006 /*-----------------------------------------*/
00007 
00008 namespace Gascoigne
00009 {
00010 class NavierStokes3d : public NavierStokes2d
00011 {
00012   protected:
00013   
00014   double Laplace(const TestFunction& U, 
00015                  const TestFunction& N) const
00016     {
00017       return U.x()*N.x() + U.y()*N.y() + U.z()*N.z();
00018     }
00019   
00020   double Convection(const std::vector<TestFunction>& U, 
00021                     const TestFunction& N) const
00022     {
00023       return U[1].m()*N.x() + U[2].m()*N.y() + U[3].m()*N.z();
00024     }
00025   double Divergence(const std::vector<TestFunction>& U) const
00026     {
00027       return U[1].x() + U[2].y() + U[3].z();
00028     }
00029   
00030   public:
00031 
00032   ~NavierStokes3d();
00033   NavierStokes3d();
00034   NavierStokes3d(const ParamFile* pf);
00035 
00036   std::string GetName() const;
00037 
00038   int    GetNcomp  () const { return 4; }
00039 
00040   DoubleVector GetViscosities() const;
00041 
00042   void SetTimePattern(TimePattern& P) const;
00043 
00044   void OperatorStrong(DoubleVector& b, const FemFunction& U) const;
00045 
00046   void point(double h, const FemFunction& U, const Vertex3d& v) const 
00047     { 
00048       _h = h;
00049     }
00050 
00051   void Form(VectorIterator b, const FemFunction& U, const TestFunction& N) const;
00052 
00053   void Matrix(EntryMatrix& A, const FemFunction& U, const TestFunction& M, const TestFunction& N) const;
00054   void MatrixLoop(EntryMatrix& A, const FemFunction& U, const FemFunction& M, const FemFunction& N) const;
00055 };
00056 }
00057 
00058 #endif

Generated on Thu Sep 14 10:34:38 2006 for Gascoigne by  doxygen 1.4.7