00001 //************************************************************************************// 00002 // Module : pcpointjac_helm.hpp 00003 // Date : 7/17/02 (DLR) 00004 // Copyright : 2002-2006 Copyright University Corporation for Atmospheric 00005 // Research 00006 // Description : Encapsulates the methods and data associated with 00007 // a point Jacobi preconditioner object to be used 00008 // for preconditioning the Helmholtz operator 00009 // Derived From : none. 00010 // Modifications: 00011 //************************************************************************************// 00012 #if !defined(PCPOINTJAC_HELM_HPP) 00013 #define PCPOINTJAC_HELM_HPP 00014 #include "linop.hpp" 00015 #include "defquad2d.hpp" 00016 #include "rectquad2d.hpp" 00017 #include "diagop.hpp" 00018 00019 class PCPointJac_Helm: public LinOp 00020 { 00021 public: 00022 PCPointJac_Helm(); 00023 PCPointJac_Helm(LinOp *A); 00024 PCPointJac_Helm(Elem2D *e); 00025 // PCPointJac_Helm(const PCPointJac_Helm &); 00026 ~PCPointJac_Helm(); 00027 00028 GVector operator*(GVector) ; // Multiply precond by right-vector 00029 void OpVec_prod(GVector &q, GVector &ret); 00030 GVector *SetConst(GDOUBLE clc, GDOUBLE cmc); 00031 GVector *SetConst(GDOUBLE clc, GDOUBLE clc2, GDOUBLE cmc); 00032 GVector *SetElem(Elem2D *e); 00033 GVector *Invert(); 00034 GVector *GetDiag(); 00035 GVector *GetiDiag(); 00036 00037 Elem2D *elem; 00038 00039 00040 private: 00041 GBOOL DefmQuadH(); 00042 GBOOL RectQuadH(); 00043 GBOOL TriangleH(); 00044 GBOOL ComputeOp(); 00045 00046 GINT N1; // 1-size 00047 GINT N2; // 2-size 00048 GINT NN; // 1 X 2 - size 00049 GDOUBLE lc1; // Laplacian-multiplicative constant 00050 GDOUBLE lc2; // Laplacian-multiplicative constant 00051 GDOUBLE mc; // Mass matrix-multiplicative constant 00052 GVector *H; 00053 GVector *iH; 00054 00055 00056 }; 00057 00058 #endif