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