00001 #ifndef _MY_BiotFEM_ 00002 #define _MY_BiotFEM_ 00003 #include "orthomesh.h" 00004 #include "isotropicelasticeqvar.h" 00005 #include <lac/sparse_direct.h> 00006 #include "transportbase.h" 00007 00008 00013 class BiotFEM : public DynamicBase 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 BiotFEM(OrthoMesh &mesh, double dt,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 virtual const VecDouble& getPressureAtCells(){return m_sol;} 00035 virtual ~BiotFEM(){} 00036 }; 00037 00038 #endif