1.4 DYNAMIC MEMORY Z88

HEADER FILE Z88.DYN AND FILECHECKER Z88V

All Z88 modules allocate memory dynamically. Although Z88 is delivered with default values in Z88.DYN the user may and should modify the values for best operation of Z88. The file Z88.DYN is there to be modified .

The language is defined also in Z88.DYN. Enter into a line, best located between DYNAMIC START and NET START, the key word ENGLISH or GERMAN.

Z88.DYN starts with the key DYNAMIC START and ends with DYNAMIC END. There is a section for the net generator (NET START, NET END), a common section for all modules (COMMON START, COMMON END), a section for the plot program (PLOT START, PLOT END) and an additional section for the Cuthill McKee program (CUTKEE START, CUTKEE END). Blank lines or comments are optional, only the uppercased keywords are recognized. After the keyword follows an integer value, separated by at least one blank. The order of the keywords is optional.

You can check the memory needs defined in Z88.DYN for the memory critical modules Z88F, Z88I1 and Z88I2 with the Filechecker Z88V. Add approx. 200 K to the results for each program module, which is negligible under Windows and under UNIX.
A proper modification is definitely a good idea.

However, do not request unnecessarily much memory since this causes speed losses , especially when using virtual memory.

Test the memory needs for large structures. Proceed as follows depending on the solver:

The direct Cholesky solver Z88F:

Windows: Z88F > Mode > Test Mode , Compute > Go
UNIX: z88f -t (console) or Z88F with option -T (Z88COM)

If you get here e.g. GS= 100,000, then enter, let's say, 120,000 for MAXGS in Z88.DYN but not 1,000,000 ! Then you estimate the total memory needs as described below or use Z88V.
Thus proceed for large structures for Z88 in 2 steps:

1st: State MAXGS

Windows: Z88F > Mode > Test Mode , Compute > Go
UNIX: z88f -t (console) or Z88F with option -T (Z88COM)

2nd: Correct Z88.DYN if necessary, state memory needs of Z88F with Z88V

(See the necessary memory MAXGS and MAXKOI, Windows. Looks similar on UNIX systems)

The iteration solver Z88I1 (part 1) and Z88I2 (part 2)

There's no test mode available because the first part of the iteration solver Z88I1 detects the memory needs for the second part Z88I2:

(See the necessary memory MAXGS and MAXKOI, Windows. Looks similar on UNIX systems)

However, the procedure for the iterations solver is quite tricky because you must define memory MAXSOR for the assembly of the sparse matrix. There is no way to pre- determine the needed memory but Z88I1 tells you if MAXSOR was too small. Then, increase MAXSOR in Z88.DYN and run Z88I1 again. Adjust MAXPUF to about 1/4 to 1/10 of MAXSOR. For example:
MAXSOR 5000000
MAXPUF 500000

Thus proceed for large structures for Z88 in 3 or more steps:

1st: run Z88I1

2nd: if Z88I1 completed properly, read off the values for MAXGS and MAXKOI and adjust Z88.DYN, if necessary. Now memory is proper adjusted for Z88I2.

3rd: if Z88I1 stopped because of lack of MAXSOR increase MAXSOR in Z88.DYN and run Z88I1 again. Adjust MAXPUF to about 1/4 to 1/10 of MAXSOR. Repeat this step until Z88I1 completes properly.

Make sure that your swap space is sufficient. Adjust if necessary:

Windows:
Start > Settings > Control Panel > System > Performance > Virtual Memory > Change. You choose the size of the permanent swap file depending on your own ideas. Hint: the actual Z88 version for Windows is compiled using 32 Bit integers and pointers. This should be sufficient for Windows XP. But very large structures with 2 ~ 3 mio. of DOF could cause the internally used integers and pointers to overflow because 232 is only about +/-2 billions!

UNIX:
Depending on the various UNIX operating systems the swap partition can be easily extended dynamically or an additional swap file must be created or the swap area must be deleted and a new swap area created with extended size.
I recommend a size between 100 and 1000 MByte. The exact value depends on the actual size of your structures. If you get an error message "not enough dynamic memory" from a Z88 computing unit (mostly from Z88F), then increase the swap space.

