首页 理论教育 有限单元分析与网格误差估计模块

有限单元分析与网格误差估计模块

时间:2023-06-24 理论教育 版权反馈
【摘要】:分析模块的成员函数包括:数据文件获得、有限单元计算。同样,本篇第六章介绍的应力分析误差估计模块DENCORE和本篇第七章介绍的渗流分析误差估计模块DENSEEP在整个自适应有限单元分析过程中起着重要的作用。由于它不仅需要计算前的网格数据,而且需要计算后的应力值和水头值,故此,将误差估计作为一个单独的类是有必要的。通过调用误差估计模块,得到在前一个背景网格下的网格误差值,并给出指定误差条件下的新网格尺度场Densp.new。

有限单元分析与网格误差估计模块

笔者把应力应变分析程序CORE和渗流分析程序SEEP作为一个功能模块嵌在建立的分析模块中,作为计算模块对象的成员函数。如果今后要修改这个功能模块,或者添加新的功能模块,可以很方便地以其他成员函数的形式来实现,不会影响软件系统的其他部分。

另外,这两款程序是用Fortran语言编制的,如果再用C++(或C语言)重新编制将会是一项非常费时的工作。为降低开发成本,应优先考虑如何利用已有的程序。面向对象技术使这一切变得非常容易,C++的封装特性使我们不必考虑细节,可以直接利用它们的功能。分析模块的成员函数包括:数据文件获得、有限单元计算。

在Windows中调用现有的程序可以有两种途径:调用动态链接库和调用进程。两者相比,进程的调用更为简单和直接些,而且利用进程的概念可以很方便地将一个大型软件分割成若干个模块,它们可以在各自的进程地址空间运行,彼此不会干扰,有利于系统的构建。进程的调用可以由两个函数中的任意一个来完成,它们是Winexec()和CreateProcess()。所以,在成员函数Compute()中,可以这样进行:

在Windows中调用现有的程序可以有两种途径:调用动态链接库和调用进程。两者相比,进程的调用更为简单和直接些,而且利用进程的概念可以很方便地将一个大型软件分割成若干个模块,它们可以在各自的进程地址空间运行,彼此不会干扰,有利于系统的构建。进程的调用可以由两个函数中的任意一个来完成,它们是Winexec()和CreateProcess()。所以,在成员函数Compute()中,可以这样进行:

调用CreateProcess()将具体的计算任务交给CORE或SEEP去完成。

同样,本篇第六章介绍的应力分析误差估计模块DENCORE和本篇第七章介绍的渗流分析误差估计模块DENSEEP在整个自适应有限单元分析过程中起着重要的作用。由于它不仅需要计算前的网格数据,而且需要计算后的应力值和水头值,故此,将误差估计作为一个单独的类是有必要的。

正如在前面处理分析模块时所做的一样,误差估计类(CError Estimate)同样利用了以前用Fortran语言编制的程序DENCORE和DENSEEP,并将它作为误差估计类的成员函数嵌套在类中。

调用CreateProcess()将具体的计算任务交给CORE或SEEP去完成。(www.xing528.com)

同样,本篇第六章介绍的应力分析误差估计模块DENCORE和本篇第七章介绍的渗流分析误差估计模块DENSEEP在整个自适应有限单元分析过程中起着重要的作用。由于它不仅需要计算前的网格数据,而且需要计算后的应力值和水头值,故此,将误差估计作为一个单独的类是有必要的。

正如在前面处理分析模块时所做的一样,误差估计类(CError Estimate)同样利用了以前用Fortran语言编制的程序DENCORE和DENSEEP,并将它作为误差估计类的成员函数嵌套在类中。

其中,函数Estimate()就是调用DENCORE或DENSEEP程序的过程。

通过调用误差估计模块,得到在前一个背景网格下的网格误差值,并给出指定误差条件下的新网格尺度场Densp.new。如果得到的网格误差值小于给定的允许误差值,则进入后处理阶段;否则,调用网格类的Generate()函数生成调整后的网格。

其中,函数Estimate()就是调用DENCORE或DENSEEP程序的过程。

通过调用误差估计模块,得到在前一个背景网格下的网格误差值,并给出指定误差条件下的新网格尺度场Densp.new。如果得到的网格误差值小于给定的允许误差值,则进入后处理阶段;否则,调用网格类的Generate()函数生成调整后的网格。

免责声明:以上内容源自网络,版权归原作者所有,如有侵犯您的原创版权请告知,我们将尽快删除相关内容。

我要反馈