Bugfix for SS wham and introduction SS to cluster analysis
[unres.git] / source / wham / src / bxread.F
1       subroutine bxread(nazwa,islice,ii,jj,kk,ll,mm,iR,ib,iparm)
2       implicit none
3       include "DIMENSIONS"
4       include "DIMENSIONS.ZSCOPT"
5       include "DIMENSIONS.FREE"
6 #ifdef MPI
7       include "mpif.h"
8       integer IERROR,ERRCODE,STATUS(MPI_STATUS_SIZE)
9       include "COMMON.MPI"
10 #endif
11       include "COMMON.CHAIN"
12       include "COMMON.IOUNITS"
13       include "COMMON.PROTFILES"
14       include "COMMON.NAMES"
15       include "COMMON.VAR"
16       include "COMMON.GEO"
17       include "COMMON.ENEPS"
18       include "COMMON.PROT"
19       include "COMMON.INTERACT"
20       include "COMMON.FREE"
21       include "COMMON.SBRIDGE"
22       real*4 csingle(3,maxres2)
23       character*64 nazwa,bprotfile_temp
24       character*3 liczba
25       integer i,is,ie,j,ii,jj,k,kk,l,ll,mm,if,m
26       integer nrec,nlines,iscor,islice
27       double precision energ
28       integer ilen,iroof
29       external ilen,iroof
30       double precision rmsdev,energia(0:max_ene),efree,eini,temp
31       double precision prop(maxQ)
32       integer ntot_all(0:maxprocs-1)
33       integer iparm,ib,iib,ir,nprop,nthr,nrec_slice
34       double precision etot,time
35       logical lerr
36       nrec_slice=(rec_end(iR,ib,iparm)-rec_start(iR,ib,iparm)+1)/nslice
37       is=rec_start(iR,ib,iparm)+(islice-1)*nrec_slice
38       ie=rec_start(iR,ib,iparm)+islice*nrec_slice-1
39       write (iout,*) "bxread: islice",islice," nslice",nslice,
40      & " nrec_slice",nrec_slice
41       write (iout,*) "is",is," ie",ie,"rec_start",
42      &  rec_start(iR,ib,iparm)," rec_end",rec_end(iR,ib,iparm)
43       do i=is,ie
44             read(ientin,rec=i+1,err=101) 
45      &        ((csingle(l,k),l=1,3),k=1,nres),
46      &        ((csingle(l,k+nres),l=1,3),k=nnt,nct),
47      &        nss,(ihpb(k),jhpb(k),k=1,nss),
48      &        eini,efree,rmsdev,(prop(j),j=1,nQ),iscor
49             ii=ii+1
50             kk=kk+1
51        write(iout,*) 'BXWEJ',eini,l
52        flush(iout)
53             if (mod(kk,isampl(iparm)).eq.0) then
54             jj=jj+1
55             write(ientout,rec=jj)
56      &        ((csingle(l,k),l=1,3),k=1,nres),
57      &        ((csingle(l,k+nres),l=1,3),k=nnt,nct),
58      &        nss,(ihpb(k),jhpb(k),k=1,nss),
59      &        eini,efree,rmsdev,(prop(j),j=1,nQ),iR,ib,iparm
60 #ifdef DEBUG
61             do l=1,2*nres
62               do j=1,3
63                 c(j,l)=csingle(j,l)
64               enddo
65             enddo
66             call int_from_cart1(.false.)
67             write (iout,*) "Writing conformation, record",jj
68             write (iout,*) "Cartesian coordinates"
69             write (iout,'(8f10.5)') ((c(j,m),j=1,3),m=1,nres)
70             write (iout,'(8f10.5)') ((c(j,m+nres),j=1,3),m=nnt,nct)
71             write (iout,*) "Internal coordinates"
72             write (iout,'(8f10.4)') (vbld(k),k=nnt+1,nct)
73             write (iout,'(8f10.4)') (vbld(k),k=nres+nnt,nres+nct)
74             write (iout,'(8f10.4)') (rad2deg*theta(k),k=3,nres)
75             write (iout,'(8f10.4)') (rad2deg*phi(k),k=4,nres)
76             write (iout,'(8f10.4)') (rad2deg*alph(k),k=2,nres-1)
77             write (iout,'(8f10.4)') (rad2deg*omeg(k),k=2,nres-1)
78             write (iout,'(16i5)') nss,(ihpb(k),jhpb(k),k=1,nss)
79             write (iout,'(f10.5,i5)') rmsdev,iscor
80 #endif
81             endif
82           enddo
83   101     continue
84           close(ientin)
85           write (iout,*) ii," conformations read from DA file ",
86      &      nazwa(:ilen(nazwa))
87           write (iout,*) kk," conformations read so far, slice",islice
88           write (iout,*) jj," conformations stored so far, slice",islice
89
90       return
91       end