How much memory can be used for a single solver process (serial or 1 partition of a parallel run)?


All components of ANSYS CFX are available as native 64-bit executables.

For memory efficiency the stack size in the solver is limited to 4-byte words, which results in 2^31 -1 available words. So 2.1 billion is the theoretical limit for the number of nodes.

Stacks are allocated for
- 4 byte Integer -> max. 8 GB (2^31 -1 * 4 byte)
- 1 byte Character -> max. 2 GB
- 4 byte Real -> max. 8 GB
- 8 byte Double -> max. 16 GB
- 4 byte Logical -> max. 8 GB

This results in a theoretical limit of 42 GB RAM that could be allocated.

The real max. allocated memory is less, as different memory requirements exist for the different stack types. This depends on the element types (hex, tet, prism), the physics (multiphase, combustion, additional variables, ...) and the numerics (regions, GGI interfaces, ...).

Typically the Real stack is the largest and takes about 2/3 to 3/4 of the overall memory. The second largest is the Integer stack. The other stacks are typically negligible. Thus a solver process often is limited to about 12 GB RAM. The exact number depends on the above mentioned conditions and can also be larger or smaller.

So if you obtain the following error message:

ERROR #001100279 has occurred in subroutine ErrAction. The total number of words needed for the Integer stack exceeds the maximum supported by the flow solver: 2,147,483,647. The solver will continue with the stack size clipped to that value.

then the mesh contains too many elements and the simulation should either be run in parallel or the mesh size reduced.

Ahead of a simulation the required memory can be estimated as follows. Take an out-file of a simulation with similar setup (mesh type, physics, numerics) and check the section on allocated memory, in example:
+--------------------------------------------------------------------+
| Memory Allocated for Run (Actual usage may be less) |
+--------------------------------------------------------------------+

Data Type Kwords Words/Node Words/Elem Kbytes Bytes/Node

Real 17556.0 450.41 185.54 68578.1 1801.63
Integer 5308.8 136.20 56.11 20737.5 544.80
Character 3647.2 93.57 38.55 3561.7 93.57
Logical 80.0 2.05 0.85 312.5 8.21
Double 859.6 22.05 9.08 6715.5 176.42

Take the value of Words/Node or Words/Element and multiply it with the number of nodes or elements in your mesh. The resulting number must remain below 2^31 - 1 for all data types (Real, Integer, ...). If the value is above, the simulation should either be run in parallel or the mesh size reduced.

By multiplying the value of Bytes/Node with the number of nodes and summing up for all data types you get an estimate of the required RAM.

Large cases which hit the stack limit should be run in parallel. The partitioner also has the same stack limit (4 byte words). But as the partitioner requires less arrays the maximum mesh size is about 80 million hex or 200 million tet elements. For even larger meshes a Large Grid Partitioner is available which uses 8 byte words. The theoretical limit is about 2 billion elements.


Additional note: When using the double precision solver, then the same limitations apply. Only for the Real data type 8 byte words are used instead of 4 byte words, resulting in more digits being available for higher accuracy.





Show Form
No comments yet. Be the first to add a comment!