FEBio  1.5.0
FEBio/FERigidJoint.h
00001 // FERigidJoint.h: interface for the FERigidJoint class.
00002 //
00004 
00005 #if !defined(AFX_FERIGIDJOINT_H__22EBB207_A1C7_465E_B985_A2140CBA9BDB__INCLUDED_)
00006 #define AFX_FERIGIDJOINT_H__22EBB207_A1C7_465E_B985_A2140CBA9BDB__INCLUDED_
00007 
00008 #if _MSC_VER > 1000
00009 #pragma once
00010 #endif // _MSC_VER > 1000
00011 
00012 #include "vec3d.h"
00013 #include "FECore/vector.h"
00014 #include "DumpFile.h"
00015 #include "FEParameterList.h"
00016 
00017 class FEM;
00018 
00019 //-----------------------------------------------------------------------------
00022 
00023 class FERigidJoint : public FEParamContainer
00024 {
00025 public:
00027         FERigidJoint(FEM* pfem);
00028 
00030         virtual ~FERigidJoint();
00031 
00033         void ShallowCopy(FERigidJoint& rj)
00034         {
00035                 m_nRBa = rj.m_nRBa;
00036                 m_nRBb = rj.m_nRBb;
00037 
00038                 m_q0  = rj.m_q0;
00039                 m_qa0 = rj.m_qa0;
00040                 m_qb0 = rj.m_qb0;
00041 
00042                 m_F = rj.m_F;
00043                 m_L = rj.m_L;
00044 
00045                 m_eps  = rj.m_eps;
00046                 m_atol = rj.m_atol;
00047         }
00048 
00050         void JointForces(vector<double>& R);
00051 
00053         void JointStiffness();
00054 
00056         bool Augment();
00057 
00059         void Serialize(DumpFile& ar);
00060 
00061 public:
00062         int     m_nRBa;         
00063         int     m_nRBb;         
00064 
00065         vec3d   m_q0;           
00066         vec3d   m_qa0;  
00067         vec3d   m_qb0;  
00068 
00069         vec3d   m_F;            
00070         vec3d   m_L;            
00071         double  m_eps;  
00072         double  m_atol; 
00073 
00074 protected:
00075         FEM*    m_pfem; 
00076 
00077         int     m_nID;  
00078 
00079         DECLARE_PARAMETER_LIST();
00080 };
00081 
00082 #endif // !defined(AFX_FERIGIDJOINT_H__22EBB207_A1C7_465E_B985_A2140CBA9BDB__INCLUDED_)