1 SUBROUTINE allocate_funct3d_par
6 USE vmec_input,
ONLY: nzeta
7 USE vmec_dim,
ONLY: ns, ntheta3
13 INTEGER :: istat1, ndim, ndim2
15 CALL free_mem_funct3d_par
17 ALLOCATE(parmn(nznt,ns,0:1),stat=istat1)
18 ALLOCATE(pazmn(nznt,ns,0:1),stat=istat1)
19 ALLOCATE(pbrmn(nznt,ns,0:1),stat=istat1)
20 ALLOCATE(pbzmn(nznt,ns,0:1),stat=istat1)
21 ALLOCATE(pcrmn(nznt,ns,0:1),stat=istat1)
22 ALLOCATE(pczmn(nznt,ns,0:1),stat=istat1)
23 ALLOCATE(pblmn(nznt,ns,0:1),stat=istat1)
24 ALLOCATE(pclmn(nznt,ns,0:1),stat=istat1)
26 ALLOCATE(pru(nznt,ns,0:1),stat=istat1)
27 ALLOCATE(pr1(nznt,ns,0:1),stat=istat1)
29 ALLOCATE(prv(nznt,ns,0:1),stat=istat1)
30 ALLOCATE(pzv(nznt,ns,0:1),stat=istat1)
32 ALLOCATE(prcon(nznt,ns,0:1),stat=istat1)
33 ALLOCATE(pzcon(nznt,ns,0:1),stat=istat1)
36 ALLOCATE(pgcon(nznt,ns),stat=istat1)
37 ALLOCATE(prcon0(nznt,ns),stat=istat1); prcon0 = 0
38 ALLOCATE(pzcon0(nznt,ns),stat=istat1); pzcon0 = 0
40 ALLOCATE(pzu(nznt,ns,0:1),stat=istat1)
41 ALLOCATE(pz1(nznt,ns,0:1),stat=istat1)
43 ALLOCATE(pguu(nznt,ns),stat=istat1)
44 ALLOCATE(pguv(nznt,ns),stat=istat1)
45 ALLOCATE(pgvv(nznt,ns),stat=istat1)
47 ALLOCATE(pru0(nznt,ns),stat=istat1)
48 ALLOCATE(pzu0(nznt,ns),stat=istat1)
50 ALLOCATE (pextra1(nznt,ns,0:1), stat=istat1)
51 IF (istat1.ne.0) stop
'allocation error #3 in allocate_funct3d'
55 ALLOCATE (pextra2(nznt,ns,0:1),
56 & pextra3(nznt,ns,0:1),
57 & pextra4(nznt,ns,0:1),stat=istat1)
59 ALLOCATE (pextra2(nznt,ns,1),
61 & pextra4(nznt,ns,1),stat=istat1)
63 IF (istat1.ne.0) stop
'allocation error #3 in allocate_funct3dpar'
64 pextra2=0; pextra3=0; pextra4=0
70 parmn_e => parmn(:,:,0)
71 parmn_o => parmn(:,:,1)
74 pazmn_e => pazmn(:,:,0)
75 pazmn_o => pazmn(:,:,1)
78 pbrmn_e => pbrmn(:,:,0)
79 pbrmn_o => pbrmn(:,:,1)
82 pbzmn_e => pbzmn(:,:,0)
83 pbzmn_o => pbzmn(:,:,1)
86 pcrmn_e => pcrmn(:,:,0)
87 pcrmn_o => pcrmn(:,:,1)
90 pczmn_e => pczmn(:,:,0)
91 pczmn_o => pczmn(:,:,1)
94 pblmn_e => pblmn(:,:,0)
95 pblmn_o => pblmn(:,:,1)
98 pclmn_e => pclmn(:,:,0)
99 pclmn_o => pclmn(:,:,1)
105 CALL free_mem_funct3d
107 ALLOCATE (armn(ndim2), azmn(ndim2), brmn(ndim2), bzmn(ndim2),
108 & crmn(ndim2), czmn(ndim2), blmn(ndim2), clmn(ndim2),
109 & r1(nrzt,0:1), ru(nrzt,0:1), rv(nrzt,0:1),
110 & z1(nrzt,0:1), zu(nrzt,0:1), zv(nrzt,0:1),
111 & rcon(nrzt,0:1), zcon(nrzt,0:1), ru0(ndim), zu0(ndim),
112 & rcon0(ndim), zcon0(ndim), guu(ndim), guv(ndim),
113 & gvv(ndim), gcon(ndim), sigma_an(nrzt), stat=istat1)
114 IF (istat1.ne.0)
THEN
115 stop
'allocation error #1 in allocate_funct3d'
117 armn=0; azmn=0; brmn=0; bzmn=0; crmn=0; czmn=0; blmn=0; clmn=0
118 r1=0; ru=0; rv=0; z1=0; zu=0; zv=0; rcon=0; zcon=0
119 ru0=0; zu0=0; rcon0=0; zcon=0; guu=0; guv=0; gvv=0
123 ALLOCATE(pperp(nrzt), ppar(nrzt), onembc(nrzt),
124 & pp1(nrzt), pp2(nrzt), pp3(nrzt), stat=istat1)
125 IF (istat1.ne.0)
THEN
126 stop
'allocation error #1A in allocate_funct3d'
128 pperp=0; ppar=0; onembc=0; pp1=0; pp2=0; pp3=0
132 ALLOCATE (brv(nznt), bphiv(nznt), bzv(nznt), bsqvac(nznt),
133 & bsqvac0(nznt), bsubu_sur(nuv3), bsubv_sur(nuv3),
134 & bsupu_sur(nuv3), bsupv_sur(nuv3),
136 IF (istat1.ne.0)
THEN
137 stop
'allocation error #2 in allocate_funct3d'
139 brv=0; bphiv=0; bzv=0; bsqvac=0
142 ALLOCATE (extra1(ndim,0:1), stat=istat1)
143 IF (istat1.ne.0)
THEN
144 stop
'allocation error #3 in allocate_funct3d'
149 ALLOCATE (extra2(ndim,0:1), extra3(ndim,0:1),
150 1 extra4(ndim,0:1),stat=istat1)
152 ALLOCATE (extra2(ndim,1), extra3(ndim,1), extra4(ndim,1),
155 IF (istat1.ne.0)
THEN
156 stop
'allocation error #3 in allocate_funct3d'
158 extra2=0; extra3=0; extra4=0
164 armn_e => armn(:ndim)
165 armn_o => armn(ndim:)
167 brmn_e => brmn(:ndim)
168 brmn_o => brmn(ndim:)
170 azmn_e => azmn(:ndim)
171 azmn_o => azmn(ndim:)
173 bzmn_e => bzmn(:ndim)
174 bzmn_o => bzmn(ndim:)
176 crmn_e => crmn(:ndim)
177 crmn_o => crmn(ndim:)
179 czmn_e => czmn(:ndim)
180 czmn_o => czmn(ndim:)
182 blmn_e => blmn(:ndim)
183 blmn_o => blmn(ndim:)
185 clmn_e => clmn(:ndim)
186 clmn_o => clmn(ndim:)
191 END SUBROUTINE allocate_funct3d_par
193 SUBROUTINE allocate_funct3d
202 INTEGER :: istat1, ndim, ndim2
207 CALL free_mem_funct3d
209 ALLOCATE (armn(ndim2), azmn(ndim2), brmn(ndim2), bzmn(ndim2),
210 & crmn(ndim2), czmn(ndim2), blmn(ndim2), clmn(ndim2),
211 & r1(nrzt,0:1), ru(nrzt,0:1), rv(nrzt,0:1),
212 & z1(nrzt,0:1), zu(nrzt,0:1), zv(nrzt,0:1),
213 & rcon(nrzt,0:1), zcon(nrzt,0:1), ru0(ndim), zu0(ndim),
214 & rcon0(ndim), zcon0(ndim), guu(ndim), guv(ndim),
215 & gvv(ndim), gcon(ndim), sigma_an(nrzt), stat=istat1)
216 IF (istat1.ne.0)
THEN
217 stop
'allocation error #1 in allocate_funct3d'
219 armn=0; azmn=0; brmn=0; bzmn=0; crmn=0; czmn=0; blmn=0; clmn=0
220 r1=0; ru=0; rv=0; z1=0; zu=0; zv=0; rcon=0; zcon=0
221 ru0=0; zu0=0; rcon0=0; zcon=0; guu=0; guv=0; gvv=0
225 ALLOCATE(pperp(nrzt), ppar(nrzt), onembc(nrzt),
226 & pp1(nrzt), pp2(nrzt), pp3(nrzt), stat=istat1)
227 IF (istat1.ne.0)
THEN
228 stop
'allocation error #1A in allocate_funct3d'
230 pperp=0; ppar=0; onembc=0; pp1=0; pp2=0; pp3=0
234 ALLOCATE (brv(nznt), bphiv(nznt), bzv(nznt), bsqvac(nznt),
235 & bsubu_sur(nznt), bsubv_sur(nznt),
236 & bsupu_sur(nznt), bsupv_sur(nznt),
238 IF (istat1.ne.0)
THEN
239 stop
'allocation error #2 in allocate_funct3d'
241 brv=0; bphiv=0; bzv=0; bsqvac=0
244 ALLOCATE (extra1(ndim,0:1), stat=istat1)
245 IF (istat1.ne.0)
THEN
246 stop
'allocation error #3 in allocate_funct3d'
251 ALLOCATE (extra2(ndim,0:1), extra3(ndim,0:1),
252 & extra4(ndim,0:1),stat=istat1)
254 ALLOCATE (extra2(ndim,1), extra3(ndim,1), extra4(ndim,1),
257 IF (istat1.ne.0) stop
'allocation error #3 in allocate_funct3d'
258 extra2=0; extra3=0; extra4=0
263 armn_e => armn(:ndim)
264 armn_o => armn(ndim:)
266 brmn_e => brmn(:ndim)
267 brmn_o => brmn(ndim:)
269 azmn_e => azmn(:ndim)
270 azmn_o => azmn(ndim:)
272 bzmn_e => bzmn(:ndim)
273 bzmn_o => bzmn(ndim:)
275 crmn_e => crmn(:ndim)
276 crmn_o => crmn(ndim:)
278 czmn_e => czmn(:ndim)
279 czmn_o => czmn(ndim:)
281 blmn_e => blmn(:ndim)
282 blmn_o => blmn(ndim:)
284 clmn_e => clmn(:ndim)
285 clmn_o => clmn(ndim:)
290 END SUBROUTINE allocate_funct3d