?? model2d.h
字號:
/* 2008 (c) Dorival M. Pedroso */#ifndef MPM_MODEL2D_H#define MPM_MODEL2D_H// Local#include "defs.h"#include "array.h"#include "fatal.h"#include "tensors.h"//////////////////////////////////////////////////////////////////////////////////////////// Model2D /////class Model2D{public: /** Constructor. */ Model2D () {} /** Destructor. */ virtual ~Model2D () {} // Methods to be overloaded virtual void Update (STensor2 const & Deps) =0; ///< Update Sig and Eps for given Deps // Access methods (read) STensor2 const & Sig () const { return _sig; } STensor2 const & Eps () const { return _eps; } // Access methods (write) STensor2 & Sig () { return _sig; } STensor2 & Eps () { return _eps; }protected: STensor2 _sig; ///< Stress on this point (sx,sy,sz,SQ2*sxy,SQ2*syz,SQ2*sxz) STensor2 _eps; ///< Strain on this point (ex,ey,sz,SQ2*exy,SQ2*eyz,SQ2*exz)}; // class Model2D/////////////////////////////////////////////////////////////////////////////////////////// LinEls2D /////class LinEls2D : public Model2D{public: /** Constructor. */ LinEls2D (Array<double> const & Prms, Array<double> const & Inis) { // Check if (Prms.Size()!=2) throw new Fatal("LinEls2D: Number of parameters must be equal to 2 { E, nu }"); if (Inis.Size()!=6) throw new Fatal("LinEls2D: Number of initial values must be equal to 6 { sx,sy,sz,sxy,syz,sxz }"); // Parameters double E = Prms[0]; double nu = Prms[1]; // Calculate elastic tangent tensor AddScaled ( E/ (1.0+nu) , SymII , nu*E/((1.0+nu)*(1.0-2.0*nu)) , SymIdyI , _De ); // _De = a*SymII + b*SymIdyI // Initial values _sig = Inis[0], Inis[1], Inis[2], SQ2*Inis[3], SQ2*Inis[4], SQ2*Inis[5]; _eps = 0.0, 0.0, 0.0, 0.0, 0.0, 0.0; } /** Methods. */ void Update (STensor2 const & Deps) ///< Update Sig and Eps for given Deps { // Calculate stress increments STensor2 dsig; Dot (_De, Deps, dsig); // dsig = _De : Deps // Update strains _eps += Deps; // Update stress _sig += dsig; }private: STensor4 _De; ///< Fourth-order symmetric stiffness tensor}; // class Model2D#endif // MPM_MODEL2D_H/* 2008 (c) Dorival M. Pedroso */
?? 快捷鍵說明
復制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -