00001 #ifndef _MY_VarFormOrthoMesh_ 00002 #define _MY_VarFormOrthoMesh_ 00003 00004 00013 class VarFormOrthoMesh 00014 { 00015 00016 protected: 00017 OrthoMesh *_pMesh; 00018 FEOrthoMesh &_fe; 00019 00020 virtual void mesh_change(OrthoMesh &mesh)=0; 00021 00022 00023 public: 00024 VarFormOrthoMesh(FEOrthoMesh &fe) 00025 :_fe(fe) 00026 { 00027 _pMesh=NULL; 00028 } 00029 00030 FEOrthoMesh& getFE(){return _fe;} 00031 OrthoMesh* getMesh(){return _pMesh;} 00032 00033 00040 void reinit(OrthoMesh &mesh) 00041 { 00042 if (_pMesh == &mesh) 00043 return; 00044 _pMesh=&mesh; 00045 _fe.reinit(mesh); 00046 mesh_change(mesh); 00047 } 00048 00049 void reinit(OrthoMesh::Cell_It &cell) 00050 { 00051 00052 } 00053 00054 00055 00066 virtual void assembly_local_system(OrthoMesh::Cell_It &cell,Matrix &ML)=0; 00067 00068 00079 virtual void assembly_local_rhs(OrthoMesh::Cell_It &cell,VecDouble &BL)=0; 00080 00081 00089 virtual const Matrix& get_local_sparsity()=0; 00090 00110 virtual void neumann_condition(VecDouble &Bl,OrthoMesh::Cell_It cell,OrthoMesh::Face_It face,unsigned face_dir,Function3D &fN)=0; 00111 00112 }; 00113 00114 00115 #endif