00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
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
00030 ~PCBlockJac_PLap();
00031
00032 GVector operator*(GVector) ;
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;
00051 GINT vN2;
00052 GINT vNN;
00053 GINT pN1;
00054 GINT pN2;
00055 GINT pNN;
00056 GINT *ibdy;
00057 GDOUBLE lConst;
00058 GVector *vbdy[3];
00059 Elem2D *velem;
00060 Elem2D *pelem;
00061 GMatrix L;
00062 GMatrix iL;
00063 GVector icol;
00064 GVector rcol;
00065 SchurLapOp *sop;
00066
00067
00068 };
00069
00070 #endif