-
Notifications
You must be signed in to change notification settings - Fork 11
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
This tool can be found at github.com/pseedwald/fprittify I used the --indent 4 options as this is closest to what we have done in the past.
- Loading branch information
1 parent
e75b2e0
commit af8fc8f
Showing
84 changed files
with
14,326 additions
and
14,575 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -1,80 +1,80 @@ | ||
Subroutine adapt_cof(downSuccess,nPTReplicas,S_val,N_average,& | ||
lowerRepExe,upperRepExe,& | ||
lowerRail,upperRail,& | ||
repAnnealSpeed,replicaBounds) | ||
use params, only: dp | ||
implicit none | ||
Subroutine adapt_cof(downSuccess, nPTReplicas, S_val, N_average, & | ||
lowerRepExe, upperRepExe, & | ||
lowerRail, upperRail, & | ||
repAnnealSpeed, replicaBounds) | ||
use params, only: dp | ||
implicit none | ||
|
||
! inputs | ||
integer, intent(in) :: nPTReplicas | ||
integer, intent(in) :: downSuccess(nPTReplicas) | ||
integer, intent(in) :: N_average | ||
real(dp), intent(in) :: lowerRepExe | ||
real(dp), intent(in) :: upperRepExe | ||
real(dp), intent(in) :: lowerRail | ||
real(dp), intent(in) :: upperRail | ||
real(dp), intent(in) :: repAnnealSpeed | ||
logical, intent(in) :: replicaBounds ! output between 0 and 1 | ||
integer, intent(in) :: nPTReplicas | ||
integer, intent(in) :: downSuccess(nPTReplicas) | ||
integer, intent(in) :: N_average | ||
real(dp), intent(in) :: lowerRepExe | ||
real(dp), intent(in) :: upperRepExe | ||
real(dp), intent(in) :: lowerRail | ||
real(dp), intent(in) :: upperRail | ||
real(dp), intent(in) :: repAnnealSpeed | ||
logical, intent(in) :: replicaBounds ! output between 0 and 1 | ||
! input/output | ||
real(dp), intent(inout) :: S_val(nPTReplicas) | ||
real(dp), intent(inout) :: S_val(nPTReplicas) | ||
|
||
! internal variables | ||
real(dp), allocatable :: newS_val(:) | ||
integer rep | ||
real(dp) successRate | ||
real(dp), allocatable :: newS_val(:) | ||
integer rep | ||
real(dp) successRate | ||
|
||
allocate( newS_val(1:nPTReplicas) ) | ||
allocate (newS_val(1:nPTReplicas)) | ||
|
||
if(.false.) then | ||
if ((downSuccess(2).lt.0.99_dp).and.(newS_val(1).lt.1.0_dp)) then | ||
newS_val(1) = S_val(1) + repAnnealSpeed | ||
else | ||
newS_val(1) = S_val(1) | ||
endif | ||
else | ||
newS_val(1) = S_val(1) | ||
endif | ||
do rep = 2,nPTReplicas | ||
successRate = dble(downSuccess(rep))/dble(N_average) | ||
if (S_val(rep).lt.S_val(rep-1)) then | ||
print*, "Error in adapt_cof!" | ||
print*, "S_val(", rep, ") = ", S_val(rep), " < S_val(", rep-1, ") = ", S_val(rep-1) | ||
print*, S_val | ||
stop 1 | ||
endif | ||
! addapt spacing | ||
if (successRate.lt.lowerRepExe) then | ||
newS_val(rep) = newS_val(rep-1) + (S_val(rep)-S_val(rep-1))*0.95_dp | ||
elseif (successRate.gt.upperRepExe) then | ||
newS_val(rep) = newS_val(rep-1) + (S_val(rep)-S_val(rep-1))*1.05_dp | ||
else | ||
newS_val(rep) = newS_val(rep-1) + S_val(rep)-S_val(rep-1) | ||
endif | ||
! don't addapt too fast. a.k.a. anneal | ||
if (newS_val(rep).gt.repAnnealSpeed + S_val(rep)) then | ||
newS_val(rep) = S_val(rep) + repAnnealSpeed | ||
elseif(newS_val(rep).lt.S_val(rep)-repAnnealSpeed) then | ||
newS_val(rep) = S_val(rep)-repAnnealSpeed | ||
endif | ||
if (.false.) then | ||
if ((downSuccess(2) .lt. 0.99_dp) .and. (newS_val(1) .lt. 1.0_dp)) then | ||
newS_val(1) = S_val(1) + repAnnealSpeed | ||
else | ||
newS_val(1) = S_val(1) | ||
endif | ||
else | ||
newS_val(1) = S_val(1) | ||
endif | ||
do rep = 2, nPTReplicas | ||
successRate = dble(downSuccess(rep))/dble(N_average) | ||
if (S_val(rep) .lt. S_val(rep - 1)) then | ||
print *, "Error in adapt_cof!" | ||
print *, "S_val(", rep, ") = ", S_val(rep), " < S_val(", rep - 1, ") = ", S_val(rep - 1) | ||
print *, S_val | ||
stop 1 | ||
endif | ||
! addapt spacing | ||
if (successRate .lt. lowerRepExe) then | ||
newS_val(rep) = newS_val(rep - 1) + (S_val(rep) - S_val(rep - 1))*0.95_dp | ||
elseif (successRate .gt. upperRepExe) then | ||
newS_val(rep) = newS_val(rep - 1) + (S_val(rep) - S_val(rep - 1))*1.05_dp | ||
else | ||
newS_val(rep) = newS_val(rep - 1) + S_val(rep) - S_val(rep - 1) | ||
endif | ||
! don't addapt too fast. a.k.a. anneal | ||
if (newS_val(rep) .gt. repAnnealSpeed + S_val(rep)) then | ||
newS_val(rep) = S_val(rep) + repAnnealSpeed | ||
elseif (newS_val(rep) .lt. S_val(rep) - repAnnealSpeed) then | ||
newS_val(rep) = S_val(rep) - repAnnealSpeed | ||
endif | ||
|
||
! inforce limits on addaption | ||
if ((newS_val(rep)-newS_val(rep-1)).lt.lowerRail) then | ||
newS_val(rep) = newS_val(rep-1) + lowerRail | ||
endif | ||
if ((newS_val(rep)-newS_val(rep-1)).gt.upperRail) then | ||
newS_val(rep) = newS_val(rep-1) + upperRail | ||
endif | ||
if (newS_val(rep).lt.newS_val(rep-1)) then | ||
print*, "Error in adaptS_val!!!" | ||
stop 1 | ||
endif | ||
! inforce limits on addaption | ||
if ((newS_val(rep) - newS_val(rep - 1)) .lt. lowerRail) then | ||
newS_val(rep) = newS_val(rep - 1) + lowerRail | ||
endif | ||
if ((newS_val(rep) - newS_val(rep - 1)) .gt. upperRail) then | ||
newS_val(rep) = newS_val(rep - 1) + upperRail | ||
endif | ||
if (newS_val(rep) .lt. newS_val(rep - 1)) then | ||
print *, "Error in adaptS_val!!!" | ||
stop 1 | ||
endif | ||
|
||
if (replicaBounds) then | ||
! Warning, I think this causes problems with the lower rail | ||
if(newS_val(rep).lt.0.0_dp) newS_val(rep) = 0.0_dp | ||
if(newS_val(rep).gt.1.0_dp) newS_val(rep) = 1.0_dp | ||
endif | ||
enddo | ||
S_val = newS_val | ||
deallocate (newS_val) | ||
if (replicaBounds) then | ||
! Warning, I think this causes problems with the lower rail | ||
if (newS_val(rep) .lt. 0.0_dp) newS_val(rep) = 0.0_dp | ||
if (newS_val(rep) .gt. 1.0_dp) newS_val(rep) = 1.0_dp | ||
endif | ||
enddo | ||
S_val = newS_val | ||
deallocate (newS_val) | ||
end subroutine |
Oops, something went wrong.