Two independent implementations of the Generalized Minimum Residual (GMRES)technique have been tested in the chemically reacting DPLR CFD code. The first implementation utilizes the existing Jacobian matrices by writing a new GMRES solver that is integrated directly into the DPLR CFD code time integration subroutine. The second implementation makes calls to the Portable, Extensible Toolkit for Scientific Computation (PETSc), an external linear and non-linear solver package, to perform the GMRES calculation. Several important aspects of developing the built-in GMRES solver are explored including basis vector orthogonalization technique, linear system pre-conditioning, parallelization, and convergence criteria. The resulting performance is compared with the PETSc implementation as well as line-and point-relaxation schemes for hypersonic cone,
O /55 O double cone, and spherical capsule test cases. Overall, line-relaxation is typically the most efficient solution technique when elapsed time is measured, but GMRES is observed to provide more accurate solution of the matrices by measuring residual decrease per iteration. In the double cone test case at high enthalpy, the GMRES method is shown to be numerically more stable. Comparisons between PETSc and the built-in GMRES solversshow that choice of convergence criteria drive the relative performance of the solvers.
Nomenclature
A= sparse Jacobian matrix of target system b = right-hand side vector of target system c = Givens rotation cosine d = diagonal elements of ILU preconditioner, Eqn (29) e i,j = unit vector of length j, with one non-zero element, i E = lower off-diagonal elements of sparse A F = upper off-diagonal elements of sparse A G = Givens rotation matrix H = Hessenberg matrix k = number of line-relaxation steps L = lower diagonal matrix for Householder transformation, Eqn (9) m = number of GMRES relaxation steps M = dimension/rank of Krylov subspace N = dimension/rank of linear system P = preconditioner matrix p = order of ILU fill Q = matrix of orthogonal basis vectors r = residual R = transformed Hessenberg matrix s = Givens rotation sine u =