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 iteration 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 COSMOS 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), files backups Z88I1.OLD and Z88I2.OLD and computes
the modified input files Z88I1.TXT and Z88I2.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.
This can be done by:
- hand
- Z88 net generator Z88N (Z88I1.TXT only, then edit Z88I2.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 with option Test
(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 and Z88I2.TXT from the
backup files Z88I1.OLD and Z88I2.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 > Compact Mode, Compute > Go
UNIX: z88f -c (console) or Z88F with option Compact (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.