2024年5月28日发(作者:)

问:做三维模态分析,ansys11.0, 系统是3G的内容,怎么还出现上面错误。

用-M设置也不行

回答1:

这其实是ansys内存管理问题

计算机的物理内存(real memory)对ansys程序来讲,主要用于两部分:一

部分用于维持ansys程序在系统内的运行(ansys excutable),另一部分用于

ansys的工作空间(workspace)。对于32位系统来说,ansys默认的工作空间

是512MB,64位系统来说,ansys默认的工作空间是1GB。一旦程序要求的内存

大于计算机的物理内存(real memory),那么程序会占用一部分磁盘空间将其

作为内存使用,即通常所说的虚拟内存(system virtual memory),用作虚拟内

存的这部分磁盘空间称之为交换空间(swap space),文件称之为交换文件(swap

file)或页面文件(page file)。这是基本概念

因此,交换空间大小和计算机的物理内存大小、工作空间大小、ansys本身运行

所需要的内存有关。

ansys工作空间又分为两部分,一部分称之为数据库空间(database space),

主要存储ansys几何模型,载荷,材料属性等数据,另一部分称之为暂存空间

(scratch space),主要用于内部计算,如布尔运算,单元矩阵生成,方程求解

等。32位系统中,512MB的默认工作空间中256MB用于database space,256MB

用于scratch space。64位系统同样被平均分成两部分。

一旦模型太大,数据库空间盛不下,将会调用虚拟内存,虚拟内存使用系统函数

来实现内存和硬盘之间的数据交换,而物理内存使用ansys指令来实现内存和硬

盘的数据交换。用于ansys虚拟内存的文件称之为页面文件(page file),文件

名为:其大小取决于模型大小,不建议使用页面文件,因为其处

理数据比较低效。因此,要给database space分配足够的物理内存,防止使用

页面文件(page file)实现内存和硬盘之间的数据交换。

如果暂存空间不足以满足内部运算的话,ansys会分配额外的内存来满足程序要

求。

最好有足够的物理内存来运行ansys任务,划分网格或者是方程重新排序过程中

物理内存不足而暂时性的使用虚拟内存对运算速度影响还不是很大,但是如果求

解过程中物理内存不足,会使运算过程慢上十倍。

上面这部分是基本术语。下面是内存分配问题。

通常情况下不需要手动配置内存,ansys内存管理器会自动分配额外的内存。通

过-m命令设置初始内存块的大小,这个命令分配的内存存在于两个连续的块内。

例如:-m 1800 -db 300,即首先分配300MB的连续内存块给database space,

然后分配1500MB的连续内存块给scratch space.理想情况下,ansys从初始内

存块内部分配内存,使得在各个仿真阶段可以有效的重新利用内存块。一旦

ansys需要更多内存,它就会向系统伸手要,新的内存块为scratch space一半

大小或分配的新的内存块的大小。当出现分片内存引起的内存不足导致的计算失

败的情况时需要改变默认内存分配设置。(关于连续内存块和分片不连续内存的

问题还需要和各位大虾讨论)

下面这个例子可能对内存分配有所启发:(指南的原话)

For example, if a large model requires a contiguous block of 800 MB for

the sparse solver, the default memory allocation will be insufficient (-m

1024 MB minus-db 512 MB = 512 MB contiguous memory). ANSYS would try to

allocate an additional 800 MB block of contiguous memory to satisfy the

sparse solver requirement, bringing the total memory requirement to 1800

MB (1024 default plus 800 additional). This memory requirement may fail

on smaller systems, especially 32-bit Windows systems(这个内存要求可

能会失败,特别是32位windows系统). To accomodate this model within the

default memory availability, specify a-db 100, resulting in an initial

memory block of 924 MB, which is sufficient to satisfy the sparse solver

requirement of 800 MB.

什么意思呢?一个大的模型需要800MB的连续内存块用于稀疏矩阵求解,默认

的内存分配显然不够,采用-m 1800的设置可能失败(特别是32位windows系

统),但是如果设成-db 100就行

具体原因需要和大家继续讨论

32位windows系统,最大寻址空间为2GB或3GB(这还是在3GB开关打开的情况

下才能使用)。当Ansys启动时,不同的进程,包括Ansys本身以及保证Ansys

正常运行的各种动态链接库和保证操作系统正常运行的动态链接库,来争夺这点

有限的空间。所有这些程序必须常驻在分配给ansys程序的进程空间中。如果分

配给ansys实际寻址空间中存在一个或多个上述进程,这些进程会将内存分割成

不连续的小块,这是ansys对内存不连续块的理解.上述文字也解释了不连续内

存块的形成原因。

可以使用以下方式来确定一个特定的操作系统所容许的分配给Ansys的最大工

作空间(即-m命令后面指定的数字),用不同的-m命令和固定的-db命令启动

ansys,这样就可以确定出极限-m的大小。一般来说,32位的操作系统-m设定

(即工作空间设定)不能超过1200MB,-db(数据库空间设定)不能超过256MB。