Main Page | Namespace List | Class Hierarchy | Alphabetical List | Class List | Directories | File List | Namespace Members | Class Members | File Members

uzawalapop.hpp

Go to the documentation of this file.
00001 //************************************************************************************//
00002 // Module       : uzawalapop.hpp
00003 // Date         : 2/26/03 (DLR)
00004 // Copyright    : 2003-2006 Copyright University Corporation for Atmospheric
00005 //                Research
00006 // Description  : Encapsulates the methods and data associated with
00007 //                the Laplacian operator derived from the Uzawa
00008 //                decompoosition of the discrete form of the _steady_
00009 //                Stokes equations where the pressure resides
00010 //                on a different grid than the velocity, within
00011 //                the same element. It is intended to act on the
00012 //                p-quantity in the p Div v term. Its form is
00013 //                  D1 L^-1 D1^T  + D2 L^-1 D2^T
00014 //                where L is the discrete Laplacian, and Di are the 
00015 //                weak pdV derivative operators defined in StokesOp.
00016 //                velem and pelem are the elements where the 
00017 //                v-quantity  and p-quantity reside, respectively 
00018 //                
00019 // Derived From : LinOp.
00020 // Modifications:
00021 //************************************************************************************//
00022 #if !defined(UZAWALAPOP_HPP)
00023 #define UZAWALAPOP_HPP
00024 
00025 #include "linop.hpp"
00026 #include "elem2d.hpp"
00027 #include "massop.hpp"
00028 #include "stokesop.hpp"
00029 #include "ilaplacianop.hpp"
00030 
00031 class UzawaLapOp: public LinOp 
00032 {
00033 public:
00034                            UzawaLapOp();
00035                            UzawaLapOp(Elem2D *ve, Elem2D *pe);
00036 //                         UzawaLapOp(const UzawaLapOp &);
00037                           ~UzawaLapOp();
00038 
00039          GVector           operator*(GVector) ; // Multiply operator on the RHS by vector
00040          void              OpVec_prod(GVector &x, GVector &ret);
00041          void              SetConst(GDOUBLE c);
00042          void              SetElem(Elem2D *ve, Elem2D *pe);
00043          void              SetMask(GVector *m);
00044          void              SetVBdyData (GINT  idir, GVector *vb, GINT  *indices);
00045 
00046 //       friend ostream&   operator<<(ostream&, const UzawaLapOp&);
00047 
00048 private:
00049          GBOOL             QuadOp(GVector *x, GVector *newx);
00050          GBOOL             TriangleOp(GVector *x, GVector *newx);
00051          void              DeleteDynamic();
00052          void              Init(Elem2D *ve, Elem2D *pe);
00053   
00054          GDOUBLE             mConst;
00055          GINT             *ibdy;
00056          Elem2D           *velem;
00057          Elem2D           *pelem;
00058          GVector          *vtmpp0;
00059          GVector          *vtmpv0;
00060          GVector          *vtmpv1;
00061          GVector          *vbdy[3];
00062          GVector          *mask;
00063          iLaplacianOp     *iL;
00064          StokesOp         *pD1;
00065          StokesOp         *pD2;
00066          StokesOp         *pDT1;
00067          StokesOp         *pDT2;
00068 
00069 };
00070 
00071 #endif

Generated on Wed Dec 21 16:00:48 2005 for Geophysics & Astrophysics Spectral Element Adaptive Refinement (GASpAR) 2D Code by  doxygen 1.4.4