开放源代码的有限元软件OpenFOAM、Z88、CalculiX、SciPy、DUNE、Rheolef、FEniCS等
OpenFOAM
1. 软件背景介绍
OpenFOAM的前身为FOAM(Field Operation and Manipulation的简写),后来作为开源代码公布到网上,任何人都可以自由下载和传播她的源代码。其作者之一Hrvoje Jasak为克罗地亚(南斯拉夫成员国)人,1993年在读PhD期间开始写FOAM。在2004年,OpenFOAM软件的创始人与主要开发者Henry Weller将该软件开源化,与此同时成立了OpenCFD公司,专门进行OpenFOAM软件的研发、技术支持和官方培训。其官方网站为
www.openfoam.org 。
OpenFOAM(Open Fi e ld Ope r a t i on and Manipulation的简称)软件可以模拟复杂流体流动、化学反应、湍流流动、换热分析等现象,还可以进行结构动力学分析、电磁场分析以及金融评估等。
该软件由OpenCFD公司开发维护,在GNU General Public License许可下可以自由下载和发布。OpenFOAM软件的核心技术为一系列的高效C++模块数据包,利用这些数据包可以构造出一系列有效的求解器、辅助工具和库文件,用来模拟特定的工程机械问题和进行前后处理,包括数据处理、图形显示、网格处理、物理模型和求解器接口等。
OpenFOAM提供了许多预编译好的求解器、辅助工具和模型库等,可以模拟一系列复杂问题。同时它也是一款开源软件,用户可以扩展软件本身的功能和处理能力。该软件开源化不仅仅在于其程序代码对外公开,而且其软件程序结构和软件架构设计也开源化。因此用户可以最大程度地拓展程序以实现用户自定义功能。
OpenFOAM是一个完全由C++编写的面向对象的CFD类库,采用类似于我们日常习惯的方法在软件中描述偏微分方程,采用有限体积法对偏微分方程进行求解。软件支持三维任意多面体网格(比如CDadapco公司推出的CCM+生成的多面体网格),因而可以处理复杂的几何外形,支持区域分解并行计算等。
2. 软件架构
OpenFOAM软件首先是一个C++库文件包,它包含许多可执行文件(也称为应用程序包)。从文件组织结构来说这些应用程序大体可以分为两大类:求解器和辅助工具。求解器用来求解连续介质力学中的某个特定问题,而辅助工具主要用来进行数据操作、辅助求解器完成计算任务。
从程序实现功能的角度来看,OpenFOAM软件同众多商业CFD软件一样,包括核心求解器、前处理和后处理三大模块。
而从程序开发的角度来看,OpenFOAM软件主要基于以下几个主要的类及其相互之间的作用。
1、Primitive与Container----基础类及容器类
2、描述空间及时间的类
3、张量的数学运算类
4、Field、Dimension Set、Boundary Conditon和Geometric Field---场、量纲、边界条件及几何场
5、Mesh---网格类
6、积分、微分及离散类
7、矩阵类
8、描述PDE(偏微分方程)的类
9、物理模型类
在OpenFOAM中代码的组织,及类的区分和实现都是基于以上这些部份分别编写的。
3. 软件功能
OpenFOAM软件可以模拟复杂流体流动、化学反应、湍流流动、换热分析等现象,还可以进行结构动力学分析、电磁场分析。具体功能分述如下:
求解方面 用户可以进行基本的CFD分析,可压与不可压缩流动分析、多相流分析、燃烧分析、热分析以及电磁场和结构动力学耦合分析。
前处理方面
软件拥有自己的JAVA/C++图形界面——case管理器FoamX,可以对case进行管理,对模型数据进行操作、设置边界条件和求解设置等内容,此外还有其他一些直接对数据进行操作的辅助工具,如setField、apField等工具。
后处理方面
软件自带有paraFoam模块,可以对OpenFOAM软件的数据直接进行读取。paraFoam基于开源可视化软件ParaView开发,可以进行一些常用的后处理操作,如网格显示、云图显示、等值面显示、曲线绘制等等。此外,软件包含有与第三方软件的接口工具,可以通过专业的后处理软件进行数据处理,如foamToEnsight、foamToFieldview、foamToGMV、smapToFoam等。Ensight软件也可以直接读取OpenFOAM软件的计算结果。
网格方面
软件支持各种各样的多面体非结构化网格,包括四面体、立面体、棱柱网格、Polehedral等。网格生成的时候即可以在自带的FoamX前处理器里进行简单操作(blockMesh),也可以接受其他网格处理软件生成的网格,包含有多种网格转换工具如cfxToFoam、fluentMeshToFluent、mshToFoam、ansysToFoam等。对于网格模型数据,可以进行网格编辑操作和网格质量检查,如网格移动、旋转、细化、重编号、网格分割、动网格等。
物理模型
软件包含有先进的物理模型,用来模拟可压与不可压缩流体、牛顿与非牛顿流体。湍流模型方面既有常规的层流、S-A模型,还包括各种
各样的k-e模型,还包括有丰富的大涡模拟模拟,如各种Smagorinsky模型、scale similarity模型、spectraleddy viscosity模型等等。另外OpenFOAM还具有以下功能和特点:
燃烧模拟。
拉格朗日粒子追踪及射流。
滑移网格,网格层消等。
各种各样的工具箱,包括各种ODE求解器、ChemKIN接口等。
自动生成动网格与网格转换工具,可以转换多种网格形式为FOAM可以处理的网格形式。
支持多种网格接口。
以上文字来源:
http://www.ssc.net.cn/paper/paper_pdf/23_15.pdf该软件官方网站地址:
www.openfoam.orgWINDOW系统下安装包的下载地址:
http://sourceforge.net/projects/openfoam-mswin/其官方网站首页介绍:
OpenFOAM®: The Open Source CFD Toolbox
The OpenFOAM® (Open Field Operation and Manipulation) CFD Toolbox can simulate anything from complex fluid flows involving chemical reactions, turbulence and heat transfer, to solid dynamics, electromagnetics and the pricing of financial options. OpenFOAM is produced byOpenCFD Ltd and is freely available and open source, licensed under the GNU General Public Licence.
The core technology of OpenFOAM is a flexible set of efficient C++ modules. These are used to build a wealth of: solvers, to simulate specific problems in engineering mechanics; utilities, to perform pre- and post-processing tasks ranging from simple data manipulations to visualisation and mesh processing; libraries, to create toolboxes that are accessible to the solvers/utilities, such as libraries of physical models.
OpenFOAM is supplied with numerous pre-configured solvers, utilities and libraries and so can be used like any typical simulation package. However, it is open, not only in terms of source code, but also in its structure and hierarchical design, so that its solvers, utilities and libraries are fully extensible.
OpenFOAM uses finite volume numerics to solve systems of partial differential equations ascribed on any 3D unstructured mesh of polyhedral cells. The fluid flow solvers are developed within a robust, implicit, pressure-velocity, iterative solution framework, although alternative techniques are applied to other continuum mechanics solvers. Domain decomposition parallelism is fundamental to the design of OpenFOAM and integrated at a low level so that solvers can generally be developed without the need for any ’parallel-specific’ coding.
其有有特点的开放源代码的有限元、偏微分方程计算软件还有Z88、CalculiX、SciPy、DUNE、Rheolef、FEniCS等。上面的图最后一张是Z88的成果图。
Z88软件网址:
http://z88.uni-bayreuth.de/Z88有WINDOW系统下的安装包,见此处:
http://z88.uni-bayreuth.de/english.htmlCalculiX软件网址:
http://www.dhondt.de/SciPy软件网址:
http://www.scipy.org/DUNE软件网址:
http://www.dune-project.org/Rheolef软件网址:
http://www-ljk.imag.fr/membres/Pierre.Saramito/rheolef/FEniCS软件网址:
http://www.fenics.org/wiki/FEniCS_Project Z88 is a fast, powerful and compact Finite Elements Analysis Program especially designed for PCs running Windows 95/Vista LINUX and large computers with UNIX.
FEATURES
• Z88 features 20 finite element types.
• It covers plane stress, plate bending, axial symmetric structures and spacial structures up to 20-node Serendipity hexahedrons.
• Comes with a user-friendly interface (the Z88 Commander).
• Has a powerful mesh generator.
• Features a DXF coverter and a powerfull native plot program.
• Contains three solvers:
• a fast Cholesky-Solver along with Jennings storage.
• a sparse matrix iterative solver (CG preconditioned) for very large structures.
• a direct sparse matrix solver. Very fast, with multi-CPU support.
• Import of COSMOS und NASTRAN files from Pro/ENGINEER (Option Pro/MECHANICA) is supported.
• Native 32-Bit und 64-Bit versions for both Windows and LINUX/UNIX.
FREEWARE
The new version Z88 13.0 for UNIX, LINUX and Windows is GNU GPL Freeware. Z88 is handcoded using pure ANSI-C and the true Windows API or GTK+ calls.
电骡上有人收集了一些开源有限元软件及其源码, 可见以下地址:
http://www.verycd.com/topics2746011