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