! SUBROUTINE findri(ri, v0, r1, vl, r2, vr, vasy,ichanl) USE Numeric_Kinds_Module !============================================================================== !this subroutine determines a value of r sufficiently distant as to !be considered infinity IMPLICIT none INTEGER :: ichanl REAL(dp), PARAMETER :: tol=1.d-15 REAL(dp) :: ri, r1, vl, r2, vr, vasy, delta, v0 ri=(r1+r2)/2.d0 !ri set to avg of upper and lower bounds delta=ABS(r1-r2)/ri !difference/avg CALL diatomic_v(ri, v0,ichanl) !determine potential at ri DO WHILE(delta.gt.tol) IF(ABS(v0-vasy).gt.tol)THEN !executed if v is not close enough to vasy r1=ri !move farther out vl=v0 ELSE !executed if v is close enough to vasy r2=ri !move farther in vr=v0 ENDIF ri=(r1+r2)/2.d0 !set ri to avg of new upper and lower bounds delta=ABS(r1-r2)/ri !recalculate delta CALL diatomic_v(ri, v0,ichanl) !determine potential at new ri v0=v0 !could be deleted? ENDDO ri=(r1+r2)/2.d0 !determine final value of ri CALL diatomic_v(ri, v0,ichanl) !determine potential at this point RETURN END SUBROUTINE findri