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

pcblockjac_plap.hpp

Go to the documentation of this file.
00001 //************************************************************************************//
00002 // Module       : pcblockjac_plap.hpp
00003 // Date         : 1/8/03 (DLR)
00004 // Copyright    : 2002-2006 Copyright University Corporation for Atmospheric
00005 //                Research
00006 // Description  : Encapsulates the methods and data associated with
00007 //                a block Jacobi preconditioner object to be used
00008 //                for preconditioning the pseudo-Laplacian (pressure)
00009 //                operator, 
00010 //                E = D_1 M^-1 D_1^T +  D_2 M^-1 D_2^T + ...
00011 //                The preconditioner simply computes the action of
00012 //                E^-1 on pressure-space vector.
00013 // Derived From : LinOp.
00014 // Modifications:
00015 //************************************************************************************//
00016 #if !defined(PCBLOCKJAC_PLAP_HPP)
00017 #define PCBLOCKJAC_PLAP_HPP
00018 #include "linop.hpp"
00019 #include "schurlapop.hpp"
00020 #include "elem2d.hpp"
00021 #include "gnbasis.hpp"
00022 
00023 class PCBlockJac_PLap: public LinOp
00024 {
00025 public:
00026                            PCBlockJac_PLap();
00027                            PCBlockJac_PLap(LinOp *A);
00028                            PCBlockJac_PLap(Elem2D *ve, Elem2D *pe, SchurLapOp *Ein=NULL);
00029 //                         PCBlockJac_PLap(const PCBlockJac_PLap &);
00030                           ~PCBlockJac_PLap();
00031 
00032          GVector           operator*(GVector) ; // Multiply precond by right-vector
00033          void              OpVec_prod(GVector &q, GVector &ret);
00034          void              SetConst(GDOUBLE clc);
00035          void              SetElem(Elem2D *ve, Elem2D *pe);
00036          GMatrix          *GetInverse() { return &iL; }
00037 #if 0
00038          void              SetVBdyData (GINT  idir, GVector *vb, GINT  *indices);
00039 #endif
00040 
00041 
00042 private:
00043          GBOOL             ComputeOp();
00044          GBOOL             DefmQuadL();
00045          GBOOL             RectQuadL();
00046          GBOOL             TriangleL();
00047 
00048          GBOOL             bNeed2Compute;
00049          GBOOL             bDeleteHere;
00050          GINT              vN1;     // 1-size
00051          GINT              vN2;     // 2-size
00052          GINT              vNN;     // 1 X 2 - size
00053          GINT              pN1;     // 1-size
00054          GINT              pN2;     // 2-size
00055          GINT              pNN;     // 1 X 2 - size
00056          GINT              *ibdy;   // Dirichlet bdy indices
00057          GDOUBLE           lConst;  // Laplacian-multiplicative constant
00058          GVector           *vbdy[3];// Dirichlet bdy values for 1- and 2- and 3- derivatives of pressure
00059          Elem2D            *velem;  // Associated velocity element
00060          Elem2D            *pelem;  // Associated pressure element
00061          GMatrix            L;      // Laplacian operator
00062          GMatrix            iL;     // inverse Laplacian
00063          GVector            icol;   // column vector
00064          GVector            rcol;   // row vector
00065          SchurLapOp        *sop;    // pseudo-Laplacian operator
00066 
00067 
00068 };
00069 
00070 #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