正文

有限元节点类\单元类(手把手有限元编程)2007-08-03 15:41:00

【评论】 【打印】 【字体: 】 本文链接:http://blog.pfan.cn/oopfem/28175.html

分享到:

本篇讨论有限元中最基本的两个类, 节点类和单元类:

节点类首先需要基本的坐标信息,还需要节点位移、荷载、约束等信息,
节点类代码如下:

#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程序

 

阅读(10568) | 评论(0)


版权声明:编程爱好者网站为此博客服务提供商,如本文牵涉到版权问题,编程爱好者网站不承担相关责任,如有版权问题请直接与本文作者联系解决。谢谢!

评论

暂无评论
您需要登录后才能评论,请 登录 或者 注册