1 SUBROUTINE profil1d_par(xc, xcdot, lreset)
3 USE vmec_params,
ONLY: signgs, lamscale, rcc, pdamp
4 USE vmec_input,
ONLY: lrfp
6 USE init_geometry,
ONLY: lflip
7 USE vmec_input,
ONLY: nzeta
8 USE vmec_dim,
ONLY: ns, ntheta3
10 USE vmec_params,
ONLY: ntmax
11 USE parallel_include_module
16 REAL(dp),
DIMENSION(0:ntor,0:mpol1,ns,3*ntmax),
INTENT(OUT) ::
18 LOGICAL,
INTENT(IN) :: lreset
23 REAL(dp),
PARAMETER :: c1p5 = 1.5_dp
28 REAL(dp) :: Itor, si, tf, pedge, vpnorm, polflux_edge
29 REAL(dp) :: phipslocal, phipstotal
30 INTEGER :: j, k, l, nsmin, nsmax
31 REAL (dp) :: torflux_edge
35 REAL(dp),
EXTERNAL :: pcurr, pmass, piota, torflux,
36 1 torflux_deriv, polflux, polflux_deriv
64 IF (ncurr.EQ.1 .AND. lrfp)
THEN
65 stop
'ncurr=1 inconsistent with lRFP=T!'
67 torflux_edge = signgs*phiedge/twopi
69 IF (si .ne. zero)
THEN
70 torflux_edge = torflux_edge/si
72 polflux_edge = torflux_edge
74 IF (si .ne. zero)
THEN
75 polflux_edge = polflux_edge/si
77 r00 = rmn_bdy(0,0,rcc)
83 nsmin = max(2, t1lglob)
87 tf = min(one, torflux(si))
91 phips(i) = torflux_edge*torflux_deriv(si)
92 chips(i) = torflux_edge*polflux_deriv(si)
101 CALL gather1xarray(phips)
102 phipstotal = sum(phips(2:ns)**2)
103 lamscale = sqrt(hs*phipstotal)
115 tf = min(one, torflux(si))
120 phipf(i) = torflux_edge*torflux_deriv(si)
121 chipf(i) = torflux_edge*polflux_deriv(si)
130 IF (abs(pedge) .gt. abs(epsilon(pedge)*curtor))
THEN
131 itor = signgs*currv/(twopi*pedge)
134 nsmin = max(2, t1lglob)
136 icurv(nsmin:nsmax) = itor*icurv(nsmin:nsmax)
141 spres_ped = abs(spres_ped)
142 IF (.not.lrecon)
THEN
143 nsmin = max(2,t1lglob)
153 vpnorm = polflux_edge*polflux_deriv(si)
155 tf = min(one, torflux(si))
156 vpnorm = torflux_edge*torflux_deriv(si)
158 IF (si .gt. spres_ped)
THEN
159 pedge = pmass(spres_ped)
163 mass(i) = pedge*(abs(vpnorm)*r00)**gamma
174 iotas(nsmin:nsmax) = 0
175 iotaf(nsmin:nsmax) = 0
176 mass(nsmin:nsmax) = 0
177 presf(nsmin:nsmax) = 0
182 nsmax = min(t1rglob, ns + 1)
183 pres(nsmin:nsmax) = 0
184 xcdot(:,:,nsmin:nsmax,:) = 0
187 medge = pmass(one)*(abs(phips(ns))*r00)**gamma
190 nsmin = max(1, t1lglob - 1)
191 nsmax = min(t1rglob + 1,ns)
193 si = hs*abs(i - 1.5_dp)
194 pshalf(:,i) = sqrt(si)
196 psqrts(:,i) = sqrt(si)
197 bdamp(i) = 2*pdamp*(1 - si)
202 nsmin = max(2, t1lglob)
205 sm(i) = pshalf(1,i)/psqrts(1,i)
207 sp(i) = pshalf(1,i + 1)/psqrts(1,i)
209 sp(i)=one/psqrts(1,i)
219 xc(:,:,t1lglob:t1rglob,:) = 0
222 END SUBROUTINE profil1d_par
224 SUBROUTINE profil1d(xc, xcdot, lreset)
226 USE vmec_params,
ONLY: signgs, lamscale, rcc, pdamp
227 USE vmec_input,
ONLY: lrfp
229 USE realspace,
ONLY: shalf, sqrts
230 USE init_geometry,
ONLY: lflip
236 REAL(dp),
DIMENSION(neqs),
INTENT(out) :: xc, xcdot
237 LOGICAL,
INTENT(IN) :: lreset
241 REAL(dp),
PARAMETER :: c1p5 = 1.5_dp
246 REAL(dp) :: Itor, si, tf, pedge, vpnorm, polflux_edge
247 REAL(dp) :: torflux_edge
251 REAL(dp),
EXTERNAL :: pcurr, pmass, piota, torflux,
252 1 torflux_deriv, polflux, polflux_deriv
279 IF (ncurr.EQ.1 .AND. lrfp)
THEN
280 stop
'ncurr=1 inconsistent with lRFP=T!'
283 torflux_edge = signgs*phiedge/twopi
285 IF (si .ne. zero)
THEN
286 torflux_edge = torflux_edge/si
288 polflux_edge = torflux_edge
290 IF (si .ne. zero)
THEN
291 polflux_edge = polflux_edge/si
293 r00 = rmn_bdy(0,0,rcc)
301 tf = min(one, torflux(si))
305 phips(i) = torflux_edge*torflux_deriv(si)
306 chips(i) = torflux_edge*polflux_deriv(si)
314 lamscale = sqrt(hs*sum(phips(2:ns)**2))
323 tf = min(one, torflux(si))
328 phipf(i) = torflux_edge*torflux_deriv(si)
329 chipf(i) = torflux_edge*polflux_deriv(si)
338 IF (abs(pedge) .gt. abs(epsilon(pedge)*curtor))
THEN
339 itor = signgs*currv/(twopi*pedge)
341 icurv(2:ns) = itor*icurv(2:ns)
346 spres_ped = abs(spres_ped)
347 IF (.not.lrecon)
THEN
356 vpnorm = polflux_edge*polflux_deriv(si)
358 tf = min(one, torflux(si))
359 vpnorm = torflux_edge*torflux_deriv(si)
361 IF (si .gt. spres_ped)
THEN
362 pedge = pmass(spres_ped)
366 mass(i) = pedge*(abs(vpnorm)*r00)**gamma
385 medge = pmass(one)*(abs(phips(ns))*r00)**gamma
389 si = hs*abs(i - 1.5_dp)
391 shalf(i:nrzt:ns) = sqrt(si)
393 sqrts(i:nrzt:ns) = sqrt(si)
394 bdamp(i) = 2*pdamp*(1 - si)
397 sqrts(ns:nrzt:ns) = 1
402 sm(i) = shalf(i)/sqrts(i)
403 sp(i) = shalf(i+1)/sqrts(i)
414 END SUBROUTINE profil1d