There are no limits for the size of the structures for Z88. The maximum size is limited only by the virtual memory of your computer and your imagination! However, for very large structures you may compile Z88 with 64 Bit integers and pointers (ref. 1.3.2) to avoid overflows of internal loop counters etc.

The Z88 modules check whether the predefined memory is sufficient for the current problem or if limits are reached and stop if necessary.

At commentless breakdown of a Z88 module check the accompanying .LOG file. Often the value for MAXKOI was too small !

Respect UNIX: If Z88 modules refuse to start, check the permissions of the .LOG files.

The delivered FEA example files work perfectly well with the delivered standard values in Z88.DYN. You will modify Z88.DYN if you want to calculate your own, large structures.

The .LOG files record the memory needs. Some more memory is needed for the program, local arrays and stack which one can neglect for WindowsNT/95 or UNIX.

Z88 normally deals with 

 

However, on several UNIX machines you may compile (compiler switches and compiler directive FR_XQUAD) the solver modules using

Attention: 64 Bit Integers are usefull for very large structures i.e. > 2 ~ 3 mio. of DOF for avoiding internal overflows. However, using 128 Bit floats is much more time-consuming than 64 Bit floats. Test runs with a SUN FIRE V890 and a SGI ORIGIN 2000 with quad precision at my institute at the University of Bayreuth caused five to ten times more CPU time than double precision! Thus, I recommend using 64 bit integers and 64 bit floats on larger computers.

 

Critical for the memory are Z88F, Z88I1 and Z88I2. If these modules run, then the rest will run, too. If in doubt, free your machine's memory by closing other unused programs.

The general description follows for Z88.DYN.

DYNAMIC START

Adjusting Language: ENGLISH or GERMAN. If nothing is entered or the entry is wrong, English language is used automatically.

Section Net Generator:

NET START
MAXSE Maximum number of internal nodes for FE net generation. Must be clearly higher than produced FE nodes.
MAXESS Maximum number of super elements
MAXKSS Maximum number of super nodes
MAXAN Maximum number of nodes which can meet a super element. The default of 15 has proven well even for complex space structures with Hexahedrons No.10. May be increased in case of doubt.
NET END

Common Data:

COMMON START
MAXGS Maximum number of entries in the total stiffness matrix. Actual number GS is recorded by Z88F and Z88I1.
MAXKOI Maximum number of entries in the coincidence vector = number nodes per element * number of finite elements. Example: 200 finite elements No.10 = 20 nodes per element * 200 = 4000. At mixed structures take the element type with most nodes and multiply by the number of elements. Required number of NKOI is recorded by Z88F and Z88I2.
MAXK Maximum number of nodes in the structure.
MAXE Maximum number of elements in the structure.
MAXNFG Maximum number of degrees of freedom in the structure.
MAXNEG Maximum number of material info lines for the structure.
MAXPR Maximum number of surface and pressure loads
MAXSOR For the iteration solver part 1 i.e. Z88I1 only. Z88I1 uses a sorting vector with the size of MAXSOR. There is no way to pre- determine the needed memory but Z88I1 tells you if MAXSOR was too small. In this case you must increase MAXSOR and launch Z88I1 again.
MAXPUF For the iteration solver part 1 i.e. Z88I1 only. This value tells Z88I1 when to start another sorting. Adjust MAXPUF to about 1/4 to 1/10 of MAXSOR.
COMMON END

For plot program Z88P:

PLOT START
MFACCOMMON The following values from COMMON multiply by this factor: MAXKOI, MAXE, MAXK. Standard factor is 2. Useful for checks of input files which were produced by the net generator.
MAXGP Maximum number of Gauss points for stress plots. Example: 200 finite elements No.10, integration order 3: 3 * 3 * 3 = 27 Gauss points per element resulting in 27 * 200 = 5400 Gauss points in summary.
PLOT END

For the Cuthill- McKee program:

CUTKEE START
MAXGRA maximum degree of nodes
MAXNDL steps of the algorithm
CUTKEE END

DYNAMIC END

You may state with Z88V which amount of memory the various Z88 modules will request.

(About to show the memory defined by Z88.DYN, Windows Z88)