Base linear accelerator subroutine that scales and reorders the system of equations, if necessary, updates the preconditioner, and calls the appropriate linear accelerator. 
  624     CLASS(ImsLinearDataType), 
INTENT(INOUT) :: this
 
  625     integer(I4B), 
INTENT(INOUT) :: ICNVG
 
  626     integer(I4B), 
INTENT(IN) :: KSTP
 
  627     integer(I4B), 
INTENT(IN) :: KITER
 
  628     integer(I4B), 
INTENT(INOUT) :: IN_ITER
 
  630     integer(I4B), 
INTENT(IN) :: NCONV
 
  631     integer(I4B), 
INTENT(IN) :: CONVNMOD
 
  632     integer(I4B), 
DIMENSION(CONVNMOD + 1), 
INTENT(INOUT) :: CONVMODSTART
 
  633     character(len=31), 
DIMENSION(NCONV), 
INTENT(INOUT) :: CACCEL
 
  634     type(ConvergenceSummaryType), 
pointer, 
intent(in) :: summary
 
  637     integer(I4B) :: innerit
 
  639     integer(I4B) :: itmax
 
  643     this%EPFACT = ims_base_epfact(this%ICNVGOPT, kstp)
 
  646     IF (this%ISCL .NE. 0) 
THEN 
  647       CALL ims_base_scale(0, this%ISCL, &
 
  648                           this%NEQ, this%NJA, this%IA, this%JA, &
 
  649                           this%AMAT, this%X, this%RHS, &
 
  650                           this%DSCALE, this%DSCALE2)
 
  654     IF (this%IORD /= 0) 
THEN 
  655       CALL dperm(this%NEQ, this%AMAT, this%JA, this%IA, &
 
  656                  this%ARO, this%JARO, this%IARO, &
 
  657                  this%LORDER, this%ID, 1)
 
  658       CALL dvperm(this%NEQ, this%X, this%LORDER)
 
  659       CALL dvperm(this%NEQ, this%RHS, this%LORDER)
 
  660       this%IA0 => this%IARO
 
  661       this%JA0 => this%JARO
 
  670     CALL ims_base_pcu(this%iout, this%NJA, this%NEQ, this%NIAPC, this%NJAPC, &
 
  671                       this%IPC, this%RELAX, this%A0, this%IA0, this%JA0, &
 
  672                       this%APC, this%IAPC, this%JAPC, this%IW, this%W, &
 
  673                       this%LEVEL, this%DROPTOL, this%NJLU, this%NJW, &
 
  674                       this%NWLU, this%JLU, this%JW, this%WLU)
 
  691     call ims_base_residual(this%NEQ, this%NJA, this%X, this%RHS, this%D, &
 
  692                            this%A0, this%IA0, this%JA0)
 
  693     this%L2NORM0 = 
dnrm2(this%NEQ, this%D, 1)
 
  697     IF (this%L2NORM0 == dzero) 
THEN 
  703     IF (this%ILINMETH == 1) 
THEN 
  704       CALL ims_base_cg(icnvg, itmax, innerit, &
 
  705                        this%NEQ, this%NJA, this%NIAPC, this%NJAPC, &
 
  706                        this%IPC, this%ICNVGOPT, this%NORTH, &
 
  707                        this%DVCLOSE, this%RCLOSE, this%L2NORM0, &
 
  708                        this%EPFACT, this%IA0, this%JA0, this%A0, &
 
  709                        this%IAPC, this%JAPC, this%APC, &
 
  710                        this%X, this%RHS, this%D, this%P, this%Q, this%Z, &
 
  711                        this%NJLU, this%IW, this%JLU, &
 
  712                        nconv, convnmod, convmodstart, &
 
  716     ELSE IF (this%ILINMETH == 2) 
THEN 
  717       CALL ims_base_bcgs(icnvg, itmax, innerit, &
 
  718                          this%NEQ, this%NJA, this%NIAPC, this%NJAPC, &
 
  719                          this%IPC, this%ICNVGOPT, this%NORTH, &
 
  720                          this%ISCL, this%DSCALE, &
 
  721                          this%DVCLOSE, this%RCLOSE, this%L2NORM0, &
 
  722                          this%EPFACT, this%IA0, this%JA0, this%A0, &
 
  723                          this%IAPC, this%JAPC, this%APC, &
 
  724                          this%X, this%RHS, this%D, this%P, this%Q, &
 
  725                          this%T, this%V, this%DHAT, this%PHAT, this%QHAT, &
 
  726                          this%NJLU, this%IW, this%JLU, &
 
  727                          nconv, convnmod, convmodstart, &
 
  732     IF (this%IORD /= 0) 
THEN 
  733       CALL dperm(this%NEQ, this%A0, this%JA0, this%IA0, &
 
  734                  this%AMAT, this%JA, this%IA, &
 
  735                  this%IORDER, this%ID, 1)
 
  736       CALL dvperm(this%NEQ, this%X, this%IORDER)
 
  737       CALL dvperm(this%NEQ, this%RHS, this%IORDER)
 
  741     IF (this%ISCL .NE. 0) 
THEN 
  742       CALL ims_base_scale(1, this%ISCL, &
 
  743                           this%NEQ, this%NJA, this%IA, this%JA, &
 
  744                           this%AMAT, this%X, this%RHS, &
 
  745                           this%DSCALE, this%DSCALE2)
 
real(kind=8) function dnrm2(n, x, incx)
This module contains simulation methods.
subroutine dvperm(n, x, perm)
subroutine dperm(nrow, a, ja, ia, ao, jao, iao, perm, qperm, job)