gfortran error
[unres.git] / source / unres / src_MD-M / readrtns_CSA.F
index 2a591cf..2cbb825 100644 (file)
@@ -241,10 +241,10 @@ C      endif
       if ((lipbufthick*2.0d0).gt.lipthick)
      &write(iout,*) "WARNING WRONG SIZE OF LIP AQ BUF"
       endif
-      write(iout,*) "bordliptop=",bordliptop
-      write(iout,*) "bordlipbot=",bordlipbot
-      write(iout,*) "bufliptop=",bufliptop
-      write(iout,*) "buflipbot=",buflipbot
+c      write(iout,*) "bordliptop=",bordliptop
+c      write(iout,*) "bordlipbot=",bordlipbot
+c      write(iout,*) "bufliptop=",bufliptop
+c      write(iout,*) "buflipbot=",buflipbot
 
 
       if (me.eq.king .or. .not.out1file ) 
@@ -963,7 +963,7 @@ c----------------------
           call MPI_Finalize(MPI_COMM_WORLD,IERROR)
           stop 'Error reading reference structure'
 #endif
-   39     call chainbuild
+   39     call chainbuild_extconf
           call setup_var
 czscore          call geom_to_var(nvar,coord_exp_zs(1,1))
           nstart_sup=nnt
@@ -980,7 +980,7 @@ czscore          call geom_to_var(nvar,coord_exp_zs(1,1))
 c        write (iout,*) "constr_dist",constr_dist,nstart_sup,nsup
         call flush(iout)
         if (constr_dist.gt.0) call read_dist_constr
-        write (iout,*) "After read_dist_constr nhpb",nhpb
+c        write (iout,*) "After read_dist_constr nhpb",nhpb
         if ((AFMlog.gt.0).or.(selfguide.gt.0)) call read_afminp
         if(me.eq.king.or..not.out1file)
      &   write (iout,*) 'Contact order:',co
@@ -1082,7 +1082,10 @@ C initial geometry.
             enddo
             return
           else
+            write (iout,*) "Calling read_ang"
             call read_angles(inp,*36)
+            write (iout,*) "Calling chainbuild"
+            call chainbuild_extconf
           endif
           goto 37
    36     write (iout,'(a)') 'Error reading angle file.'
@@ -1107,6 +1110,53 @@ C initial geometry.
           omeg(i)=-120d0*deg2rad
           if (itype(i).le.0) omeg(i)=-omeg(i)
          enddo
+c from old chainbuild
+C
+C Define the origin and orientation of the coordinate system and locate the
+C first three CA's and SC(2).
+C
+      call orig_frame
+*
+* Build the alpha-carbon chain.
+*
+      do i=4,nres
+       call locate_next_res(i)
+      enddo     
+C
+C First and last SC must coincide with the corresponding CA.
+C
+      do j=1,3
+       dc(j,nres+1)=0.0D0
+        dc_norm(j,nres+1)=0.0D0
+       dc(j,nres+nres)=0.0D0
+        dc_norm(j,nres+nres)=0.0D0
+        c(j,nres+1)=c(j,1)
+        c(j,nres+nres)=c(j,nres)
+      enddo
+C
+C Define the origin and orientation of the coordinate system and locate the
+C first three CA's and SC(2).
+C
+      call orig_frame
+*
+* Build the alpha-carbon chain.
+*
+      do i=4,nres
+       call locate_next_res(i)
+      enddo     
+C
+C First and last SC must coincide with the corresponding CA.
+C
+      do j=1,3
+       dc(j,nres+1)=0.0D0
+        dc_norm(j,nres+1)=0.0D0
+       dc(j,nres+nres)=0.0D0
+        dc_norm(j,nres+nres)=0.0D0
+        c(j,nres+1)=c(j,1)
+        c(j,nres+nres)=c(j,nres)
+      enddo
+
+c
         else
           if(me.eq.king.or..not.out1file)
      &     write (iout,'(a)') 'Random-generated initial geometry.'
@@ -1782,6 +1832,8 @@ c----------------------------------------------------------------------------
       include 'DIMENSIONS'
       include 'COMMON.MINIM'
       include 'COMMON.IOUNITS'
+      include 'COMMON.CONTROL'
+      include 'COMMON.SETUP'
       character*80 ucase
       character*320 minimcard
       call card_concat(minimcard)
@@ -1794,12 +1846,18 @@ c----------------------------------------------------------------------------
       print_min_stat=min0(index(minimcard,'PRINT_MIN_STAT'),1)
       print_min_res=min0(index(minimcard,'PRINT_MIN_RES'),1)
       print_min_ini=min0(index(minimcard,'PRINT_MIN_INI'),1)
+#ifdef MPI
+      if (.not. out1file .or. me.eq.king) then
+#endif
       write (iout,'(/80(1h*)/20x,a/80(1h*))') 
      &         'Options in energy minimization:'
       write (iout,'(4(a,i5),a,1pe14.5,a,1pe14.5)')
      & 'MaxMin:',MaxMin,' MaxFun:',MaxFun,
      & 'MinMin:',MinMin,' MinFun:',MinFun,
      & ' TolF:',TolF,' RTolF:',RTolF
+#ifdef MPI
+      endif
+#endif
       return
       end
 c----------------------------------------------------------------------------
@@ -2093,7 +2151,7 @@ c      print *,ithep_pdb," opened"
       call getenv_loc('SIDEPAR',sidename)
       open (isidep,file=sidename,status='old',readonly)
       call getenv_loc('LIPTRANPAR',liptranname)
