2.2 THE ITERATION SOLVER Z88I1/Z88I2

NOTE:

Always compare FEA calculations with analytical rough calculations, results of experiments, plausibility considerations and other tests without exeption !

The principal task of every FEA program is the calculation of the displacements. That's the job of Z88I1 and Z88I2. The calculated deflections are the starting point for a stress calculation with Z88D or nodal force calculation with Z88E.

For large structures launch the iteration solver Z88I1 and Z88I2. Z88F is the right solver for small to medium structures.

The iteration solver uses only the so-called non- zero elements - this results in an absolute minimum for storage - and features two parts:

Iteration solver Part 1: Z88I1 builds the following pointers for the lower part of the total stiffness matrix GS:

- Pointer vektor IP points to the diagonal elements GS(i, i)
- Pointer vektor IEZ points to the column index GS(x, j)

A structure IJ will be assembled and then be sorted by a QSORT algorithm (an idea of Frank Koch). However, this step may need very much memory. Because of pure integer operations the computing speed is quite satisfying, though.

Example (ref. Schwarz, H.R: Methode der finiten Elemente) : Let the lower part of GS be:

GS(1,1) |  |  |  |  |
GS(2,1) | GS(2,2) |  |  |  |
| GS(3,2) | GS(3,3) |  |  |
GS(4,1) |  |  | GS(4,4) |  |
GS(5,1) |  | GS(5,3) |  | GS(5,5) |
| GS(6,2) |  | GS(6,4) |  | GS(6,6)

GS results in the following vector of non- zero elements:

GS(1,1) | GS(2,1) | GS(2,2) | GS(3,2) | GS(3,3) | GS(4,1) | GS(4,4)
GS(5,1) | GS(5,3) | GS(5,5) | GS(6,2) | GS(6,4) | GS(6,6) |

IEZ will result in:

1 | 1 | 2 | 2 | 3 | 1 | 4 | 1 | 3 | 5 | 2 | 4 | 6

and IP:

1 | 3 | 5 | 7 | 10 | 13

The structure IJ holds MAXSOR elemente, ref. Memory definition file Z88.DYN. You must allocate 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 (for intermediate sorting) to about 1/4 to 1/10 of MAXSOR. For example:

`MAXSOR 5000000
MAXPUF 500000
`

Z88I1 stores both the pointer vectors in a binary file Z88O4.BNY, which may become quite large.

Z88I1 tells you how much memory for GS (= MAXGS) and for KOI (= MAXKOI) you must allocate; adjust this in Z88.DYN. See an example of Z88.DYN:

`COMMON START
MAXGS 600000 adjust this before running Z88I2
MAXKOI 132000 adjust this before running Z88I2
MAXK 11000
MAXE 33000
MAXNFG 32000
MAXNEG 32
MAXSOR 5000000 adjust this before running Z88I1
MAXPUF 500000 adjust this before running Z88I1
COMMON END
`

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.

Iteration solver Part 2: Z88I2 computes the element stiffnes matrices, compiles the total stiffness matrix, incorporates the boundary conditions, scales the system of equations and solves the (huge) system of equations by the conjugate gradient algorithm. Preconditioning is done for better convergence. Choose your favorite preconditioner: Either a SOR step or a so- called incomplete Cholesky decomposition. Default is SOR preconditioning, needs lesser memory, too. Choose incomplete Cholesky decomposition (shiftet incomplete Cholesky decomposition SIC) only in special cases.

(1) Conjugate Gradients with SOR preconditioning

Windows: Z88I2 > Mode > Precon: Overrelaxation, Compute > Go

UNIX: z88i2 -s (console) or Solver: Z88I2 -S (Z88COM)

(2) Conjugate Gradients with SIC preconditioning

Windows: Z88I2 > Mode > Precon: Inco. Cholesky decom., Compute > Go

UNIX: z88i2 -c (console) or Solver: Z88I2 -C (Z88COM)

In addition you must supply three entries in the parameter file Z88I4.TXT:

- termination criterion: maximum count of iterations(for example 10000) reached
- termination criterion: residual vector < limit Epsilon (for example 1e-7)
- parameter for the convergence acceleration. Meaning depends on the preconditioner:

1. in case of SOR: Relaxation factor Omega (from 0 to 2, good values may vary from 0.8 to 1.2).
2. in case of SIC: Shift factor Alpha (from 0 to 1, good values may vary from 0.0001 to 0.1). For further information consult the special literature)

Note: The files Z88I1.TXT, Z88I2 and Z88I4.TXT mentioned here are described more precisely in chapter 3.

Input files:

Z88I1.TXT (general structure data)

Z88I2.TXT (boundary conditions, constraints)

Z88I4.TXT (parameter file for the iteration solver part 2: Z88I2)

Output files:

Z88O0.TXT (processed structure data for documentation)

Z88O1.TXT (processed boundary conditions for documentation)

Z88O2.TXT (deflections)

In addition two binary files Z88O1.BNY and Z88O3.BNY are generated. These binary files are later used by Z88D (stress processor) and Z88E (nodal force processor).