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) 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 net 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 with option -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 with option -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.