30 integer,
intent(in) :: is,l
31 real(8),
intent(in) :: ufix
32 real(8),
intent(inout) :: lambda0
33 real(8),
intent(out) :: lambda
36 integer,
parameter :: maxit=100
39 real(8),
parameter :: umin=1.d-4
41 real(8),
parameter :: lambdamin=1.d-2
44 real(8),
parameter :: lambdamax=50.d0
46 real(8),
parameter :: dl0=0.5d0
47 real(8) f,fp,lambdap,dl,tol
49 real(8),
external :: fyukawa,fyukawa0
53 if (
mp_mpi)
write(*,
'("Info(findlambda): lambda set to lambdamax : ",& 65 if (lambda < lambdamin)
then 67 f=fyukawa0(is,l,0)-ufix
70 f=fyukawa(is,l,0,lambda)-ufix
72 if ((f*fp) < 0) dl=-0.5d0*dl
77 if (abs(f) < tol)
goto 10
84 if (lambdap < lambdamin)
then 86 fp=fyukawa0(is,l,0)-ufix
89 fp=fyukawa(is,l,0,lambdap)-ufix
94 if (lambda < lambdamin)
then 96 f=fyukawa0(is,l,0)-ufix
99 f=fyukawa(is,l,0,lambda)-ufix
102 if (abs(f) < tol)
goto 20
104 dl=-f*((lambda-lambdap)/(f-fp))
111 if (nit >= maxit)
then 113 write(*,
'("Error(findlambda): max number of iterations to obtain lambda & 120 lambda0=lambda-0.5d0*dl0
121 if (
mp_mpi)
write(*,
'("Info(findlambda): lambda obtained in ",I4,& 122 &" iterations")') nit
subroutine findlambda(is, l, ufix, lambda0, lambda)