Skip to content

Commit 8519e1b

Browse files
committed
use optval
1 parent 6c4fb1d commit 8519e1b

File tree

3 files changed

+15
-12
lines changed

3 files changed

+15
-12
lines changed

example/linalg/example_solve_custom.f90

Lines changed: 4 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,7 @@ module custom_solver
55
solver_workspace_dp_type, &
66
solve_pcg_kernel, &
77
stdlib_size_wksp_pcg
8+
use stdlib_optval, only: optval
89
implicit none
910
contains
1011
subroutine solve_pcg_custom(A,b,x,di,tol,maxiter,restart,workspace)
@@ -28,9 +29,9 @@ subroutine solve_pcg_custom(A,b,x,di,tol,maxiter,restart,workspace)
2829
real(dp) :: norm_sq0
2930
!-------------------------
3031
n = size(b)
31-
maxiter_ = n; if(present(maxiter)) maxiter_ = maxiter
32-
restart_ = .true.; if(present(restart)) restart_ = restart
33-
tol_ = 1.e-4_dp; if(present(tol)) tol_ = tol
32+
maxiter_ = optval(x=maxiter, default=n)
33+
restart_ = optval(x=restart, default=.true.)
34+
tol_ = optval(x=tol, default=1.e-4_dp)
3435
norm_sq0 = 0._dp
3536
!-------------------------
3637
! internal memory setup

src/stdlib_linalg_iterative_solvers_cg.fypp

Lines changed: 4 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -9,6 +9,7 @@ submodule(stdlib_linalg_iterative_solvers) stdlib_linalg_iterative_cg
99
use stdlib_sparse
1010
use stdlib_constants
1111
use stdlib_linalg_iterative_solvers
12+
use stdlib_optval, only: optval
1213
implicit none
1314

1415
contains
@@ -88,9 +89,9 @@ contains
8889
logical(int8), pointer :: di_(:)
8990
!-------------------------
9091
n = size(b)
91-
maxiter_ = n; if(present(maxiter)) maxiter_ = maxiter
92-
restart_ = .true.; if(present(restart)) restart_ = restart
93-
tol_ = 1.e-4_${s}$; if(present(tol)) tol_ = tol
92+
maxiter_ = optval(x=maxiter, default=n)
93+
restart_ = optval(x=restart, default=.true.)
94+
tol_ = optval(x=tol, default=1.e-4_${s}$)
9495

9596
!-------------------------
9697
! internal memory setup

src/stdlib_linalg_iterative_solvers_pcg.fypp

Lines changed: 7 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -9,6 +9,7 @@ submodule(stdlib_linalg_iterative_solvers) stdlib_linalg_iterative_pcg
99
use stdlib_sparse
1010
use stdlib_constants
1111
use stdlib_linalg_iterative_solvers
12+
use stdlib_optval, only: optval
1213
implicit none
1314

1415
enum, bind(c)
@@ -93,7 +94,7 @@ contains
9394
${t}$, intent(in) :: b(:)
9495
${t}$, intent(inout) :: x(:)
9596
${t}$, intent(in), optional :: tol
96-
logical(1), intent(in), optional, target :: di(:)
97+
logical(int8), intent(in), optional, target :: di(:)
9798
integer, intent(in), optional :: maxiter
9899
logical, intent(in), optional :: restart
99100
integer, intent(in), optional :: precond
@@ -106,18 +107,18 @@ contains
106107
integer :: n, maxiter_
107108
${t}$ :: tol_
108109
logical :: restart_
109-
logical(1), pointer :: di_(:)
110+
logical(int8), pointer :: di_(:)
110111
!-------------------------
111112
! working data for preconditioner
112113
integer :: precond_
113114
${t}$, allocatable :: diagonal(:)
114115

115116
!-------------------------
116117
n = size(b)
117-
maxiter_ = n; if(present(maxiter)) maxiter_ = maxiter
118-
restart_ = .true.; if(present(restart)) restart_ = restart
119-
tol_ = 1.e-4_${s}$; if(present(tol)) tol_ = tol
120-
precond_ = pc_none; if(present(precond)) precond_ = precond
118+
maxiter_ = optval(x=maxiter, default=n)
119+
restart_ = optval(x=restart, default=.true.)
120+
tol_ = optval(x=tol, default=1.e-4_${s}$)
121+
precond_ = optval(x=precond, default=pc_none)
121122
!-------------------------
122123
! internal memory setup
123124
! preconditioner

0 commit comments

Comments
 (0)