1 SUBROUTINE lamcal_par(overg, guu, guv, gvv)
3 USE vmec_params,
ONLY: ntmax, jlam, lamscale
4 USE realspace,
ONLY: psqrts
5 USE parallel_include_module
10 REAL(rprec),
DIMENSION(nznt,ns),
INTENT(in) :: &
15 REAL(rprec),
PARAMETER :: damping_fac = 2
19 INTEGER :: m, n, js, nsmin, nsmax, numjs, i, j, k, l
20 REAL(rprec) :: tnn, tnm, tmm, power, pfactor0, pfactor
23 INTEGER,
ALLOCATABLE,
DIMENSION(:) :: counts, disps
24 REAL(rprec),
ALLOCATABLE,
DIMENSION(:,:,:,:) :: send_buf
25 REAL(rprec),
ALLOCATABLE,
DIMENSION(:) :: recv_buf
26 REAL(rprec) :: allgvton, allgvtoff
29 nsmin=tlglob; nsmax=t1rglob
31 blam(nsmin:nsmax) = sum(guu(:,nsmin:nsmax)*overg(:,nsmin:nsmax), dim
32 clam(nsmin:nsmax) = sum(gvv(:,nsmin:nsmax)*overg(:,nsmin:nsmax), dim
33 dlam(nsmin:nsmax) = sum(guv(:,nsmin:nsmax)*overg(:,nsmin:nsmax), dim
41 nsmin=max(2,tlglob); nsmax=trglob
43 blam(js) = cp5*(blam(js) + blam(js+1))
44 clam(js) = cp5*(clam(js) + clam(js+1))
45 dlam(js) = cp5*(dlam(js) + dlam(js+1))
50 pfactor0 = damping_fac/(2*r0scale*lamscale)**2
54 power = min(tmm/256, 8._dp)
57 IF (m.eq.0 .and. n.eq.0) cycle
61 DO js = max(jlam(m),tlglob), trglob
62 pfaclam(n,m,js,1) = blam(js)*tnn + clam(js)*tmm
63 + sign(dlam(js),blam(js))*tnm
64 IF (pfaclam(n,m,js,1) .eq. zero)
THEN
65 pfaclam(n,m,js,1) = -1.e-10_dp
67 pfaclam(n,m,js,1) = (pfactor/pfaclam(n,m,js,1))
73 nsmin=tlglob; nsmax=trglob
75 pfaclam(0:ntor,0:mpol1,nsmin:nsmax,n) =
76 pfaclam(0:ntor,0:mpol1,nsmin:nsmax,1)
82 nsmin=tlglob; nsmax=trglob
84 pfaclam(0,0,js,1) = (pfactor0*lamscale**2)/blam(js)
87 END SUBROUTINE lamcal_par
89 SUBROUTINE lamcal(overg, guu, guv, gvv)
91 USE vmec_params,
ONLY: ntmax, jlam, lamscale
92 USE realspace,
ONLY: sqrts
98 REAL(rprec),
DIMENSION(ns,nznt),
INTENT(in) :: &
103 REAL(rprec),
PARAMETER :: damping_fac=2
108 REAL(rprec) :: tnn, tnm, tmm, power, pfactor0, pfactor
113 blam(:ns) = sum(guu*overg, dim=2)
114 clam(:ns) = sum(gvv*overg, dim=2)
115 dlam(:ns) = sum(guv*overg, dim=2)
123 blam(js) = cp5*(blam(js) + blam(js+1))
124 clam(js) = cp5*(clam(js) + clam(js+1))
125 dlam(js) = cp5*(dlam(js) + dlam(js+1))
129 pfactor0 = damping_fac/(2*r0scale*lamscale)**2
133 power = min(tmm/256, 8._dp)
136 IF (m.eq.0 .and. n.eq.0) cycle
141 faclam(js,n,m,1) = blam(js)*tnn + clam(js)*tmm
142 + sign(dlam(js),blam(js))*tnm
143 IF (faclam(js,n,m,1) .eq. zero)
THEN
144 faclam(js,n,m,1) = -1.e-10_dp
146 faclam(js,n,m,1) = (pfactor/faclam(js,n,m,1))
153 faclam(:ns,0:ntor,0:mpol1,n) = faclam(:ns,0:ntor,0:mpol1,1)
159 faclam(js,0,0,1) = (pfactor0*lamscale**2)/blam(js)
162 END SUBROUTINE lamcal