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