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 include "COMMON.DERIV"
29 C Define local variables
30 integer i,ii,iii,ind,jj,j,k,l,ik,jk,iprot,ib,l1,l2,ll1,ll2,
33 integer ipass_conf,istart_conf,iend_conf
34 double precision energia(0:max_ene)
35 double precision etoti,sumpart,esquarei,emeani,elowesti,enepsjk,
36 & eave_pft(max_ene),emix_pft(max_ene),
37 & elowest_t(2,maxT),esquare_ft,
38 & elowest_aux(2,maxT),
39 & efree_t,emixsq_pft(max_ene),
40 & eneps_mixt(nntyp),eneps_meant(nntyp),
41 & enepsave_ft(nntyp),eneps_mix_ft(nntyp),
42 & eneps_mixsq_ft(nntyp),emean_ft,fac
44 double precision e_total_(maxstr_proc),eini_(maxstr_proc),
45 & entfac_(maxstr_proc),rmstb_(maxstr_proc)
48 double precision tcpu_ini,tcpu
58 write (iout,*) "FUNC1: Init_Ene ",init_ene
60 write (iout,*) "ELOWEST at the beginning of FUC1"
62 if (.not.maxlik(iprot)) cycle
63 do ibatch=1,natlike(iprot)+2
64 do ib=1,nbeta(ibatch,iprot)
65 write (iout,*) "iprot",iprot," ibatch",ibatch," ib",ib,
66 & " elowest",elowest(ib,ibatch,iprot)
72 c write (iout,*) "What",what," cutoffeval ",cutoffeval
74 call MPI_Bcast( What, 1, MPI_INTEGER, Master, Comm1, IERROR)
75 call MPI_Bcast( cutoffeval, 1, MPI_LOGICAL, Master, Comm1, IERROR)
76 call MPI_Bcast(x(1),n,MPI_DOUBLE_PRECISION, Master, Comm1, IERROR)
77 c write (iout,*) "What",what," cutoffeval ",cutoffeval
81 write (iout,*) "Processor",me,me1," What",What
82 write (iout,*) "Processor",me,me1," x",(x(i),i=1,n)
87 write (iout,*) "x",(x(i),i=1,n)
90 C Convert variables into weights and other UNRES energy parameters.
92 write (iout,*) "Caling x2w"
96 C Calculate the total energies.
98 c write (iout,*) "Processor",me," nprot",nprot
99 c Revise the list of conformations
101 write (iout,*) "MAKE_LIST called"
103 call MPI_Bcast( enecut(1), nprot, MPI_DOUBLE_PRECISION,
104 & Master, Comm1, IERROR)
105 call make_list(.true.,.false.,n,x)
109 if (.not.maxlik(iprot)) cycle
112 open(icsa_rbank,file="corr."//protname(iprot),
113 & access="direct",form="formatted",recl=25+10*natlike(iprot))
114 vormat='(2i6,2i3,e15.5,'
115 if (natlike(iprot).lt.10) then
116 write(vormat(16:),'(i1,a)') maxdimnat*natlike(iprot),'f7.4/)'
118 write(vormat(16:),'(i2,a)') maxdimnat*natlike(iprot),'f7.4/)'
120 write (iout,*) "format ",vormat
125 write (iout,*) "Processor",me," iprot",iprot,
126 & " indstart",indstart(me1,iprot)," indend",indend(me1,iprot),
127 & " init_ene",init_ene," mod_fourier",mod_fourier(nloctyp),
128 & " mod_elec",mod_elec," mod_scp",mod_scp," mod_tor",mod_tor,
129 & " mod_sccor",mod_sccor," mod_ang",mod_ang
132 call restore_molinfo(iprot)
135 IF (NCHUNK_CONF(IPROT).EQ.1) THEN
138 do i=indstart(me1,iprot),indend(me1,iprot)
140 do i=1,ntot_work(iprot)
142 c write (iout,*) "i",i," ii",ii," calling ene_eval"
143 call ene_eval(iprot,i,ii)
144 c write (iout,*) "After ene_eval: i",i," ii",ii
147 write (icsa_rbank,vormat,rec=i)
148 & i,list_conf(i,iprot),
149 & e_total(i,iprot),((nu(l,k,ii,iprot),l=1,natdim(k,iprot)),
150 & k=1,natlike(iprot))
157 if (.not.init_ene .and. mod_fourier(nloctyp).eq.0
158 & .and. .not. mod_elec .and. .not. mod_scp
159 & .and. .not. mod_tor .and. .not. mod_sccor) then
160 open (ientin,file=benefiles(iprot),status="old",
161 & form="unformatted",access="direct",recl=lenrec_ene(iprot))
162 if (natlike(iprot).gt.0)
163 & open (icbase,file=bprotfiles(iprot),status="old",
164 & form="unformatted",access="direct",recl=lenrec(iprot))
166 open (icbase,file=bprotfiles(iprot),status="old",
167 & form="unformatted",access="direct",recl=lenrec(iprot))
168 c write (iout,*) "lenrec_ene",lenrec_ene(iprot)
170 c Change AL 12/30/2017
171 if (.not. mod_other_params)
172 & open (ientout,file=benefiles(iprot),status="unknown",
173 & form="unformatted",access="direct",recl=lenrec_ene(iprot))
177 do i=indstart(me1,iprot),indend(me1,iprot),maxstr_proc
179 iend_conf=min0(i+maxstr_proc-1,indend(me1,iprot))
181 do i=1,ntot_work(iprot),maxstr_proc
183 iend_conf=min0(i+maxstr_proc-1,ntot(iprot))
187 c Read the chunk of conformations off a DA scratchfile.
189 if (.not. init_ene .and. mod_fourier(nloctyp).eq.0
190 & .and. .not. mod_elec .and. .not. mod_scp
191 & .and. .not. mod_tor .and. .not. mod_sccor .and. .not. mod_ang)
194 write (iout,*) "func1: calling daread_ene",istart_conf,
197 call daread_ene(iprot,istart_conf,iend_conf)
198 if (natlike(iprot).gt.0) then
200 write (iout,*) "Calling daread_coords",istart_conf,
203 call daread_ccoords(iprot,istart_conf,iend_conf)
205 do iii=istart_conf,iend_conf
206 call ene_eval(iprot,iii,ii)
209 write (iout,*) "func1: calling dawrite_ene",istart_conf,
212 call dawrite_ene(iprot,istart_conf,iend_conf,ientin)
214 call daread_ccoords(iprot,istart_conf,iend_conf)
215 do iii=istart_conf,iend_conf
216 call ene_eval(iprot,iii,ii)
218 c AL 12/30/17 - writing energies is not needed when whole energy is evaluated
219 c call dawrite_ene(iprot,istart_conf,iend_conf,ientout)
223 do iii=istart_conf,iend_conf
224 write (icsa_rbank,vormat,rec=iii)
225 & iii,list_conf(iii,iprot),
226 & e_total(iii,iprot),
227 & ((nu(l,k,iii-istart_conf+1,iprot),l=1,natdim(k,iprot)),
228 & k=1,natlike(iprot))
234 if (.not.init_ene .and. mod_fourier(nloctyp).eq.0
235 & .and. .not. mod_elec .and. .not. mod_scp
236 & .and. .not. mod_tor .and. .not. mod_sccor .and. .not. mod_ang)
239 if (natlike(iprot).gt.0) close(icbase)
243 if (init_ene .or. mod_fourier(nloctyp).gt.0 .or. mod_elec
244 & .or. mod_scp .or. mod_tor .or. mod_sccor .or. mod_ang)
249 c print *,"Processor",me,me1," finished computing energies"
251 do i=1,scount(me1,iprot)
252 e_total_(i)=e_total(indstart(me1,iprot)+i-1,iprot)
253 eini_(i)=eini(indstart(me1,iprot)+i-1,iprot)
254 entfac_(i)=entfac(indstart(me1,iprot)+i-1,iprot)
255 rmstb_(i)=rmstb(indstart(me1,iprot)+i-1,iprot)
257 if (What.eq.2 .or. What.eq.3) then
258 c call MPI_Gatherv(e_total(indstart(me1,iprot),iprot),
259 c & scount(me1,iprot),MPI_DOUBLE_PRECISION,e_total(1,iprot),
260 c & scount(0,iprot),idispl(0,iprot),MPI_DOUBLE_PRECISION,Master,
262 call MPI_Gatherv(e_total_(1),
263 & scount(me1,iprot),MPI_DOUBLE_PRECISION,e_total(1,iprot),
264 & scount(0,iprot),idispl(0,iprot),MPI_DOUBLE_PRECISION,Master,
266 c call MPI_Gatherv(entfac(indstart(me1,iprot),iprot),
267 c & scount(me1,iprot),MPI_DOUBLE_PRECISION,entfac(1,iprot),
268 c & scount(0,iprot),idispl(0,iprot),MPI_DOUBLE_PRECISION,Master,
270 call MPI_Gatherv(entfac_(1),
271 & scount(me1,iprot),MPI_DOUBLE_PRECISION,entfac(1,iprot),
272 & scount(0,iprot),idispl(0,iprot),MPI_DOUBLE_PRECISION,Master,
274 c call MPI_Gatherv(eini(indstart(me1,iprot),iprot),
275 c & scount(me1,iprot),MPI_DOUBLE_PRECISION,eini(1,iprot),
276 c & scount(0,iprot),idispl(0,iprot),MPI_DOUBLE_PRECISION,Master,
278 call MPI_Gatherv(eini_(1),
279 & scount(me1,iprot),MPI_DOUBLE_PRECISION,eini(1,iprot),
280 & scount(0,iprot),idispl(0,iprot),MPI_DOUBLE_PRECISION,Master,
282 c call MPI_Gatherv(rmstb(indstart(me1,iprot),iprot),
283 c & scount(me1,iprot),MPI_DOUBLE_PRECISION,rmstb(1,iprot),
284 c & scount(0,iprot),idispl(0,iprot),MPI_DOUBLE_PRECISION,Master,
286 call MPI_Gatherv(rmstb_(1),
287 & scount(me1,iprot),MPI_DOUBLE_PRECISION,rmstb(1,iprot),
288 & scount(0,iprot),idispl(0,iprot),MPI_DOUBLE_PRECISION,Master,
292 c call MPI_Allgatherv(e_total(indstart(me1,iprot),iprot),
293 c & scount(me1,iprot),MPI_DOUBLE_PRECISION,e_total(1,iprot),
294 c & scount(0,iprot),idispl(0,iprot),MPI_DOUBLE_PRECISION,
296 call MPI_Allgatherv(e_total_(1),
297 & scount(me1,iprot),MPI_DOUBLE_PRECISION,e_total(1,iprot),
298 & scount(0,iprot),idispl(0,iprot),MPI_DOUBLE_PRECISION,
303 c Mean and lowest energies of structural classes
305 IF (NCHUNK_CONF(IPROT).EQ.1) THEN
308 do i=1,ntot_work(iprot)
312 do i=indstart(me1,iprot),indend(me1,iprot)
316 istart_conf=indstart(me1,iprot)
317 iend_conf=indend(me1,iprot)
319 do i=1,ntot_work(iprot)
323 iend_conf=ntot_work(iprot)
326 do i=1,ntot_work(iprot)
327 write (iout,*) "i",i," i2ii",i2ii(i,iprot)
331 C Change AL 12/30/2017
332 if (.not.mod_other_params)
333 &open (ientin,file=benefiles(iprot),status="old",
334 & form="unformatted",access="direct",recl=lenrec_ene(iprot))
335 c call daread_ene(iprot,istart_conf,iend_conf)
336 call emin_search(iprot)
340 if (.not.mod_other_params)
341 &open (ientin,file=benefiles(iprot),status="old",
342 & form="unformatted",access="direct",recl=lenrec_ene(iprot))
345 do istart_conf=indstart(me1,iprot),indend(me1,iprot),maxstr_proc
346 iend_conf=min0(istart_conf+maxstr_proc-1,indend(me1,iprot))
348 do istart_conf=1,ntot_work(iprot),maxstr_proc
349 iend_conf=min0(istart_conf+maxstr_proc-1,ntot_work(iprot))
352 c Read the chunk of energies and derivatives off a DA scratchfile.
354 ipass_conf=ipass_conf+1
355 do i=1,ntot_work(iprot)
359 do i=istart_conf,iend_conf
364 write (iout,*) "ipass_conf",ipass_conf,
365 & " istart_conf",istart_conf," iend_conf",iend_conf
366 do i=1,ntot_work(iprot)
367 write (iout,*) "i",i," i2ii",i2ii(i,iprot)
371 call daread_ene(iprot,istart_conf,iend_conf)
372 call emin_search(iprot)
378 c write (iout,*) "Exit func1"
383 c Complete the calculation of the lowest energies over all classes and
384 c distribute the values to all procs
386 if (.not.maxlik(iprot)) cycle
388 write (iout,*) "Processor",me,me1," calling MPI_Reduce: 2"
389 do k=1,natlike(iprot)+2
390 write (iout,*) "iprot",iprot," k",k
391 do ib=1,nbeta(k,iprot)
392 write (iout,*) "ib",ib
393 write (iout,'(7hELOWEST,10e15.3)')
394 & elowest(ib,k,iprot)
399 do ibatch=1,natlike(iprot)+2
400 do ib=1,nbeta(ibatch,iprot)
401 elowest_aux(1,ib)=elowest(ib,ibatch,iprot)
402 elowest_aux(2,ib)=ind_lowest(ib,ibatch,iprot)
404 call MPI_Allreduce(elowest_aux(1,1),elowest_t(1,1),
405 & nbeta(ibatch,iprot),
406 & MPI_2DOUBLE_PRECISION, MPI_MINLOC, Comm1, IERROR)
408 do ib=1,nbeta(ibatch,iprot)
409 write (iout,*) "beta=",betaT(ib,ibatch,iprot)
410 write (iout,'(9helowest_t,10f15.3)')
411 & elowest_t(1,ib),elowest_t(2,ib)
413 write (iout,*) "Processor",me,me1," finished MPI_Reduce: 2"
415 do ib=1,nbeta(ibatch,iprot)
416 c write (iout,*) "IB",ib," ibatch",ibatch," iprot",iprot
418 elowest(ib,ibatch,iprot)=elowest_t(1,ib)
419 c write (iout,*) "elowest",ib,ibatch,iprot,
420 c & elowest(ib,ibatch,iprot)
422 ind_lowest(ib,ibatch,iprot)=elowest_t(2,ib)
429 if (.not.maxlik(iprot)) cycle
431 c write (iout,*) "After averages, calling Thermal"
433 if (What.eq.2) call thermal(iprot)
434 c write (iout,*) "After thermal"
438 if (me1.eq.Master) then
441 if (.not.maxlik(iprot)) cycle
443 write (iout,*) "iprot",iprot," elowest",
444 & ((elowest(ib,k,iprot),ib=1,nbeta(k,iprot)),k=1,natlike(iprot)+2)
447 do ib=1,nbeta(2,iprot)
448 fac=betaT(ib,2,iprot)
449 c 6/15/05 AL Heat capacity
450 zvtot(ib,iprot)=(esquare_ftot(ib,iprot)-
451 & emean_ftot(ib,iprot)**2)*fac*fac*Rgas
452 & -ebis_ftot(ib,iprot)+heatbase(iprot)
454 write (iout,*) "iprot",iprot," ib",ib,
455 & " emeantot",emean_ftot(ib,iprot),
456 & " esquaretot",esquare_ftot(ib,iprot),
457 & " ebistot",ebis_ftot(ib,iprot),
458 & " zvtot",zvtot(ib,iprot)
461 write (iout,*) "beta",
463 & " efree",efree(ib,2,iprot),
464 & " emean",emean_ftot(ib,iprot),
465 & " variance",esquare_ftot(ib,iprot)
468 c 4/13/04 AL Correlation coefficients between energy and nativelikeness
469 c in the respective classes.
471 write (iout,*) "iprot",iprot," ib",ib,
473 write (iout,*) "emean",emean_ftot(ib,iprot),
474 & " esquare",esquare_ftot(ib,iprot)
480 & "Averages of nativelikeness and energy-nativelikeness",
481 & " correlation coefficients:"
483 do i=1,natlike(iprot)
484 do ib=1,nbeta(i+1,iprot)
485 write (iout,*) "protein",iprot," property",i,
486 & " temperature",ib," natdim",natdim(i,iprot)," value(s)",
487 & (nuave(j,ib,i,iprot),j=1,natdim(i,iprot))
498 write (iout,*) "Calling CUTOFF_VIOLATION"
501 c write (iout,*) "CUTOFFEVAL",cutoffeval
503 if (cutoffeval) call cutoff_violation
504 t_func = t_func + tcpu() - tcpu_ini
506 write (iout,*) "Exitting FUNC1"
511 c-------------------------------------------------------------------------------
512 subroutine targetfun(n,x,nf,f,uiparm,ufparm)
515 include "DIMENSIONS.ZSCOPT"
518 integer IERROR,Errcode,status(MPI_STATUS_SIZE)
522 double precision x(n),g(max_paropt)
523 include "COMMON.WEIGHTS"
524 include "COMMON.IOUNITS"
525 include "COMMON.DERIV"
526 include "COMMON.VMCPAR"
527 include "COMMON.CLASSES"
529 include "COMMON.ENERGIES"
530 include "COMMON.WEIGHTDER"
531 include "COMMON.OPTIM"
532 include "COMMON.TIME1"
533 include "COMMON.COMPAR"
534 include "COMMON.TORSION"
537 integer i,ii,it,inat,j,k,l,kk,iprot,ib
540 double precision urparm,rdif
542 double precision f,fpmf,chisquare_force,kara,viol,gnmr,gnmr1,aux
543 double precision fforce
547 write (iout,*) me,me1,"Calling TARGETFUN"
548 write (iout,*) "n",n," x",(x(i),i=1,n)
550 call write_restart(n,x)
556 if (mod_fourier(nloctyp).gt.0) then
562 c write (iout,*) "Calling chisquare_force"
564 fforce = chisquare_force(n,x,g,1)
565 c write (iout,*) "Exit chisquare_force",fforce
567 c Maximum likelihood contribution
569 if (maxlik(iprot)) then
570 do iT=1,nbeta(1,iprot)
571 f = f + weilik(iT,iprot)*sumlik(iT,iprot)
576 write (iout,*)"target_fun: sumlik"
578 write (iout,*) (sumlik(ii,iprot),ii=1,nbeta(1,iprot))
580 write (iout,*) "f before Cv =",f
584 c 6/15/05 AL Contribution from Cv
585 do ib=1,nbeta(2,iprot)
586 f=f+weiCv(ib,iprot)*(zvtot(ib,iprot)-target_cv(ib,iprot))**2
588 c write (iout,*) "target_fun from CV: f=",f
590 c write (iout,*) "target_fun: f=",f
591 c 8/2/2013 Contribution from conformation-dependent averages
593 do inat=1,natlike(iprot)
594 do ib=1,nbeta(inat+2,iprot)
595 do k=1,natdim(inat,iprot)
596 f = f+weinat(k,ib,inat,iprot)*
597 & (nuave(k,ib,inat,iprot)-nuexp(k,ib,inat,iprot))**2
599 write (iout,*) "iprot",iprot," inat",inat,
600 & " ib",ib," k=",k," nuave",nuave(k,ib,inat,iprot),
601 & " nuexp",nuexp(k,ib,inat,iprot),
602 & " weight",weinat(k,ib,inat,iprot)
608 c write (iout,*) "target_fun after adding nativelikeness: f=",f
610 c add constraints on weights
613 kara=kara+gnmr1(x(i),x_low(i),x_up(i))
617 f = f + wpmf*fpmf + fforce
620 write (iout,*) "target_fun: f=",f,wpmf*fpmf,1.0d16*kara
626 c-----------------------------------------------------------------------------
627 subroutine targetgrad(n,x,nf,g,uiparm,rdum,ufparm)
630 include "DIMENSIONS.ZSCOPT"
631 include "COMMON.TIME1"
634 integer IERROR,ERRCODE,status(MPI_STATUS_SIZE)
637 double precision x(n),
638 & g(n),gg(max_paropt),gforc(max_paropt)
639 include "COMMON.WEIGHTS"
640 include "COMMON.ENERGIES"
641 include "COMMON.CLASSES"
642 include "COMMON.IOUNITS"
643 include "COMMON.DERIV"
644 include "COMMON.COMPAR"
645 include "COMMON.WEIGHTDER"
646 include "COMMON.OPTIM"
647 include "COMMON.VMCPAR"
649 include "COMMON.NAMES"
651 include "COMMON.TORSION"
657 double precision xi,delta /1.0d-6/
659 double precision urparm,rdif,chisquare_force
661 double precision zewn(MaxT,maxprot),aux,zscder
662 double precision zewnvtot(maxT,maxprot)
663 double precision sumlik0(maxT,maxprot),zv0tot(maxT,maxprot),
664 & nuave0(maxdimnat,maxT,maxnatlike,maxprot)
665 double precision geps(nntyp),gtor(maxtor_var),gang(maxang_var)
666 double precision rdum
668 integer ll1,ll2,nl1,nl2,nn
669 integer i,ii,ind,inat,j,k,kk,iprot,ib,n_weight,nnene
670 integer iti,itj,jj,icant
673 double precision gnmrprim,gnmr1prim
674 double precision tcpu_ini,tcpu,chi0,chiplus,chiminus
675 logical in_sc_pair_list
676 external in_sc_pair_list
677 integer ind_shield /25/
683 write (iout,*) "Processor",me,me1," calling TARGETGRAD"
688 write (iout,*) "Calling TARGETGRAD"
693 write (iout,*) "x",(x(i),i=1,n)
700 c AL 2/10/2018 Add PMF gradient
701 if (mod_fourier(nloctyp).gt.0) then
703 c write (iout,*) "After rdif"
707 chi0 = chisquare_force(n,x,gforc,2)
709 do ib=1,nbeta(2,iprot)
710 c 6/15/05 AL Contributions from Cv
711 zewnvtot(ib,iprot)=2*weiCv(ib,iprot)*
712 & (zvtot(ib,iprot)-target_cv(ib,iprot))
724 if (mod_tor .or. mod_sccor) then
734 c Maximum likelihood gradient
737 if (imask(k).gt.0 .and. k.ne.ind_shield) then
742 c write (iout,*) "kk",nn," nnene",nnene," n_ene",n_ene
744 do ib=1,nbeta(1,iprot)
747 if (imask(k).gt.0 .and. k.ne.ind_shield) then
749 g(kk)=g(kk)+weilik(ib,iprot)*sumlikder(kk,ib,iprot)
753 geps(k)=geps(k)+weilik(ib,iprot)*sumlikeps(k,ib,iprot)
756 gtor(k)=gtor(k)+weilik(ib,iprot)*sumliktor(k,ib,iprot)
759 gang(k)=gang(k)+weilik(ib,iprot)*sumlikang(k,ib,iprot)
764 write (iout,*) "gtor"
766 write(iout,*) k,gtor(k)
768 write (iout,*) "nang_var",nang_var," gang"
770 write(iout,*) k,gang(k)
774 c Heat-capacity gradient
776 do ib=1,nbeta(2,iprot)
779 if (imask(k).gt.0 .and. k.ne.ind_shield) then
781 g(kk)=g(kk)+zvdertot(kk,ib,iprot)*zewnvtot(ib,iprot)
785 geps(k)=geps(k)+zewnvtot(ib,iprot)*zvepstot(k,ib,iprot)
788 gtor(k)=gtor(k)+zewnvtot(ib,iprot)*zvtortot(k,ib,iprot)
791 gang(k)=gang(k)+zewnvtot(ib,iprot)*zvangtot(k,ib,iprot)
796 write (iout,*) "gtor"
798 write(iout,*) k,gtor(k)
800 write (iout,*) "gang"
802 write(iout,*) k,gang(k)
804 write (iout,*) "grad: g",(g(i),i=1,n)
807 c Derivatives of conformational-dependent properties
809 do inat=1,natlike(iprot)
810 do ib=1,nbeta(inat+2,iprot)
811 call propderiv(ib,inat,iprot)
812 do l=1,natdim(inat,iprot)
813 aux=2*weinat(l,ib,inat,iprot)*
814 & (nuave(l,ib,inat,iprot)-nuexp(l,ib,inat,iprot))
816 write (iout,*) "iprot",iprot," ib",ib,
817 & " inat",inat," l",l,
818 & " nuave",nuave(l,ib,inat,iprot),
819 & " weight",weinat(ib,inat,iprot),
825 if (imask(k).gt.0 .and. k.ne.ind_shield) then
827 g(kk)=g(kk)+aux*rder(kk,l)
831 geps(k)=geps(k)+aux*reps(k,l)
834 gtor(k)=gtor(k)+aux*rtor(k,l)
837 gang(k)=gang(k)+aux*rang(k,l)
844 write (iout,*) "gtor"
846 write(iout,*) k,gtor(k)
848 write (iout,*) "gang"
850 write(iout,*) k,gang(k)
853 c Compute numerically the remaining part of the gradient
856 c if (imask(i).gt.0 .and. i.ne.ind_shield) n_weight=n_weight+1
860 c Sum up the gradient in SC epsilons, if needed
865 g(ii)=g(ii)+geps(icant(iti,iti))
867 if (.not. in_sc_pair_list(iti,j)) then
868 g(ii)=g(ii)+0.5d0*geps(icant(iti,j))
876 g(ii)=geps(icant(iti,itj))
879 c write (iout,*) "n_ene",n_ene
880 if (mod_tor .or. mod_sccor) then
894 write (iout,*) "n",n," n_weight",n_weight
895 write (iout,*) "After SC: grad:"
897 write (iout,*) i,g(i)
903 c AL 2/10/2018 Add PMF gradient
904 if (mod_fourier(nloctyp).gt.0) then
906 c write (iout,*) "After rdif"
910 chi0 = chisquare_force(n,x,gforc,1)
912 do ib=1,nbeta(1,iprot)
913 sumlik0(ib,iprot)=sumlik(ib,iprot)
917 do ib=1,nbeta(2,iprot)
918 zv0tot(ib,iprot)=zvtot(ib,iprot)
922 do i=1,natlike(iprot)
923 do ib=1,nbeta(i+2,iprot)
924 do k=1,natdim(i,iprot)
925 nuave0(k,ib,i,iprot)=nuave(k,ib,i,iprot)
932 if (nbeta(2,iprot).gt.0) nn=nn-1
936 if (nbeta(2,iprot).gt.0) then
938 do ib=1,nbeta(2,iprot)
939 g(ii)=g(ii)+zewnvtot(ib,iprot)
944 write (iout,*) "n",n," n_weight",n_weight
945 write (iout,*) "After heat grad:"
947 write (iout,*) i,g(i)
951 c write (iout,*) "n_weight",n_weight," n",n
954 c write (iout,*) "n_weight",n_weight," n",n
955 c AL 5/12/19 numerical derivatives of force chisqaure in angles
956 do i=nnene+1,n_weight
959 c write (iout,*) "i",i," x",x(i),xi
963 c AL 2/10/2018 Add PMF gradient
964 if (mod_fourier(nloctyp).gt.0) then
968 chiplus = chisquare_force(n,x,gforc,1)
969 gforc(i)=-(chiplus-chi0)/delta
972 c end nunumerical derivatives of forces in angles
976 c write (iout,*) "i",i," x",x(i),xi
980 c AL 2/10/2018 Add PMF gradient
981 if (mod_fourier(nloctyp).gt.0) then
983 c write (iout,*) "After rdif"
987 chiplus = chisquare_force(n,x,gforc,1)
991 c chiminus = chisquare_force(n,x,gforc,1)
992 c write (iout,*) "chi0",chi0," chiplus",chiplus
993 gforc(i)=-(chiplus-chi0)/delta
994 c gforc(i)=-0.5d0*(chiplus-chiminus)/delta
997 do ib=1,nbeta(1,iprot)
998 g(i)=g(i)+weilik(ib,iprot)*(sumlik(ib,iprot)
999 & -sumlik0(ib,iprot))/delta
1000 c write (iout,*) "iprot",iprot," g",g(i)
1004 write (iout,*) "init numerical derivatives"
1007 c Contribution from Cv
1009 do ib=1,nbeta(2,iprot)
1010 g(i)=g(i)+zewnvtot(ib,iprot)*
1011 & (zvtot(ib,iprot)-zv0tot(ib,iprot))/delta
1014 c Contribution from average nativelikenss and correlation coefficients
1015 c between energy and nativelikeness
1017 do ii=1,natlike(iprot)
1018 do ib=1,nbeta(ii+2,iprot)
1019 do k=1,natdim(i,iprot)
1020 aux=2*weinat(k,ib,inat,iprot)*
1021 & (nuave(l,ib,inat,iprot)-nuexp(l,ib,inat,iprot))
1022 g(i)=g(i)+aux*(nuave(k,ib,ii,iprot)-
1023 & nuave0(k,ib,ii,iprot))/delta
1031 write (iout,*) "n",n," n_weight",n_weight
1032 write (iout,*) "After num grad:"
1034 write (iout,*) k,g(k)
1040 c AL 2/10/2018 Add PMF gradient
1041 if (mod_fourier(nloctyp).gt.0) then
1042 aux = rdif(n,x,gg,2)
1043 c write (iout,*) "After rdif"
1046 aux = chisquare_force(n,x,gforc,0)
1049 write (iout,*) "finish numerical derivatives"
1053 c 1/10/2007 AL Correction: ENDIF...IF insterted to prevent unmatched
1054 c SEND is I_LOCAL_CHECK.GT.0
1057 write (iout,*) "mode",mode
1060 c AL 2/10/2018 Add PMF gradient
1061 if (mod_fourier(nloctyp).gt.0) then
1063 g(i)=g(i)-wpmf*gg(i)
1071 c transform the gradient to the x space
1073 g(i)=g(i)*(x_up(i)-x_low(i))/(pi*(1.0d0+(x(i)
1074 & -0.5d0*(x_up(i)+x_low(i)))**2))
1077 c add constraints on weights
1078 c write (iout,*) "Gradient in constraints"
1080 g(i)=g(i)+1.0d16*gnmr1prim(x(i),x_low(i),x_up(i))
1082 write (iout,*) i,x(i),x_low(i),x_up(i),
1083 & gnmr1prim(x(i),x_low(i),x_up(i))
1088 write (iout,*) "grad"
1090 write (iout,*) i,g(i)
1093 t_grad = t_grad + tcpu() - tcpu_ini
1095 write (iout,*) "Exit targetgrad"
1100 c------------------------------------------------------------------------------
1101 subroutine matout(ndim,n,a)
1102 implicit real*8 (a-h,o-z)
1103 include "DIMENSIONS.ZSCOPT"
1104 include "COMMON.IOUNITS"
1105 double precision a(ndim)
1106 character*6 line6 / '------' /
1107 character*12 line12 / '------------' /
1111 write (iout,1000) (k,k=i,nlim)
1112 write (iout,1020) line6,(line12,k=i,nlim)
1113 1000 format (/7x,6(i7,5x))
1114 1020 format (a6,6a12)
1119 3 b(k-i+1)=a(icant(i,j))
1120 write (iout,1010) j,(b(k),k=1,jlim1)
1123 1010 format (i3,3x,6(1pe11.4,1x))
1126 c------------------------------------------------------------------------------
1129 include "DIMENSIONS"
1130 include "DIMENSIONS.ZSCOPT"
1133 integer IERROR,ERRCODE,status(MPI_STATUS_SIZE)
1136 include "COMMON.WEIGHTS"
1137 include "COMMON.ENERGIES"
1138 include "COMMON.IOUNITS"
1139 include "COMMON.DERIV"
1140 include "COMMON.WEIGHTDER"
1141 include "COMMON.VMCPAR"
1142 include "COMMON.GEO"
1143 include "COMMON.NAMES"
1144 include "COMMON.VAR"
1145 include "COMMON.CLASSES"
1146 include "COMMON.THERMAL"
1148 include "COMMON.MPI"
1150 include "COMMON.TIME1"
1151 double precision aux,zscder
1152 double precision fac,fac2
1153 double precision efj(2),emj(2),varj(2),edecum,edecum1,ebisdecum,
1155 double precision eavpfj(max_ene,2),emixpfj(max_ene,2),
1156 & emixsqpfj(max_ene,2),enepsavefj(nntyp,2),enepsmixfj(nntyp,2),
1157 & enepsmixsqfj(nntyp,2),eavpfjprim(max_ene,2),
1158 & entoravefj(0:3,maxtor_var,2),entoravefjprim(0:3,maxtor_var,2),
1159 & entormixfj(0:3,maxtor_var,2),entormixsqfj(0:3,maxtor_var,2),
1160 & enangavefj(0:3,maxang_var,2),enangavefjprim(0:3,maxang_var,2),
1161 & enangmixfj(0:3,maxang_var,2),enangmixsqfj(0:3,maxang_var,2)
1162 integer i,ii,j,k,kk,iprot,ib
1163 integer iti,itj,jj,icant
1166 integer ind_shield /25/
1170 do ib=1,nbeta(2,iprot)
1171 fac = betaT(ib,2,iprot)
1175 if (imask(k).gt.0 .and. k.ne.ind_shield) then
1177 ebisdecum=emix_pfbistot(k,ib,iprot)-
1178 & eave_pftot(k,ib,iprot)
1179 & *ebis_ftot(ib,iprot)
1180 edecum=emix_pfprimtot(k,ib,iprot)
1181 & -eave_pfprimtot(k,ib,iprot)
1182 & *emean_ftot(ib,iprot)
1183 edecum1=emix_pftot(k,ib,iprot)
1184 & -eave_pftot(k,ib,iprot)
1185 & *emean_ftot(ib,iprot)
1186 e2decum=emixsq_pftot(k,ib,iprot)
1187 & -eave_pftot(k,ib,iprot)
1188 & *esquare_ftot(ib,iprot)
1189 zvdertot(kk,ib,iprot)=Rgas*fac2*(2*edecum
1190 & -fac*(e2decum-2*emean_ftot(ib,iprot)
1192 & -eave_pfbistot(k,ib,iprot)
1195 write (iout,*) "k=",k,
1196 & "eave_pftot",eave_pftot(k,ib,iprot),
1197 & " emix_pftot",emix_pftot(k,ib,iprot),
1198 & " emix_pfprimtot",emix_pfprimtot(k,ib,iprot),
1199 & " emix_pfbistot",emix_pfbistot(k,ib,iprot),
1200 & " eave_pfprimtot",eave_pfprimtot(k,ib,iprot),
1201 & " eave_pfbistot",eave_pfbistot(k,ib,iprot),
1202 & " emixsq_pftot",emixsq_pftot(k,ib,iprot),
1203 & " ebis_ftot",ebis_ftot(ib,iprot),
1204 & " emean_ftot",emean_ftot(ib,iprot)
1205 write (iout,*) "k=",k," edecum",edecum,
1206 & " edecum1",edecum1,
1207 & " e2decum",e2decum," ebisdecum",ebisdecum,
1209 & zvdertot(kk,ib,iprot)
1215 ebisdecum=eneps_mix_fbistot(k,ib,iprot)-
1216 & enepsave_ftot(k,ib,iprot)*ebis_ftot(ib,iprot)
1217 edecum=eneps_mix_ftot(k,ib,iprot)
1218 & -enepsave_ftot(k,ib,iprot)*emean_ftot(ib,iprot)
1219 e2decum=eneps_mixsq_ftot(k,ib,iprot)
1220 & -enepsave_ftot(k,ib,iprot)*esquare_ftot(ib,iprot)
1221 zvepstot(k,ib,iprot)=ww(1)*(Rgas*fac2*(2*edecum
1222 & -fac*(e2decum-2*emean_ftot(ib,iprot)
1223 & *edecum))+fac*ebisdecum)
1225 write (iout,*) ib,k,"ebisdecum",ebisdecum,
1226 & " edecum",edecum," e2decum",e2decum," zvepstot",
1227 & zvepstot(k,ibb,iprot)
1229 & " enepsave_ftot",enepsave_ftot(k,ib,iprot),
1230 & " eneps_mix_ftot",eneps_mix_ftot(k,ib,iprot),
1231 & " eneps_mix_fbistot",eneps_mix_fbistot(k,ib,iprot),
1232 & " eneps_mixsq_ftot",eneps_mixsq_ftot(k,ib,iprot),
1233 & " emean_ftot",emean_ftot(ib,iprot),
1234 & " ebis_ftot",ebis_ftot(ib,iprot)
1238 if (mod_tor .or. mod_sccor) then
1240 ebisdecum=entor_mix_fbistot(k,ib,iprot)-
1241 & entorave_ftot(k,ib,iprot)*ebis_ftot(ib,iprot)
1242 edecum=entor_mix_fprimtot(k,ib,iprot)
1243 & -entorave_fprimtot(k,ib,iprot)*emean_ftot(ib,iprot)
1244 edecum1=entor_mix_ftot(k,ib,iprot)
1245 & -entorave_ftot(k,ib,iprot)*emean_ftot(ib,iprot)
1246 e2decum=entor_mixsq_ftot(k,ib,iprot)
1247 & -entorave_ftot(k,ib,iprot)*esquare_ftot(ib,iprot)
1248 zvtortot(k,ib,iprot)=Rgas*fac2*(2*edecum
1249 & -fac*(e2decum-2*emean_ftot(ib,iprot)
1250 & *edecum1))-entorave_fbistot(k,ib,iprot)
1254 & " entorave_ftot",entorave_ftot(k,ib,iprot),
1255 & " entor_mix_ftot",entor_mix_ftot(k,ib,iprot),
1256 & " entor_mix_fprimtot",entor_mix_fprimtot(k,ib,iprot),
1257 & " entor_mix_fbistot",entor_mix_fbistot(k,ib,iprot),
1258 & " entorave_fprimtot",entorave_fprimtot(k,ib,iprot),
1259 & " entorave_fbistot",entorave_fbistot(k,ib,iprot),
1260 & " entor_mixsq_ftot",entor_mixsq_ftot(k,ib,iprot),
1261 & " emean_ftot",emean_ftot(ib,iprot),
1262 & " ebis_ftot",ebis_ftot(ib,iprot)
1263 write (iout,*) ib,k," ebisdecum",ebisdecum,
1264 & " edecum",edecum," edecum1",edecum1," e2decum",e2decum,
1265 & " zvtortot",zvtortot(k,ibb,iprot)
1273 edecum1=enang_mix_ftot(k,ib,iprot)
1274 & -enangave_ftot(k,ib,iprot)*emean_ftot(ib,iprot)
1275 e2decum=enang_mixsq_ftot(k,ib,iprot)
1276 & -enangave_ftot(k,ib,iprot)*esquare_ftot(ib,iprot)
1277 zvtortot(k,ib,iprot)=Rgas*fac2*(2*edecum
1278 & -fac*(e2decum-2*emean_ftot(ib,iprot)
1279 & *edecum1))-entorave_fbistot(k,ib,iprot)
1283 & " enangave_ftot",enangave_ftot(k,ib,iprot),
1284 & " enang_mix_ftot",enang_mix_ftot(k,ib,iprot),
1285 & " enang_mixsq_ftot",enang_mixsq_ftot(k,ib,iprot),
1286 & " emean_ftot",emean_ftot(ib,iprot)
1287 write (iout,*) ib,k," ebisdecum",ebisdecum,
1288 & " edecum",edecum," edecum1",edecum1," e2decum",e2decum,
1289 & " zvtortot",zvangtot(k,ibb,iprot)
1294 write (iout,*) "iprot",iprot,
1296 write (iout,*) "zvder",
1297 & (zvdertot(k,ibb,iprot),k=1,kk)
1303 c------------------------------------------------------------------------------
1304 subroutine propderiv(ib,inat,iprot)
1305 c Compute the derivatives of conformation-dependent averages in force-field
1308 include "DIMENSIONS"
1309 include "DIMENSIONS.ZSCOPT"
1312 integer IERROR,ERRCODE,status(MPI_STATUS_SIZE)
1315 include "COMMON.WEIGHTS"
1316 include "COMMON.ENERGIES"
1317 include "COMMON.CLASSES"
1318 include "COMMON.IOUNITS"
1319 include "COMMON.DERIV"
1320 include "COMMON.WEIGHTDER"
1321 include "COMMON.VMCPAR"
1322 include "COMMON.GEO"
1323 include "COMMON.OPTIM"
1324 include "COMMON.NAMES"
1325 include "COMMON.COMPAR"
1327 include "COMMON.MPI"
1329 include "COMMON.TIME1"
1330 include "COMMON.VAR"
1331 double precision aux,zscder
1332 double precision fac
1333 double precision efj(2),emj(2),varj(2)
1334 double precision eavpfj(max_ene,2),emixpfj(max_ene,2),
1335 & emixsqpfj(max_ene,2),enepsavefj(nntyp,2),enepsmixfj(nntyp,2),
1336 & enepsmixsqfj(nntyp,2)
1338 integer i,ii,ind,j,k,kk,iprot,ib,ibb,l1
1339 integer iti,itj,jj,icant
1342 integer ind_shield /25/
1343 c write (iout,*) "Entered PROPDERIV"
1345 fac = betaT(ib,inat+2,iprot)
1346 c write (iout,*) "derivatives: iprot",iprot,
1348 do l=1,natdim(inat,iprot)
1351 if (imask(k).gt.0 .and. k.ne.ind_shield) then
1353 rder(kk,l)=-fac*(nu_pf(k,l,ib,inat,iprot)
1354 & -nuave(l,ib,inat,iprot)*
1355 & eave_nat_pftot(k,ib,inat,iprot))
1360 do l=1,natdim(inat,iprot)
1362 reps(k,l)=-ww(1)*fac*(nuepsave_f(k,l,ib,inat,iprot)-
1363 & nuave(l,ib,inat,iprot)*enepsave_nat_ftot(k,ib,inat,iprot))
1367 if (mod_tor .or. mod_sccor) then
1368 do l=1,natdim(inat,iprot)
1370 rtor(k,l)=-fac*(nutorave_f(k,l,ib,inat,iprot)-
1371 & nuave(l,inat,ib,iprot)*entorave_nat_ftot(k,ib,inat,iprot))
1376 do l=1,natdim(inat,iprot)
1378 rang(k,l)=-fac*(nuangave_f(k,l,ib,inat,iprot)-
1379 & nuave(l,inat,ib,iprot)*enangave_nat_ftot(k,ib,inat,iprot))
1385 c-------------------------------------------------------------------------------
1386 subroutine ene_eval(iprot,i,ii)
1388 include "DIMENSIONS"
1389 include "DIMENSIONS.ZSCOPT"
1392 integer IERROR,ErrCode
1393 include "COMMON.MPI"
1395 include "COMMON.CONTROL"
1396 include "COMMON.COMPAR"
1397 include "COMMON.WEIGHTS"
1398 include "COMMON.WEIGHTDER"
1399 include "COMMON.CLASSES"
1400 include "COMMON.ENERGIES"
1401 include "COMMON.IOUNITS"
1402 include "COMMON.VMCPAR"
1403 include "COMMON.NAMES"
1404 include "COMMON.INTERACT"
1405 include "COMMON.TIME1"
1406 include "COMMON.CHAIN"
1407 include "COMMON.VAR"
1408 include "COMMON.GEO"
1409 include "COMMON.SCCOR"
1410 include "COMMON.TORSION"
1411 include "COMMON.LOCAL"
1412 include "COMMON.FFIELD"
1413 C Define local variables
1414 integer i,ii,ij,jj,j,k,ik,jk,l,ll,lll,iprot,iblock
1415 double precision energia(0:max_ene)
1416 double precision etoti,enepsjk
1417 double precision ftune_eps
1422 integer ind_shield /25/
1426 write (iout,*) "ene_eval: iprot",iprot," i",i," ii",ii
1428 if (init_ene .or. (mod_fourier(nloctyp).gt.0
1429 & .or. mod_elec .or. mod_scp .or. mod_tor .or. mod_sccor
1430 & .or. mod_ang .or. mod_side_other .or. imask(ind_shield).gt.0)
1433 write (iout,*) "FUNC1: doing UNRES"
1434 write (iout,*) "Protein",iprot," i",i," ii",ii," nres",nres
1437 call restore_ccoords(iprot,ii)
1438 call int_from_cart1(.false.)
1440 write (iout,'(8f10.5)') ((c(j,k),j=1,3),k=1,nres)
1441 write (iout,'(8f10.5)') ((c(j,k+nres),j=1,3),k=nnt,nct)
1442 write (iout,'(8f10.4)') (vbld(k),k=2,nres)
1443 write (iout,'(8f10.4)') (vbld(k+nres),k=nnt,nct)
1444 write (iout,'(8f10.4)') (rad2deg*theta(k),k=3,nres)
1445 write (iout,'(8f10.4)') (rad2deg*phi(k),k=4,nres)
1446 write (iout,'(8f10.4)') (rad2deg*alph(k),k=2,nres-1)
1447 write (iout,'(8f10.4)') (rad2deg*omeg(k),k=2,nres-1)
1452 call etotal(energia(0))
1453 c if (natlike(iprot).gt.0)
1454 c & call natsimil(i,ii,iprot,.false.)
1455 e_total(i,iprot)=energia(0)
1457 enetb(ii,j,iprot)=energia(j)
1461 write (iout,*) "ww",ww(:n_ene)
1462 write (iout,'(2i5,18(1pe12.4))') i,ii,
1463 & (enetb(ii,j,iprot),j=1,n_ene)
1464 write(iout,'(4hENER,i10,3f15.3,2i10,i5)')
1465 & i,e_total(i,iprot),eini(i,iprot),entfac(i,iprot)
1466 call enerprint(energia(0))
1470 c write (iout,*) "FUN nntyp",nntyp," eneps",eneps_temp(1,45)
1473 eneps(k,j,ii,iprot)=eneps_temp(k,j)
1477 c write (iout,*) "Matrix eneps"
1480 c write (iout,*) j,k,icant(j,k),
1481 c & eneps_temp(1,icant(j,k)),
1482 c & eneps_temp(2,icant(j,k))
1488 if (mod_tor .or. mod_sccor) then
1489 c write (iout,*) "etor",enetb(ii,13,iprot),enetb(ii,19,iprot)
1492 do ij=-ntortyp+1,ntortyp-1
1493 do jj=-ntortyp+1,ntortyp-1
1494 if (mask_tor(0,jj,ij,iblock).eq.1) then
1496 entor(k,ii,iprot)=etor_temp(0,0,jj,ij,iblock)
1497 c write (iout,*) "etor_temp",restyp(itortyp(j)),
1498 c & restyp(itortyp(i)),
1499 c & k,etor_temp(ji,ii)
1500 else if (mask_tor(0,jj,ij,iblock).gt.1) then
1501 if (tor_mode.eq.0) then
1502 do l=1,nterm(jj,ij,iblock)
1504 entor(k,ii,iprot)=etor_temp(l,0,jj,ij,iblock)
1506 if (mask_tor(0,jj,ij,iblock).gt.2) then
1507 do l=nterm(jj,ij,iblock)+1,2*nterm(jj,ij,iblock)
1509 entor(k,ii,iprot)=etor_temp(l,0,jj,ij,iblock)
1512 else if (tor_mode.eq.1) then
1514 do l=1,nterm_kcc(jj,ij)
1515 do ll=1,nterm_kcc_Tb(jj,ij)
1516 do lll=1,nterm_kcc_Tb(jj,ij)
1518 entor(k,ii,iprot)=etor_temp_kcc(lll,ll,l,ij,jj)
1522 if (mask_tor(0,jj,ij,1).gt.2) then
1523 do l=nterm_kcc(jj,ij)+1,2*nterm_kcc(jj,ij)
1524 do ll=1,nterm_kcc_Tb(jj,ij)
1525 do lll=1,nterm_kcc_Tb(jj,ij)
1527 entor(k,ii,iprot)=etor_temp_kcc(lll,ll,l,ij,jj)
1538 do ij=-nsccortyp+1,nsccortyp-1
1539 do jj=-nsccortyp+1,nsccortyp-1
1541 if (mask_tor(ll,jj,ij,1).eq.1) then
1543 entor(k,ii,iprot)=etor_temp(0,ll,jj,ij,1)
1544 c write (iout,*) "etor_temp",restyp(isccortyp(jj)),
1545 c & restyp(isccortyp(ij)),
1546 c & k,etor_temp(jj,ij)
1547 else if (mask_tor(ll,jj,ij,1).gt.1) then
1548 do l=1,nterm_sccor(jj,ij)
1550 entor(k,ii,iprot)=etor_temp(l,ll,jj,ij,1)
1552 do l=nterm_sccor(jj,ij)+1,2*nterm_sccor(jj,ij)
1554 entor(k,ii,iprot)=etor_temp(l,ll,jj,ij,1)
1561 c AL 8/7/17: optimization of the bending potentials
1565 if (mask_ang(ij).eq.0) cycle
1566 do jj=1,nbend_kcc_Tb(ij)
1568 enbend(k,ii,iprot)=ebend_temp_kcc(jj,ij)*wang
1569 c write (iout,*) "ij",ij," jj",jj," k",k," ebend_temp_kcc",
1570 c & ebend_temp_kcc(jj,ij)
1576 write (iout,*) "Conformation",i
1577 c write (iout,'(8f10.5)') ((c(j,i),j=1,3),i=1,nres)
1578 c write (iout,'(8f10.5)') ((c(j,i+nres),j=1,3),i=nnt,nct)
1579 c write (iout,'(8f10.4)') (vbld(k),k=2,nres)
1580 c write (iout,'(8f10.4)') (vbld(k+nres),k=nnt,nct)
1581 c write (iout,'(8f10.4)') (rad2deg*theta(k),k=3,nres)
1582 c write (iout,'(8f10.4)') (rad2deg*phi(k),k=4,nres)
1583 c write (iout,'(8f10.4)') (rad2deg*alph(k),k=2,nres-1)
1584 c write (iout,'(8f10.4)') (rad2deg*omeg(k),k=2,nres-1)
1585 call enerprint(energia(0))
1586 c write(iout,'(4hENER,i10,3f15.3,2i10,i5)')
1587 c & i,energia(0),eini(i,iprot),entfac(i,iprot)
1588 c write (iout,'(i5,18(1pe12.4))') ii,
1589 c & (enetb(ii,j,iprot),j=1,n_ene)
1590 c write (iout,'(i5,16(1pe12.4))') i,
1591 c & (energia(j),j=1,n_ene),energia(0)
1592 c print *,"Processor",me,me1," computing energies",i
1595 if (energia(0).ge.1.0d99) then
1596 write (iout,*) "FUNC1:CHUJ NASTAPIL in energy evaluation for",
1597 & " point",i,". Probably NaNs in some of the energy components."
1598 write (iout,*) "The components of the energy are:"
1599 call enerprint(energia(0))
1600 write (iout,*) "Conformation",i,ii
1601 write (iout,'(8f10.5)') ((c(j,k),j=1,3),k=1,nres)
1602 write (iout,'(8f10.5)') ((c(j,k+nres),j=1,3),k=nnt,nct)
1603 write (iout,'(8f10.4)') (vbld(k),k=2,nres)
1604 write (iout,'(8f10.4)') (vbld(k+nres),k=nnt,nct)
1605 write (iout,'(8f10.4)') (rad2deg*theta(k),k=3,nres)
1606 write (iout,'(8f10.4)') (rad2deg*phi(k),k=4,nres)
1607 write (iout,'(8f10.4)') (rad2deg*alph(k),k=2,nres-1)
1608 write (iout,'(8f10.4)') (rad2deg*omeg(k),k=2,nres-1)
1609 write (iout,*) "Calculation terminated at this point.",
1610 & " Check the database of conformations"
1613 call MPI_Abort(MPI_COMM_WORLD,ErrCode,IERROR)
1615 stop "SEVERE error in energy calculation"
1619 enetb(ii,1,iprot)=0.0d0
1622 enetb(ii,1,iprot)=enetb(ii,1,iprot)+
1623 & ftune_eps(eps(j,k))*eneps(1,icant(j,k),ii,iprot)+
1624 & eps(j,k)*eneps(2,icant(j,k),ii,iprot)
1630 etoti=etoti+enetb(ii,j,iprot)*ww(j)
1634 write (iout,*) "i",i," ww",ww
1635 write (iout,*) "enetb",(enetb(ii,j,iprot),j=1,n_ene)
1638 e_total(i,iprot)=etoti
1639 c write (iout,*) "FUNC1 natlike",iprot,natlike(iprot)
1640 if (natlike(iprot).gt.0) then
1641 call restore_ccoords(iprot,ii)
1642 call int_from_cart1(.false.)
1643 c call natsimil(i,ii,iprot,.false.)
1645 c & "natsimil",i,ii,(nu(k,ii,iprot),k=1,natlike(iprot))
1648 write (iout,'(i5,18(1pe12.4))') i,
1649 & (enetb(ii,j,iprot),j=1,n_ene)
1650 write (iout,'(18(1pe12.4))')
1651 & (eneps(1,j,ii,iprot),j=201,210)
1652 write(iout,'(4hENER,i10,3f15.3)')
1653 & i,e_total(i,iprot),eini(i,iprot),entfac(i,iprot)