1 SUBROUTINE alias_par(gcons, ztemp, gcs, gsc, gcc, gss)
3 USE realspace,
ONLY:ireflect_par, psqrts
4 USE parallel_include_module
9 REAL(dp),
PARAMETER :: p5 = 0.5_dp
10 REAL(dp),
DIMENSION(nzeta,ntheta3,ns),
INTENT(out) :: gcons
11 REAL(dp),
DIMENSION(nzeta,ntheta3,ns),
INTENT(in) :: ztemp
12 REAL(dp),
DIMENSION(0:ntor,0:mpol1,ns) :: gcs, gsc, gcc, gss
16 INTEGER :: m, i, ir, jk, jka, n, k, js, l, j
17 INTEGER :: nsmin, nsmax
19 REAL(dp),
DIMENSION(:,:,:),
ALLOCATABLE :: work
20 REAL(dp),
DIMENSION(:,:,:),
ALLOCATABLE :: gcona
21 REAL(dp) :: talon, taloff
25 nsmin=tlglob; nsmax=t1rglob
27 ALLOCATE (work(4,nzeta,ns), gcona(nzeta,ntheta3,ns))
29 gcons(:,:,nsmin:nsmax) = 0
30 gcona(:,:,nsmin:nsmax) = 0
32 gcs(:ntor,:mpol1,nsmin:nsmax) = 0
33 gsc(:ntor,:mpol1,nsmin:nsmax) = 0
34 gcc(:ntor,:mpol1,nsmin:nsmax) = 0
35 gss(:ntor,:mpol1,nsmin:nsmax) = 0
44 work(1,k,js) = work(1,k,js) + ztemp(k,i,js)*cosmui(i,m)
45 work(2,k,js) = work(2,k,js) + ztemp(k,i,js)*sinmui(i,m)
53 work(3,k,js) = work(3,k,js) +
54 1 ztemp(kk,ir,js)*cosmui(i,m)
55 work(4,k,js) = work(4,k,js) +
56 1 ztemp(kk,ir,js)*sinmui(i,m)
64 gcs(n,m,js) = gcs(n,m, js) + tcon(js)*work(1,k,js)*
66 gsc(n,m,js) = gsc(n,m,js) + tcon(js)*work(2,k,js)*
69 gcs(n,m,js) = gcs(n,m,js) + p5*tcon(js)*sinnv(k,n)*
70 1 (work(1,k,js)-work(3,k,js))
71 gsc(n,m,js) = gsc(n,m,js) + p5*tcon(js)*cosnv(k,n)*
72 1 (work(2,k,js)-work(4,k,js))
73 gss(n,m,js) = gss(n,m,js) + p5*tcon(js)*sinnv(k,n)*
74 1 (work(2,k,js)+work(4,k,js))
75 gcc(n,m,js) = gcc(n,m,js) + p5*tcon(js)*cosnv(k,n)*
76 1 (work(1,k,js)+work(3,k,js))
89 work(3,k,js) = work(3,k,js) + gcs(n,m,js)*sinnv(k,n)
90 work(4,k,js) = work(4,k,js) + gsc(n,m,js)*cosnv(k,n)
92 work(1,k,js) = work(1,k,js) + gcc(n,m,js)*cosnv(k,n)
93 work(2,k,js) = work(2,k,js) + gss(n,m,js)*sinnv(k,n)
98 nsmin=tlglob; nsmax=t1rglob
101 gcons(k,i,js) = gcons(k,i,js) + (work(3,k,js)*cosmu(i,m)
102 1 + work(4,k,js)*sinmu(i,m))*faccon(m)
104 IF (.not.lasym) cycle
106 gcona(k,i,js) = gcona(k,i,js) + (work(1,k,js)*cosmu(i,m)
107 1 + work(2,k,js)*sinmu(i,m))*faccon(m)
119 DO i = 1 + ntheta2, ntheta1
123 gcons(k,i,js) = -gcons(kk,ir,js) + gcona(kk,ir,js)
129 gcons(:,:ntheta2,nsmin:nsmax) = gcons(:,:ntheta2,nsmin:nsmax)
130 1 + gcona(:,:ntheta2,nsmin:nsmax)
134 DEALLOCATE (work, gcona)
137 alias_time = alias_time + (taloff-talon)
139 END SUBROUTINE alias_par
141 SUBROUTINE alias(gcons, ztemp, gcs, gsc, gcc, gss)
148 REAL(dp),
PARAMETER :: p5 = 0.5_dp
149 REAL(dp),
DIMENSION(ns*nzeta,ntheta3),
INTENT(out) :: gcons
150 REAL(dp),
DIMENSION(ns*nzeta,ntheta3),
INTENT(in) :: ztemp
151 REAL(dp),
DIMENSION(ns,0:ntor,0:mpol1) :: gcs, gsc, gcc, gss
155 INTEGER :: m, i, ir, jk, jka, n, k, js, l, j
156 REAL(dp),
DIMENSION(:,:),
ALLOCATABLE :: work, gcona
159 ALLOCATE (work(ns*nzeta,4), gcona(ns*nzeta,ntheta3))
164 gcs(:,:ntor,:mpol1) = 0; gsc(:,:ntor,:mpol1) = 0
165 gcc(:,:ntor,:mpol1) = 0; gss(:,:ntor,:mpol1) = 0
171 work(jk,1) = work(jk,1) + ztemp(jk,i)*cosmui(i,m)
172 work(jk,2) = work(jk,2) + ztemp(jk,i)*sinmui(i,m)
174 IF (.not.lasym) cycle
180 work(jk,3) = work(jk,3) + ztemp(jka,ir)*cosmui(i,m)
181 work(jk,4) = work(jk,4) + ztemp(jka,ir)*sinmui(i,m)
190 gcs(js,n,m) = gcs(js,n,m) + tcon(js)*work(js+l,1)*
192 gsc(js,n,m) = gsc(js,n,m) + tcon(js)*work(js+l,2)*
197 gcs(js,n,m) = gcs(js,n,m) + p5*tcon(js)*sinnv(k,n)*
198 1 (work(js+l,1)-work(js+l,3))
199 gsc(js,n,m) = gsc(js,n,m) + p5*tcon(js)*cosnv(k,n)*
200 1 (work(js+l,2)-work(js+l,4))
201 gss(js,n,m) = gss(js,n,m) + p5*tcon(js)*sinnv(k,n)*
202 1 (work(js+l,2)+work(js+l,4))
203 gcc(js,n,m) = gcc(js,n,m) + p5*tcon(js)*cosnv(k,n)*
204 1 (work(js+l,1)+work(js+l,3))
218 work(js+l,3) = work(js+l,3) + gcs(js,n,m)*sinnv(k,n)
219 work(js+l,4) = work(js+l,4) + gsc(js,n,m)*cosnv(k,n)
221 IF (.not.lasym) cycle
223 work(js+l,1) = work(js+l,1) + gcc(js,n,m)*cosnv(k,n)
224 work(js+l,2) = work(js+l,2) + gss(js,n,m)*sinnv(k,n)
231 gcons(jk,i) = gcons(jk,i) + (work(jk,3)*cosmu(i,m)
232 1 + work(jk,4)*sinmu(i,m))*faccon(m)
234 IF (.not.lasym) cycle
236 gcona(jk,i) = gcona(jk,i) + (work(jk,1)*cosmu(i,m)
237 1 + work(jk,2)*sinmu(i,m))*faccon(m)
245 DO i = 1 + ntheta2, ntheta1
249 gcons(jk,i) = -gcons(jka,ir) + gcona(jka,ir)
254 gcons(:,:ntheta2) = gcons(:,:ntheta2) + gcona(:,:ntheta2)
258 DEALLOCATE (work, gcona)