FEBio  1.5.0
FEBio/FE2DFiberNeoHookean.h
00001 #pragma once
00002 #include "FEElasticMaterial.h"
00003 
00004 class FE2DFiberNeoHookean :     public FEElasticMaterial
00005 {
00006         enum { NSTEPS = 12 };   // nr of integration steps
00007 
00008 public:
00009         FE2DFiberNeoHookean();
00010 
00011 public:
00012         double  m_E;    
00013         double  m_v;    
00014 
00015         //--- active contraction stuff ---
00016         double  m_a[2];
00017         double  m_ac;
00018         // -------------------------------
00019 
00020 public:
00022         virtual mat3ds Stress(FEMaterialPoint& pt);
00023 
00025         virtual tens4ds Tangent(FEMaterialPoint& pt);
00026 
00028         void Init();
00029 
00031         double BulkModulus() { return m_E/(3.0*(1.0 - 2.0*m_v));}
00032 
00033         // declare as registered
00034         DECLARE_REGISTERED(FE2DFiberNeoHookean);
00035 
00036         // declare the parameter list
00037         DECLARE_PARAMETER_LIST();
00038 
00039 
00040 protected:
00041         static double   m_cth[NSTEPS];
00042         static double   m_sth[NSTEPS];
00043 };