00001 #ifndef _MY_ElasticFEM_ 00002 #define _MY_ElasticFEM_ 00003 #include "orthomesh.h" 00004 #include "isotropicelasticeqvar.h" 00005 #include <lac/sparse_direct.h> 00006 #include "transportbase.h" 00007 00008 00013 class ElasticFEM 00014 { 00015 private: 00016 OrthoMesh &m_mesh; 00017 VecDouble &m_cK; 00018 IsotropicElasticEqVar m_eqvar; 00019 SparsityPattern m_sparsity; 00020 SparseMatrix<double> m_M; 00021 VecDouble m_vRHS,m_sol; 00022 SparseDirectUMFPACK solveA; 00023 unsigned m_debugLevel; 00024 MapIntDouble dirichlet_bc_map; 00025 Function3D &m_fN; 00026 00027 protected: 00028 00029 public: 00030 ElasticFEM(OrthoMesh &mesh, VecDouble &cK,double &fYoung, double &fPoisson,Function3D &fD, Function3D &fN); 00031 virtual void iterate(TransportBase &trans); 00032 virtual void printOutput(); 00033 virtual void getVelocitiesAtFaces(Matrix& M); 00034 00035 virtual ~ElasticFEM(){} 00036 }; 00037 00038 #endif