Merge branch 'devel' of mmka.chem.univ.gda.pl:unres into devel
[unres.git] / source / unres / src_MD / readrtns.F
index 08d4125..47850c2 100644 (file)
@@ -138,7 +138,7 @@ C Set up the time limit (caution! The time must be input in minutes!)
       call readi(controlcard,'MAXGEN',maxgen,10000)
       call readi(controlcard,'MAXOVERLAP',maxoverlap,1000)
       call readi(controlcard,"KDIAG",kdiag,0)
-      call readi(controlcard,"RESCALE_MODE",rescale_mode,1)
+      call readi(controlcard,"RESCALE_MODE",rescale_mode,2)
       if(me.eq.king .or. .not. out1file .and. fg_rank.eq.0)
      & write (iout,*) "RESCALE_MODE",rescale_mode
       split_ene=index(controlcard,'SPLIT_ENE').gt.0
@@ -1076,11 +1076,6 @@ czscore          call geom_to_var(nvar,coord_exp_zs(1,1))
           enddo
           call contact(.true.,ncont_ref,icont_ref,co)
         endif
-c        write (iout,*) "constr_dist",constr_dist,nstart_sup,nsup
-        call flush(iout)
-        if (constr_dist.gt.0) call read_dist_constr
-c        write (iout,*) "After read_dist_constr nhpb",nhpb
-        call hpb_partition
         if(me.eq.king.or..not.out1file)
      &   write (iout,*) 'Contact order:',co
         if (pdbref) then
@@ -1097,6 +1092,13 @@ c        write (iout,*) "After read_dist_constr nhpb",nhpb
         enddo
         endif
       endif
+c        write (iout,*) "constr_dist",constr_dist,nstart_sup,nsup
+      if (constr_dist.gt.0) then
+        call read_dist_constr
+        call hpb_partition
+      endif
+c      write (iout,*) "After read_dist_constr nhpb",nhpb
+c      call flush(iout)
       if (indpdb.eq.0 .and. modecalc.ne.2 .and. modecalc.ne.4
      &    .and. modecalc.ne.8 .and. modecalc.ne.9 .and. 
      &    modecalc.ne.10) then
@@ -1811,6 +1813,9 @@ c----------------------------------------------------------------------------
       call readi(minimcard,'MINFUN',minfun,maxmin)
       call reada(minimcard,'TOLF',tolf,1.0D-2)
       call reada(minimcard,'RTOLF',rtolf,1.0D-4)
+      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)
       write (iout,'(/80(1h*)/20x,a/80(1h*))') 
      &         'Options in energy minimization:'
       write (iout,'(4(a,i5),a,1pe14.5,a,1pe14.5)')
