Dzialajaczy dla D aminokwasow whama(mono) psuedosymetria dla GABowego
[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       ebr_all(iparm)=ebr
231       d0cm_all(iparm)=d0cm
232       akcm_all(iparm)=akcm
233       akth_all(iparm)=akth
234       akct_all(iparm)=akct
235       v1ss_all(iparm)=v1ss
236       v2ss_all(iparm)=v2ss
237       v3ss_all(iparm)=v3ss
238 c Store SC-backbone correlation parameters
239       do i=1,nsccortyp
240        do j=1,nsccortyp
241
242       nterm_sccor_all(j,i,iparm)=nterm_sccor(j,i)
243         do l=1,3
244            do k=1,nterm_sccor(j,i)
245             v1sccor_all(k,l,j,i,iparm)=v1sccor(k,l,j,i)
246             v2sccor_all(k,l,j,i,iparm)=v2sccor(k,l,j,i)
247           enddo
248          enddo
249         enddo
250       enddo
251       return
252       end
253 c--------------------------------------------------------------------------
254       subroutine restore_parm(iparm)
255 C
256 C Store parameters of set IPARM
257 C valence angles and the side chains and energy parameters.
258 C
259       implicit none
260       include 'DIMENSIONS'
261       include 'DIMENSIONS.ZSCOPT'
262       include 'DIMENSIONS.FREE'
263       include 'COMMON.IOUNITS'
264       include 'COMMON.CHAIN'
265       include 'COMMON.INTERACT'
266       include 'COMMON.GEO'
267       include 'COMMON.LOCAL'
268       include 'COMMON.TORSION'
269       include 'COMMON.FFIELD'
270       include 'COMMON.NAMES'
271       include 'COMMON.SBRIDGE'
272       include 'COMMON.SCROT'
273       include 'COMMON.SCCOR'
274       include 'COMMON.ALLPARM'
275       integer i,j,k,l,m,mm,iparm,ichir1,ichir2,iblock,iii
276
277 c Restore weights
278       wsc=ww_all(1,iparm)
279       wscp=ww_all(2,iparm)
280       welec=ww_all(3,iparm)
281       wcorr=ww_all(4,iparm)
282       wcorr5=ww_all(5,iparm)
283       wcorr6=ww_all(6,iparm)
284       wel_loc=ww_all(7,iparm)
285       wturn3=ww_all(8,iparm)
286       wturn4=ww_all(9,iparm)
287       wturn6=ww_all(10,iparm)
288       wang=ww_all(11,iparm)
289       wscloc=ww_all(12,iparm)
290       wtor=ww_all(13,iparm)
291       wtor_d=ww_all(14,iparm)
292       wstrain=ww_all(15,iparm)
293       wvdwpp=ww_all(16,iparm)
294       wbond=ww_all(17,iparm)
295       wsccor=ww_all(19,iparm)
296 c Restore bond parameters
297       vbldp0=vbldp0_all(iparm)
298       akp=akp_all(iparm)
299       do i=1,ntyp
300         nbondterm(i)=nbondterm_all(i,iparm)
301         do j=1,nbondterm(i)
302           vbldsc0(j,i)=vbldsc0_all(j,i,iparm)
303           aksc(j,i)=aksc_all(j,i,iparm)
304           abond0(j,i)=abond0_all(j,i,iparm)
305         enddo
306       enddo
307 c Restore bond angle parameters
308 #ifdef CRYST_THETA
309       do i=-ntyp,ntyp
310         a0thet(i)=a0thet_all(i,iparm)
311
312         do ichir1=-1,1
313         do ichir2=-1,1
314         do j=1,2
315           athet(j,i,ichir1,ichir2)=athet_all(j,i,ichir1,ichir2,iparm)
316           bthet(j,i,ichir1,ichir2)=bthet_all(j,i,ichir1,ichir2,iparm)
317        enddo
318        enddo
319        enddo
320         do j=0,3
321           polthet(j,i)=polthet_all(j,i,iparm)
322         enddo
323         do j=1,3
324           gthet(j,i)=gthet_all(j,i,iparm)
325         enddo
326         theta0(i)=theta0_all(i,iparm)
327         sig0(i)=sig0_all(i,iparm)
328         sigc0(i)=sigc0_all(i,iparm)
329       enddo
330 #else
331       nthetyp=nthetyp_all(iparm)
332       ntheterm=ntheterm_all(iparm)
333       ntheterm2=ntheterm2_all(iparm)
334       ntheterm3=ntheterm3_all(iparm)
335       nsingle=nsingle_all(iparm)
336       ndouble=ndouble_all(iparm)
337       nntheterm=nntheterm_all(iparm)
338       do i=1,ntyp1
339         ithetyp(i)=ithetyp_all(i,iparm)
340       enddo
341       do i=1,maxthetyp1
342         do j=1,maxthetyp1
343           do k=1,maxthetyp1
344             aa0thet(i,j,k)=aa0thet_all(i,j,k,iparm)
345             do l=1,ntheterm
346               aathet(l,i,j,k)=aathet_all(l,i,j,k,iparm)
347             enddo
348             do l=1,ntheterm2
349               do m=1,nsingle
350                 bbthet(m,l,i,j,k)=bbthet_all(m,l,i,j,k,iparm)
351                 ccthet(m,l,i,j,k)=ccthet_all(m,l,i,j,k,iparm)
352                 ddthet(m,l,i,j,k)=ddthet_all(m,l,i,j,k,iparm)
353                 eethet(m,l,i,j,k)=eethet_all(m,l,i,j,k,iparm)
354               enddo
355             enddo
356             do l=1,ntheterm3
357               do m=1,ndouble
358                 do mm=1,ndouble
359                  ffthet(mm,m,l,i,j,k)=ffthet_all(mm,m,l,i,j,k,iparm)
360                  ggthet(mm,m,l,i,j,k)=ggthet_all(mm,m,l,i,j,k,iparm)
361                 enddo
362               enddo
363             enddo
364           enddo
365         enddo
366       enddo
367 #endif
368 c Restore the sidechain rotamer parameters
369 #ifdef CRYST_SC
370       do i=-ntyp,ntyp
371         if (i.eq.0) cycle
372         iii=iabs(i)
373         nlob(iii)=nlob_all(iii,iparm)
374         do j=1,nlob(iii)
375           bsc(j,iii)=bsc_all(j,iii,iparm)
376           do k=1,3
377             censc(k,j,i)=censc_all(k,j,i,iparm)
378           enddo
379           do k=1,3
380             do l=1,3
381               gaussc(l,k,j,i)=gaussc_all(l,k,j,i,iparm)
382             enddo
383           enddo
384         enddo
385       enddo
386 #else
387       do i=1,ntyp
388         do j=1,65
389           sc_parmin(j,i)=sc_parmin_all(j,i,iparm)
390         enddo
391       enddo
392 #endif
393 c Restore the torsional parameters
394       do iblock=1,2
395       do i=-ntortyp+1,ntortyp-1
396         do j=-ntortyp+1,ntortyp-1
397           v0(i,j,iblock)=v0_all(i,j,iblock,iparm)
398           nterm(i,j,iblock)=nterm_all(i,j,iblock,iparm)
399           nlor(i,j,iblock)=nlor_all(i,j,iblock,iparm)
400           do k=1,nterm(i,j,iblock)
401             v1(k,i,j,iblock)=v1_all(k,i,j,iblock,iparm)
402             v2(k,i,j,iblock)=v2_all(k,i,j,iblock,iparm)
403            enddo
404           do k=1,nlor(i,j,iblock)
405              vlor1(k,i,j)=vlor1_all(k,i,j,iparm)
406              vlor2(k,i,j)=vlor2_all(k,i,j,iparm)
407              vlor3(k,i,j)=vlor3_all(k,i,j,iparm)
408            enddo
409          enddo
410        enddo  
411       enddo
412 c Restore the double torsional parameters
413       do iblock=1,2
414       do i=-ntortyp+1,ntortyp-1
415         do j=-ntortyp+1,ntortyp-1
416           do k=-ntortyp+1,ntortyp-1
417             ntermd_1(i,j,k,iblock)=ntermd1_all(i,j,k,iblock,iparm)
418             ntermd_2(i,j,k,iblock)=ntermd2_all(i,j,k,iblock,iparm)
419             do l=1,ntermd_1(i,j,k,iblock)
420               v1c(1,l,i,j,k,iblock)=v1c_all(1,l,i,j,k,iblock,iparm)
421               v1c(2,l,i,j,k,iblock)=v1c_all(2,l,i,j,k,iblock,iparm)
422               v2c(1,l,i,j,k,iblock)=v2c_all(1,l,i,j,k,iblock,iparm)
423               v2c(2,l,i,j,k,iblock)=v2c_all(2,l,i,j,k,iblock,iparm)
424              enddo
425             do l=1,ntermd_2(i,j,k,iblock)
426               do m=1,ntermd_2(i,j,k,iblock)
427                 v2s(l,m,i,j,k,iblock)=v2s_all(l,m,i,j,k,iblock,iparm)
428                enddo
429              enddo
430            enddo
431          enddo
432        enddo
433       enddo
434 c Restore parameters of the cumulants
435       do i=-nloctyp,nloctyp
436         do j=1,2
437           b1(j,i)=b1_all(j,i,iparm)
438           b1tilde(j,i)=b1tilde_all(j,i,iparm)
439           b2(j,i)=b2_all(j,i,iparm)
440         enddo
441         do j=1,2
442           do k=1,2
443             cc(k,j,i)=cc_all(k,j,i,iparm)
444             ctilde(k,j,i)=ctilde_all(k,j,i,iparm)
445             dd(k,j,i)=dd_all(k,j,i,iparm)
446             dtilde(k,j,i)=dtilde_all(k,j,i,iparm)
447             ee(k,j,i)=ee_all(k,j,i,iparm)
448           enddo
449         enddo
450       enddo
451 c Restore the parameters of electrostatic interactions
452       do i=1,2
453         do j=1,2
454           app(j,i)=app_all(j,i,iparm)
455           bpp(j,i)=bpp_all(j,i,iparm)
456           ael6(j,i)=ael6_all(j,i,iparm)
457           ael3(j,i)=ael3_all(j,i,iparm)
458         enddo
459       enddo
460 c Restore sidechain parameters
461       do i=1,ntyp
462         do j=1,ntyp
463           aa(j,i)=aa_all(j,i,iparm)
464           bb(j,i)=bb_all(j,i,iparm)
465           r0(j,i)=r0_all(j,i,iparm)
466           sigma(j,i)=sigma_all(j,i,iparm)
467           chi(j,i)=chi_all(j,i,iparm)
468           augm(j,i)=augm_all(j,i,iparm)
469           eps(j,i)=eps_all(j,i,iparm)
470         enddo
471       enddo
472       do i=1,ntyp
473         chip(i)=chip_all(i,iparm)
474         alp(i)=alp_all(i,iparm)
475       enddo
476 c Restore the SCp parameters
477       do i=1,ntyp
478         do j=1,2
479           aad(i,j)=aad_all(i,j,iparm)
480           bad(i,j)=bad_all(i,j,iparm)
481         enddo
482       enddo
483 c Restore disulfide-bond parameters
484       ebr=ebr_all(iparm)
485       d0cm=d0cm_all(iparm)
486       akcm=akcm_all(iparm)
487       akth=akth_all(iparm)
488       akct=akct_all(iparm)
489       v1ss=v1ss_all(iparm)
490       v2ss=v2ss_all(iparm)
491       v3ss=v3ss_all(iparm)
492 c Restore SC-backbone correlation parameters
493       do i=1,nsccortyp
494        do j=1,nsccortyp
495
496       nterm_sccor(j,i)=nterm_sccor_all(j,i,iparm)
497 c      do i=1,20
498 c        do j=1,20
499          do l=1,3
500           do k=1,nterm_sccor(j,i)
501             v1sccor(k,l,j,i)=v1sccor_all(k,l,j,i,iparm)
502             v2sccor(k,l,j,i)=v2sccor_all(k,l,j,i,iparm)
503           enddo
504          enddo
505         enddo
506       enddo
507       return
508       end