-      open (iliptranpar,file=liptranname,status='old',action='read')
+      open (iliptranpar,file=liptranname,status='old',readonly)
 #ifndef CRYST_SC
       call getenv_loc('ROTPARPDB',rotname_pdb)
       open (irotam_pdb,file=rotname_pdb,status='old',action='read')
@@ -2560,6 +2618,7 @@ c    &    sigma_odl_temp(maxres,maxres,max_template)
       logical lprn /.true./
       integer ilen
       external ilen
+      logical liiflag
 c
 c     FP - Nov. 2014 Temporary specifications for new vars
 c
@@ -2588,13 +2647,17 @@ c Alternative: reading from input
       read2sigma=(index(controlcard,'READ2SIGMA').gt.0)
       start_from_model=(index(controlcard,'START_FROM_MODELS').gt.0)
       if(.not.read2sigma.and.start_from_model) then
-          write(iout,*) 'START_FROM_MODELS works only with READ2SIGMA'
+          if(me.eq.king .or. .not. out1file .and. fg_rank.eq.0) 
+     &      write(iout,*) 'START_FROM_MODELS works only with READ2SIGMA'
           start_from_model=.false.
       endif
-      if(start_from_model) write(iout,*) 'START_FROM_MODELS is ON'
+      if(start_from_model .and. (me.eq.king .or. .not. out1file))
+     &    write(iout,*) 'START_FROM_MODELS is ON'
       if(start_from_model .and. rest) then 
-        write(iout,*) 'START_FROM_MODELS is OFF'
-        write(iout,*) 'remove restart keyword from input'
+        if(me.eq.king .or. .not. out1file .and. fg_rank.eq.0) then
+         write(iout,*) 'START_FROM_MODELS is OFF'
+         write(iout,*) 'remove restart keyword from input'
+        endif
       endif
       if (homol_nset.gt.1)then
          call card_concat(controlcard)
@@ -2618,7 +2681,7 @@ cd      call flush(iout)
       lim_odl=0
       lim_dih=0
 c
-      write(iout,*) 'nnt=',nnt,'nct=',nct
+c      write(iout,*) 'nnt=',nnt,'nct=',nct
 c
       do i = nnt,nct
         do k=1,constr_homology
@@ -2637,11 +2700,8 @@ c
       do k=1,constr_homology
 
         read(inp,'(a)') pdbfile
-c  Next stament causes error upon compilation (?)
-c       if(me.eq.king.or. .not. out1file)
-c         write (iout,'(2a)') 'PDB data will be read from file ',
-c    &   pdbfile(:ilen(pdbfile))
-         write (iout,'(a,5x,a)') 'HOMOL: Opening PDB file',
+        if(me.eq.king .or. .not. out1file)
+     &    write (iout,'(a,5x,a)') 'HOMOL: Opening PDB file',
      &  pdbfile(:ilen(pdbfile))
         open(ipdbin,file=pdbfile,status='old',err=33)
         goto 34
@@ -2690,7 +2750,8 @@ c         write(iout,*) "tpl_k_rescore - ",tpl_k_rescore
              rescore(k,i_tmp)=rescore_tmp
              rescore2(k,i_tmp)=rescore2_tmp
              rescore3(k,i_tmp)=rescore3_tmp
-             write(iout,'(a7,i5,3f10.5,i5)') "rescore",
+             if (.not. out1file .or. me.eq.king)
+     &        write(iout,'(a7,i5,3f10.5,i5)') "rescore",
      &                      i_tmp,rescore2_tmp,rescore_tmp,
      &                                rescore3_tmp,idomain_tmp
             else
@@ -2874,22 +2935,34 @@ c shift data in all arrays
 c
       if (waga_dist.ne.0.0d0) then
         ii=0
+        liiflag=.true.
         do i=nnt,nct-2 
          do j=i+2,nct 
           ii=ii+1
-          if (ii_in_use(ii).eq.0) then 
-             do ki=ii,lim_odl-1
-              ires_homo(ki)=ires_homo(ki+1)
-              jres_homo(ki)=jres_homo(ki+1)
-              ii_in_use(ki)=ii_in_use(ki+1)
+          if (ii_in_use(ii).eq.0.and.liiflag) then
+            liiflag=.false.
+            iistart=ii
+          endif
+          if (ii_in_use(ii).ne.0.and..not.liiflag.or.
+     &                   .not.liiflag.and.ii.eq.lim_odl) then
+             if (ii.eq.lim_odl) then
+              iishift=ii-iistart+1
+             else
+              iishift=ii-iistart
+             endif
+             liiflag=.true.
+             do ki=iistart,lim_odl-iishift
+              ires_homo(ki)=ires_homo(ki+iishift)
+              jres_homo(ki)=jres_homo(ki+iishift)
+              ii_in_use(ki)=ii_in_use(ki+iishift)
               do k=1,constr_homology
-               odl(k,ki)=odl(k,ki+1)
-               sigma_odl(k,ki)=sigma_odl(k,ki+1)
-               l_homo(k,ki)=l_homo(k,ki+1)
+               odl(k,ki)=odl(k,ki+iishift)
+               sigma_odl(k,ki)=sigma_odl(k,ki+iishift)
+               l_homo(k,ki)=l_homo(k,ki+iishift)
               enddo
              enddo
-             ii=ii-1
-             lim_odl=lim_odl-1
+             ii=ii-iishift
+             lim_odl=lim_odl-iishift
           endif
          enddo
         enddo