workspace sizes: defined by the number of vectors used by the iterative solver. version: experimental
linop type holding the linear operator and its associated methods.
The linop
type is used to define the linear operator for the iterative solvers.
version: experimental
solver_workspace type holding temporal array data for the iterative solvers. version: experimental
stdlib_solve_cg_kernel interface for the conjugate gradient method. Specifications version: experimental
Specifications version: experimental
stdlib_solve_pcg_kernel interface for the preconditionned conjugate gradient method. Specifications version: experimental
stdlib_solve_bicgstab_kernel interface for the biconjugate gradient stabilized method. Specifications version: experimental
Specifications version: experimental
enumerator | :: | stdlib_size_wksp_cg | = | 3 | |
enumerator | :: | stdlib_size_wksp_pcg | = | 4 | |
enumerator | :: | stdlib_size_wksp_bicgstab | = | 8 |
enumerator | :: | pc_none | = | 0 | |
enumerator | :: | pc_jacobi | = | 1 |
linear operator matrix
Type | Intent | Optional | Attributes | Name | ||
---|---|---|---|---|---|---|
type(CSR_dp_type), | intent(in) | :: | A | |||
real(kind=dp), | intent(in) | :: | b(:) |
right-hand side vector |
||
real(kind=dp), | intent(inout) | :: | x(:) |
solution vector and initial guess |
||
logical(kind=int8), | intent(in), | optional, | target | :: | di(:) |
dirichlet conditions mask |
real(kind=dp), | intent(in), | optional | :: | rtol |
relative tolerance for convergence |
|
real(kind=dp), | intent(in), | optional | :: | atol |
absolute tolerance for convergence |
|
integer, | intent(in), | optional | :: | maxiter |
maximum number of iterations |
|
logical, | intent(in), | optional | :: | restart |
restart flag |
|
integer, | intent(in), | optional | :: | precond |
preconditioner method enumerator |
|
class(stdlib_linop_dp_type), | intent(in), | optional, | target | :: | M |
preconditioner linear operator |
type(stdlib_solver_workspace_dp_type), | intent(inout), | optional, | target | :: | workspace |
workspace for the solver |
linear operator matrix
Type | Intent | Optional | Attributes | Name | ||
---|---|---|---|---|---|---|
type(CSR_sp_type), | intent(in) | :: | A | |||
real(kind=sp), | intent(in) | :: | b(:) |
right-hand side vector |
||
real(kind=sp), | intent(inout) | :: | x(:) |
solution vector and initial guess |
||
logical(kind=int8), | intent(in), | optional, | target | :: | di(:) |
dirichlet conditions mask |
real(kind=sp), | intent(in), | optional | :: | rtol |
relative tolerance for convergence |
|
real(kind=sp), | intent(in), | optional | :: | atol |
absolute tolerance for convergence |
|
integer, | intent(in), | optional | :: | maxiter |
maximum number of iterations |
|
logical, | intent(in), | optional | :: | restart |
restart flag |
|
integer, | intent(in), | optional | :: | precond |
preconditioner method enumerator |
|
class(stdlib_linop_sp_type), | intent(in), | optional, | target | :: | M |
preconditioner linear operator |
type(stdlib_solver_workspace_sp_type), | intent(inout), | optional, | target | :: | workspace |
workspace for the solver |
linear operator matrix
Type | Intent | Optional | Attributes | Name | ||
---|---|---|---|---|---|---|
real(kind=dp), | intent(in) | :: | A(:,:) | |||
real(kind=dp), | intent(in) | :: | b(:) |
right-hand side vector |
||
real(kind=dp), | intent(inout) | :: | x(:) |
solution vector and initial guess |
||
logical(kind=int8), | intent(in), | optional, | target | :: | di(:) |
dirichlet conditions mask |
real(kind=dp), | intent(in), | optional | :: | rtol |
relative tolerance for convergence |
|
real(kind=dp), | intent(in), | optional | :: | atol |
absolute tolerance for convergence |
|
integer, | intent(in), | optional | :: | maxiter |
maximum number of iterations |
|
logical, | intent(in), | optional | :: | restart |
restart flag |
|
integer, | intent(in), | optional | :: | precond |
preconditioner method enumerator |
|
class(stdlib_linop_dp_type), | intent(in), | optional, | target | :: | M |
preconditioner linear operator |
type(stdlib_solver_workspace_dp_type), | intent(inout), | optional, | target | :: | workspace |
workspace for the solver |
linear operator matrix
Type | Intent | Optional | Attributes | Name | ||
---|---|---|---|---|---|---|
real(kind=sp), | intent(in) | :: | A(:,:) | |||
real(kind=sp), | intent(in) | :: | b(:) |
right-hand side vector |
||
real(kind=sp), | intent(inout) | :: | x(:) |
solution vector and initial guess |
||
logical(kind=int8), | intent(in), | optional, | target | :: | di(:) |
dirichlet conditions mask |
real(kind=sp), | intent(in), | optional | :: | rtol |
relative tolerance for convergence |
|
real(kind=sp), | intent(in), | optional | :: | atol |
absolute tolerance for convergence |
|
integer, | intent(in), | optional | :: | maxiter |
maximum number of iterations |
|
logical, | intent(in), | optional | :: | restart |
restart flag |
|
integer, | intent(in), | optional | :: | precond |
preconditioner method enumerator |
|
class(stdlib_linop_sp_type), | intent(in), | optional, | target | :: | M |
preconditioner linear operator |
type(stdlib_solver_workspace_sp_type), | intent(inout), | optional, | target | :: | workspace |
workspace for the solver |
Type | Intent | Optional | Attributes | Name | ||
---|---|---|---|---|---|---|
class(stdlib_linop_dp_type), | intent(in) | :: | A |
linear operator |
||
class(stdlib_linop_dp_type), | intent(in) | :: | M |
preconditioner linear operator |
||
real(kind=dp), | intent(in) | :: | b(:) |
right-hand side vector |
||
real(kind=dp), | intent(inout) | :: | x(:) |
solution vector and initial guess |
||
real(kind=dp), | intent(in) | :: | rtol |
relative tolerance for convergence |
||
real(kind=dp), | intent(in) | :: | atol |
absolute tolerance for convergence |
||
integer, | intent(in) | :: | maxiter |
maximum number of iterations |
||
type(stdlib_solver_workspace_dp_type), | intent(inout) | :: | workspace |
workspace for the solver |
Type | Intent | Optional | Attributes | Name | ||
---|---|---|---|---|---|---|
class(stdlib_linop_sp_type), | intent(in) | :: | A |
linear operator |
||
class(stdlib_linop_sp_type), | intent(in) | :: | M |
preconditioner linear operator |
||
real(kind=sp), | intent(in) | :: | b(:) |
right-hand side vector |
||
real(kind=sp), | intent(inout) | :: | x(:) |
solution vector and initial guess |
||
real(kind=sp), | intent(in) | :: | rtol |
relative tolerance for convergence |
||
real(kind=sp), | intent(in) | :: | atol |
absolute tolerance for convergence |
||
integer, | intent(in) | :: | maxiter |
maximum number of iterations |
||
type(stdlib_solver_workspace_sp_type), | intent(inout) | :: | workspace |
workspace for the solver |
linear operator matrix
Type | Intent | Optional | Attributes | Name | ||
---|---|---|---|---|---|---|
type(CSR_dp_type), | intent(in) | :: | A | |||
real(kind=dp), | intent(in) | :: | b(:) |
right-hand side vector |
||
real(kind=dp), | intent(inout) | :: | x(:) |
solution vector and initial guess |
||
logical(kind=int8), | intent(in), | optional, | target | :: | di(:) |
dirichlet conditions mask |
real(kind=dp), | intent(in), | optional | :: | rtol |
relative tolerance for convergence |
|
real(kind=dp), | intent(in), | optional | :: | atol |
absolute tolerance for convergence |
|
integer, | intent(in), | optional | :: | maxiter |
maximum number of iterations |
|
logical, | intent(in), | optional | :: | restart |
restart flag |
|
type(stdlib_solver_workspace_dp_type), | intent(inout), | optional, | target | :: | workspace |
workspace for the solver |
linear operator matrix
Type | Intent | Optional | Attributes | Name | ||
---|---|---|---|---|---|---|
type(CSR_sp_type), | intent(in) | :: | A | |||
real(kind=sp), | intent(in) | :: | b(:) |
right-hand side vector |
||
real(kind=sp), | intent(inout) | :: | x(:) |
solution vector and initial guess |
||
logical(kind=int8), | intent(in), | optional, | target | :: | di(:) |
dirichlet conditions mask |
real(kind=sp), | intent(in), | optional | :: | rtol |
relative tolerance for convergence |
|
real(kind=sp), | intent(in), | optional | :: | atol |
absolute tolerance for convergence |
|
integer, | intent(in), | optional | :: | maxiter |
maximum number of iterations |
|
logical, | intent(in), | optional | :: | restart |
restart flag |
|
type(stdlib_solver_workspace_sp_type), | intent(inout), | optional, | target | :: | workspace |
workspace for the solver |
linear operator matrix
Type | Intent | Optional | Attributes | Name | ||
---|---|---|---|---|---|---|
real(kind=dp), | intent(in) | :: | A(:,:) | |||
real(kind=dp), | intent(in) | :: | b(:) |
right-hand side vector |
||
real(kind=dp), | intent(inout) | :: | x(:) |
solution vector and initial guess |
||
logical(kind=int8), | intent(in), | optional, | target | :: | di(:) |
dirichlet conditions mask |
real(kind=dp), | intent(in), | optional | :: | rtol |
relative tolerance for convergence |
|
real(kind=dp), | intent(in), | optional | :: | atol |
absolute tolerance for convergence |
|
integer, | intent(in), | optional | :: | maxiter |
maximum number of iterations |
|
logical, | intent(in), | optional | :: | restart |
restart flag |
|
type(stdlib_solver_workspace_dp_type), | intent(inout), | optional, | target | :: | workspace |
workspace for the solver |
linear operator matrix
Type | Intent | Optional | Attributes | Name | ||
---|---|---|---|---|---|---|
real(kind=sp), | intent(in) | :: | A(:,:) | |||
real(kind=sp), | intent(in) | :: | b(:) |
right-hand side vector |
||
real(kind=sp), | intent(inout) | :: | x(:) |
solution vector and initial guess |
||
logical(kind=int8), | intent(in), | optional, | target | :: | di(:) |
dirichlet conditions mask |
real(kind=sp), | intent(in), | optional | :: | rtol |
relative tolerance for convergence |
|
real(kind=sp), | intent(in), | optional | :: | atol |
absolute tolerance for convergence |
|
integer, | intent(in), | optional | :: | maxiter |
maximum number of iterations |
|
logical, | intent(in), | optional | :: | restart |
restart flag |
|
type(stdlib_solver_workspace_sp_type), | intent(inout), | optional, | target | :: | workspace |
workspace for the solver |
Type | Intent | Optional | Attributes | Name | ||
---|---|---|---|---|---|---|
class(stdlib_linop_dp_type), | intent(in) | :: | A |
linear operator |
||
real(kind=dp), | intent(in) | :: | b(:) |
right-hand side vector |
||
real(kind=dp), | intent(inout) | :: | x(:) |
solution vector and initial guess |
||
real(kind=dp), | intent(in) | :: | rtol |
relative tolerance for convergence |
||
real(kind=dp), | intent(in) | :: | atol |
absolut tolerance for convergence |
||
integer, | intent(in) | :: | maxiter |
maximum number of iterations |
||
type(stdlib_solver_workspace_dp_type), | intent(inout) | :: | workspace |
workspace for the solver |
Type | Intent | Optional | Attributes | Name | ||
---|---|---|---|---|---|---|
class(stdlib_linop_sp_type), | intent(in) | :: | A |
linear operator |
||
real(kind=sp), | intent(in) | :: | b(:) |
right-hand side vector |
||
real(kind=sp), | intent(inout) | :: | x(:) |
solution vector and initial guess |
||
real(kind=sp), | intent(in) | :: | rtol |
relative tolerance for convergence |
||
real(kind=sp), | intent(in) | :: | atol |
absolut tolerance for convergence |
||
integer, | intent(in) | :: | maxiter |
maximum number of iterations |
||
type(stdlib_solver_workspace_sp_type), | intent(inout) | :: | workspace |
workspace for the solver |
linear operator matrix
Type | Intent | Optional | Attributes | Name | ||
---|---|---|---|---|---|---|
type(CSR_dp_type), | intent(in) | :: | A | |||
real(kind=dp), | intent(in) | :: | b(:) |
right-hand side vector |
||
real(kind=dp), | intent(inout) | :: | x(:) |
solution vector and initial guess |
||
logical(kind=int8), | intent(in), | optional, | target | :: | di(:) |
dirichlet conditions mask |
real(kind=dp), | intent(in), | optional | :: | rtol |
relative tolerance for convergence |
|
real(kind=dp), | intent(in), | optional | :: | atol |
absolute tolerance for convergence |
|
integer, | intent(in), | optional | :: | maxiter |
maximum number of iterations |
|
logical, | intent(in), | optional | :: | restart |
restart flag |
|
integer, | intent(in), | optional | :: | precond |
preconditioner method enumerator |
|
class(stdlib_linop_dp_type), | intent(in), | optional, | target | :: | M |
preconditioner linear operator |
type(stdlib_solver_workspace_dp_type), | intent(inout), | optional, | target | :: | workspace |
workspace for the solver |
linear operator matrix
Type | Intent | Optional | Attributes | Name | ||
---|---|---|---|---|---|---|
type(CSR_sp_type), | intent(in) | :: | A | |||
real(kind=sp), | intent(in) | :: | b(:) |
right-hand side vector |
||
real(kind=sp), | intent(inout) | :: | x(:) |
solution vector and initial guess |
||
logical(kind=int8), | intent(in), | optional, | target | :: | di(:) |
dirichlet conditions mask |
real(kind=sp), | intent(in), | optional | :: | rtol |
relative tolerance for convergence |
|
real(kind=sp), | intent(in), | optional | :: | atol |
absolute tolerance for convergence |
|
integer, | intent(in), | optional | :: | maxiter |
maximum number of iterations |
|
logical, | intent(in), | optional | :: | restart |
restart flag |
|
integer, | intent(in), | optional | :: | precond |
preconditioner method enumerator |
|
class(stdlib_linop_sp_type), | intent(in), | optional, | target | :: | M |
preconditioner linear operator |
type(stdlib_solver_workspace_sp_type), | intent(inout), | optional, | target | :: | workspace |
workspace for the solver |
linear operator matrix
Type | Intent | Optional | Attributes | Name | ||
---|---|---|---|---|---|---|
real(kind=dp), | intent(in) | :: | A(:,:) | |||
real(kind=dp), | intent(in) | :: | b(:) |
right-hand side vector |
||
real(kind=dp), | intent(inout) | :: | x(:) |
solution vector and initial guess |
||
logical(kind=int8), | intent(in), | optional, | target | :: | di(:) |
dirichlet conditions mask |
real(kind=dp), | intent(in), | optional | :: | rtol |
relative tolerance for convergence |
|
real(kind=dp), | intent(in), | optional | :: | atol |
absolute tolerance for convergence |
|
integer, | intent(in), | optional | :: | maxiter |
maximum number of iterations |
|
logical, | intent(in), | optional | :: | restart |
restart flag |
|
integer, | intent(in), | optional | :: | precond |
preconditioner method enumerator |
|
class(stdlib_linop_dp_type), | intent(in), | optional, | target | :: | M |
preconditioner linear operator |
type(stdlib_solver_workspace_dp_type), | intent(inout), | optional, | target | :: | workspace |
workspace for the solver |
linear operator matrix
Type | Intent | Optional | Attributes | Name | ||
---|---|---|---|---|---|---|
real(kind=sp), | intent(in) | :: | A(:,:) | |||
real(kind=sp), | intent(in) | :: | b(:) |
right-hand side vector |
||
real(kind=sp), | intent(inout) | :: | x(:) |
solution vector and initial guess |
||
logical(kind=int8), | intent(in), | optional, | target | :: | di(:) |
dirichlet conditions mask |
real(kind=sp), | intent(in), | optional | :: | rtol |
relative tolerance for convergence |
|
real(kind=sp), | intent(in), | optional | :: | atol |
absolute tolerance for convergence |
|
integer, | intent(in), | optional | :: | maxiter |
maximum number of iterations |
|
logical, | intent(in), | optional | :: | restart |
restart flag |
|
integer, | intent(in), | optional | :: | precond |
preconditioner method enumerator |
|
class(stdlib_linop_sp_type), | intent(in), | optional, | target | :: | M |
preconditioner linear operator |
type(stdlib_solver_workspace_sp_type), | intent(inout), | optional, | target | :: | workspace |
workspace for the solver |
Type | Intent | Optional | Attributes | Name | ||
---|---|---|---|---|---|---|
class(stdlib_linop_dp_type), | intent(in) | :: | A |
linear operator |
||
class(stdlib_linop_dp_type), | intent(in) | :: | M |
preconditioner linear operator |
||
real(kind=dp), | intent(in) | :: | b(:) |
right-hand side vector |
||
real(kind=dp), | intent(inout) | :: | x(:) |
solution vector and initial guess |
||
real(kind=dp), | intent(in) | :: | rtol |
relative tolerance for convergence |
||
real(kind=dp), | intent(in) | :: | atol |
absolute tolerance for convergence |
||
integer, | intent(in) | :: | maxiter |
maximum number of iterations |
||
type(stdlib_solver_workspace_dp_type), | intent(inout) | :: | workspace |
workspace for the solver |
Type | Intent | Optional | Attributes | Name | ||
---|---|---|---|---|---|---|
class(stdlib_linop_sp_type), | intent(in) | :: | A |
linear operator |
||
class(stdlib_linop_sp_type), | intent(in) | :: | M |
preconditioner linear operator |
||
real(kind=sp), | intent(in) | :: | b(:) |
right-hand side vector |
||
real(kind=sp), | intent(inout) | :: | x(:) |
solution vector and initial guess |
||
real(kind=sp), | intent(in) | :: | rtol |
relative tolerance for convergence |
||
real(kind=sp), | intent(in) | :: | atol |
absolute tolerance for convergence |
||
integer, | intent(in) | :: | maxiter |
maximum number of iterations |
||
type(stdlib_solver_workspace_sp_type), | intent(inout) | :: | workspace |
workspace for the solver |
Type | Visibility | Attributes | Name | Initial | |||
---|---|---|---|---|---|---|---|
procedure(reduction_sub_dp), | public, | nopass, pointer | :: | inner_product | => | default_dot_dp | |
procedure(vector_sub_dp), | public, | nopass, pointer | :: | matvec | => | null() |
Type | Visibility | Attributes | Name | Initial | |||
---|---|---|---|---|---|---|---|
procedure(reduction_sub_sp), | public, | nopass, pointer | :: | inner_product | => | default_dot_sp | |
procedure(vector_sub_sp), | public, | nopass, pointer | :: | matvec | => | null() |
Type | Visibility | Attributes | Name | Initial | |||
---|---|---|---|---|---|---|---|
procedure(logger_sub_dp), | public, | pointer, nopass | :: | callback | => | null() | |
real(kind=dp), | public, | allocatable | :: | tmp(:,:) |
Type | Visibility | Attributes | Name | Initial | |||
---|---|---|---|---|---|---|---|
procedure(logger_sub_sp), | public, | pointer, nopass | :: | callback | => | null() | |
real(kind=sp), | public, | allocatable | :: | tmp(:,:) |