博文

动态链接库编程中巧用抽象类(2009-03-07 02:51:00)

摘要: 有限元动态链接库编程中巧用抽象类   动态链接库以dll为后缀,软件开发中采用动态链接库有利于开发时的分工、后期维护,以及防止代码泄密。有限元软件架构中,经常会将不同的功能划分为不同的模块,每个模块采用动态链接库来完成。如现有的有限元软件中,常常将计算模块以及图象显示模块设计为动态链接库,在界面程序中调用。 在动态链接库程序开发中,巧用抽象类常常可以起到举足轻重的作用。本文简单讲解在有限元程序开发时,如何在动态链接库中使用抽象类。       举个小例子说明:   制作有限元计算模块FemModel链接库,并在程序Main中调用FemModel链接库。   先看通常采用的方式,在VC6.0中新建FemModel链接库工程,建立有限元模型输出类FemModel,包含成员为节点数nPoint,函数ReadFile,其中ReadFile函数用来读取文件读取节点数。   //FemModel.h Class __declspec(dllexport) FemModel :   { public:   FemModel();   virtual ~FemModel();   void ReadFile(FILE* _ifile);//读取文件,设置节点数 private:   int nPoint; //节点数 }; FemModel.cpp内容略。       编译工程,生成FemModel.lib、FemModel.dll文件。 在程序Main中调用FemModel链接库时,需要在工程中导入FemModel.h文件,调用方式如下,   #include "FemModel.h" int main() {   FemModel ......

阅读全文(1765) | 评论:2

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

摘要:本篇讨论有限元中最基本的两个类, 节点类和单元类: 节点类首先需要基本的坐标信息,还需要节点位移、荷载、约束等信息,节点类代码如下: #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_iConnectE......

阅读全文(10801) | 评论:0

1.wxWidgets初步 (手把手有限元编程)(2007-06-17 23:36:00)

摘要:手把手有限元编程系列,给大家讲解如何利用c++语言,借助wxWidgets和opengl构建有限元程序.... 第一篇, wxWidgets初步 开发交互软件首先必须有界面, wxWidgets是很不错的界面库,由于wxWidgets的教材很少,所以本篇先介绍如何分离wxWidgets基本框架的几个类, 首先,MVApp类是主应用程序类, /***********************MVApp.h************************/#ifndef MV_APP_H#define MV_APP_H#pragma warning (disable: 4018)#include "wx_pch.h"#include "MVFrame.h"class MVApp: public wxApp{public:    bool OnInit(); MVFrame * GetFrame(void);private: MVFrame * frame;};DECLARE_APP(MVApp);#endif // #ifndef MV_APP_H /*************************************MVApp.cpp**************************************/#include "MVApp.h"IMPLEMENT_APP(MVApp)//Main program (equivalent)bool MVApp::OnInit(){    // Create the main frame window    frame = new MVFrame(NULL, wxT("MV Post"),wxDefaultPosition, wxSize(650, 600));    // Show the frame     frame->Show(true);    return true;}MVFrame * MVApp::GetFrame(void){ return frame;} MVFrame是......

阅读全文(15845) | 评论:5