博文
动态链接库编程中巧用抽象类(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_dDis......
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
fra......