本篇讨论有限元中最基本的两个类, 节点类和单元类: 节点类首先需要基本的坐标信息,还需要节点位移、荷载、约束等信息,节点类代码如下: #ifndef MVNODE_H#define MVNODE_H #include "vector"using namespace std;class MVNode {public: MVNode(); virtual ~MVNode(); inline int GetCodeNum(int iPos) const; inline int getDOF() const; inline vector <double> getDispVector() const; inline double GetX() const; inline double GetY() const; inline double GetZ() const; int GetNum() const; void SetData(int n, double x, double y, double z, int iDOF); void setDspVct(double displacement, int iPos); void Init(); void Draw();private: int m_iNodeNum; double m_dX,m_dY,m_dZ; vector <double> m_dDispVector; int m_iDOF; int m_iConnectElementNum; };#endif 单元类需要单元属性、材料、节点连接等信息,单元类代码如下: #ifndef MVELEMENT_H#define MVELEMENT_H#include "MVNode.h"#include "MVDrawBox.h" class MVElement {public: MVElement(); virtual ~MVElement(); int GetNodeDOF(); inline int GetDimension() const; inline vector <MVNode *> GetNodePointerVector() const; int getCMNum() const; int getPrpNum() const; int GetNum() const; inline int GetNodeAmount() const; vector <int> GetNodeNumVector(); void SetNode(int NodeNum); void SetNum(int iElmNum); void SetNodePointer(MVNode * pNode); virtual void Init(); virtual void draw(){} virtual void ReadEleResult(istream &ifile){}//读入单元解 virtual void ReturnMaxMQy(double *_maxM,double *_maxQ,double *_maxy){} virtual void DrawNaxis(){} virtual void DrawShear(){} virtual void DrawMoment(){} virtual void DrawElement(){} virtual void DrawDeformation(){} virtual void DrawNodeContour(int item){} virtual void DrawNodeCloud(int item,int subitem){} virtual void DrawEleContour(int item){} protected: int m_iNodeAmount; int m_iElmNum; int m_iCMNum; int m_iDOF; int m_iElmDmm; vector <int> m_NodeNumVector; vector <MVNode *> m_pNodePointerVector; vector<double> m_dEleResult; };#endif 参考:1 MyFEM程序2 SFea程序

评论