|
FEBio
1.5.0
|
00001 #pragma once 00002 #include "FESurfaceLoad.h" 00003 00004 //----------------------------------------------------------------------------- 00008 class FEPressureLoad : public FESurfaceLoad 00009 { 00010 public: 00011 struct LOAD 00012 { 00013 double s[4]; // nodal scale factors 00014 int lc; // load curve 00015 00016 LOAD() { s[0] = s[1] = s[2] = s[3] = 1.0; } 00017 }; 00018 00019 public: 00021 FEPressureLoad(FESurface* ps, bool blinear = false) : FESurfaceLoad(ps) { m_blinear = blinear; } 00022 00024 void create(int n) { m_PC.resize(n); } 00025 00027 /* FEDomain* Clone() 00028 { 00029 FEPressureLoad* ps = new FEPressureLoad(m_surf.GetMesh()); 00030 ps->m_PC = m_PC; 00031 return ps; 00032 } 00033 */ 00034 00036 LOAD& PressureLoad(int n) { return m_PC[n]; } 00037 00039 void StiffnessMatrix(FESolver* psolver); 00040 00042 void Residual(FESolver* psolver, vector<double>& R); 00043 00045 void Serialize(DumpFile& ar); 00046 00047 protected: 00049 void PressureStiffness(FESurfaceElement& el, matrix& ke, vector<double>& tn); 00050 00052 bool PressureForce(FESurfaceElement& el, vector<double>& fe, vector<double>& tn); 00053 00055 bool LinearPressureForce(FESurfaceElement& el, vector<double>& fe, vector<double>& tn); 00056 00057 protected: 00058 bool m_blinear; 00059 vector<LOAD> m_PC; 00060 };
1.7.5.1