00001 #ifndef _MY_IsotropicElasticEqVar_
00002 #define _MY_IsotropicElasticEqVar_
00003 #include <fe/fe_system.h>
00004 #include <fe/fe_q.h>
00005 #include "dealfewrapper.h"
00006
00007
00011 class IsotropicElasticEqVar : public DealFEWrapper
00012 {
00013 private:
00014 FE_Q<3> m_FE;
00015 FESystem<3> m_FES;
00016 QGauss<3> m_cQG;
00017 QGauss<2> m_fQG;
00018 VecIndex m_global_dofs_map;
00019 static const Index m_local_dof_face_cell_map[6][4];
00020 OrthoMesh &m_mesh;
00021 enum COMPONENTS{U0,U1,U2};
00022 double m_l1,m_l2;
00023 protected:
00024
00025 public:
00026 unsigned n_max_dof_coupling(){return 81;}
00027 Point3D get_global_dof_position(Index cDof){return getCell()->vertex(static_cast<VertexDirection3D>(getFE()->system_to_component_index(cDof).second));}
00028
00030 const VecIndex& local_to_global_dofs_map(){return m_global_dofs_map;}
00031
00032 void setCell(OrthoMesh::Cell_It &cell);
00033 int nullProduct(unsigned i,unsigned j);
00034
00035
00036
00037 double localEqVar(unsigned i,unsigned j,unsigned qPoint);
00038 double localRHS(unsigned i,unsigned j);
00039
00040 IsotropicElasticEqVar(OrthoMesh &mesh, VecDouble &cK, double l1,double l2, Function3D &fD, Function3D &fN,unsigned debugLevel=0);
00041
00042 };
00043
00044 #endif