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.