2.9 THE CUTHILL-McKEE PROGRAM Z88H

The choice of the nodal numbers is extremely important for the compilation of the stiffness matrix and bad nodal numbering may result in huge memory needs which are not really necessary.

However, Z88H may reduce the memory needs for the direct Cholesky Solver Z88F greatly. The sparse matrix solver Z88I1/Z88I2 may also gain some advantages from a Z88H run, but the iteration solver is a-priori very stable regarding node numbering because of storing the non- zero elements only.

Basically, it it always good to achieve a small difference of nodal numbers for each finite element. This results in nodal numbers of similar size for an element. However, this is not always possible: consider a circular structur starting with nodal numbering at 0° with increasing numbers clockwise. When reaching 360°, elements with large differences of nodal numbers will occur.

Sometimes 3D CAD programs include so-called automeshers which devide a CAD model into finite elements. This generated mesh can be stored in some output format to fit the needs of the various FEA programs. But many of these automeshers generate meshes with very large nodal differences. This is true for Pro/ENGINEER's Pro/MECHANICA: If you choose Tet Mesh parabolic, Pro/MECHANICA in a first operation generates linear tetrahedrons, i.e. with 4 rather than 10 nodes per element, with straight element edges. Then midnodes are put on the element edges resulting in parabolic elements with 10 nodes. These midnodes have relatively large nodal numbers because the corner nodes were numbered in the first step. Thus, every finite element features relatively small corner node numbers and relatively large mid node numbers resulting in large differences of nodal numbering. When choosing Shell, triangle, parabolic, the same situation occurs. This means that meshes built with Pro/MECHANICA will always have bad nodal numbering.

For large meshes one needs to re-number the nodes to get finite elements with small differences of nodal numbers. Several proper procedures do exist in literature for this task. However, the so-called Cuthill- McKee procedure is a good compromise. One modification of it is the reverse Cuthill- McKee algorithm. For more information, consult Schwarz, H.R.: Die Methode der finiten Elemente. The C program Z88H is based on a FORTRAN77 program of Prof. Schwarz and is specially adapted to Z88. The core algorithm of H.R. Schwarz decides internally wether to use the normal Cuthill- McKee procedure or the reverse Cuthill- McKee algorithm.

The Cuthill-McKee program Z88H was originally designed for finite element meshes generated by 3D converter Z88G. However, Z88H can deal with all Z88 meshes. Z88H reads the Z88 input files Z88I1.TXT (general structure informations) and Z88I2.TXT (boundary conditions) and –if needed- Z88I5.TXT (surface and pressure loads), files backups Z88I1.OLD, Z88I2.OLD and Z88I5.OLD (if needed) and computes the modified input files Z88I1.TXT, Z88I2.TXT and Z88I5.TXT.

Own research studies showed that sometimes a second run of Z88H may improve again the numbering of a first run of Z88H. A third run seems to make things worse. In contrast, Z88H may sometimes compute a worse nodal numbering then the original mesh. You should have some experiments because the Cuthill-McKee algorithm may not always improve a given mesh.

And here's how you proceed:

1) Generate a finite elements mesh, i.e. the Z88 input files Z88I1.TXT and Z88I2.TXT and –if needed- Z88I5.TXT. This can be done by:

- hand
- Z88 mesh generator Z88N (Z88I1.TXT only, then edit Z88I2.TXT and Z88I5.TXT by hand)
- a DXF file and Z88X
- a COSMOS file and Z88G

2) Adjust Z88.DYN if necessary: MAXKOI is very important (Number of nodes per element * total number of elements) and MAXK, MAXE and MAXNFG.

3) Launch Z88F with test option, i.e.

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

Fix the value for GS, i.e. the number of storage entries in the stiffness matrix (multiplying this values by 8 gives the memory need in bytes).

4) Launch Z88H.

5) Repeat step 3, i.e. run Z88F with the test option and check wether GS got smaller. This will be mostly the case if your mesh was generated by Z88G using a COSMOS file. Otherwise, restore Z88I1.TXT, Z88I2.TXT and Z88I5.TXT from the backup files Z88I1.OLD, Z88I2.OLD and Z88I5.OLD.

6) Enter the value of GS into Z88.DYN in the line MAXGS and lauch Z88F with a compute mode, e.g.

Windows: Z88F > Mode > Compute Mode, Compute > Go
UNIX: z88f -c (console) or Z88F -C (Z88COM)

Remark:

Z88H features a section in the memory header file Z88.DYN:

CUTKEE START
MAXGRA 200 (maximum degree of nodes)
MAXNDL 1000 (steps of the algorithm)
CUTKEE END

Increase these entries for very large structures.