The BIC methods differ for real and complex linear systems of equations, and therefore are described separately in the following paragraphs. The parameters are described in “User Interface” on page 101.
The real BIC method follows the basic algorithm shown below. Here, is the preconditioner, is the block of right-hand side vectors, is the block of updated solution vectors, and is the block of updated residual vectors.
The memory management and the spill logic are rather involved, and only the basic steps are listed below:
1. Execute a bandwidth-reducing permutation 2. Symbolic phase
B
F X
R
X0 = X–1 = 0 R0 = R–1 = –F
Loop on k = 1 2, , … ITSMAX, Wk = B–1Rk
Vk = AWk
Tk = [Xk – Xk – 1 Wk] Pk = [Rk – Rk– 1 Vk]
Gk = (PkTTk)–1 Hk = GkTkTRk Xk = Xk – 1 – Tk Hk
IF error( < ITSEP S) then converged End loop on k
Rk = Rk – 1 – Pk Hk
Find the best memory usage given a certain amount of memory and an IPAD value (see “User Interface” on page 101 for details on IPAD). The following logical steps are traversed in this order:
a. Check if matrix and factor fit in core; if yes, go to step e.
b. Check if factor fits in core with matrix being out-of-core; if yes, go to step e.
c. Check if memory is sufficient when factor and matrix are both out-of-core; if yes, go to step e.
d. Decrease padding level: IPAD = IPAD – 1; go back to step a.
e. Set up memory accordingly.
3. The numeric phase of the preconditioner calculation makes use of the following techniques:
a. Calculation of preconditioner in double precision; storage of final preconditioner in single precision.
b. Restarts with global shift regularization if incomplete factorization fails.
c. Post truncation for well-conditioned problems.
4. Using the techniques described above, more memory may be available than was predicted by the symbolic phase. Unless both matrix and preconditioner are in core, as much as possible is read from the scratch files and saved in memory.
The memory management and spill logic for the complex BIC methods are different.
For the complex case, there are two different BIC methods which are selected via the IPAD value. For IPAD < 5, the complex BIC algorithm is similar to the real BIC method. However, for IPAD ≥ 5, a very different strategy is used, which is described below.
The solution of the system
is based on its equivalent representation
where matrices and (= , since is symmetric) have fully zero
imaginary parts and is truly complex. The solution is found using the Schur complement.
There is no spill logic for the first complex method (IPAD < 5): if the matrix and preconditioner do not both fit in core, then a fully out-of-core approach is used.
Spill logic for the second complex BIC method is available. It determines whether only , only , or both and can be kept in core. is always kept in core since it usually has very few nonzero terms.
The second complex BIC method is recommended and is also the default for complex symmetric linear systems.
A11 A22 A11 A22 A12
5.3 Preconditioning Methods
The use of a preconditioner is recommended to reduce the number of iterations.
The disadvantage of this process is that the preconditioning calculation increases the amount of work in each iteration. With the use of a preconditioner matrix, the original problem is now written as
Eq. 5-14 where is the preconditioning matrix. In this form, the preconditioner is applied in every iteration step. This is called stepwise preconditioning. The Jacobi and Cholesky preconditioners are stepwise. If is chosen, then the problem is trivial:
Eq. 5-15 Of course, the cost of this preconditioning is equivalent to the direct solution of the system.
The following four major stepwise preconditioning strategies are supported in NX Nastran.
Jacobi (J). For the Jacobi method, the matrix is a diagonal matrix containing the diagonal terms of the matrix. The preconditioning step in every iteration is a simple division of the current residual vector by these terms.
Cholesky (C). In the Cholesky method, the selection of the preconditioner matrix is
Eq. 5-16 where is an incomplete Cholesky factor of . Despite wide acceptance, the use of standard Cholesky preconditioning in the conjugate gradient method is only proven to be very good for finite difference discretization of partial differential equations. For example, the conjugate gradient method has convergence problems when used in finite element problems with high Poisson ratios.
Reduced Incomplete Cholesky (RIC). In the RIC method the preconditioner matrix is calculated based on elemental information as
Eq. 5-17 where is the elemental matrices used to assemble .
This method significantly increases the performance of the iterative solver for shell problems. See Efrat, 1986 [4] for details.
P–1Ax = P–1b
Block Incomplete Cholesky (BIC). Another disadvantage of the Cholesky
method is the calculation cost for the incomplete or reduced factor and the memory requirement for parts of the Cholesky factor. A specific block sparse
implementation reduces these disadvantages. This proprietary method uses a global shift regularization strategy, a post-truncation technique for
well-conditioned problems, and allow a certain level of fill-in based on delicate numerical considerations. The implementation of the block conjugate gradient method accelerates convergence for problems involving multiple loads. Moreover, a band reordering method is used for the matrix in the symbolic phase of the iterative solver. See Babikov, 1995 for details.
Scaling
Another approach for preconditioning is to use the preconditioner as a transformation. Then
Eq. 5-18 is transformed into
Eq. 5-19 In this case the solution of the transformed system has to be converted back to the original solution as follows:
Eq. 5-20 An example of this transformation approach is diagonal scaling. Diagonal scaling is a useful tool for matrices whose terms differ significantly in magnitude. In this method, the following transformation is performed:
Eq. 5-21 where is an intermediate result, such as
Eq. 5-22 The diagonal terms of the scaled matrix are unity as a result of the diagonal scaling.
This scaling makes the Jacobi preconditioning step trivial. The other (Cholesky type) preconditioning methods may be combined with scaling.