added CMake build + fixed gfortran build
[unres.git] / source / ga / GA.f
index aecaebc..3446217 100644 (file)
@@ -4,7 +4,7 @@
       include 'GA.inc'
       include 'common.inc'
       include 'io.inc'
-      real*16 :: WEIGHTS(18)
+      real*8 :: WEIGHTS(18)
       integer*4 :: i,j,m,n,iloc,pos,iter,maxiter,numarg,tmplen
       integer*4 :: WybierzOsobnika,Najlepszy,ZnajdzPodobnego,FindWorst
       integer*4 :: status
@@ -109,16 +109,16 @@ c
 c Do we actual use a Genetic Algorithm?
 c
 
-      if (do_ga.eq..true.) then
+      if (do_ga.eqv..true.) then
 
 c Yes. This is only done when doing second pass with ZSCORE (without weight minimalizaton)
 c or with weight minimalization disabled (maxmin=0) just to obtain final score)
 
-c \\---//================================================================
-c  \\-//           
-c   "//  Genetic Algorithm code starts here  
-c   //-\\                                        
-c =//---\\===============================================================
+c \\---//================================================================c
+c  \\-//                                                                 c
+c   "//  Genetic Algorithm code starts here                              c
+c   //-\\                                                                c
+c =//---\\===============================================================c
 
       call ReadZEnergy(BANK_MULTIPLIER*banksize,populacja)
       do i=1,BANK_MULTIPLIER*banksize
@@ -420,7 +420,7 @@ c      call WritePopSum()
 c
 c Create the inputs
 c 
-      write(tmptext,'(I)') generation+1
+      write(tmptext,'(I3)') generation+1
       call write2log("Preparing inputs for next generation ("//trim(adju&
      &stl(tmptext))//")")
       call CreateInputs(BANK_MULTIPLIER*banksize,populacja)
@@ -519,7 +519,7 @@ c ----------------------------------------------------------------------
 
       integer*4 function FindWorst(rozmiar,pop)
        integer*4 :: rozmiar, i, idx
-       real*16 :: pop,last
+       real*8 :: pop,last
        dimension pop(rozmiar,21)
        
        last=0.0
@@ -711,7 +711,7 @@ c ----------------------------------------------------------------------
        include 'TEST.inc'
        real*8 :: osobnik(20)
        integer*4 :: i
-       FunkcjaCeluB = 20 + -exp(-abs(WLONG-osobnik(1)))                 &
+       FunkcjaCeluB = 20 -exp(-abs(WLONG-osobnik(1)))                   &
      & - exp(-abs(WSCP-osobnik(2)))                                     &
      & - exp(-abs(WELEC-osobnik(3)))                                    &
      & - exp(-abs(WBOND-osobnik(4)))                                    &
@@ -891,7 +891,7 @@ c GENERATIONS=
          select case (wiersz(1:12))
           case('GENERATIONS=','generations=')
            tmp = wiersz(13:len_trim(wiersz))
-           read(tmp,'(I)') maxgen 
+           read(tmp,'(I4)') maxgen 
          end select 
 
 c CICUTOFF=
@@ -923,7 +923,7 @@ c POPULATION=
          select case(wiersz(1:11))
           case('POPULATION=','population=')
            tmp = wiersz(12:len_trim(wiersz))
-           read(tmp,'(I)') banksize
+           read(tmp,'(I4)') banksize
            call write2log("Bank size is set to "//tmp)
          end select
 
@@ -981,7 +981,7 @@ c MAXMIN=
          select case(wiersz(1:7))
           case('MAXMIN=','maxmin=')
           tmp = wiersz(8:len_trim(wiersz))
-          read(tmp,'(I)') maxminstep
+          read(tmp,'(I4)') maxminstep
           if (maxminstep.gt.0) then
            call write2log("ZSCORE weights minimalization set to "//tmp)
            do_optima=.true.
@@ -1315,7 +1315,7 @@ c        call write2log("Delta is "//tmp)
         if (delta.lt.mindelta) then
           mindelta=delta
           pozycja=i
-          write(tmp,'(F7.5,X,I)') delta,pozycja
+          write(tmp,'(F7.5,X,I4)') delta,pozycja
           call write2log("Delta is "//tmp)
         endif
       end do
@@ -1688,7 +1688,7 @@ c ----------------------------------------------------------------------
        include 'common.inc'
        real*8,dimension(banksize,21) :: b
        real*8 :: d,avgd
-       integer*4 :: nd
+       integer*4 :: nd,w
 
        d=0.0                          ! distance
        nd = (banksize-1)*banksize/2   ! number of distances to calculate