|
ug的开发始于1990年7月。如今大约十人正工作于核心功能之上。当前版本具有大约450,000行的C代码。
9 q! b4 I5 L; \+ e& c , J5 f _ L( a; \
UG是一个在二和三维空间无结构网格上使用自适应多重网格方法开发的一个灵活的数值求解偏微分方程的软件工具。其设计思想足够灵活地支持多种离散方案。因此软件可对许多不同的应用再利用。
3 l$ S5 j- R" Y' ]+ L
, H& u- T; ?: `" A. u/ z6 D. K一个给定过程的有效模拟需要来自于应用领域 (自然科学或工程)、数学(分析和数值数学) 及计算机科学的知识。一些非常成功的解偏微分方程的技术,特别是自适应网格加密(adaptive mesh refinement)和多重网格方法在过去的十年中已被数学家研究。计算机技术的巨大进展,特别是大型并行计算机的开发带来了许多新的可能。
7 n) d. E2 Y' e
0 G1 w- g, m* V' u6 R然而,所有这些技术在复杂应用中的使用并不是太容易。这是因为组合所有这些方法需要巨大的复杂性及交叉学科的知识。最终软件的实现变得越来越复杂,以致于超出了一个人能够管理的范围。. ]- X3 S X! Q" K- F
1 X: W/ A$ Q( k: _
UG的目标是用最新的数学技术,即自适应局部网格加密、多重网格和并行计算,为复杂应用问题的求解提供一个灵活的可再使用的软件基础。, ~+ U# _9 m2 q8 g( f! J4 ]- @1 U8 o
! v1 l$ a$ e% `6 A. _/ D4 C* c一般结构+ \; J( y0 R! O( F$ N9 l
5 s, ~. b: n. f# R一个如UG这样的大型软件系统通常需要有不同层次抽象的描述。UG具有三个设计层次,即结构设计(architectural design)、子系统设计(subsystem design)和组件设计(component design)。
y2 }, k+ n a# l3 ~2 S0 ]
8 |' ?$ |, O- Z! _2 T3 I至少在结构和子系统层次上,UG是用模块方法设计的并且信息隐藏原则被广泛地使用。所有陈述的信息被分布于各子系统之间。UG是用C语言来实现的。0 m& w5 o- k& d$ V8 b6 S
1 j7 C( Y. R/ ]- m7 ]* h4 T6 Q, ]- g7 n图1给出了详细的结构设计,其构建模块是动态分布式数据库(DDD: Dynamic Distributed Data Library)、UG内核、问题类和应用。8 _+ W: y7 i5 G! H% |0 c
, T6 A( V7 z& b ^& |" h0 g
' v) k7 J9 p1 G6 P 5 v7 O( t) w, G5 P/ g6 e% `
图1:UG结构设计
8 f+ U- Y$ Y0 U$ H# l0 l
4 u* n t2 ? _' g2 ~5 K$ nDDD编程模式1 ?3 V3 I i j2 \7 \
1 y' C+ u1 A# N( ^
提供了处理不规则数据结构和并行机上分布式对象的一种并行编程模式。它处理分布式对象的识别(创建)、分布式对象间的通讯及分布式对象的动态转移等基本任务。可提供本工具的一个独立的版本,移植性通过提供对Paragon NX、PARIX、T3D/T3E shared mem、MPI和PVM的接口来保证。
S) Y7 `' C: G; R K b( y
' R4 o+ m W+ d0 _4 r+ t2 kUG内核程序
3 N, O1 e C- `
$ A9 w; P5 V$ n; VUG内核程序意欲与待求解的偏微分方程是无关的。它提供几何和代数数据结构及许多网格处理选项、数值算法、可视化技术和用户界面。
6 m; e% T6 v2 }
) `/ J& T$ e5 L: ^3 @当然,每个程序设计抽象都基于某种基本假设。网格管理子系统当前被编写得仅支持层次结构化网格。数据结构本身可支持更一般松耦合网格层次。并行化基于具有极小重叠的数据划分。' Y9 z/ Q& o4 f
5 q! r& ^6 i# R* o+ WUG内核程序具有如下特征: 0 W4 m( W8 y$ @/ i
7 l q' l. L9 x
灵活的区域描述界面。由于UG可生成/修改网格,它需要区域边界的一个几何描述。当前支持两种格式,正在进行CAD界面的工作。
6 q2 h7 P3 N0 q9 u+ \8 y) L - c) C+ {5 I, f3 b* z- |7 \7 p
一种支持二和三维无结构网格的管理器,具有多种元类型,如三角形、四边形、四面体、棱柱、棱椎和六面体。为重新启动的完全网格结构及解的存储和加载。
8 h+ v, _5 [- a' l) Y7 {
4 A& J! Z4 e( @局部、层次加密和粗化。在每个网格层提供一个相容且稳定的三角形剖分。
+ Z6 y# J1 n: A' u1 F4 A# P 2 r. k" }& r+ c d
一个灵活的稀疏矩阵数据结构允许相应于网格的节点、边、面和元的自由度。在数据结构上已实现了一和二级BLAS类过程及迭代方法。 % o U" o( x, {2 M4 x( T
1 ?. J, c0 @0 ^ k, ~已经实现了问题无关的和面向对象框架的广泛的数值算法。包括BDF(1), BDF(2)时间步方案、(不精确) Newton方法、CG、CR、BiCGSTAB、乘法局部多重网格、不同类型的的网格转移算子、 ILU、Gauss-Seidel、Jacobi和SOR光滑器。这些算法可用于方程组及标量方程。它们可被任意地嵌套到简单的脚本命令中,例如,BDF(2)使用Newton法在每个时间步求解非线性问题,Newton法使用具有BiCGSTAB加速的多重网格,多重网格使用一个ILU光滑器和特殊的适合于跳跃系数的截断网格转移、粗层解法器使用一个ILU预条件的BiCGSTAB。 ; F2 ~6 Y. t0 ~9 L8 o
5 T5 a9 o" ]: C/ j8 n脚本语言解释程序和交互式图形工具提供了程序运行时的简单的可视化工具,进一步,例如,稀疏矩阵数据结构可用图形给出,这对调试是非常有用的。UG的设备驱动程序支持X11和Apple Macintosh。还提供对AVS、TECPLOT和GRAPE的图形输出。 - J& E) o- v9 [9 ?
4 _* v+ A' j+ l
此功能的数据并行实现基于DDD。 4 y! H* v( e; d& X
' n3 @, L5 W9 I8 Z问题类层次4 ?- {6 h( A Y
" a" {% C( M+ O. A. Y4 m一个问题类使用UG内核程序来对一类特殊偏微分方程实现离散化、误差估计子和最终的一个非标准解法器。只有当不能用任何已提供的工具来实现时才需要提供解法器。离散化可由一些工具支持,这些工具允许元素类型和维数与有限元和有限体积法代码无关。( B3 P+ z+ j: ^' n
7 R- Q$ }3 t% M& F) [- _' [基于最新版UG内核程序的问题类包括:标量对流扩散、非线性扩散、线弹性、弹塑性、不可压缩、多孔渗流中密度驱动流和多相。所有这些问题类运行2D/3D且是并行的。 u# q( d. C) ?; B) W6 K5 S
: D2 H% L& m. X, Y& y" e3 `
# @: O! ^( q6 Y* j( R$ M) S* Y
' @4 R& L8 z& a5 L' j0 ?' |7 fUG获得2001年最突出设计HLRS金穗奖 ' @8 u; y9 Q9 g: _
; m- g- l$ H/ q( Q [, o! M如何在UNIX环境中安装UG
5 |3 G; x$ k! w9 n) c& G3 h! w! ^
s4 V3 M' n1 }许可协议 |
|