00001 #ifndef _MY__PoissonVarForm_ 00002 #define _MY_PoissonVarForm_ 00003 #include "varform.h" 00004 #include "finiteelementinterface.h" 00005 #include "feorthomeshdealwrapper.h" 00006 #include "mappingorthomesh.h" 00007 #include "mappedfevalues.h" 00008 #include "mappedfefacevalues.h" 00009 00010 #include "varformorthomesh.h" 00013 class VarFormPoisson : public VarFormOrthoMesh 00014 { 00015 private: 00016 Matrix _MSparsity; 00017 MappingOrthoMesh _map; 00018 MappedFEValues _feValues; 00019 std::vector<MappedFEFaceValues *> _vFaceValues; 00020 VecDouble *pvK; 00021 protected: 00022 00023 public: 00024 VarFormPoisson( FEOrthoMesh &fe); 00025 ~VarFormPoisson(){} 00026 virtual void assembly_local_system(OrthoMesh::Cell_It &cell,Matrix &ML); 00027 virtual void assembly_local_rhs(OrthoMesh::Cell_It &cell,VecDouble &BL); 00028 virtual const Matrix& get_local_sparsity(){return _MSparsity;} 00029 virtual void mesh_change(OrthoMesh &mesh); 00030 virtual void neumann_condition(VecDouble &Bl,OrthoMesh::Cell_It cell,OrthoMesh::Face_It face,unsigned face_dir,Function3D &fN); 00031 00032 void setParameters(VecDouble &K){pvK=&K;} 00033 00034 }; 00035 00036 #endif