@@ -2081,38 +2086,38 @@ C Get parameter filenames and open the parameter files.
       open (isidep,file=sidename,status='old')
 #else
       open(1,file=pref_orig(:ilen(pref_orig))//'.inp',status='old',
-     &  readonly)
+     &action='read')
        open (9,file=prefix(:ilen(prefix))//'.intin',status='unknown')
 C      open (18,file=prefix(:ilen(prefix))//'.entin',status='unknown')
 C Get parameter filenames and open the parameter files.
       call getenv_loc('BONDPAR',bondname)
-      open (ibond,file=bondname,status='old',readonly)
+      open (ibond,file=bondname,status='old',action='read')
       call getenv_loc('THETPAR',thetname)
-      open (ithep,file=thetname,status='old',readonly)
+      open (ithep,file=thetname,status='old',action='read')
 #ifndef CRYST_THETA
       call getenv_loc('THETPARPDB',thetname_pdb)
       print *,"thetname_pdb ",thetname_pdb
-      open (ithep_pdb,file=thetname_pdb,status='old',readonly)
+      open (ithep_pdb,file=thetname_pdb,status='old',action='read')
       print *,ithep_pdb," opened"
 #endif
       call getenv_loc('ROTPAR',rotname)
-      open (irotam,file=rotname,status='old',readonly)
+      open (irotam,file=rotname,status='old',action='read')
 #ifndef CRYST_SC
       call getenv_loc('ROTPARPDB',rotname_pdb)
-      open (irotam_pdb,file=rotname_pdb,status='old',readonly)
+      open (irotam_pdb,file=rotname_pdb,status='old',action='read')
 #endif
       call getenv_loc('TORPAR',torname)
-      open (itorp,file=torname,status='old',readonly)
+      open (itorp,file=torname,status='old',action='read')
       call getenv_loc('TORDPAR',tordname)
-      open (itordp,file=tordname,status='old',readonly)
+      open (itordp,file=tordname,status='old',action='read')
       call getenv_loc('SCCORPAR',sccorname)
-      open (isccor,file=sccorname,status='old',readonly)
+      open (isccor,file=sccorname,status='old',action='read')
       call getenv_loc('FOURIER',fouriername)
-      open (ifourier,file=fouriername,status='old',readonly)
+      open (ifourier,file=fouriername,status='old',action='read')
       call getenv_loc('ELEPAR',elename)
-      open (ielep,file=elename,status='old',readonly)
+      open (ielep,file=elename,status='old',action='read')
       call getenv_loc('SIDEPAR',sidename)
-      open (isidep,file=sidename,status='old',readonly)
+      open (isidep,file=sidename,status='old',action='read')
 #endif
 #ifndef OLDSCP
 C
@@ -2127,7 +2132,7 @@ C
 #elif (defined G77)
       open (iscpp,file=scpname,status='old')
 #else
-      open (iscpp,file=scpname,status='old',readonly)
+      open (iscpp,file=scpname,status='old',action='read')
 #endif
 #endif
       call getenv_loc('PATTERN',patname)
@@ -2138,7 +2143,7 @@ C
 #elif (defined G77)
       open (icbase,file=patname,status='old')
 #else
-      open (icbase,file=patname,status='old',readonly)
+      open (icbase,file=patname,status='old',action='read')
 #endif
 #ifdef MPI
 C Open output file only for CG processes
@@ -2193,6 +2198,7 @@ c      print *,"Processor",myrank," fg_rank",fg_rank
 #if defined(AIX) || defined(PGI)
       if (me.eq.king .or. .not. out1file) 
      &   open(iout,file=outname,status='unknown')
+c#define DEBUG
 #ifdef DEBUG
       if (fg_rank.gt.0) then
         write (liczba,'(i3.3)') myrank/nfgtasks
@@ -2201,6 +2207,7 @@ c      print *,"Processor",myrank," fg_rank",fg_rank
      &   status='unknown')
       endif
 #endif
+c#undef DEBUG
       if(me.eq.king) then
        open(igeom,file=intname,status='unknown',position='append')
        open(ipdb,file=pdbname,status='unknown')
@@ -2212,14 +2219,17 @@ c1out       open(iout,file=outname,status='unknown')
 #else
       if (me.eq.king .or. .not.out1file)
      &    open(iout,file=outname,status='unknown')
+c#define DEBUG
 #ifdef DEBUG
       if (fg_rank.gt.0) then
+        print "Processor",fg_rank," opening output file"
         write (liczba,'(i3.3)') myrank/nfgtasks
         write (ll,'(bz,i3.3)') fg_rank
         open(iout,file="debug"//liczba(:ilen(liczba))//"."//ll,
      &   status='unknown')
       endif
 #endif
+c#undef DEBUG
       if(me.eq.king) then
        open(igeom,file=intname,status='unknown',access='append')
        open(ipdb,file=pdbname,status='unknown')
@@ -2402,6 +2412,18 @@ c      write (iout,*) "IPAIR"
 c      do i=1,npair_
 c        write (iout,*) i,ipair_(1,i),ipair_(2,i),wpair_(i)
 c      enddo
+      if (.not.refstr .and. nfrag.gt.0) then
+        write (iout,*) 
+     &  "ERROR: no reference structure to compute distance restraints"
+        write (iout,*)
+     &  "Restraints must be specified explicitly (NDIST=number)"
+        stop 
+      endif
+      if (nfrag.lt.2 .and. npair.gt.0) then 
+        write (iout,*) "ERROR: Less than 2 fragments specified",
+     &   " but distance restraints between pairs requested"
+        stop 
+      endif 
       call flush(iout)
       do i=1,nfrag_
         if (ifrag_(1,i).lt.nstart_sup) ifrag_(1,i)=nstart_sup
@@ -2491,7 +2513,7 @@ c        write (iout,*) i,ifrag_(1,i),ifrag_(2,i),wfrag_(i)
 #ifdef MPI
       if (.not.out1file .or. me.eq.king) then
 #endif
-      do i=1,nhbp
+      do i=1,nhpb
           write (iout,'(a,3i5,2f8.2,i2,f10.1)') "+dist.constr ",
      &     i,ihpb(i),jhpb(i),dhpb(i),dhpb1(i),ibecarb(i),forcon(i)
       enddo