Adding cluster with newcorr
[unres.git] / source / wham / src-M-NEWCORR / store_parm.F
1       subroutine store_parm(iparm)
2 C
3 C Store parameters of set IPARM
4 C valence angles and the side chains and energy parameters.
5 C
6       implicit none
7       include 'DIMENSIONS'
8       include 'DIMENSIONS.ZSCOPT'
9       include 'DIMENSIONS.FREE'
10       include 'COMMON.IOUNITS'
11       include 'COMMON.CHAIN'
12       include 'COMMON.INTERACT'
13       include 'COMMON.GEO'
14       include 'COMMON.LOCAL'
15       include 'COMMON.TORSION'
16       include 'COMMON.FFIELD'
17       include 'COMMON.NAMES'
18       include 'COMMON.SBRIDGE'
19       include 'COMMON.SCROT'
20       include 'COMMON.SCCOR'
21       include 'COMMON.ALLPARM'
22       integer i,j,k,l,m,mm,iparm,ichir1,ichir2,iblock,iii,ii
23
24 c Store weights
25       ww_all(1,iparm)=wsc
26       ww_all(2,iparm)=wscp
27       ww_all(3,iparm)=welec
28       ww_all(4,iparm)=wcorr
29       ww_all(5,iparm)=wcorr5
30       ww_all(6,iparm)=wcorr6
31       ww_all(7,iparm)=wel_loc
32       ww_all(8,iparm)=wturn3
33       ww_all(9,iparm)=wturn4
34       ww_all(10,iparm)=wturn6
35       ww_all(11,iparm)=wang
36       ww_all(12,iparm)=wscloc
37       ww_all(13,iparm)=wtor
38       ww_all(14,iparm)=wtor_d
39       ww_all(15,iparm)=wstrain
40       ww_all(16,iparm)=wvdwpp
41       ww_all(17,iparm)=wbond
42       ww_all(19,iparm)=wsccor
43 c Store bond parameters
44       vbldp0_all(iparm)=vbldp0
45       akp_all(iparm)=akp
46       do i=1,ntyp
47         nbondterm_all(i,iparm)=nbondterm(i)
48         do j=1,nbondterm(i)
49           vbldsc0_all(j,i,iparm)=vbldsc0(j,i)
50           aksc_all(j,i,iparm)=aksc(j,i)
51           abond0_all(j,i,iparm)=abond0(j,i)
52         enddo
53       enddo
54 c Store bond angle parameters
55 #ifdef CRYST_THETA
56       do i=-ntyp,ntyp
57         a0thet_all(i,iparm)=a0thet(i)
58         do ichir1=-1,1
59         do ichir2=-1,1
60         do j=1,2
61           athet_all(j,i,ichir1,ichir2,iparm)=athet(j,i,ichir1,ichir2)
62           bthet_all(j,i,ichir1,ichir2,iparm)=bthet(j,i,ichir1,ichir2)
63         enddo
64         enddo
65         enddo
66         do j=0,3
67           polthet_all(j,i,iparm)=polthet(j,i)
68         enddo
69         do j=1,3
70           gthet_all(j,i,iparm)=gthet(j,i)
71         enddo
72         theta0_all(i,iparm)=theta0(i)
73         sig0_all(i,iparm)=sig0(i)
74         sigc0_all(i,iparm)=sigc0(i)
75       enddo
76 #else
77       nthetyp_all(iparm)=nthetyp
78       ntheterm_all(iparm)=ntheterm
79       ntheterm2_all(iparm)=ntheterm2
80       ntheterm3_all(iparm)=ntheterm3
81       nsingle_all(iparm)=nsingle
82       ndouble_all(iparm)=ndouble
83       nntheterm_all(iparm)=nntheterm
84       do i=-ntyp,ntyp
85         ithetyp_all(i,iparm)=ithetyp(i)
86       enddo
87       do iblock=1,2
88       do i=-maxthetyp1,maxthetyp1
89         do j=-maxthetyp1,maxthetyp1
90           do k=-maxthetyp1,maxthetyp1
91             aa0thet_all(i,j,k,iblock,iparm)=aa0thet(i,j,k,iblock)
92             do l=1,ntheterm
93               aathet_all(l,i,j,k,iblock,iparm)=aathet(l,i,j,k,iblock)
94             enddo
95             do l=1,ntheterm2
96               do m=1,nsingle
97                 bbthet_all(m,l,i,j,k,iblock,iparm)=
98      & bbthet(m,l,i,j,k,iblock)
99                 ccthet_all(m,l,i,j,k,iblock,iparm)=
100      &ccthet(m,l,i,j,k,iblock)
101                 ddthet_all(m,l,i,j,k,iblock,iparm)=
102      &ddthet(m,l,i,j,k,iblock)
103                 eethet_all(m,l,i,j,k,iblock,iparm)=
104      &eethet(m,l,i,j,k,iblock)
105               enddo
106             enddo
107             do l=1,ntheterm3
108               do m=1,ndouble
109                 do mm=1,ndouble
110                 if (iblock.eq.1) then
111                  ffthet_all1(mm,m,l,i,j,k,iparm)=
112      &   ffthet(mm,m,l,i,j,k,iblock)
113                  ggthet_all1(mm,m,l,i,j,k,iparm)=
114      &ggthet(mm,m,l,i,j,k,iblock)
115                   else
116                  ffthet_all2(mm,m,l,i,j,k,iparm)=
117      &   ffthet(mm,m,l,i,j,k,iblock)
118                  ggthet_all2(mm,m,l,i,j,k,iparm)=
119      &ggthet(mm,m,l,i,j,k,iblock)
120                   endif
121                 enddo
122               enddo
123             enddo
124           enddo
125         enddo
126       enddo
127       enddo
128 #endif
129 #ifdef CRYST_SC
130 c Store the sidechain rotamer parameters
131       do i=-ntyp,ntyp
132        iii=iabs(i)
133 cc       write (iout,*) i,"storeparm1"
134        if (i.eq.0) cycle
135         nlob_all(iii,iparm)=nlob(iii)
136         do j=1,nlob(iii)
137           bsc_all(j,iii,iparm)=bsc(j,iii)
138           do k=1,3
139             censc_all(k,j,i,iparm)=censc(k,j,i)
140           enddo
141           do k=1,3
142             do l=1,3
143               gaussc_all(l,k,j,i,iparm)=gaussc(l,k,j,i)
144             enddo
145           enddo
146         enddo
147       enddo
148 #else
149       do i=1,ntyp
150         do j=1,65
151           sc_parmin_all(j,i,iparm)=sc_parmin(j,i)
152         enddo
153       enddo
154 #endif
155 c Store the torsional parameters
156       do iblock=1,2
157       do i=-ntortyp+1,ntortyp-1
158         do j=-ntortyp+1,ntortyp-1
159           v0_all(i,j,iblock,iparm)=v0(i,j,iblock)
160           nterm_all(i,j,iblock,iparm)=nterm(i,j,iblock)
161           nlor_all(i,j,iblock,iparm)=nlor(i,j,iblock)
162           do k=1,nterm(i,j,iblock)
163             v1_all(k,i,j,iblock,iparm)=v1(k,i,j,iblock)
164             v2_all(k,i,j,iblock,iparm)=v2(k,i,j,iblock)
165           enddo
166           do k=1,nlor(i,j,iblock)
167             vlor1_all(k,i,j,iparm)=vlor1(k,i,j)
168             vlor2_all(k,i,j,iparm)=vlor2(k,i,j)
169             vlor3_all(k,i,j,iparm)=vlor3(k,i,j)
170           enddo
171         enddo
172       enddo
173       enddo  
174 c Store the double torsional parameters
175       do iblock=1,2
176       do i=-ntortyp+1,ntortyp-1
177         do j=-ntortyp+1,ntortyp-1
178           do k=-ntortyp+1,ntortyp-1
179             ntermd1_all(i,j,k,iblock,iparm)=ntermd_1(i,j,k,iblock)
180             ntermd2_all(i,j,k,iblock,iparm)=ntermd_2(i,j,k,iblock)
181             do l=1,ntermd_1(i,j,k,iblock)
182               v1c_all(1,l,i,j,k,iblock,iparm)=v1c(1,l,i,j,k,iblock)
183               v1c_all(2,l,i,j,k,iblock,iparm)=v1c(2,l,i,j,k,iblock)
184               v2c_all(1,l,i,j,k,iblock,iparm)=v2c(1,l,i,j,k,iblock)
185               v2c_all(2,l,i,j,k,iblock,iparm)=v2c(2,l,i,j,k,iblock)
186             enddo
187             do l=1,ntermd_2(i,j,k,iblock)
188               do m=1,ntermd_2(i,j,k,iblock)
189                 v2s_all(l,m,i,j,k,iblock,iparm)=v2s(l,m,i,j,k,iblock)
190               enddo
191             enddo
192           enddo
193         enddo
194       enddo
195       enddo
196 c Store parameters of the cumulants
197       do i=-nloctyp,nloctyp
198         do j=1,2
199           do ii=1,3
200             bnew1_all(ii,j,i,iparm)=bnew1(ii,j,i)
201             bnew2_all(ii,j,i,iparm)=bnew2(ii,j,i)
202           enddo
203         enddo
204         eenew_all(1,i,iparm)=eenew(1,i)
205         do j=1,2
206           do k=1,2
207             eeold_all(k,j,i,iparm)=eeold(k,j,i)
208             cc_all(k,j,i,iparm)=cc(k,j,i)
209             ctilde_all(k,j,i,iparm)=ctilde(k,j,i)
210             dd_all(k,j,i,iparm)=dd(k,j,i)
211             dtilde_all(k,j,i,iparm)=dtilde(k,j,i)
212           enddo
213         enddo
214       enddo
215 c Store the parameters of electrostatic interactions
216       do i=1,2
217         do j=1,2
218           app_all(j,i,iparm)=app(j,i)
219           bpp_all(j,i,iparm)=bpp(j,i)
220           ael6_all(j,i,iparm)=ael6(j,i)
221           ael3_all(j,i,iparm)=ael3(j,i)
222         enddo
223       enddo
224 c Store sidechain parameters
225       do i=1,ntyp
226         do j=1,ntyp
227           aa_all(j,i,iparm)=aa(j,i)
228           bb_all(j,i,iparm)=bb(j,i)
229           r0_all(j,i,iparm)=r0(j,i)
230           sigma_all(j,i,iparm)=sigma(j,i)
231           chi_all(j,i,iparm)=chi(j,i)
232           augm_all(j,i,iparm)=augm(j,i)
233           eps_all(j,i,iparm)=eps(j,i)
234         enddo
235       enddo
236       do i=1,ntyp
237         chip_all(i,iparm)=chip(i)
238         alp_all(i,iparm)=alp(i)
239       enddo
240 c Store the SCp parameters
241       do i=1,ntyp
242         do j=1,2
243           aad_all(i,j,iparm)=aad(i,j)
244           bad_all(i,j,iparm)=bad(i,j)
245         enddo
246       enddo
247 c Store disulfide-bond parameters
248       ebr_all(iparm)=ebr
249       d0cm_all(iparm)=d0cm
250       akcm_all(iparm)=akcm
251       akth_all(iparm)=akth
252       akct_all(iparm)=akct
253       v1ss_all(iparm)=v1ss
254       v2ss_all(iparm)=v2ss
255       v3ss_all(iparm)=v3ss
256 c Store SC-backbone correlation parameters
257       do i=-nsccortyp,nsccortyp
258        do j=-nsccortyp,nsccortyp
259
260       nterm_sccor_all(j,i,iparm)=nterm_sccor(j,i)
261 c      do i=1,20
262 c        do j=1,20
263          do l=1,3
264           do k=1,nterm_sccor(j,i)
265             v1sccor_all(k,l,j,i,iparm)=v1sccor(k,l,j,i)
266             v2sccor_all(k,l,j,i,iparm)=v2sccor(k,l,j,i)
267            enddo
268           enddo
269         enddo
270       enddo
271       return
272       end
273 c--------------------------------------------------------------------------
274       subroutine restore_parm(iparm)
275 C
276 C Store parameters of set IPARM
277 C valence angles and the side chains and energy parameters.
278 C
279       implicit none
280       include 'DIMENSIONS'
281       include 'DIMENSIONS.ZSCOPT'
282       include 'DIMENSIONS.FREE'
283       include 'COMMON.IOUNITS'
284       include 'COMMON.CHAIN'
285       include 'COMMON.INTERACT'
286       include 'COMMON.GEO'
287       include 'COMMON.LOCAL'
288       include 'COMMON.TORSION'
289       include 'COMMON.FFIELD'
290       include 'COMMON.NAMES'
291       include 'COMMON.SBRIDGE'
292       include 'COMMON.SCROT'
293       include 'COMMON.SCCOR'
294       include 'COMMON.ALLPARM'
295       integer i,j,k,l,m,mm,iparm,ichir1,ichir2,iblock,iii,ii
296
297 c Restore weights
298       wsc=ww_all(1,iparm)
299       wscp=ww_all(2,iparm)
300       welec=ww_all(3,iparm)
301       wcorr=ww_all(4,iparm)
302       wcorr5=ww_all(5,iparm)
303       wcorr6=ww_all(6,iparm)
304       wel_loc=ww_all(7,iparm)
305       wturn3=ww_all(8,iparm)
306       wturn4=ww_all(9,iparm)
307       wturn6=ww_all(10,iparm)
308       wang=ww_all(11,iparm)
309       wscloc=ww_all(12,iparm)
310       wtor=ww_all(13,iparm)
311       wtor_d=ww_all(14,iparm)
312       wstrain=ww_all(15,iparm)
313       wvdwpp=ww_all(16,iparm)
314       wbond=ww_all(17,iparm)
315       wsccor=ww_all(19,iparm)
316 c Restore bond parameters
317       vbldp0=vbldp0_all(iparm)
318       akp=akp_all(iparm)
319       do i=1,ntyp
320         nbondterm(i)=nbondterm_all(i,iparm)
321         do j=1,nbondterm(i)
322           vbldsc0(j,i)=vbldsc0_all(j,i,iparm)
323           aksc(j,i)=aksc_all(j,i,iparm)
324           abond0(j,i)=abond0_all(j,i,iparm)
325         enddo
326       enddo
327 c Restore bond angle parameters
328 #ifdef CRYST_THETA
329       do i=-ntyp,ntyp
330         a0thet(i)=a0thet_all(i,iparm)
331         do ichir1=-1,1
332         do ichir2=-1,1
333         do j=1,2
334           athet(j,i,ichir1,ichir2)=athet_all(j,i,ichir1,ichir2,iparm)
335           bthet(j,i,ichir1,ichir2)=bthet_all(j,i,ichir1,ichir2,iparm)
336         enddo
337         enddo
338         enddo
339         do j=0,3
340           polthet(j,i)=polthet_all(j,i,iparm)
341         enddo
342         do j=1,3
343           gthet(j,i)=gthet_all(j,i,iparm)
344         enddo
345         theta0(i)=theta0_all(i,iparm)
346         sig0(i)=sig0_all(i,iparm)
347         sigc0(i)=sigc0_all(i,iparm)
348       enddo
349 #else
350       nthetyp=nthetyp_all(iparm)
351       ntheterm=ntheterm_all(iparm)
352       ntheterm2=ntheterm2_all(iparm)
353       ntheterm3=ntheterm3_all(iparm)
354       nsingle=nsingle_all(iparm)
355       ndouble=ndouble_all(iparm)
356       nntheterm=nntheterm_all(iparm)
357       do i=-ntyp,ntyp
358         ithetyp(i)=ithetyp_all(i,iparm)
359       enddo
360       do iblock=1,2
361       do i=-maxthetyp1,maxthetyp1
362         do j=-maxthetyp1,maxthetyp1
363           do k=-maxthetyp1,maxthetyp1
364             aa0thet(i,j,k,iblock)=aa0thet_all(i,j,k,iblock,iparm)
365             do l=1,ntheterm
366               aathet(l,i,j,k,iblock)=aathet_all(l,i,j,k,iblock,iparm)
367             enddo
368             do l=1,ntheterm2
369               do m=1,nsingle
370                 bbthet(m,l,i,j,k,iblock)=
371      &bbthet_all(m,l,i,j,k,iblock,iparm)
372                 ccthet(m,l,i,j,k,iblock)=
373      &ccthet_all(m,l,i,j,k,iblock,iparm)
374                 ddthet(m,l,i,j,k,iblock)=
375      &ddthet_all(m,l,i,j,k,iblock,iparm)
376                 eethet(m,l,i,j,k,iblock)=
377      &eethet_all(m,l,i,j,k,iblock,iparm)
378               enddo
379             enddo
380             do l=1,ntheterm3
381               do m=1,ndouble
382                 do mm=1,ndouble
383                 if (iblock.eq.1) then
384                  ffthet(mm,m,l,i,j,k,iblock)=
385      &ffthet_all1(mm,m,l,i,j,k,iparm)
386                  ggthet(mm,m,l,i,j,k,iblock)=
387      &ggthet_all1(mm,m,l,i,j,k,iparm)
388                 else
389                  ffthet(mm,m,l,i,j,k,iblock)=
390      &ffthet_all2(mm,m,l,i,j,k,iparm)
391                  ggthet(mm,m,l,i,j,k,iblock)=
392      &ggthet_all2(mm,m,l,i,j,k,iparm)
393                 endif
394                 enddo
395               enddo
396             enddo
397           enddo
398         enddo
399       enddo
400       enddo
401 #endif
402 c Restore the sidechain rotamer parameters
403 #ifdef CRYST_SC
404       do i=-ntyp,ntyp
405         if (i.eq.0) cycle
406         iii=iabs(i)
407         nlob(iii)=nlob_all(iii,iparm)
408         do j=1,nlob(iii)
409           bsc(j,iii)=bsc_all(j,iii,iparm)
410           do k=1,3
411             censc(k,j,i)=censc_all(k,j,i,iparm)
412           enddo
413           do k=1,3
414             do l=1,3
415               gaussc(l,k,j,i)=gaussc_all(l,k,j,i,iparm)
416             enddo
417           enddo
418         enddo
419       enddo
420 #else
421       do i=1,ntyp
422         do j=1,65
423           sc_parmin(j,i)=sc_parmin_all(j,i,iparm)
424         enddo
425       enddo
426 #endif
427 c Restore the torsional parameters
428       do iblock=1,2
429       do i=-ntortyp+1,ntortyp-1
430         do j=-ntortyp+1,ntortyp-1
431           v0(i,j,iblock)=v0_all(i,j,iblock,iparm)
432           nterm(i,j,iblock)=nterm_all(i,j,iblock,iparm)
433           nlor(i,j,iblock)=nlor_all(i,j,iblock,iparm)
434           do k=1,nterm(i,j,iblock)
435             v1(k,i,j,iblock)=v1_all(k,i,j,iblock,iparm)
436             v2(k,i,j,iblock)=v2_all(k,i,j,iblock,iparm)
437           enddo
438           do k=1,nlor(i,j,iblock)
439             vlor1(k,i,j)=vlor1_all(k,i,j,iparm)
440             vlor2(k,i,j)=vlor2_all(k,i,j,iparm)
441             vlor3(k,i,j)=vlor3_all(k,i,j,iparm)
442           enddo
443         enddo
444       enddo  
445       enddo
446 c Restore the double torsional parameters
447       do iblock=1,2
448       do i=-ntortyp+1,ntortyp-1
449         do j=-ntortyp+1,ntortyp-1
450           do k=-ntortyp+1,ntortyp-1
451             ntermd_1(i,j,k,iblock)=ntermd1_all(i,j,k,iblock,iparm)
452             ntermd_2(i,j,k,iblock)=ntermd2_all(i,j,k,iblock,iparm)
453             do l=1,ntermd_1(i,j,k,iblock)
454               v1c(1,l,i,j,k,iblock)=v1c_all(1,l,i,j,k,iblock,iparm)
455               v1c(2,l,i,j,k,iblock)=v1c_all(2,l,i,j,k,iblock,iparm)
456               v2c(1,l,i,j,k,iblock)=v2c_all(1,l,i,j,k,iblock,iparm)
457               v2c(2,l,i,j,k,iblock)=v2c_all(2,l,i,j,k,iblock,iparm)
458             enddo
459             do l=1,ntermd_2(i,j,k,iblock)
460               do m=1,ntermd_2(i,j,k,iblock)
461                 v2s(l,m,i,j,k,iblock)=v2s_all(l,m,i,j,k,iblock,iparm)
462               enddo
463             enddo
464           enddo
465         enddo
466       enddo
467       enddo
468 c Restore parameters of the cumulants
469       do i=-nloctyp,nloctyp
470         do j=1,2
471           do ii=1,3
472             bnew1(ii,j,i)=bnew1_all(ii,j,i,iparm)
473             bnew2(ii,j,i)=bnew2_all(ii,j,i,iparm)
474           enddo
475         enddo
476         eenew(1,i)=eenew_all(1,i,iparm)
477         do j=1,2
478           do k=1,2
479             eeold(k,j,i)=eeold_all(k,j,i,iparm)
480             cc(k,j,i)=cc_all(k,j,i,iparm)
481             ctilde(k,j,i)=ctilde_all(k,j,i,iparm)
482             dd(k,j,i)=dd_all(k,j,i,iparm)
483             dtilde(k,j,i)=dtilde_all(k,j,i,iparm)
484           enddo
485         enddo
486       enddo
487 c Restore the parameters of electrostatic interactions
488       do i=1,2
489         do j=1,2
490           app(j,i)=app_all(j,i,iparm)
491           bpp(j,i)=bpp_all(j,i,iparm)
492           ael6(j,i)=ael6_all(j,i,iparm)
493           ael3(j,i)=ael3_all(j,i,iparm)
494         enddo
495       enddo
496 c Restore sidechain parameters
497       do i=1,ntyp
498         do j=1,ntyp
499           aa(j,i)=aa_all(j,i,iparm)
500           bb(j,i)=bb_all(j,i,iparm)
501           r0(j,i)=r0_all(j,i,iparm)
502           sigma(j,i)=sigma_all(j,i,iparm)
503           chi(j,i)=chi_all(j,i,iparm)
504           augm(j,i)=augm_all(j,i,iparm)
505           eps(j,i)=eps_all(j,i,iparm)
506         enddo
507       enddo
508       do i=1,ntyp
509         chip(i)=chip_all(i,iparm)
510         alp(i)=alp_all(i,iparm)
511       enddo
512 c Restore the SCp parameters
513       do i=1,ntyp
514         do j=1,2
515           aad(i,j)=aad_all(i,j,iparm)
516           bad(i,j)=bad_all(i,j,iparm)
517         enddo
518       enddo
519 c Restore disulfide-bond parameters
520       ebr=ebr_all(iparm)
521       d0cm=d0cm_all(iparm)
522       akcm=akcm_all(iparm)
523       akth=akth_all(iparm)
524       akct=akct_all(iparm)
525       v1ss=v1ss_all(iparm)
526       v2ss=v2ss_all(iparm)
527       v3ss=v3ss_all(iparm)
528 c Restore SC-backbone correlation parameters
529       do i=-nsccortyp,nsccortyp
530        do j=-nsccortyp,nsccortyp
531
532       nterm_sccor(j,i)=nterm_sccor_all(j,i,iparm)
533         do l=1,3
534            do k=1,nterm_sccor(j,i)
535             v1sccor(k,l,j,i)=v1sccor_all(k,l,j,i,iparm)
536             v2sccor(k,l,j,i)=v2sccor_all(k,l,j,i,iparm)
537            enddo
538           enddo
539         enddo
540       enddo
541       return
542       end