mkSolve - Specify linear algebra solvers

Calling sequence:

mkSolve(solve_list,eq_list)

Parameters:

solve_list - List of keywords to denote different linear systems solver. One keyword for each equation in eq_list.

eq_list - List of equations to be solved.

Synopsis:

iccg
Calls the Incomplete Cholesky preconditioned Conjugate Gradient solver in SLAP. It requires the linear system to be symmetric and positive definite.
dcg
Calls the Conjugate Gradient solver using diagonal scaling as preconditioner. It requires the linear system to be symmetric and positive definite.
gmres
Calls the GMRES iterative solver in SLAP. This allows the system to be nonsymmetric but is considerably slower than iccg for symmetric systems.
diag
This assumes the matrix to be diagonal, and solves the system directly. Typically this solver would be used in explicit time stepping schemes together with the Lump modifier to mkFem.
copy
This requires that the corresponding equation is of the form CopyEq( variable = expression ) in the input to mkFem or mkFem2. 'expression' must not contain derivatives. 'variable' is one of the unknowns. The copy keyword causes the nodal values of 'variable' to be assigned to 'expression' evaluated at that node.

Examples:

> # set up different solvers to use with different equations:
> solve_list:=[iccg,iccg]:
> mkSolve(solve_list,eq_list);
solve