1 subroutine func1(n,What,x)
4 include "DIMENSIONS.ZSCOPT"
12 include "COMMON.WEIGHTS"
13 include "COMMON.WEIGHTDER"
14 include "COMMON.CLASSES"
15 include "COMMON.ENERGIES"
16 include "COMMON.IOUNITS"
17 include "COMMON.VMCPAR"
18 include "COMMON.OPTIM"
19 include "COMMON.NAMES"
20 include "COMMON.INTERACT"
21 include "COMMON.TIME1"
22 include "COMMON.CHAIN"
23 include "COMMON.PROTFILES"
24 include "COMMON.COMPAR"
25 include "COMMON.PROTNAME"
26 include "COMMON.THERMAL"
27 include "COMMON.TORSION"
28 C Define local variables
29 integer i,ii,iii,ind,jj,j,k,l,ik,jk,iprot,ib,l1,l2,ll1,ll2,
32 integer ipass_conf,istart_conf,iend_conf
33 double precision energia(0:max_ene)
34 double precision etoti,sumpart,esquarei,emeani,elowesti,enepsjk,
35 & eave_pft(max_ene),emix_pft(max_ene),
36 & elowest_t(2,maxT),esquare_ft,
37 & elowest_aux(2,maxT),
38 & efree_t,emixsq_pft(max_ene),
39 & eneps_mixt(nntyp),eneps_meant(nntyp),
40 & enepsave_ft(nntyp),eneps_mix_ft(nntyp),
41 & eneps_mixsq_ft(nntyp),emean_ft,fac
43 double precision e_total_(maxstr_proc),eini_(maxstr_proc),
44 & entfac_(maxstr_proc),rmstb_(maxstr_proc)
47 double precision tcpu_ini,tcpu
58 write (iout,*) "FUNC1: Init_Ene ",init_ene
60 write (iout,*) "ELOWEST at the beginning of FUC1"
62 do ibatch=1,natlike(iprot)+2
63 do ib=1,nbeta(ibatch,iprot)
64 write (iout,*) "iprot",iprot," ibatch",ibatch," ib",ib,
65 & " elowest",elowest(ib,ibatch,iprot)
71 call MPI_Bcast( What, 1, MPI_INTEGER, Master, Comm1, IERROR)
72 call MPI_Bcast( cutoffeval, 1, MPI_LOGICAL, Master, Comm1, IERROR)
73 call MPI_Bcast(x(1),n,MPI_DOUBLE_PRECISION, Master, Comm1, IERROR)
76 write (iout,*) "Processor",me,me1," What",What
77 write (iout,*) "Processor",me,me1," x",(x(i),i=1,n)
82 write (iout,*) "x",(x(i),i=1,n)
86 C Convert variables into weights and other UNRES energy parameters.
88 C Calculate the total energies.
90 c write (iout,*) "Processor",me," nprot",nprot
91 c Revise the list of conformations
93 write (iout,*) "MAKE_LIST called"
95 call MPI_Bcast( enecut(1), nprot, MPI_DOUBLE_PRECISION,
96 & Master, Comm1, IERROR)
97 call make_list(.true.,.false.,n,x)
103 open(icsa_rbank,file="corr."//protname(iprot),
104 & access="direct",form="formatted",recl=25+10*natlike(iprot))
105 vormat='(2i6,2i3,e15.5,'
106 if (natlike(iprot).lt.10) then
107 write(vormat(16:),'(i1,a)') maxdimnat*natlike(iprot),'f7.4/)'
109 write(vormat(16:),'(i2,a)') maxdimnat*natlike(iprot),'f7.4/)'
111 write (iout,*) "format ",vormat
116 write (iout,*) "Processor",me," iprot",iprot,
117 & " indstart",indstart(me1,iprot)," indend",indend(me1,iprot),
118 & " init_ene",init_ene," mod_fourier",mod_fourier(nloctyp),
119 & " mod_elec",mod_elec," mod_scp",mod_scp," mod_tor",mod_tor,
120 & " mod_sccor",mod_sccor," mod_ang",mod_ang
122 call restore_molinfo(iprot)
125 IF (NCHUNK_CONF(IPROT).EQ.1) THEN
128 do i=indstart(me1,iprot),indend(me1,iprot)
130 do i=1,ntot_work(iprot)
132 c write (iout,*) "i",i," ii",ii," calling ene_eval"
133 call ene_eval(iprot,i,ii)
134 c write (iout,*) "After ene_eval: i",i," ii",ii
137 write (icsa_rbank,vormat,rec=i)
138 & i,list_conf(i,iprot),
139 & e_total(i,iprot),((nu(l,k,ii,iprot),l=1,natdim(k,iprot)),
140 & k=1,natlike(iprot))
147 if (.not.init_ene .and. mod_fourier(nloctyp).eq.0
148 & .and. .not. mod_elec .and. .not. mod_scp
149 & .and. .not. mod_tor .and. .not. mod_sccor) then
150 open (ientin,file=benefiles(iprot),status="old",
151 & form="unformatted",access="direct",recl=lenrec_ene(iprot))
152 if (natlike(iprot).gt.0)
153 & open (icbase,file=bprotfiles(iprot),status="old",
154 & form="unformatted",access="direct",recl=lenrec(iprot))
156 open (icbase,file=bprotfiles(iprot),status="old",
157 & form="unformatted",access="direct",recl=lenrec(iprot))
158 c write (iout,*) "lenrec_ene",lenrec_ene(iprot)
160 c Change AL 12/30/2017
161 if (.not. mod_other_params)
162 & open (ientout,file=benefiles(iprot),status="unknown",
163 & form="unformatted",access="direct",recl=lenrec_ene(iprot))
167 do i=indstart(me1,iprot),indend(me1,iprot),maxstr_proc
169 iend_conf=min0(i+maxstr_proc-1,indend(me1,iprot))
171 do i=1,ntot_work(iprot),maxstr_proc
173 iend_conf=min0(i+maxstr_proc-1,ntot(iprot))
177 c Read the chunk of conformations off a DA scratchfile.
179 if (.not. init_ene .and. mod_fourier(nloctyp).eq.0
180 & .and. .not. mod_elec .and. .not. mod_scp
181 & .and. .not. mod_tor .and. .not. mod_sccor .and. .not. mod_ang)
184 write (iout,*) "func1: calling daread_ene",istart_conf,
187 call daread_ene(iprot,istart_conf,iend_conf)
188 if (natlike(iprot).gt.0) then
190 write (iout,*) "Calling daread_coords",istart_conf,
193 call daread_ccoords(iprot,istart_conf,iend_conf)
195 do iii=istart_conf,iend_conf
196 call ene_eval(iprot,iii,ii)
199 write (iout,*) "func1: calling dawrite_ene",istart_conf,
202 call dawrite_ene(iprot,istart_conf,iend_conf,ientin)
204 call daread_ccoords(iprot,istart_conf,iend_conf)
205 do iii=istart_conf,iend_conf
206 call ene_eval(iprot,iii,ii)
208 c AL 12/30/17 - writing energies is not needed when whole energy is evaluated
209 c call dawrite_ene(iprot,istart_conf,iend_conf,ientout)
213 do iii=istart_conf,iend_conf
214 write (icsa_rbank,vormat,rec=iii)
215 & iii,list_conf(iii,iprot),
216 & e_total(iii,iprot),
217 & ((nu(l,k,iii-istart_conf+1,iprot),l=1,natdim(k,iprot)),
218 & k=1,natlike(iprot))
224 if (.not.init_ene .and. mod_fourier(nloctyp).eq.0
225 & .and. .not. mod_elec .and. .not. mod_scp
226 & .and. .not. mod_tor .and. .not. mod_sccor .and. .not. mod_ang)
229 if (natlike(iprot).gt.0) close(icbase)
233 if (init_ene .or. mod_fourier(nloctyp).gt.0 .or. mod_elec
234 & .or. mod_scp .or. mod_tor .or. mod_sccor .or. mod_ang)
239 c print *,"Processor",me,me1," finished computing energies"
241 do i=1,scount(me1,iprot)
242 e_total_(i)=e_total(indstart(me1,iprot)+i-1,iprot)
243 eini_(i)=eini(indstart(me1,iprot)+i-1,iprot)
244 entfac_(i)=entfac(indstart(me1,iprot)+i-1,iprot)
245 rmstb_(i)=rmstb(indstart(me1,iprot)+i-1,iprot)
247 if (What.eq.2 .or. What.eq.3) then
248 c call MPI_Gatherv(e_total(indstart(me1,iprot),iprot),
249 c & scount(me1,iprot),MPI_DOUBLE_PRECISION,e_total(1,iprot),
250 c & scount(0,iprot),idispl(0,iprot),MPI_DOUBLE_PRECISION,Master,
252 call MPI_Gatherv(e_total_(1),
253 & scount(me1,iprot),MPI_DOUBLE_PRECISION,e_total(1,iprot),
254 & scount(0,iprot),idispl(0,iprot),MPI_DOUBLE_PRECISION,Master,
256 c call MPI_Gatherv(entfac(indstart(me1,iprot),iprot),
257 c & scount(me1,iprot),MPI_DOUBLE_PRECISION,entfac(1,iprot),
258 c & scount(0,iprot),idispl(0,iprot),MPI_DOUBLE_PRECISION,Master,
260 call MPI_Gatherv(entfac_(1),
261 & scount(me1,iprot),MPI_DOUBLE_PRECISION,entfac(1,iprot),
262 & scount(0,iprot),idispl(0,iprot),MPI_DOUBLE_PRECISION,Master,
264 c call MPI_Gatherv(eini(indstart(me1,iprot),iprot),
265 c & scount(me1,iprot),MPI_DOUBLE_PRECISION,eini(1,iprot),
266 c & scount(0,iprot),idispl(0,iprot),MPI_DOUBLE_PRECISION,Master,
268 call MPI_Gatherv(eini_(1),
269 & scount(me1,iprot),MPI_DOUBLE_PRECISION,eini(1,iprot),
270 & scount(0,iprot),idispl(0,iprot),MPI_DOUBLE_PRECISION,Master,
272 c call MPI_Gatherv(rmstb(indstart(me1,iprot),iprot),
273 c & scount(me1,iprot),MPI_DOUBLE_PRECISION,rmstb(1,iprot),
274 c & scount(0,iprot),idispl(0,iprot),MPI_DOUBLE_PRECISION,Master,
276 call MPI_Gatherv(rmstb_(1),
277 & scount(me1,iprot),MPI_DOUBLE_PRECISION,rmstb(1,iprot),
278 & scount(0,iprot),idispl(0,iprot),MPI_DOUBLE_PRECISION,Master,
282 c call MPI_Allgatherv(e_total(indstart(me1,iprot),iprot),
283 c & scount(me1,iprot),MPI_DOUBLE_PRECISION,e_total(1,iprot),
284 c & scount(0,iprot),idispl(0,iprot),MPI_DOUBLE_PRECISION,
286 call MPI_Allgatherv(e_total_(1),
287 & scount(me1,iprot),MPI_DOUBLE_PRECISION,e_total(1,iprot),
288 & scount(0,iprot),idispl(0,iprot),MPI_DOUBLE_PRECISION,
293 c Mean and lowest energies of structural classes
295 IF (NCHUNK_CONF(IPROT).EQ.1) THEN
298 do i=1,ntot_work(iprot)
302 do i=indstart(me1,iprot),indend(me1,iprot)
306 istart_conf=indstart(me1,iprot)
307 iend_conf=indend(me1,iprot)
309 do i=1,ntot_work(iprot)
313 iend_conf=ntot_work(iprot)
316 do i=1,ntot_work(iprot)
317 write (iout,*) "i",i," i2ii",i2ii(i,iprot)
321 C Change AL 12/30/2017
322 if (.not.mod_other_params)
323 &open (ientin,file=benefiles(iprot),status="old",
324 & form="unformatted",access="direct",recl=lenrec_ene(iprot))
325 c call daread_ene(iprot,istart_conf,iend_conf)
326 call emin_search(iprot)
330 if (.not.mod_other_params)
331 &open (ientin,file=benefiles(iprot),status="old",
332 & form="unformatted",access="direct",recl=lenrec_ene(iprot))
335 do istart_conf=indstart(me1,iprot),indend(me1,iprot),maxstr_proc
336 iend_conf=min0(istart_conf+maxstr_proc-1,indend(me1,iprot))
338 do istart_conf=1,ntot_work(iprot),maxstr_proc
339 iend_conf=min0(istart_conf+maxstr_proc-1,ntot_work(iprot))
342 c Read the chunk of energies and derivatives off a DA scratchfile.
344 ipass_conf=ipass_conf+1
345 do i=1,ntot_work(iprot)
349 do i=istart_conf,iend_conf
354 write (iout,*) "ipass_conf",ipass_conf,
355 & " istart_conf",istart_conf," iend_conf",iend_conf
356 do i=1,ntot_work(iprot)
357 write (iout,*) "i",i," i2ii",i2ii(i,iprot)
361 call daread_ene(iprot,istart_conf,iend_conf)
362 call emin_search(iprot)
371 c Complete the calculation of the lowest energies over all classes and
372 c distribute the values to all procs
375 write (iout,*) "Processor",me,me1," calling MPI_Reduce: 2"
376 do k=1,natlike(iprot)+2
377 write (iout,*) "iprot",iprot," k",k
378 do ib=1,nbeta(k,iprot)
379 write (iout,*) "ib",ib
380 write (iout,'(7hELOWEST,10e15.3)')
381 & elowest(ib,k,iprot)
386 do ibatch=1,natlike(iprot)+2
387 do ib=1,nbeta(ibatch,iprot)
388 elowest_aux(1,ib)=elowest(ib,ibatch,iprot)
389 elowest_aux(2,ib)=ind_lowest(ib,ibatch,iprot)
391 call MPI_Allreduce(elowest_aux(1,1),elowest_t(1,1),
392 & nbeta(ibatch,iprot),
393 & MPI_2DOUBLE_PRECISION, MPI_MINLOC, Comm1, IERROR)
395 do ib=1,nbeta(ibatch,iprot)
396 write (iout,*) "beta=",betaT(ib,ibatch,iprot)
397 write (iout,'(9helowest_t,10f15.3)')
398 & elowest_t(1,ib),elowest_t(2,ib)
400 write (iout,*) "Processor",me,me1," finished MPI_Reduce: 2"
402 do ib=1,nbeta(ibatch,iprot)
403 c write (iout,*) "IB",ib," ibatch",ibatch," iprot",iprot
405 elowest(ib,ibatch,iprot)=elowest_t(1,ib)
406 c write (iout,*) "elowest",ib,ibatch,iprot,
407 c & elowest(ib,ibatch,iprot)
409 ind_lowest(ib,ibatch,iprot)=elowest_t(2,ib)
417 c write (iout,*) "After averages, calling Thermal"
419 if (What.eq.2) call thermal(iprot)
420 c write (iout,*) "After thermal"
424 if (me1.eq.Master) then
428 write (iout,*) "iprot",iprot," elowest",
429 & ((elowest(ib,k,iprot),ib=1,nbeta(k,iprot)),k=1,natlike(iprot)+2)
432 do ib=1,nbeta(2,iprot)
433 fac=betaT(ib,2,iprot)
434 c 6/15/05 AL Heat capacity
435 zvtot(ib,iprot)=(esquare_ftot(ib,iprot)-
436 & emean_ftot(ib,iprot)**2)*fac*fac*Rgas
437 & -ebis_ftot(ib,iprot)+heatbase(iprot)
439 write (iout,*) "iprot",iprot," ib",ib,
440 & " emeantot",emean_ftot(ib,iprot),
441 & " esquaretot",esquare_ftot(ib,iprot),
442 & " ebistot",ebis_ftot(ib,iprot),
443 & " zvtot",zvtot(ib,iprot)
446 write (iout,*) "beta",
448 & " efree",efree(ib,2,iprot),
449 & " emean",emean_ftot(ib,iprot),
450 & " variance",esquare_ftot(ib,iprot)
453 c 4/13/04 AL Correlation coefficients between energy and nativelikeness
454 c in the respective classes.
456 write (iout,*) "iprot",iprot," ib",ib,
458 write (iout,*) "emean",emean_ftot(ib,iprot),
459 & " esquare",esquare_ftot(ib,iprot)
465 & "Averages of nativelikeness and energy-nativelikeness",
466 & " correlation coefficients:"
468 do i=1,natlike(iprot)
469 do ib=1,nbeta(i+1,iprot)
470 write (iout,*) "protein",iprot," property",i,
471 & " temperature",ib," natdim",natdim(i,iprot)," value(s)",
472 & (nuave(j,ib,i,iprot),j=1,natdim(i,iprot))
483 write (iout,*) "Calling CUTOFF_VIOLATION"
486 c write (iout,*) "CUTOFFEVAL",cutoffeval
488 if (cutoffeval) call cutoff_violation
489 t_func = t_func + tcpu() - tcpu_ini
491 write (iout,*) "Exitting FUNC1"
496 c-------------------------------------------------------------------------------
497 subroutine targetfun(n,x,nf,f,uiparm,ufparm)
500 include "DIMENSIONS.ZSCOPT"
503 integer IERROR,Errcode,status(MPI_STATUS_SIZE)
507 double precision x(n),g(max_paropt)
508 include "COMMON.WEIGHTS"
509 include "COMMON.IOUNITS"
510 include "COMMON.DERIV"
511 include "COMMON.VMCPAR"
512 include "COMMON.CLASSES"
514 include "COMMON.ENERGIES"
515 include "COMMON.WEIGHTDER"
516 include "COMMON.OPTIM"
517 include "COMMON.TIME1"
518 include "COMMON.COMPAR"
519 include "COMMON.TORSION"
522 integer i,ii,it,inat,j,k,l,kk,iprot,ib
525 double precision urparm,rdif
527 double precision f,fpmf,kara,viol,gnmr,gnmr1,aux
532 write (iout,*) me,me1,"Calling TARGETFUN"
533 write (iout,*) "n",n," x",(x(i),i=1,n)
536 call write_restart(n,x)
542 if (mod_fourier(nloctyp).gt.0) then
546 c Maximum likelihood contribution
548 do iT=1,nbeta(1,iprot)
549 f = f + weilik(iT,iprot)*sumlik(iT,iprot)
553 write (iout,*)"target_fun: sumlik"
555 write (iout,*) (sumlik(ii,iprot),ii=1,nbeta(1,iprot))
557 write (iout,*) "f before Cv =",f
561 c 6/15/05 AL Contribution from Cv
562 do ib=1,nbeta(2,iprot)
563 f=f+weiCv(ib,iprot)*(zvtot(ib,iprot)-target_cv(ib,iprot))**2
565 c write (iout,*) "target_fun from CV: f=",f
567 c write (iout,*) "target_fun: f=",f
568 c 8/2/2013 Contribution from conformation-dependent averages
570 do inat=1,natlike(iprot)
571 do ib=1,nbeta(inat+2,iprot)
572 do k=1,natdim(inat,iprot)
573 f = f+weinat(k,ib,inat,iprot)*
574 & (nuave(k,ib,inat,iprot)-nuexp(k,ib,inat,iprot))**2
576 write (iout,*) "iprot",iprot," inat",inat,
577 & " ib",ib," k=",k," nuave",nuave(k,ib,inat,iprot),
578 & " nuexp",nuexp(k,ib,inat,iprot),
579 & " weight",weinat(k,ib,inat,iprot)
585 c write (iout,*) "target_fun after adding nativelikeness: f=",f
587 c add constraints on weights
590 kara=kara+gnmr1(x(i),x_low(i),x_up(i))
597 write (iout,*) "target_fun: f=",f,wpmf*fpmf,1.0d16*kara
603 c-----------------------------------------------------------------------------
604 subroutine targetgrad(n,x,nf,g,uiparm,rdum,ufparm)
607 include "DIMENSIONS.ZSCOPT"
608 include "COMMON.TIME1"
611 integer IERROR,ERRCODE,status(MPI_STATUS_SIZE)
614 double precision x(n),
615 & g(n),gg(max_paropt)
616 include "COMMON.WEIGHTS"
617 include "COMMON.ENERGIES"
618 include "COMMON.CLASSES"
619 include "COMMON.IOUNITS"
620 include "COMMON.DERIV"
621 include "COMMON.COMPAR"
622 include "COMMON.WEIGHTDER"
623 include "COMMON.OPTIM"
624 include "COMMON.VMCPAR"
626 include "COMMON.NAMES"
628 include "COMMON.TORSION"
634 double precision xi,delta /1.0d-6/
636 double precision urparm,rdif
638 double precision zewn(MaxT,maxprot),aux,zscder
639 double precision zewnvtot(maxT,maxprot)
640 double precision sumlik0(maxT,maxprot),zv0tot(maxT,maxprot),
641 & nuave0(maxdimnat,maxT,maxnatlike,maxprot)
642 double precision geps(nntyp),gtor(maxtor_var),gang(maxang_var)
643 double precision rdum
645 integer ll1,ll2,nl1,nl2,nn
646 integer i,ii,ind,inat,j,k,kk,iprot,ib,n_weight
647 integer iti,itj,jj,icant
650 double precision gnmrprim,gnmr1prim
651 double precision tcpu_ini,tcpu
652 logical in_sc_pair_list
653 external in_sc_pair_list
654 integer ind_shield /25/
660 write (iout,*) "Processor",me,me1," calling TARGETGRAD"
665 write (iout,*) "Calling TARGETGRAD"
670 write (iout,*) "x",(x(i),i=1,n)
677 c AL 2/10/2018 Add PMF gradient
678 if (mod_fourier(nloctyp).gt.0) then
680 c write (iout,*) "After rdif"
685 do ib=1,nbeta(2,iprot)
686 c 6/15/05 AL Contributions from Cv
687 zewnvtot(ib,iprot)=2*weiCv(ib,iprot)*
688 & (zvtot(ib,iprot)-target_cv(ib,iprot))
700 if (mod_tor .or. mod_sccor) then
710 c Maximum likelihood gradient
712 do ib=1,nbeta(1,iprot)
715 if (imask(k).gt.0 .and. k.ne.ind_shield) then
717 g(kk)=g(kk)+weilik(ib,iprot)*sumlikder(kk,ib,iprot)
721 geps(k)=geps(k)+weilik(ib,iprot)*sumlikeps(k,ib,iprot)
724 gtor(k)=gtor(k)+weilik(ib,iprot)*sumliktor(k,ib,iprot)
727 gang(k)=gang(k)+weilik(ib,iprot)*sumlikang(k,ib,iprot)
732 write (iout,*) "gtor"
734 write(iout,*) k,gtor(k)
736 write (iout,*) "nang_var",nang_var," gang"
738 write(iout,*) k,gang(k)
742 c Heat-capacity gradient
744 do ib=1,nbeta(2,iprot)
747 if (imask(k).gt.0 .and. k.ne.ind_shield) then
749 g(kk)=g(kk)+zvdertot(kk,ib,iprot)*zewnvtot(ib,iprot)
753 geps(k)=geps(k)+zewnvtot(ib,iprot)*zvepstot(k,ib,iprot)
756 gtor(k)=gtor(k)+zewnvtot(ib,iprot)*zvtortot(k,ib,iprot)
759 gang(k)=gang(k)+zewnvtot(ib,iprot)*zvangtot(k,ib,iprot)
764 write (iout,*) "gtor"
766 write(iout,*) k,gtor(k)
768 write (iout,*) "gang"
770 write(iout,*) k,gang(k)
772 write (iout,*) "grad: g",(g(i),i=1,n)
775 c Derivatives of conformational-dependent properties
777 do inat=1,natlike(iprot)
778 do ib=1,nbeta(inat+2,iprot)
779 call propderiv(ib,inat,iprot)
780 do l=1,natdim(inat,iprot)
781 aux=2*weinat(l,ib,inat,iprot)*
782 & (nuave(l,ib,inat,iprot)-nuexp(l,ib,inat,iprot))
784 write (iout,*) "iprot",iprot," ib",ib,
785 & " inat",inat," l",l,
786 & " nuave",nuave(l,ib,inat,iprot),
787 & " weight",weinat(ib,inat,iprot),
793 if (imask(k).gt.0 .and. k.ne.ind_shield) then
795 g(kk)=g(kk)+aux*rder(kk,l)
799 geps(k)=geps(k)+aux*reps(k,l)
802 gtor(k)=gtor(k)+aux*rtor(k,l)
805 gang(k)=gang(k)+aux*rang(k,l)
812 write (iout,*) "gtor"
814 write(iout,*) k,gtor(k)
816 write (iout,*) "gang"
818 write(iout,*) k,gang(k)
821 c Compute numerically the remaining part of the gradient
824 c if (imask(i).gt.0 .and. i.ne.ind_shield) n_weight=n_weight+1
828 c Sum up the gradient in SC epsilons, if needed
833 g(ii)=g(ii)+geps(icant(iti,iti))
835 if (.not. in_sc_pair_list(iti,j)) then
836 g(ii)=g(ii)+0.5d0*geps(icant(iti,j))
844 g(ii)=geps(icant(iti,itj))
847 c write (iout,*) "n_ene",n_ene
848 if (mod_tor .or. mod_sccor) then
862 write (iout,*) "n",n," n_weight",n_weight
863 write (iout,*) "After SC: grad:"
865 write (iout,*) i,g(i)
871 c AL 2/10/2018 Add PMF gradient
872 if (mod_fourier(nloctyp).gt.0) then
874 c write (iout,*) "After rdif"
879 do ib=1,nbeta(1,iprot)
880 sumlik0(ib,iprot)=sumlik(ib,iprot)
884 do ib=1,nbeta(2,iprot)
885 zv0tot(ib,iprot)=zvtot(ib,iprot)
889 do i=1,natlike(iprot)
890 do ib=1,nbeta(i+2,iprot)
891 do k=1,natdim(i,iprot)
892 nuave0(k,ib,i,iprot)=nuave(k,ib,i,iprot)
899 if (nbeta(2,iprot).gt.0) nn=nn-1
903 if (nbeta(2,iprot).gt.0) then
905 do ib=1,nbeta(2,iprot)
906 g(ii)=g(ii)+zewnvtot(ib,iprot)
911 write (iout,*) "n",n," n_weight",n_weight
912 write (iout,*) "After heat grad:"
914 write (iout,*) i,g(i)
918 c write (iout,*) "n_weight",n_weight," n",n
922 c write (iout,*) "i",i," x",x(i),xi
926 c AL 2/10/2018 Add PMF gradient
927 if (mod_fourier(nloctyp).gt.0) then
929 c write (iout,*) "After rdif"
935 do ib=1,nbeta(1,iprot)
936 g(i)=g(i)+weilik(ib,iprot)*(sumlik(ib,iprot)
937 & -sumlik0(ib,iprot))/delta
938 c write (iout,*) "iprot",iprot," g",g(i)
942 write (iout,*) "init numerical derivatives"
945 c Contribution from Cv
947 do ib=1,nbeta(2,iprot)
948 g(i)=g(i)+zewnvtot(ib,iprot)*
949 & (zvtot(ib,iprot)-zv0tot(ib,iprot))/delta
952 c Contribution from average nativelikenss and correlation coefficients
953 c between energy and nativelikeness
955 do ii=1,natlike(iprot)
956 do ib=1,nbeta(ii+2,iprot)
957 do k=1,natdim(i,iprot)
958 aux=2*weinat(k,ib,inat,iprot)*
959 & (nuave(l,ib,inat,iprot)-nuexp(l,ib,inat,iprot))
960 g(i)=g(i)+aux*(nuave(k,ib,ii,iprot)-
961 & nuave0(k,ib,ii,iprot))/delta
969 write (iout,*) "n",n," n_weight",n_weight
970 write (iout,*) "After num grad:"
972 write (iout,*) k,g(k)
978 c AL 2/10/2018 Add PMF gradient
979 if (mod_fourier(nloctyp).gt.0) then
981 c write (iout,*) "After rdif"
986 write (iout,*) "finish numerical derivatives"
990 c 1/10/2007 AL Correction: ENDIF...IF insterted to prevent unmatched
991 c SEND is I_LOCAL_CHECK.GT.0
994 write (iout,*) "mode",mode
997 c AL 2/10/2018 Add PMF gradient
998 if (mod_fourier(nloctyp).gt.0) then
1000 g(i)=g(i)-wpmf*gg(i)
1005 c transform the gradient to the x space
1007 g(i)=g(i)*(x_up(i)-x_low(i))/(pi*(1.0d0+(x(i)
1008 & -0.5d0*(x_up(i)+x_low(i)))**2))
1011 c add constraints on weights
1012 c write (iout,*) "Gradient in constraints"
1014 g(i)=g(i)+1.0d16*gnmr1prim(x(i),x_low(i),x_up(i))
1016 write (iout,*) i,x(i),x_low(i),x_up(i),
1017 & gnmr1prim(x(i),x_low(i),x_up(i))
1022 write (iout,*) "grad"
1024 write (iout,*) i,g(i)
1027 t_grad = t_grad + tcpu() - tcpu_ini
1029 write (iout,*) "Exit targetgrad"
1034 c------------------------------------------------------------------------------
1035 subroutine matout(ndim,n,a)
1036 implicit real*8 (a-h,o-z)
1037 include "DIMENSIONS.ZSCOPT"
1038 include "COMMON.IOUNITS"
1039 double precision a(ndim)
1040 character*6 line6 / '------' /
1041 character*12 line12 / '------------' /
1045 write (iout,1000) (k,k=i,nlim)
1046 write (iout,1020) line6,(line12,k=i,nlim)
1047 1000 format (/7x,6(i7,5x))
1048 1020 format (a6,6a12)
1053 3 b(k-i+1)=a(icant(i,j))
1054 write (iout,1010) j,(b(k),k=1,jlim1)
1057 1010 format (i3,3x,6(1pe11.4,1x))
1060 c------------------------------------------------------------------------------
1063 include "DIMENSIONS"
1064 include "DIMENSIONS.ZSCOPT"
1067 integer IERROR,ERRCODE,status(MPI_STATUS_SIZE)
1070 include "COMMON.WEIGHTS"
1071 include "COMMON.ENERGIES"
1072 include "COMMON.IOUNITS"
1073 include "COMMON.DERIV"
1074 include "COMMON.WEIGHTDER"
1075 include "COMMON.VMCPAR"
1076 include "COMMON.GEO"
1077 include "COMMON.NAMES"
1078 include "COMMON.VAR"
1079 include "COMMON.CLASSES"
1080 include "COMMON.THERMAL"
1082 include "COMMON.MPI"
1084 include "COMMON.TIME1"
1085 double precision aux,zscder
1086 double precision fac,fac2
1087 double precision efj(2),emj(2),varj(2),edecum,edecum1,ebisdecum,
1089 double precision eavpfj(max_ene,2),emixpfj(max_ene,2),
1090 & emixsqpfj(max_ene,2),enepsavefj(nntyp,2),enepsmixfj(nntyp,2),
1091 & enepsmixsqfj(nntyp,2),eavpfjprim(max_ene,2),
1092 & entoravefj(0:3,maxtor_var,2),entoravefjprim(0:3,maxtor_var,2),
1093 & entormixfj(0:3,maxtor_var,2),entormixsqfj(0:3,maxtor_var,2),
1094 & enangavefj(0:3,maxang_var,2),enangavefjprim(0:3,maxang_var,2),
1095 & enangmixfj(0:3,maxang_var,2),enangmixsqfj(0:3,maxang_var,2)
1096 integer i,ii,j,k,kk,iprot,ib
1097 integer iti,itj,jj,icant
1100 integer ind_shield /25/
1104 do ib=1,nbeta(2,iprot)
1105 fac = betaT(ib,2,iprot)
1109 if (imask(k).gt.0 .and. k.ne.ind_shield) then
1111 ebisdecum=emix_pfbistot(k,ib,iprot)-
1112 & eave_pftot(k,ib,iprot)
1113 & *ebis_ftot(ib,iprot)
1114 edecum=emix_pfprimtot(k,ib,iprot)
1115 & -eave_pfprimtot(k,ib,iprot)
1116 & *emean_ftot(ib,iprot)
1117 edecum1=emix_pftot(k,ib,iprot)
1118 & -eave_pftot(k,ib,iprot)
1119 & *emean_ftot(ib,iprot)
1120 e2decum=emixsq_pftot(k,ib,iprot)
1121 & -eave_pftot(k,ib,iprot)
1122 & *esquare_ftot(ib,iprot)
1123 zvdertot(kk,ib,iprot)=Rgas*fac2*(2*edecum
1124 & -fac*(e2decum-2*emean_ftot(ib,iprot)
1126 & -eave_pfbistot(k,ib,iprot)
1129 write (iout,*) "k=",k,
1130 & "eave_pftot",eave_pftot(k,ib,iprot),
1131 & " emix_pftot",emix_pftot(k,ib,iprot),
1132 & " emix_pfprimtot",emix_pfprimtot(k,ib,iprot),
1133 & " emix_pfbistot",emix_pfbistot(k,ib,iprot),
1134 & " eave_pfprimtot",eave_pfprimtot(k,ib,iprot),
1135 & " eave_pfbistot",eave_pfbistot(k,ib,iprot),
1136 & " emixsq_pftot",emixsq_pftot(k,ib,iprot),
1137 & " ebis_ftot",ebis_ftot(ib,iprot),
1138 & " emean_ftot",emean_ftot(ib,iprot)
1139 write (iout,*) "k=",k," edecum",edecum,
1140 & " edecum1",edecum1,
1141 & " e2decum",e2decum," ebisdecum",ebisdecum,
1143 & zvdertot(kk,ib,iprot)
1149 ebisdecum=eneps_mix_fbistot(k,ib,iprot)-
1150 & enepsave_ftot(k,ib,iprot)*ebis_ftot(ib,iprot)
1151 edecum=eneps_mix_ftot(k,ib,iprot)
1152 & -enepsave_ftot(k,ib,iprot)*emean_ftot(ib,iprot)
1153 e2decum=eneps_mixsq_ftot(k,ib,iprot)
1154 & -enepsave_ftot(k,ib,iprot)*esquare_ftot(ib,iprot)
1155 zvepstot(k,ib,iprot)=ww(1)*(Rgas*fac2*(2*edecum
1156 & -fac*(e2decum-2*emean_ftot(ib,iprot)
1157 & *edecum))+fac*ebisdecum)
1159 write (iout,*) ib,k,"ebisdecum",ebisdecum,
1160 & " edecum",edecum," e2decum",e2decum," zvepstot",
1161 & zvepstot(k,ibb,iprot)
1163 & " enepsave_ftot",enepsave_ftot(k,ib,iprot),
1164 & " eneps_mix_ftot",eneps_mix_ftot(k,ib,iprot),
1165 & " eneps_mix_fbistot",eneps_mix_fbistot(k,ib,iprot),
1166 & " eneps_mixsq_ftot",eneps_mixsq_ftot(k,ib,iprot),
1167 & " emean_ftot",emean_ftot(ib,iprot),
1168 & " ebis_ftot",ebis_ftot(ib,iprot)
1172 if (mod_tor .or. mod_sccor) then
1174 ebisdecum=entor_mix_fbistot(k,ib,iprot)-
1175 & entorave_ftot(k,ib,iprot)*ebis_ftot(ib,iprot)
1176 edecum=entor_mix_fprimtot(k,ib,iprot)
1177 & -entorave_fprimtot(k,ib,iprot)*emean_ftot(ib,iprot)
1178 edecum1=entor_mix_ftot(k,ib,iprot)
1179 & -entorave_ftot(k,ib,iprot)*emean_ftot(ib,iprot)
1180 e2decum=entor_mixsq_ftot(k,ib,iprot)
1181 & -entorave_ftot(k,ib,iprot)*esquare_ftot(ib,iprot)
1182 zvtortot(k,ib,iprot)=Rgas*fac2*(2*edecum
1183 & -fac*(e2decum-2*emean_ftot(ib,iprot)
1184 & *edecum1))-entorave_fbistot(k,ib,iprot)
1188 & " entorave_ftot",entorave_ftot(k,ib,iprot),
1189 & " entor_mix_ftot",entor_mix_ftot(k,ib,iprot),
1190 & " entor_mix_fprimtot",entor_mix_fprimtot(k,ib,iprot),
1191 & " entor_mix_fbistot",entor_mix_fbistot(k,ib,iprot),
1192 & " entorave_fprimtot",entorave_fprimtot(k,ib,iprot),
1193 & " entorave_fbistot",entorave_fbistot(k,ib,iprot),
1194 & " entor_mixsq_ftot",entor_mixsq_ftot(k,ib,iprot),
1195 & " emean_ftot",emean_ftot(ib,iprot),
1196 & " ebis_ftot",ebis_ftot(ib,iprot)
1197 write (iout,*) ib,k," ebisdecum",ebisdecum,
1198 & " edecum",edecum," edecum1",edecum1," e2decum",e2decum,
1199 & " zvtortot",zvtortot(k,ibb,iprot)
1207 edecum1=enang_mix_ftot(k,ib,iprot)
1208 & -enangave_ftot(k,ib,iprot)*emean_ftot(ib,iprot)
1209 e2decum=enang_mixsq_ftot(k,ib,iprot)
1210 & -enangave_ftot(k,ib,iprot)*esquare_ftot(ib,iprot)
1211 zvtortot(k,ib,iprot)=Rgas*fac2*(2*edecum
1212 & -fac*(e2decum-2*emean_ftot(ib,iprot)
1213 & *edecum1))-entorave_fbistot(k,ib,iprot)
1217 & " enangave_ftot",enangave_ftot(k,ib,iprot),
1218 & " enang_mix_ftot",enang_mix_ftot(k,ib,iprot),
1219 & " enang_mixsq_ftot",enang_mixsq_ftot(k,ib,iprot),
1220 & " emean_ftot",emean_ftot(ib,iprot)
1221 write (iout,*) ib,k," ebisdecum",ebisdecum,
1222 & " edecum",edecum," edecum1",edecum1," e2decum",e2decum,
1223 & " zvtortot",zvangtot(k,ibb,iprot)
1228 write (iout,*) "iprot",iprot,
1230 write (iout,*) "zvder",
1231 & (zvdertot(k,ibb,iprot),k=1,kk)
1237 c------------------------------------------------------------------------------
1238 subroutine propderiv(ib,inat,iprot)
1239 c Compute the derivatives of conformation-dependent averages in force-field
1242 include "DIMENSIONS"
1243 include "DIMENSIONS.ZSCOPT"
1246 integer IERROR,ERRCODE,status(MPI_STATUS_SIZE)
1249 include "COMMON.WEIGHTS"
1250 include "COMMON.ENERGIES"
1251 include "COMMON.CLASSES"
1252 include "COMMON.IOUNITS"
1253 include "COMMON.DERIV"
1254 include "COMMON.WEIGHTDER"
1255 include "COMMON.VMCPAR"
1256 include "COMMON.GEO"
1257 include "COMMON.OPTIM"
1258 include "COMMON.NAMES"
1259 include "COMMON.COMPAR"
1261 include "COMMON.MPI"
1263 include "COMMON.TIME1"
1264 include "COMMON.VAR"
1265 double precision aux,zscder
1266 double precision fac
1267 double precision efj(2),emj(2),varj(2)
1268 double precision eavpfj(max_ene,2),emixpfj(max_ene,2),
1269 & emixsqpfj(max_ene,2),enepsavefj(nntyp,2),enepsmixfj(nntyp,2),
1270 & enepsmixsqfj(nntyp,2)
1272 integer i,ii,ind,j,k,kk,iprot,ib,ibb,l1
1273 integer iti,itj,jj,icant
1276 integer ind_shield /25/
1277 c write (iout,*) "Entered PROPDERIV"
1279 fac = betaT(ib,inat+2,iprot)
1280 c write (iout,*) "derivatives: iprot",iprot,
1282 do l=1,natdim(inat,iprot)
1285 if (imask(k).gt.0 .and. k.ne.ind_shield) then
1287 rder(kk,l)=-fac*(nu_pf(k,l,ib,inat,iprot)
1288 & -nuave(l,ib,inat,iprot)*
1289 & eave_nat_pftot(k,ib,inat,iprot))
1294 do l=1,natdim(inat,iprot)
1296 reps(k,l)=-ww(1)*fac*(nuepsave_f(k,l,ib,inat,iprot)-
1297 & nuave(l,ib,inat,iprot)*enepsave_nat_ftot(k,ib,inat,iprot))
1301 if (mod_tor .or. mod_sccor) then
1302 do l=1,natdim(inat,iprot)
1304 rtor(k,l)=-fac*(nutorave_f(k,l,ib,inat,iprot)-
1305 & nuave(l,inat,ib,iprot)*entorave_nat_ftot(k,ib,inat,iprot))
1310 do l=1,natdim(inat,iprot)
1312 rang(k,l)=-fac*(nuangave_f(k,l,ib,inat,iprot)-
1313 & nuave(l,inat,ib,iprot)*enangave_nat_ftot(k,ib,inat,iprot))
1319 c-------------------------------------------------------------------------------
1320 subroutine ene_eval(iprot,i,ii)
1322 include "DIMENSIONS"
1323 include "DIMENSIONS.ZSCOPT"
1326 integer IERROR,ErrCode
1327 include "COMMON.MPI"
1329 include "COMMON.CONTROL"
1330 include "COMMON.COMPAR"
1331 include "COMMON.WEIGHTS"
1332 include "COMMON.WEIGHTDER"
1333 include "COMMON.CLASSES"
1334 include "COMMON.ENERGIES"
1335 include "COMMON.IOUNITS"
1336 include "COMMON.VMCPAR"
1337 include "COMMON.NAMES"
1338 include "COMMON.INTERACT"
1339 include "COMMON.TIME1"
1340 include "COMMON.CHAIN"
1341 include "COMMON.VAR"
1342 include "COMMON.GEO"
1343 include "COMMON.SCCOR"
1344 include "COMMON.TORSION"
1345 include "COMMON.LOCAL"
1346 include "COMMON.FFIELD"
1347 C Define local variables
1348 integer i,ii,ij,jj,j,k,ik,jk,l,ll,lll,iprot,iblock
1349 double precision energia(0:max_ene)
1350 double precision etoti,enepsjk
1351 double precision ftune_eps
1356 integer ind_shield /25/
1360 write (iout,*) "ene_eval: iprot",iprot," i",i," ii",ii
1362 if (init_ene .or. (mod_fourier(nloctyp).gt.0
1363 & .or. mod_elec .or. mod_scp .or. mod_tor .or. mod_sccor
1364 & .or. mod_ang .or. imask(ind_shield).gt.0) ) then
1366 write (iout,*) "FUNC1: doing UNRES"
1367 write (iout,*) "Protein",iprot," i",i," ii",ii," nres",nres
1370 call restore_ccoords(iprot,ii)
1371 call int_from_cart1(.false.)
1373 write (iout,'(8f10.5)') ((c(j,k),j=1,3),k=1,nres)
1374 write (iout,'(8f10.5)') ((c(j,k+nres),j=1,3),k=nnt,nct)
1375 write (iout,'(8f10.4)') (vbld(k),k=2,nres)
1376 write (iout,'(8f10.4)') (vbld(k+nres),k=nnt,nct)
1377 write (iout,'(8f10.4)') (rad2deg*theta(k),k=3,nres)
1378 write (iout,'(8f10.4)') (rad2deg*phi(k),k=4,nres)
1379 write (iout,'(8f10.4)') (rad2deg*alph(k),k=2,nres-1)
1380 write (iout,'(8f10.4)') (rad2deg*omeg(k),k=2,nres-1)
1385 call etotal(energia(0))
1386 c if (natlike(iprot).gt.0)
1387 c & call natsimil(i,ii,iprot,.false.)
1388 e_total(i,iprot)=energia(0)
1390 enetb(ii,j,iprot)=energia(j)
1394 write (iout,*) "ww",ww(:n_ene)
1395 write (iout,'(2i5,18(1pe12.4))') i,ii,
1396 & (enetb(ii,j,iprot),j=1,n_ene)
1397 write(iout,'(4hENER,i10,3f15.3,2i10,i5)')
1398 & i,e_total(i,iprot),eini(i,iprot),entfac(i,iprot)
1399 call enerprint(energia(0))
1403 write (iout,*) "FUN nntyp",nntyp," eneps",eneps_temp(1,45)
1406 eneps(k,j,ii,iprot)=eneps_temp(k,j)
1410 c write (iout,*) "Matrix eneps"
1413 c write (iout,*) j,k,icant(j,k),
1414 c & eneps_temp(1,icant(j,k)),
1415 c & eneps_temp(2,icant(j,k))
1421 if (mod_tor .or. mod_sccor) then
1422 c write (iout,*) "etor",enetb(ii,13,iprot),enetb(ii,19,iprot)
1425 do ij=-ntortyp+1,ntortyp-1
1426 do jj=-ntortyp+1,ntortyp-1
1427 if (mask_tor(0,jj,ij,iblock).eq.1) then
1429 entor(k,ii,iprot)=etor_temp(0,0,jj,ij,iblock)
1430 c write (iout,*) "etor_temp",restyp(itortyp(j)),
1431 c & restyp(itortyp(i)),
1432 c & k,etor_temp(ji,ii)
1433 else if (mask_tor(0,jj,ij,iblock).gt.1) then
1434 if (tor_mode.eq.0) then
1435 do l=1,nterm(jj,ij,iblock)
1437 entor(k,ii,iprot)=etor_temp(l,0,jj,ij,iblock)
1439 if (mask_tor(0,jj,ij,iblock).gt.2) then
1440 do l=nterm(jj,ij,iblock)+1,2*nterm(jj,ij,iblock)
1442 entor(k,ii,iprot)=etor_temp(l,0,jj,ij,iblock)
1445 else if (tor_mode.eq.1) then
1447 do l=1,nterm_kcc(jj,ij)
1448 do ll=1,nterm_kcc_Tb(jj,ij)
1449 do lll=1,nterm_kcc_Tb(jj,ij)
1451 entor(k,ii,iprot)=etor_temp_kcc(lll,ll,l,ij,jj)
1455 if (mask_tor(0,jj,ij,1).gt.2) then
1456 do l=nterm_kcc(jj,ij)+1,2*nterm_kcc(jj,ij)
1457 do ll=1,nterm_kcc_Tb(jj,ij)
1458 do lll=1,nterm_kcc_Tb(jj,ij)
1460 entor(k,ii,iprot)=etor_temp_kcc(lll,ll,l,ij,jj)
1471 do ij=-nsccortyp+1,nsccortyp-1
1472 do jj=-nsccortyp+1,nsccortyp-1
1474 if (mask_tor(ll,jj,ij,1).eq.1) then
1476 entor(k,ii,iprot)=etor_temp(0,ll,jj,ij,1)
1477 c write (iout,*) "etor_temp",restyp(isccortyp(jj)),
1478 c & restyp(isccortyp(ij)),
1479 c & k,etor_temp(jj,ij)
1480 else if (mask_tor(ll,jj,ij,1).gt.1) then
1481 do l=1,nterm_sccor(jj,ij)
1483 entor(k,ii,iprot)=etor_temp(l,ll,jj,ij,1)
1485 do l=nterm_sccor(jj,ij)+1,2*nterm_sccor(jj,ij)
1487 entor(k,ii,iprot)=etor_temp(l,ll,jj,ij,1)
1494 c AL 8/7/17: optimization of the bending potentials
1498 if (mask_ang(ij).eq.0) cycle
1499 do jj=1,nbend_kcc_Tb(ij)
1501 enbend(k,ii,iprot)=ebend_temp_kcc(jj,ij)*wang
1502 c write (iout,*) "ij",ij," jj",jj," k",k," ebend_temp_kcc",
1503 c & ebend_temp_kcc(jj,ij)
1509 write (iout,*) "Conformation",i
1510 c write (iout,'(8f10.5)') ((c(j,i),j=1,3),i=1,nres)
1511 c write (iout,'(8f10.5)') ((c(j,i+nres),j=1,3),i=nnt,nct)
1512 c write (iout,'(8f10.4)') (vbld(k),k=2,nres)
1513 c write (iout,'(8f10.4)') (vbld(k+nres),k=nnt,nct)
1514 c write (iout,'(8f10.4)') (rad2deg*theta(k),k=3,nres)
1515 c write (iout,'(8f10.4)') (rad2deg*phi(k),k=4,nres)
1516 c write (iout,'(8f10.4)') (rad2deg*alph(k),k=2,nres-1)
1517 c write (iout,'(8f10.4)') (rad2deg*omeg(k),k=2,nres-1)
1518 call enerprint(energia(0))
1519 c write(iout,'(4hENER,i10,3f15.3,2i10,i5)')
1520 c & i,energia(0),eini(i,iprot),entfac(i,iprot)
1521 c write (iout,'(i5,18(1pe12.4))') ii,
1522 c & (enetb(ii,j,iprot),j=1,n_ene)
1523 c write (iout,'(i5,16(1pe12.4))') i,
1524 c & (energia(j),j=1,n_ene),energia(0)
1525 c print *,"Processor",me,me1," computing energies",i
1528 if (energia(0).ge.1.0d99) then
1529 write (iout,*) "FUNC1:CHUJ NASTAPIL in energy evaluation for",
1530 & " point",i,". Probably NaNs in some of the energy components."
1531 write (iout,*) "The components of the energy are:"
1532 call enerprint(energia(0))
1533 write (iout,*) "Conformation",i,ii
1534 write (iout,'(8f10.5)') ((c(j,k),j=1,3),k=1,nres)
1535 write (iout,'(8f10.5)') ((c(j,k+nres),j=1,3),k=nnt,nct)
1536 write (iout,'(8f10.4)') (vbld(k),k=2,nres)
1537 write (iout,'(8f10.4)') (vbld(k+nres),k=nnt,nct)
1538 write (iout,'(8f10.4)') (rad2deg*theta(k),k=3,nres)
1539 write (iout,'(8f10.4)') (rad2deg*phi(k),k=4,nres)
1540 write (iout,'(8f10.4)') (rad2deg*alph(k),k=2,nres-1)
1541 write (iout,'(8f10.4)') (rad2deg*omeg(k),k=2,nres-1)
1542 write (iout,*) "Calculation terminated at this point.",
1543 & " Check the database of conformations"
1546 call MPI_Abort(MPI_COMM_WORLD,ErrCode,IERROR)
1548 stop "SEVERE error in energy calculation"
1552 enetb(ii,1,iprot)=0.0d0
1555 enetb(ii,1,iprot)=enetb(ii,1,iprot)+
1556 & ftune_eps(eps(j,k))*eneps(1,icant(j,k),ii,iprot)+
1557 & eps(j,k)*eneps(2,icant(j,k),ii,iprot)
1563 etoti=etoti+enetb(ii,j,iprot)*ww(j)
1567 write (iout,*) "i",i," ww",ww
1568 write (iout,*) "enetb",(enetb(ii,j,iprot),j=1,n_ene)
1571 e_total(i,iprot)=etoti
1572 c write (iout,*) "FUNC1 natlike",iprot,natlike(iprot)
1573 if (natlike(iprot).gt.0) then
1574 call restore_ccoords(iprot,ii)
1575 call int_from_cart1(.false.)
1576 c call natsimil(i,ii,iprot,.false.)
1578 c & "natsimil",i,ii,(nu(k,ii,iprot),k=1,natlike(iprot))
1581 write (iout,'(i5,18(1pe12.4))') i,
1582 & (enetb(ii,j,iprot),j=1,n_ene)
1583 write (iout,'(18(1pe12.4))')
1584 & (eneps(1,j,ii,iprot),j=201,210)
1585 write(iout,'(4hENER,i10,3f15.3)')
1586 & i,e_total(i,iprot),eini(i,iprot),entfac(i,iprot)