00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012 #if !defined(PCBLOCKJAC_LAP_HPP)
00013 #define PCBLOCKJAC_LAP_HPP
00014 #include "linop.hpp"
00015 #include "elem2d.hpp"
00016 #include "gnbasis.hpp"
00017
00018 class PCBlockJac_Lap: public LinOp
00019 {
00020 public:
00021 PCBlockJac_Lap();
00022 PCBlockJac_Lap(LinOp *A);
00023 PCBlockJac_Lap(Elem2D *e);
00024
00025 ~PCBlockJac_Lap();
00026
00027 GVector operator*(GVector) ;
00028 void OpVec_prod(GVector &q, GVector &ret);
00029 void SetInterpBasis(GNBasis *b1, GNBasis *b2);
00030 void SetConst(GDOUBLE clc);
00031 void SetConst(GDOUBLE clc1, GDOUBLE iclc2);
00032 void SetElem(Elem2D *e);
00033 void SetMask(GVector *m);
00034 GMatrix *GetInverse() { return iL; }
00035
00036
00037 private:
00038 GBOOL DefmQuadL();
00039 GBOOL RectQuadL();
00040 GBOOL TriangleL();
00041 GBOOL ComputeOp();
00042
00043 GINT N1;
00044 GINT N2;
00045 GINT NN;
00046 GDOUBLE lc1;
00047 GDOUBLE lc2;
00048 Elem2D *elem;
00049 GVector *vtmpv0;
00050 GVector *vtmpv1;
00051 GVector *mask ;
00052 GMatrix *L;
00053 GMatrix *iL;
00054 GMatrix *I1;
00055 GMatrix *I2;
00056 GMatrix *I1T;
00057 GMatrix *I2T;
00058
00059
00060 };
00061
00062 #endif