Adasko's dir
[unres.git] / source / wham / src-NEWSC / 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           chipp_all(j,i,iparm)=chipp(j,i)
205           augm_all(j,i,iparm)=augm(j,i)
206           eps_all(j,i,iparm)=eps(j,i)
207           sigmap1_all(j,i,iparm)=sigmap1(j,i)
208           sigmap2_all(j,i,iparm)=sigmap2(j,i)
209           chis_all(j,i,iparm)=chis(j,i)
210           do k=1,4
211             alphasur_all(k,j,i,iparm)=alphasur(k,j,i)
212             wstate_all(k,j,i,iparm)=wstate(k,j,i)
213           enddo
214           nstate_all(j,i,iparm)=nstate(j,i)
215           do k=1,2
216             do l=1,2
217               dhead_all(l,k,j,i,iparm)=dhead(l,k,j,i)
218             enddo
219           enddo
220           do k=1,2
221             dtail_all(k,j,i,iparm)=dtail(k,j,i)
222           enddo
223           epshead_all(j,i,iparm)=epshead(j,i)
224           rborn_all(j,i,iparm)=rborn(j,i)
225           do k=1,2
226             wqdip_all(k,j,i,iparm)=wqdip(k,j,i)
227           enddo
228           wquad_all(j,i,iparm)=wquad(j,i)
229           alphapol_all(j,i,iparm)=alphapol(j,i)
230           do k=1,4
231             alphiso_all(k,j,i,iparm)=alphiso(k,j,i)
232           enddo
233           sigiso1_all(j,i,iparm)=sigiso1(j,i)
234           sigiso2_all(j,i,iparm)=sigiso2(j,i)
235           epsintab_all(j,i,iparm)=epsintab(j,i)
236         enddo
237       enddo
238       do i=1,ntyp
239         chip_all(i,iparm)=chip(i)
240         alp_all(i,iparm)=alp(i)
241       enddo
242 c Store the SCp parameters
243       do i=1,ntyp
244         do j=1,2
245           aad_all(i,j,iparm)=aad(i,j)
246           bad_all(i,j,iparm)=bad(i,j)
247         enddo
248       enddo
249 c Store disulfide-bond parameters
250       ebr_all(iparm)=ebr
251       d0cm_all(iparm)=d0cm
252       akcm_all(iparm)=akcm
253       akth_all(iparm)=akth
254       akct_all(iparm)=akct
255       v1ss_all(iparm)=v1ss
256       v2ss_all(iparm)=v2ss
257       v3ss_all(iparm)=v3ss
258 c Store SC-backbone correlation parameters
259       do i=1,nsccortyp
260        do j=1,nsccortyp
261
262       nterm_sccor_all(j,i,iparm)=nterm_sccor(j,i)
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
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=1,ntyp
330         a0thet(i)=a0thet_all(i,iparm)
331         do j=1,2
332           athet(j,i)=athet_all(j,i,iparm)
333           bthet(j,i)=bthet_all(j,i,iparm)
334         enddo
335         do j=0,3
336           polthet(j,i)=polthet_all(j,i,iparm)
337         enddo
338         do j=1,3
339           gthet(j,i)=gthet_all(j,i,iparm)
340         enddo
341         theta0(i)=theta0_all(i,iparm)
342         sig0(i)=sig0_all(i,iparm)
343         sigc0(i)=sigc0_all(i,iparm)
344       enddo
345 #else
346       nthetyp=nthetyp_all(iparm)
347       ntheterm=ntheterm_all(iparm)
348       ntheterm2=ntheterm2_all(iparm)
349       ntheterm3=ntheterm3_all(iparm)
350       nsingle=nsingle_all(iparm)
351       ndouble=ndouble_all(iparm)
352       nntheterm=nntheterm_all(iparm)
353       do i=1,ntyp1
354         ithetyp(i)=ithetyp_all(i,iparm)
355       enddo
356       do i=1,maxthetyp1
357         do j=1,maxthetyp1
358           do k=1,maxthetyp1
359             aa0thet(i,j,k)=aa0thet_all(i,j,k,iparm)
360             do l=1,ntheterm
361               aathet(l,i,j,k)=aathet_all(l,i,j,k,iparm)
362             enddo
363             do l=1,ntheterm2
364               do m=1,nsingle
365                 bbthet(m,l,i,j,k)=bbthet_all(m,l,i,j,k,iparm)
366                 ccthet(m,l,i,j,k)=ccthet_all(m,l,i,j,k,iparm)
367                 ddthet(m,l,i,j,k)=ddthet_all(m,l,i,j,k,iparm)
368                 eethet(m,l,i,j,k)=eethet_all(m,l,i,j,k,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 #endif
383 c Restore the sidechain rotamer parameters
384 #ifdef CRYST_SC
385       do i=1,ntyp
386         nlob(i)=nlob_all(i,iparm)
387         do j=1,nlob(i)
388           bsc(j,i)=bsc_all(j,i,iparm)
389           do k=1,3
390             censc(k,j,i)=censc_all(k,j,i,iparm)
391           enddo
392           do k=1,3
393             do l=1,3
394               gaussc(l,k,j,i)=gaussc_all(l,k,j,i,iparm)
395             enddo
396           enddo
397         enddo
398       enddo
399 #else
400       do i=1,ntyp
401         do j=1,65
402           sc_parmin(j,i)=sc_parmin_all(j,i,iparm)
403         enddo
404       enddo
405 #endif
406 c Restore the torsional parameters
407       do i=1,ntortyp
408         do j=1,ntortyp
409           v0(i,j)=v0_all(i,j,iparm)
410           nterm(i,j)=nterm_all(i,j,iparm)
411           nlor(i,j)=nlor_all(i,j,iparm)
412           do k=1,nterm(i,j)
413             v1(k,i,j)=v1_all(k,i,j,iparm)
414             v2(i,i,j)=v2_all(k,i,j,iparm)
415           enddo
416           do k=1,nlor(i,j)
417             vlor1(k,i,j)=vlor1_all(k,i,j,iparm)
418             vlor2(k,i,j)=vlor2_all(k,i,j,iparm)
419             vlor3(k,i,j)=vlor3_all(k,i,j,iparm)
420           enddo
421         enddo
422       enddo  
423 c Restore the double torsional parameters
424       do i=1,ntortyp
425         do j=1,ntortyp
426           do k=1,ntortyp
427             ntermd_1(i,j,k)=ntermd1_all(i,j,k,iparm)
428             ntermd_2(i,j,k)=ntermd2_all(i,j,k,iparm)
429             do l=1,ntermd_1(i,j,k)
430               v1c(1,l,i,j,k)=v1c_all(1,l,i,j,k,iparm)
431               v1c(2,l,i,j,k)=v1c_all(2,l,i,j,k,iparm)
432               v2c(1,l,i,j,k)=v2c_all(1,l,i,j,k,iparm)
433               v2c(2,l,i,j,k)=v2c_all(2,l,i,j,k,iparm)
434             enddo
435             do l=1,ntermd_2(i,j,k)
436               do m=1,ntermd_2(i,j,k)
437                 v2s(l,m,i,j,k)=v2s_all(l,m,i,j,k,iparm)
438               enddo
439             enddo
440           enddo
441         enddo
442       enddo
443 c Restore parameters of the cumulants
444       do i=1,nloctyp
445         do j=1,2
446           b1(j,i)=b1_all(j,i,iparm)
447           b1tilde(j,i)=b1tilde_all(j,i,iparm)
448           b2(j,i)=b2_all(j,i,iparm)
449         enddo
450         do j=1,2
451           do k=1,2
452             cc(k,j,i)=cc_all(k,j,i,iparm)
453             ctilde(k,j,i)=ctilde_all(k,j,i,iparm)
454             dd(k,j,i)=dd_all(k,j,i,iparm)
455             dtilde(k,j,i)=dtilde_all(k,j,i,iparm)
456             ee(k,j,i)=ee_all(k,j,i,iparm)
457           enddo
458         enddo
459       enddo
460 c Restore the parameters of electrostatic interactions
461       do i=1,2
462         do j=1,2
463           app(j,i)=app_all(j,i,iparm)
464           bpp(j,i)=bpp_all(j,i,iparm)
465           ael6(j,i)=ael6_all(j,i,iparm)
466           ael3(j,i)=ael3_all(j,i,iparm)
467         enddo
468       enddo
469 c Restore sidechain parameters
470       do i=1,ntyp
471         do j=1,ntyp
472           aa(j,i)=aa_all(j,i,iparm)
473           bb(j,i)=bb_all(j,i,iparm)
474           r0(j,i)=r0_all(j,i,iparm)
475           sigma(j,i)=sigma_all(j,i,iparm)
476           chi(j,i)=chi_all(j,i,iparm)
477           chipp(j,i)=chipp_all(j,i,iparm)
478           augm(j,i)=augm_all(j,i,iparm)
479           eps(j,i)=eps_all(j,i,iparm)
480           sigmap1(j,i)=sigmap1_all(j,i,iparm)
481           sigmap2(j,i)=sigmap2_all(j,i,iparm)
482           chis(j,i)=chis_all(j,i,iparm)
483           do k=1,4
484             alphasur(k,j,i)=alphasur_all(k,j,i,iparm)
485             wstate(k,j,i)=wstate_all(k,j,i,iparm)
486           enddo
487           nstate(j,i)=nstate_all(j,i,iparm)
488           do k=1,2
489             do l=1,2
490               dhead(l,k,j,i)=dhead_all(l,k,j,i,iparm)
491             enddo
492           enddo
493           do k=1,2
494             dtail(k,j,i)=dtail_all(k,j,i,iparm)
495           enddo
496           epshead(j,i)=epshead_all(j,i,iparm)
497           rborn(j,i)=rborn_all(j,i,iparm)
498           do k=1,2
499             wqdip(k,j,i)=wqdip_all(k,j,i,iparm)
500           enddo
501           wquad(j,i)=wquad_all(j,i,iparm)
502           alphapol(j,i)=alphapol_all(j,i,iparm)
503           do k=1,4
504             alphiso(k,j,i)=alphiso_all(k,j,i,iparm)
505           enddo
506           sigiso1(j,i)=sigiso1_all(j,i,iparm)
507           sigiso2(j,i)=sigiso2_all(j,i,iparm)
508           epsintab(j,i)=epsintab_all(j,i,iparm)
509         enddo
510       enddo
511       do i=1,ntyp
512         chip(i)=chip_all(i,iparm)
513         alp(i)=alp_all(i,iparm)
514       enddo
515 c Restore the SCp parameters
516       do i=1,ntyp
517         do j=1,2
518           aad(i,j)=aad_all(i,j,iparm)
519           bad(i,j)=bad_all(i,j,iparm)
520         enddo
521       enddo
522 c Restore disulfide-bond parameters
523       ebr=ebr_all(iparm)
524       d0cm=d0cm_all(iparm)
525       akcm=akcm_all(iparm)
526       akth=akth_all(iparm)
527       akct=akct_all(iparm)
528       v1ss=v1ss_all(iparm)
529       v2ss=v2ss_all(iparm)
530       v3ss=v3ss_all(iparm)
531 c Restore SC-backbone correlation parameters
532       do i=1,nsccortyp
533        do j=1,nsccortyp
534
535       nterm_sccor(j,i)=nterm_sccor_all(j,i,iparm)
536 c      do i=1,20
537 c        do j=1,20
538          do l=1,3
539           do k=1,nterm_sccor(j,i)
540             v1sccor(k,l,j,i)=v1sccor_all(k,l,j,i,iparm)
541             v2sccor(k,l,j,i)=v2sccor_all(k,l,j,i,iparm)
542           enddo
543          enddo
544         enddo
545       enddo
546       return
547       end