Type | Intent | Optional | Attributes | Name | ||
---|---|---|---|---|---|---|
integer, | intent(in) | :: | n | Dimension of the problem |
||
real(kind=r8), | intent(in), | dimension(n) | :: | xcur | Array of length |
|
real(kind=r8), | intent(in), | dimension(n) | :: | fcur | Array of length |
|
real(kind=r8), | intent(inout), | dimension(n) | :: | step | Vector of of length |
|
real(kind=r8), | intent(in) | :: | eta | Relative residual reduction factor |
||
procedure(f_intr) | :: | f | User-supplied subroutine for evaluating the function the zero of which is sought. |
|||
procedure(jacv_intr) | :: | jacv | User-supplied subroutine for optionally evaluating or , where is the Jacobian of and is a right preconditioning operator. If neither analytic evaluations nor right preconditioning is used, this can be a dummy subroutine; if right preconditioning is used but not analytic evaluations, this need only evaluate . |
|||
real(kind=r8), | intent(inout), | dimension(*) | :: | rpar | Parameter/work array passed to the |
|
integer, | intent(inout), | dimension(*) | :: | ipar | Parameter/work array passed to the |
|
integer, | intent(in) | :: | ijacv | Flag for determining method of evaluation. 0 (default) indicates finite-difference evaluation, while 1 indicates analytic evaluation. |
||
integer, | intent(in) | :: | irpre | Flag for right preconditioning. 0 indicates no preconditioning, while 1 inidcates right preconditioning. |
||
integer, | intent(in) | :: | iksmax | Maximum allowable number of BiCGSTAB iterations |
||
integer, | intent(in) | :: | ifdord | Order of the finite-difference formula used in BiCGSTAB when J*v products are evaluated using finite-differences. When ijacv = 0 on input to nitsol, ifdord is set to 1, 2, or 4 in nitsol; otherwise, it is irrelevant. When ijacv = 0 on input to this subroutine, ifdord determines the order of the finite-difference formula used at each BiCGSTAB iteration (default 1). In this case, ijacv is set to -1 below to signal to nitjv that the order of the finite-difference formula is to be determined by ifdord. The original value ijacv = 0 is restored on return. |
||
integer, | intent(inout) | :: | nfe | Number of function evaluations |
||
integer, | intent(inout) | :: | njve | Number of evaluations |
||
integer, | intent(inout) | :: | nrpre | Number of evaluations |
||
integer, | intent(inout) | :: | nli | Number of linear iterations |
||
real(kind=r8), | intent(out), | dimension(n) | :: | r | Residual vector |
|
real(kind=r8), | intent(out), | dimension(n) | :: | rtil | vector used in BiCGSTAB |
|
real(kind=r8), | intent(out), | dimension(n) | :: | p | Vector used in BiCGSTAB |
|
real(kind=r8), | intent(out), | dimension(n) | :: | phat | Vector used in BiCGSTAB |
|
real(kind=r8), | intent(out), | dimension(n) | :: | v | Vector used in BiCGSTAB |
|
real(kind=r8), | intent(out), | dimension(n) | :: | t | Vector used in BiCGSTAB |
|
real(kind=r8), | intent(out), | dimension(n) | :: | rwork1 | Work vector, passed on to nitjv |
|
real(kind=r8), | intent(out), | dimension(n) | :: | rwork2 | Work vector, passed on to nitjv |
|
real(kind=r8), | intent(out) | :: | rsnrm | BiCGSTAB residual norm on return |
||
procedure(dinpr_intr) | :: | dinpr | Inner-product routine, either user-supplied or BLAS |
|||
procedure(dnorm_intr) | :: | dnorm | Norm routine, either user supplied or BLAS dnrm2. |
|||
integer, | intent(out) | :: | itrmks | Termination flag. Values have the following meanings:
|
An interface to my modified versino of the nitsol implementation of the biconjugate gradient stabilized method (BiCGSTAB) for iteratively solving linear systems. It has been modified so that the user provides a non-zero initial guess of the solution.