博文
动态链接库编程中巧用抽象类(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 ......
有限元节点类\单元类(手把手有限元编程)(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......
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是......
