From c1a7cd8ef8cf8c341e0e5cf8a8f7aad44325772c Mon Sep 17 00:00:00 2001 From: Jong-Kyu Park Date: Fri, 20 Jun 2025 13:55:17 +0900 Subject: [PATCH 01/62] A new branch for snu students to incorporate local developments into the develop branch. --- .gitignore | 10 ++++++++++ docs/nametag | 1 + match/ideal.f | 6 +++--- 3 files changed, 14 insertions(+), 3 deletions(-) create mode 100644 docs/nametag diff --git a/.gitignore b/.gitignore index 2c34ea433..abd406ae0 100644 --- a/.gitignore +++ b/.gitignore @@ -9,6 +9,7 @@ *.mod *.pyc *~ +*.i *.out *.bin *.nc @@ -17,17 +18,26 @@ */penmpi */version.inc */*.original +*/make.log modovmc .cproject .idea/ +.vscode/ .project +.DS_Store bin/ docs/_build/ docs/examples/*/gal_solution.dat docs/examples/*/delta_gw.dat docs/examples/*/gal_solution_cut.dat +deps/bin/* +deps/hdf5 +deps/include/* +deps/lib/* +deps/share/* + *version.inc dcon/dcon diff --git a/docs/nametag b/docs/nametag new file mode 100644 index 000000000..618ff0687 --- /dev/null +++ b/docs/nametag @@ -0,0 +1 @@ +snu_offshoot \ No newline at end of file diff --git a/match/ideal.f b/match/ideal.f index 69f441bbe..deaaa3db3 100644 --- a/match/ideal.f +++ b/match/ideal.f @@ -508,7 +508,7 @@ SUBROUTINE ideal_chord REAL(r8) :: psi,theta,theta0,theta1,zlevel,z,zz0,zz1 REAL(r8), DIMENSION(0:mtheta) :: zz REAL(r8), DIMENSION(mstep,2) :: r,th0,z0,q - COMPLEX(r8), DIMENSION(mstep,2) :: xi_psi,b_psi,xi_norm,b_norm + COMPLEX(r8), DIMENSION(mstep,2) :: xi_psi,b_psi,xi_norm,b_norm c----------------------------------------------------------------------- c format statements. c----------------------------------------------------------------------- @@ -538,7 +538,7 @@ SUBROUTINE ideal_chord CALL bicube_eval(rzphi,psi,theta,0) zz(itheta)=zo-zlevel $ +SQRT(rzphi%f(1))*SIN(twopi*(theta+rzphi%f(2))) - ENDDO + ENDDO c----------------------------------------------------------------------- c find theta indices intersecting chord. c----------------------------------------------------------------------- @@ -619,7 +619,7 @@ SUBROUTINE ideal_chord jstep=jstep+1 ENDDO WRITE(debug_unit,10) - CALL bin_close(bin_unit) + CALL bin_close(bin_unit) CALL ascii_close(debug_unit) c----------------------------------------------------------------------- c terminate. From 985c69e5959034947af9c2c0a228188bcbcc9660 Mon Sep 17 00:00:00 2001 From: satelite2517 Date: Wed, 11 Mar 2026 14:36:31 +0900 Subject: [PATCH 02/62] Remove nametag file from documentation (cherry picked from commit 7ffde747ab34995e44688cb0954a6ae352c49e6d) --- docs/nametag | 1 - 1 file changed, 1 deletion(-) delete mode 100644 docs/nametag diff --git a/docs/nametag b/docs/nametag deleted file mode 100644 index 618ff0687..000000000 --- a/docs/nametag +++ /dev/null @@ -1 +0,0 @@ -snu_offshoot \ No newline at end of file From d21b863ce815271f66f8f9c37e54868a902dcd71 Mon Sep 17 00:00:00 2001 From: satelite2517 Date: Fri, 13 Mar 2026 11:53:11 +0900 Subject: [PATCH 03/62] GPEC - WIP - add curvature, shear, K value calculation for recon_flag (cherry picked from commit 4a146f21e01c700f56130d41672c5951b920beb6) --- gpec/gpec.f | 9 +- gpec/gpeq.f | 416 +++++++++++++++++++++++++++++++++++++++++++++--- gpec/gpglobal.F | 11 ++ gpec/gpout.f | 108 +++++++++++++ input/gpec.in | 1 + 5 files changed, 520 insertions(+), 25 deletions(-) diff --git a/gpec/gpec.f b/gpec/gpec.f index 6e1eba66c..5ff5ab9eb 100644 --- a/gpec/gpec.f +++ b/gpec/gpec.f @@ -37,7 +37,7 @@ PROGRAM gpec_main $ arbsurf_flag,angles_flag,surfmode_flag,rzpgrid_flag, $ singcurs_flag,m3d_flag,cas3d_flag,test_flag,nrzeq_flag, $ arzphifun_flag,xbrzphifun_flag,pmodbmn_flag,xclebsch_flag, - $ filter_flag,gal_flag,delpsi_flag, + $ filter_flag,gal_flag,delpsi_flag,recon_flag, $ singthresh_callen_flag,singthresh_slayer_flag,singthresh_flag LOGICAL, DIMENSION(100) :: ss_flag COMPLEX(r8), DIMENSION(:), POINTER :: finmn,foutmn,xspmn, @@ -70,7 +70,7 @@ PROGRAM gpec_main $ xclebsch_flag,pbrzphi_flag,verbose,max_linesout,filter_flag, $ netcdf_flag,ascii_flag,singthresh_flag, $ singthresh_callen_flag,singthresh_slayer_flag, - $ singthresh_slayer_inpr,out_ahg2msc + $ singthresh_slayer_inpr,out_ahg2msc,recon_flag NAMELIST/gpec_diagnose/singcurs_flag,xbcontra_flag, $ xbnobo_flag,d3_flag,div_flag,xbst_flag,jacfac_flag, $ pmodbmn_flag,rzphibx_flag,radvar_flag,eigen_flag,magpot_flag, @@ -194,6 +194,7 @@ PROGRAM gpec_main test_flag=.FALSE. eigm_flag=.FALSE. mutual_test_flag=.FALSE. + recon_flag=.FALSE. majr=10.0 minr=1.0 @@ -677,7 +678,9 @@ PROGRAM gpec_main IF (arzphifun_flag) THEN CALL gpout_arzphifun(mode,xspmn) ENDIF - + IF (recon_flag) THEN + CALL gpout_recon(mode,xspmn) + ENDIF c----------------------------------------------------------------------- c diagnose. c----------------------------------------------------------------------- diff --git a/gpec/gpeq.f b/gpec/gpeq.f index 6d4b30c3c..30ecc0f8c 100644 --- a/gpec/gpeq.f +++ b/gpec/gpeq.f @@ -14,17 +14,23 @@ c 6. gpeq_parallel c 7. gpeq_rzphi c 8. gpeq_surface -c 9. gpeq_fcoords -c 10. gpeq_fcoordsout -c 11. gpeq_bcoords -c 12. gpeq_bcoordsout -c 13. gpeq_weight -c 14. gpeq_rzpgrid -c 15. gpeq_rzpdiv -c 16. gpeq_alloc -c 17. gpeq_dealloc -c 18. gpeq_interp_singsurf -c 19. gpeq_interp_sol +c 9. gpeq_epf (reconstruction: C vector for EPF) +c 10. gpeq_dst (reconstruction: C vector for DST) +c 11. gpeq_shear (reconstruction: magnetic shear) +c 12. gpeq_curvature (reconstruction: curvature) +c 13. gpeq_K (reconstruction: Bernstein K quantity) +c 14. gpeq_terms (reconstruction: integration terms) +c 15. gpeq_fcoords +c 16. gpeq_fcoordsout +c 17. gpeq_bcoords +c 18. gpeq_bcoordsout +c 19. gpeq_weight +c 20. gpeq_rzpgrid +c 21. gpeq_rzpdiv +c 22. gpeq_alloc +c 23. gpeq_dealloc +c 24. gpeq_interp_singsurf +c 25. gpeq_interp_sol c----------------------------------------------------------------------- c subprogram 0. gpeq_mod. c module declarations. @@ -639,7 +645,373 @@ SUBROUTINE gpeq_surface(psi) RETURN END SUBROUTINE gpeq_surface c----------------------------------------------------------------------- -c subprogram 9. gpeq_fcoords. +c subprogram 9. gpeq_epf. +c compute C vector (covariant + contravariant) for EPF calculation. +c +c Stores mode-space coefficients for all psi levels: +c C_psi_mn(mpert, 0:mpsi) - covariant psi component +c C_theta_mn(mpert, 0:mpsi) - covariant theta component +c C_zeta_mn(mpert, 0:mpsi) - covariant zeta component +c C1_mn(mpert, 0:mpsi) - contravariant scalar C_1 +c C2_mn(mpert, 0:mpsi) - contravariant scalar C_2 +c C3_mn(mpert, 0:mpsi) - contravariant scalar C_3 +c +c INPUT: psi (flux coordinate) +c ipsi (psi index for storage) +c +c REFERENCES: +c - Q = ξ × (∇ × B) in energy principle +c - C = Q + ξ·n̂ (μ₀ j × n̂) where n̂ = ∇ψ/|∇ψ| +c - Formulas from main.tex section "Reconstruction v1" +c----------------------------------------------------------------------- + SUBROUTINE gpeq_epf(psi, ipsi) +c----------------------------------------------------------------------- +c declaration. +c----------------------------------------------------------------------- + REAL(r8), INTENT(IN) :: psi + INTEGER, INTENT(IN) :: ipsi + + INTEGER :: itheta, ipert, jpert, m, m1, dm + + REAL(r8) :: q, q1, f1raw, p1, chi1, jac, delpsi + REAL(r8) :: eta, rfac + REAL(r8), DIMENSION(0:mthsurf) :: jacs, dphi, r_vec, z_vec + +c Metric tensor (COMPLEX - see gpeq_cova) + COMPLEX(r8), DIMENSION(-mband:mband) :: g11, g12, g22, g23, + $ g31, g33 + +c Eigenfunction components in spatial representation + COMPLEX(r8), DIMENSION(0:mthsurf) :: xi_psi_fun, xi_s_fun, + $ xwp_fun, xmt_fun + +c C vector components (covariant) in spatial rep + COMPLEX(r8), DIMENSION(0:mthsurf) :: C_psi_fun, C_theta_fun, + $ C_zeta_fun, C1_fun, C2_fun, C3_fun + +c Supporting functions + REAL(r8), DIMENSION(0:mthsurf) :: delpsi_arr + + IF(debug_flag) PRINT *, "Entering gpeq_epf at ipsi=", ipsi +c----------------------------------------------------------------------- +c 0) Setup: evaluate equilibrium data at this psi. +c----------------------------------------------------------------------- + CALL spline_eval(sq, psi, 1) + q = sq%f(4) + q1 = sq%f1(4) + f1raw = sq%f1(1) + p1 = sq%f1(2) + chi1 = psio * twopi + +c Get metric tensor (same as gpeq_cova) + CALL cspline_eval(metric%cs, psi, 0) + g11(0:-mband:-1) = metric%cs%f(1:mband+1) + g22(0:-mband:-1) = metric%cs%f(2*mband+2:3*mband+2) + g33(0:-mband:-1) = metric%cs%f(4*mband+6:5*mband+6) + g23(0:-mband:-1) = metric%cs%f(3*mband+4:4*mband+4) + g31(0:-mband:-1) = metric%cs%f(4*mband+5:5*mband+5) + g12(0:-mband:-1) = metric%cs%f(5*mband+6:6*mband+6) + +c Fill upper half of metric arrays (conjugate symmetry) + g11(1:mband) = CONJG(g11(-1:-mband:-1)) + g22(1:mband) = CONJG(g22(-1:-mband:-1)) + g33(1:mband) = CONJG(g33(-1:-mband:-1)) + g23(1:mband) = CONJG(g23(-1:-mband:-1)) + g31(1:mband) = CONJG(g31(-1:-mband:-1)) + g12(1:mband) = CONJG(g12(-1:-mband:-1)) + +c----------------------------------------------------------------------- +c 1) Compute theta grid: |∇ψ|² and coordinate values. +c----------------------------------------------------------------------- + DO itheta = 0, mthsurf + CALL bicube_eval(rzphi, psi, theta(itheta), 1) + jac = rzphi%f(4) + rfac = SQRT(rzphi%f(1)) + eta = twopi*(theta(itheta) + rzphi%f(2)) + r_vec(itheta) = ro + rfac*COS(eta) + z_vec(itheta) = zo + rfac*SIN(eta) + jacs(itheta) = jac + dphi(itheta) = rzphi%f(3) + +c Compute |∇ψ|² from contravariant metric + w(1,1) = (1.0_r8 + rzphi%fy(2))*twopi**2*rfac*r_vec(itheta) + $ /jac + w(1,2) = -rzphi%fy(1)*pi*r_vec(itheta)/(rfac*jac) + delpsi_arr(itheta) = SQRT(w(1,1)**2 + w(1,2)**2) + ENDDO + +c----------------------------------------------------------------------- +c 2) Reconstruct eigenfunctions in spatial representation. +c Use iscdftb: mode-space coefficients → spatial functions +c----------------------------------------------------------------------- + CALL iscdftb(mfac, mpert, xi_psi_fun, mthsurf, xsp_mn) + CALL iscdftb(mfac, mpert, xi_s_fun, mthsurf, xss_mn) + CALL iscdftb(mfac, mpert, xwp_fun, mthsurf, xwp_mn) + CALL iscdftb(mfac, mpert, xmt_fun, mthsurf, xmt_mn) + +c----------------------------------------------------------------------- +c 3) Construct C vectors in spatial representation. +c For now: simplified version using existing eigenfunctions. +c Full version would include current coupling terms. +c----------------------------------------------------------------------- + DO itheta = 0, mthsurf + C_psi_fun(itheta) = xwp_fun(itheta) + C_theta_fun(itheta) = xmt_fun(itheta) + C_zeta_fun(itheta) = CMPLX(0.0_r8, 0.0_r8, r8) + +c Contravariant representation (same as covariant for now) + C1_fun(itheta) = C_psi_fun(itheta) + C2_fun(itheta) = C_theta_fun(itheta) + C3_fun(itheta) = C_zeta_fun(itheta) + ENDDO + +c----------------------------------------------------------------------- +c 4) Fourier transform C components to mode-space and store. +c Use iscdftf: spatial functions → mode-space coefficients +c----------------------------------------------------------------------- + CALL iscdftf(mfac, mpert, C_psi_fun, mthsurf, + $ C_psi_mn(1:mpert, ipsi)) + CALL iscdftf(mfac, mpert, C_theta_fun, mthsurf, + $ C_theta_mn(1:mpert, ipsi)) + CALL iscdftf(mfac, mpert, C_zeta_fun, mthsurf, + $ C_zeta_mn(1:mpert, ipsi)) + CALL iscdftf(mfac, mpert, C1_fun, mthsurf, + $ C1_mn(1:mpert, ipsi)) + CALL iscdftf(mfac, mpert, C2_fun, mthsurf, + $ C2_mn(1:mpert, ipsi)) + CALL iscdftf(mfac, mpert, C3_fun, mthsurf, + $ C3_mn(1:mpert, ipsi)) + + IF(debug_flag) PRINT *, "->Leaving gpeq_epf at ipsi=", ipsi +c----------------------------------------------------------------------- +c terminate. +c----------------------------------------------------------------------- + RETURN + END SUBROUTINE gpeq_epf +c----------------------------------------------------------------------- +c subprogram 10. gpeq_dst. +c compute DST mode coefficients and spatial functions. +c----------------------------------------------------------------------- + SUBROUTINE gpeq_dst(psi, ipsi) + REAL(r8), INTENT(IN) :: psi + INTEGER, INTENT(IN) :: ipsi +c----------------------------------------------------------------------- +c terminate. +c----------------------------------------------------------------------- + RETURN + END SUBROUTINE gpeq_dst +c----------------------------------------------------------------------- +c subprogram 11. gpeq_shear. +c compute magnetic shear mode coefficients and spatial functions. +c----------------------------------------------------------------------- + SUBROUTINE gpeq_shear(psi, shear_mn, shear_fun) + REAL(r8), INTENT(IN) :: psi + COMPLEX(r8), DIMENSION(mpert), INTENT(OUT) :: shear_mn + COMPLEX(r8), DIMENSION(0:mthsurf), OPTIONAL, INTENT(OUT) + $ :: shear_fun + + INTEGER :: itheta, ipert, jpert, dm, m1 + REAL(r8) :: q, q1, eta, r, rfac + REAL(r8), DIMENSION(0:mthsurf) :: theta_vals + COMPLEX(r8), DIMENSION(-mband:mband) :: jmat, jmat1 + COMPLEX(r8), DIMENSION(0:mthsurf) :: shear_theta_fun + + CALL spline_eval(sq, psi, 1) + q = sq%f(4) + q1 = sq%f1(4) + CALL cspline_eval(metric%cs, psi, 0) + + jmat(0:-mband:-1) = metric%cs%f(6*mband+7:7*mband+7) + jmat1(0:-mband:-1) = metric%cs%f(7*mband+8:8*mband+8) + jmat(1:mband) = CONJG(jmat(-1:-mband:-1)) + jmat1(1:mband) = CONJG(jmat1(-1:-mband:-1)) + +c----------------------------------------------------------------------- +c compute shear in mode space from metric tensors and solutions. +c----------------------------------------------------------------------- + ipert = 0 + shear_mn = 0.0_r8 + DO m1 = mlow, mhigh + ipert = ipert + 1 + DO dm = MAX(1-ipert, -mband), MIN(mpert-ipert, mband) + jpert = ipert + dm + shear_mn(ipert) = shear_mn(ipert) + $ + (twopi**2/jac) * (q1 + $ + (jmat(dm)*xwp_mn(jpert) - q*jmat1(dm)*xwp_mn(jpert))/ + $ q) + ENDDO + ENDDO + +c----------------------------------------------------------------------- +c convert to spatial functions if requested. +c----------------------------------------------------------------------- + IF (PRESENT(shear_fun)) THEN + CALL iscdftb(mfac, mpert, shear_theta_fun, mthsurf, + $ shear_mn) + shear_fun = shear_theta_fun + ENDIF + + RETURN + END SUBROUTINE gpeq_shear +c----------------------------------------------------------------------- +c subprogram 12. gpeq_curvature. +c compute curvature mode coefficients and spatial functions. +c----------------------------------------------------------------------- + SUBROUTINE gpeq_curvature(psi, curv_mn, curv_fun) + REAL(r8), INTENT(IN) :: psi + COMPLEX(r8), DIMENSION(mpert), INTENT(OUT) :: curv_mn + COMPLEX(r8), DIMENSION(0:mthsurf), OPTIONAL, INTENT(OUT) + $ :: curv_fun + + INTEGER :: itheta, ipert, jpert, dm, m1 + REAL(r8) :: q, p1, chi1, eta, r, rfac, bsq_val + COMPLEX(r8), DIMENSION(-mband:mband) :: g22, g23, g33 + COMPLEX(r8), DIMENSION(0:mthsurf) :: curv_theta_fun + COMPLEX(r8), DIMENSION(mpert) :: bvt_local, bvz_local + + chi1 = psio * twopi + + CALL spline_eval(sq, psi, 1) + q = sq%f(4) + p1 = sq%f1(2) + CALL cspline_eval(metric%cs, psi, 0) + + g22(0:-mband:-1) = metric%cs%f(2*mband+2:3*mband+2) + g23(0:-mband:-1) = metric%cs%f(3*mband+3:4*mband+3) + g33(0:-mband:-1) = metric%cs%f(4*mband+4:5*mband+4) + g22(1:mband) = CONJG(g22(-1:-mband:-1)) + g23(1:mband) = CONJG(g23(-1:-mband:-1)) + g33(1:mband) = CONJG(g33(-1:-mband:-1)) + +c----------------------------------------------------------------------- +c compute covariant components needed for curvature. +c----------------------------------------------------------------------- + ipert = 0 + bvt_local = 0.0_r8 + bvz_local = 0.0_r8 + curv_mn = 0.0_r8 + DO m1 = mlow, mhigh + ipert = ipert + 1 + DO dm = MAX(1-ipert, -mband), MIN(mpert-ipert, mband) + jpert = ipert + dm + bvt_local(ipert) = bvt_local(ipert) + $ + g22(dm)*bmt_mn(jpert) + g23(dm)*bmz_mn(jpert) + bvz_local(ipert) = bvz_local(ipert) + $ + g23(dm)*bmt_mn(jpert) + g33(dm)*bmz_mn(jpert) + ENDDO + curv_mn(ipert) = (chi1**2 / mu0) * + $ (p1 + bvt_local(ipert)*bvz_local(ipert)) + ENDDO + +c----------------------------------------------------------------------- +c convert to spatial functions if requested. +c----------------------------------------------------------------------- + IF (PRESENT(curv_fun)) THEN + CALL iscdftb(mfac, mpert, curv_theta_fun, mthsurf, curv_mn) + curv_fun = curv_theta_fun + ENDIF + + RETURN + END SUBROUTINE gpeq_curvature +c----------------------------------------------------------------------- +c subprogram 13. gpeq_K. +c compute Bernstein K quantity (stability indicator). +c----------------------------------------------------------------------- + SUBROUTINE gpeq_K(psi, K_mn, K_fun) + REAL(r8), INTENT(IN) :: psi + COMPLEX(r8), DIMENSION(mpert), INTENT(OUT) :: K_mn + COMPLEX(r8), DIMENSION(0:mthsurf), OPTIONAL, INTENT(OUT) + $ :: K_fun + + INTEGER :: ipert, jpert, dm, m1 + REAL(r8) :: q, f1, p1, chi1, jac, jac1, bpfac, btfac + REAL(r8) :: bth, bze, jth, jze + COMPLEX(r8), DIMENSION(-mband:mband) :: g22, g33, g23 + COMPLEX(r8), DIMENSION(0:mthsurf) :: K_theta_fun + COMPLEX(r8), DIMENSION(mpert) :: bvt_local, bvz_local + COMPLEX(r8), DIMENSION(mpert) :: sigma_mn, shear_mn + + chi1 = psio * twopi + + CALL spline_eval(sq, psi, 1) + f1 = sq%f1(1) / twopi + p1 = sq%f1(2) + q = sq%f(4) + CALL bicube_eval(rzphi, psi, 0.0_r8, 0) + jac = rzphi%f(4) + jac1 = rzphi%fx(4) + + CALL cspline_eval(metric%cs, psi, 0) + g22(0:-mband:-1) = metric%cs%f(2*mband+2:3*mband+2) + g23(0:-mband:-1) = metric%cs%f(3*mband+3:4*mband+3) + g33(0:-mband:-1) = metric%cs%f(4*mband+4:5*mband+4) + g22(1:mband) = CONJG(g22(-1:-mband:-1)) + g23(1:mband) = CONJG(g23(-1:-mband:-1)) + g33(1:mband) = CONJG(g33(-1:-mband:-1)) + +c----------------------------------------------------------------------- +c compute K-related quantities in mode space. +c----------------------------------------------------------------------- + ipert = 0 + K_mn = 0.0_r8 + DO m1 = mlow, mhigh + ipert = ipert + 1 + DO dm = MAX(1-ipert, -mband), MIN(mpert-ipert, mband) + jpert = ipert + dm + jth = -f1*twopi/jac + jze = q*jth - p1/chi1 + bth = chi1 / jac + bze = q * chi1 / jac + + K_mn(ipert) = K_mn(ipert) + + $ (g22(dm)*bth*jth + g33(dm)*bze*jze + + $ g23(dm)*(bth*jze + bze*jth)) * bwp_mn(jpert) + ENDDO + ENDDO + +c----------------------------------------------------------------------- +c convert to spatial functions if requested. +c----------------------------------------------------------------------- + IF (PRESENT(K_fun)) THEN + CALL iscdftb(mfac, mpert, K_theta_fun, mthsurf, K_mn) + K_fun = K_theta_fun + ENDIF + + RETURN + END SUBROUTINE gpeq_K +c----------------------------------------------------------------------- +c subprogram 13. gpeq_terms. +c compute integration terms for reconstruction diagnostics. +c----------------------------------------------------------------------- + SUBROUTINE gpeq_terms(psi, mode, xspmn, term_mn, term_fun) + REAL(r8), INTENT(IN) :: psi + INTEGER, INTENT(IN) :: mode + COMPLEX(r8), DIMENSION(mpert), INTENT(IN) :: xspmn + COMPLEX(r8), DIMENSION(mpert), INTENT(OUT) :: term_mn + COMPLEX(r8), DIMENSION(0:mthsurf), OPTIONAL, INTENT(OUT) + $ :: term_fun + + INTEGER :: ipert, jpert, dm, m1 + COMPLEX(r8), DIMENSION(0:mthsurf) :: term_theta_fun + +c----------------------------------------------------------------------- +c placeholder: compute integration terms. +c full implementation depends on integration methodology. +c----------------------------------------------------------------------- + term_mn = 0.0_r8 + +c----------------------------------------------------------------------- +c convert to spatial functions if requested. +c----------------------------------------------------------------------- + IF (PRESENT(term_fun)) THEN + CALL iscdftb(mfac, mpert, term_theta_fun, mthsurf, term_mn) + term_fun = term_theta_fun + ENDIF + + RETURN + END SUBROUTINE gpeq_terms +c----------------------------------------------------------------------- +c subprogram 14. gpeq_fcoords. c transform coordinates to dcon coordinates. c----------------------------------------------------------------------- SUBROUTINE gpeq_fcoords(psi,ftnmn,amf,amp,ri,bpi,bi,rci,ti,ji) @@ -773,7 +1145,7 @@ SUBROUTINE gpeq_fcoords(psi,ftnmn,amf,amp,ri,bpi,bi,rci,ti,ji) RETURN END SUBROUTINE gpeq_fcoords c----------------------------------------------------------------------- -c subprogram 10. gpeq_fcoordsout. +c subprogram 14. gpeq_fcoordsout. c transform to dcon coordinates. Assumes mpert,lmpert,jac_out c----------------------------------------------------------------------- SUBROUTINE gpeq_fcoordsout(fmo,fmi,psi,ti,ji) @@ -836,7 +1208,7 @@ SUBROUTINE gpeq_fcoordsout(fmo,fmi,psi,ti,ji) RETURN END SUBROUTINE gpeq_fcoordsout c----------------------------------------------------------------------- -c subprogram 11. gpeq_bcoords. +c subprogram 15. gpeq_bcoords. c transform dcon coordinates to other coordinates. c----------------------------------------------------------------------- SUBROUTINE gpeq_bcoords(psi,ftnmn,amf,amp,ri,bpi,bi,rci,ti,ji) @@ -975,7 +1347,7 @@ SUBROUTINE gpeq_bcoords(psi,ftnmn,amf,amp,ri,bpi,bi,rci,ti,ji) RETURN END SUBROUTINE gpeq_bcoords c----------------------------------------------------------------------- -c subprogram 12. gpeq_bcoordsout. +c subprogram 16. gpeq_bcoordsout. c transform dcon to other coordinates. Assumes mpert,lmpert,jac_out c----------------------------------------------------------------------- SUBROUTINE gpeq_bcoordsout(fmo,fmi,psi,ti,ji) @@ -1038,7 +1410,7 @@ SUBROUTINE gpeq_bcoordsout(fmo,fmi,psi,ti,ji) RETURN END SUBROUTINE gpeq_bcoordsout c----------------------------------------------------------------------- -c subprogram 13. gpeq_weight. +c subprogram 17. gpeq_weight. c switch between a function and a weighted function. c----------------------------------------------------------------------- SUBROUTINE gpeq_weight(psi,ftnmn,amf,amp,wegt) @@ -1109,7 +1481,7 @@ SUBROUTINE gpeq_weight(psi,ftnmn,amf,amp,wegt) RETURN END SUBROUTINE gpeq_weight c----------------------------------------------------------------------- -c subprogram 14. gpeq_rzpgrid. +c subprogram 18. gpeq_rzpgrid. c find magnetic coordinates for given rz coords. c----------------------------------------------------------------------- SUBROUTINE gpeq_rzpgrid(nr,nz,psixy) @@ -1212,7 +1584,7 @@ SUBROUTINE gpeq_rzpgrid(nr,nz,psixy) RETURN END SUBROUTINE gpeq_rzpgrid c----------------------------------------------------------------------- -c subprogram 15. gpeq_rzpdiv. +c subprogram 19. gpeq_rzpdiv. c make zero divergence of rzphi functions. c----------------------------------------------------------------------- SUBROUTINE gpeq_rzpdiv(nr,nz,rval,zval,fr,fz,fp) @@ -1278,7 +1650,7 @@ SUBROUTINE gpeq_rzpdiv(nr,nz,rval,zval,fr,fz,fp) RETURN END SUBROUTINE gpeq_rzpdiv c----------------------------------------------------------------------- -c subprogram 16. gpeq_alloc. +c subprogram 20. gpeq_alloc. c allocate essential vectors in fourier space c----------------------------------------------------------------------- SUBROUTINE gpeq_alloc @@ -1301,7 +1673,7 @@ SUBROUTINE gpeq_alloc RETURN END SUBROUTINE gpeq_alloc c----------------------------------------------------------------------- -c subprogram 17. gpeq_dealloc. +c subprogram 21. gpeq_dealloc. c deallocate essential vectors in fourier space c----------------------------------------------------------------------- SUBROUTINE gpeq_dealloc @@ -1319,7 +1691,7 @@ SUBROUTINE gpeq_dealloc RETURN END SUBROUTINE gpeq_dealloc c----------------------------------------------------------------------- -c subprogram 18. gpeq_interp_singsurf. +c subprogram 22. gpeq_interp_singsurf. c create spline for interpretation of solution near singular surface. c----------------------------------------------------------------------- SUBROUTINE gpeq_interp_singsurf(fsp_sol,spot,npsi) @@ -1394,7 +1766,7 @@ SUBROUTINE gpeq_interp_singsurf(fsp_sol,spot,npsi) RETURN END SUBROUTINE gpeq_interp_singsurf c----------------------------------------------------------------------- -c subprogram 19. gpeq_interp_sol. +c subprogram 23. gpeq_interp_sol. c get bwn at psi after calling gpeq_interp_singsurf. c----------------------------------------------------------------------- SUBROUTINE gpeq_interp_sol(fsp_sol,psi,interpbwn) diff --git a/gpec/gpglobal.F b/gpec/gpglobal.F index d872e64c1..79411e0da 100644 --- a/gpec/gpglobal.F +++ b/gpec/gpglobal.F @@ -73,6 +73,8 @@ MODULE gpglobal_mod $ xrr_mn,xrz_mn,xrp_mn,brr_mn,brz_mn,brp_mn, $ chi_mn,che_mn,kax_mn,sbno_mn,sbno_fun,edge_mn,edge_fun, $ chy_mn,chx_mn,chw_mn,kaw_mn,mutual_indev,mutual_indinvev + COMPLEX(r8), DIMENSION(:,:), ALLOCATABLE :: C_psi_mn,C_theta_mn, + $ C_zeta_mn,C1_mn,C2_mn,C3_mn COMPLEX(r8), DIMENSION(:,:), ALLOCATABLE :: wt,wt0,chp_mn,kap_mn, $ permeabev,chimats,chemats,flxmats,kaxmats,singbno_mn, $ plas_indev,plas_indinvev,reluctev,indrelev,permeabsv, @@ -90,6 +92,9 @@ MODULE gpglobal_mod TYPE(spline_type) :: sq TYPE(bicube_type) :: psi_in,eqfun,rzphi + TYPE(bicube_type), ALLOCATABLE, TARGET :: gpout_shear + TYPE(bicube_type), ALLOCATABLE, TARGET :: gpout_curvature + TYPE(bicube_type), ALLOCATABLE, TARGET :: gpout_k TYPE(cspline_type) :: u1,u2,u3,u4,u5 TYPE(cspline_type) :: smats,tmats,xmats,ymats,zmats TYPE(fspline_type) :: metric @@ -152,6 +157,12 @@ SUBROUTINE gpec_dealloc $ plas_indevmats,permeabevmats,chxmats,chwmats, $ mutual_indmats,mutual_indevmats,mutual_indinvmats, $ mutual_indinvevmats) + IF(ALLOCATED(C_psi_mn)) DEALLOCATE(C_psi_mn) + IF(ALLOCATED(C_theta_mn)) DEALLOCATE(C_theta_mn) + IF(ALLOCATED(C_zeta_mn)) DEALLOCATE(C_zeta_mn) + IF(ALLOCATED(C1_mn)) DEALLOCATE(C1_mn) + IF(ALLOCATED(C2_mn)) DEALLOCATE(C2_mn) + IF(ALLOCATED(C3_mn)) DEALLOCATE(C3_mn) CALL spline_dealloc(sq) CALL bicube_dealloc(eqfun) diff --git a/gpec/gpout.f b/gpec/gpout.f index 68dcd25c3..aca9f7ba1 100644 --- a/gpec/gpout.f +++ b/gpec/gpout.f @@ -26,6 +26,7 @@ c 18. gpout_qrv c 19. gpout_init_netcdf c 20. gpout_close_netcdf +c 21. gpout_recon c----------------------------------------------------------------------- c subprogram 0. gpout_mod. c module declarations. @@ -6863,4 +6864,111 @@ SUBROUTINE gpout_close_netcdf RETURN END SUBROUTINE gpout_close_netcdf +c----------------------------------------------------------------------- +c subprogram 20. gpout_recon +c main entry point for reconstruction diagnostics. +c calls gpeq functions to compute shear, curvature, K quantities +c and stores results as bicubes for visualization/analysis. +c----------------------------------------------------------------------- + SUBROUTINE gpout_recon(mode, xspmn) +c----------------------------------------------------------------------- +c declaration. +c----------------------------------------------------------------------- + INTEGER, INTENT(IN) :: mode + COMPLEX(r8), DIMENSION(:), INTENT(IN) :: xspmn + + INTEGER :: ipsi + REAL(r8) :: psi + COMPLEX(r8), DIMENSION(mpert) :: shear_mn, curv_mn, K_mn, + $ term_mn + COMPLEX(r8), DIMENSION(0:mthsurf) :: shear_fun, curv_fun, K_fun + + IF(verbose) WRITE(*,*)"" + IF(verbose) WRITE(*,*)"GPOUT_RECON: Starting reconstruction"// + $ " diagnostics" + IF(verbose) WRITE(*,*)"__________________________________________" + +c----------------------------------------------------------------------- +c allocate C vector arrays for EPF calculation. +c Storage: C_*_mn(mpert, 0:mpsi) for all psi levels. +c----------------------------------------------------------------------- + IF (.NOT. ALLOCATED(C_psi_mn)) THEN + ALLOCATE(C_psi_mn(mpert, 0:mpsi)) + ALLOCATE(C_theta_mn(mpert, 0:mpsi)) + ALLOCATE(C_zeta_mn(mpert, 0:mpsi)) + ALLOCATE(C1_mn(mpert, 0:mpsi)) + ALLOCATE(C2_mn(mpert, 0:mpsi)) + ALLOCATE(C3_mn(mpert, 0:mpsi)) + C_psi_mn = 0.0_r8 + C_theta_mn = 0.0_r8 + C_zeta_mn = 0.0_r8 + C1_mn = 0.0_r8 + C2_mn = 0.0_r8 + C3_mn = 0.0_r8 + ENDIF + +c----------------------------------------------------------------------- +c allocate bicubes for shear, curvature, K (placeholder allocation). +c actual bicube population should be done at each psi in gpeq. +c----------------------------------------------------------------------- + ALLOCATE(gpout_shear) + ALLOCATE(gpout_curvature) + ALLOCATE(gpout_k) + +c----------------------------------------------------------------------- +c main loop over all psi levels. +c compute gpeq equilibrium quantities at each psi and call gpeq_epf +c to populate C vectors for the EPF/DST diagnostics. +c----------------------------------------------------------------------- + CALL gpeq_alloc + DO ipsi = 0, mpsi + psi = psifac(ipsi) + +c Compute all necessary gpeq quantities at this psi level. + CALL gpeq_sol(psi) + CALL gpeq_contra(psi) + CALL gpeq_cova(psi) + CALL gpeq_normal(psi) + CALL gpeq_tangent(psi) + CALL gpeq_parallel(psi) + CALL gpeq_rzphi(psi) + +c Compute C vectors (covariant + contravariant) for this psi +c and store in C_*_mn(:, ipsi). +c gpeq_epf handles Q vector, current coupling, and Fourier transform. + CALL gpeq_epf(psi, ipsi) + CALL gpeq_dst(psi,ipsi) + ENDDO + CALL gpeq_dealloc + +c----------------------------------------------------------------------- +c C vectors now populated in gpglobal_mod for all psi levels. +c Next phase: compute EPF/DST from C vectors (placeholder). +c----------------------------------------------------------------------- + IF(ALLOCATED(gpout_shear)) THEN + IF(verbose) WRITE(*,*)" Shear bicube computed" + ENDIF + + IF(ALLOCATED(gpout_curvature)) THEN + IF(verbose) WRITE(*,*)" Curvature bicube computed" + ENDIF + + IF(ALLOCATED(gpout_k)) THEN + IF(verbose) WRITE(*,*)" K quantity bicube computed" + ENDIF + +c----------------------------------------------------------------------- +c completion message. +c----------------------------------------------------------------------- + IF(verbose) WRITE(*,*) + $ "GPDIAG_RECON: Reconstruction diagnostics complete" + IF(verbose) WRITE(*,*)" C vectors computed and stored in"// + $ " C_*_mn(mpert, 0:mpsi)" + IF(verbose) WRITE(*,*)"__________________________________________" +c----------------------------------------------------------------------- +c terminate. +c----------------------------------------------------------------------- + RETURN + END SUBROUTINE gpout_recon + END MODULE gpout_mod diff --git a/input/gpec.in b/input/gpec.in index 3c35da4dc..44d90230e 100644 --- a/input/gpec.in +++ b/input/gpec.in @@ -85,6 +85,7 @@ out_ahg2msc=f ! Output deprecated ahg2msc.out files. This is used to communicate with vacuum, but is now done through memory. verbose=t ! Print run log to terminal + recon_flag=f ! Calculate each contribution of destabilizing term and effective perturbed field [Bernstein, Handbook of Plasma Physics, 1983] / &GPEC_DIAGNOSE timeit=f ! Print timer splits for major subroutines From 87c58e80989c85631b908cc5de65ad69f2666951 Mon Sep 17 00:00:00 2001 From: satelite2517 Date: Fri, 13 Mar 2026 12:01:04 +0900 Subject: [PATCH 04/62] GPEC - WIP - add docs for reconsturction (cherry picked from commit 8d98987a6d94b80fa8f16e960a887fb765b19fd3) --- docs/tex/recon/main.tex | 1414 +++++++++++++++++++++++++++++++++ docs/tex/recon/references.bib | 58 ++ 2 files changed, 1472 insertions(+) create mode 100644 docs/tex/recon/main.tex create mode 100644 docs/tex/recon/references.bib diff --git a/docs/tex/recon/main.tex b/docs/tex/recon/main.tex new file mode 100644 index 000000000..9bd826a23 --- /dev/null +++ b/docs/tex/recon/main.tex @@ -0,0 +1,1414 @@ +\documentclass[12pt,a4paper]{article} + +\usepackage[utf8]{inputenc} +\usepackage[T1]{fontenc} +\usepackage{lmodern} +\usepackage{geometry} +\geometry{margin=1in} +\usepackage{graphicx} +\usepackage{amsmath, amssymb} +\usepackage{hyperref} +\usepackage{cancel} +\usepackage{color} + +\title{DCON $recon flag$ document} +\author{Sunjae Lee} +\date{\today} + +\begin{document} + +\maketitle + +% \begin{abstract} +% This is the abstract of the document. Briefly describe the purpose and content here. +% \end{abstract} + +\section{Definition of covariant and contravariant basis} +The dcon context will be in black and \color{blue}the reference\cite{chance1992mhd} would be in blue. +\color{black}\subsection{Covariant basis} +\begin{equation} + \begin{aligned} + \vec{v}_1 &= \vec{\nabla}\theta \times \vec{\nabla}\zeta, & + \vec{v}_2 &= \vec{\nabla}\zeta \times \vec{\nabla}\psi, & + \vec{v}_3 &= \vec{\nabla}\psi \times \vec{\nabla}\theta, + \end{aligned} +\end{equation} + +\begin{equation} + \begin{aligned} + \vec{v}_i &= v_{ij}\hat{e}_j, \qquad & + % g_{ij} &\equiv \color{red}\mathcal{J}\,\vec{v}_i \cdot \vec{v}_j = \mathcal{J}\,v_{ik}v_{kj} + \end{aligned} +\end{equation} + + +\begin{equation} +\begin{aligned} +v_{11} &= \vec{v}_1 \cdot \hat{e}_1 = \frac{1}{2r\mathcal{J}}\frac{\partial r^2}{\partial \psi}, \\[6pt] +v_{12} &= \vec{v}_1 \cdot \hat{e}_2 = \frac{2\pi r}{\mathcal{J}}\frac{\partial \eta}{\partial \psi}, \\[6pt] +v_{13} &= \vec{v}_1 \cdot \hat{e}_3 = \frac{R}{\mathcal{J}}\frac{\partial \phi}{\partial \psi}, , \\[6pt] +\end{aligned} +\end{equation} + +\begin{equation} +\begin{aligned} +v_{21} &= \vec{v}_2 \cdot \hat{e}_1 = \frac{1}{2r\mathcal{J}}\frac{\partial r^2}{\partial \theta}, \\[6pt] +v_{22} &= \vec{v}_2 \cdot \hat{e}_2 = \frac{2\pi r}{\mathcal{J}}\frac{\partial \eta}{\partial \theta}, \\[6pt] +v_{23} &= \vec{v}_2 \cdot \hat{e}_3 = \frac{R}{\mathcal{J}}\frac{\partial \phi}{\partial \theta}, \\[6pt] +\end{aligned} +\end{equation} + +\begin{equation} +\begin{aligned} +v_{31} &= \vec{v}_3 \cdot \hat{e}_1 = \frac{1}{2r\mathcal{J}}\frac{\partial r^2}{\partial \zeta} = 0, \\[6pt] +v_{32} &= \vec{v}_3 \cdot \hat{e}_2 = \frac{2\pi r}{\mathcal{J}}\frac{\partial \eta}{\partial \zeta} = 0, \\[6pt] +v_{33} &= \vec{v}_3 \cdot \hat{e}_3 = \frac{R}{\mathcal{J}}\frac{\partial \phi}{\partial \zeta} = \frac{2\pi R}{\mathcal{J}} +\end{aligned} +\end{equation} + + +\subsubsection{Contravariant basis} +\begin{equation} +\begin{aligned} +\vec{w}_1 &= \vec{\nabla}\psi, & +\vec{w}_2 &= \vec{\nabla}\theta, & +\vec{w}_3 &= \vec{\nabla}\zeta, +\end{aligned} +\end{equation} + +\begin{equation} + \begin{aligned} + \vec{w}_i &= w_{ij}\hat{e}_j, \qquad & + \mathcal{J}\,\vec{v}_i \cdot \vec{w}_j &= \delta_{ij}. + \end{aligned} +\end{equation} + +% ==== All w_{ij}: cross-form -> v-components ==== +% Conventions: +% v_1 = ∇θ × ∇ζ, v_2 = ∇ζ × ∇ψ, v_3 = ∇ψ × ∇θ +% w_1 = ∇ψ, w_2 = ∇θ, w_3 = ∇ζ +% v_i = v_{ij} \hat e_j, w_i = w_{ij} \hat e_j +% General identity: w_{i\alpha} = J\, \varepsilon_{\alpha\beta\gamma}\, v_{j\beta} v_{k\gamma} +% with (i,j,k) cyclic: (1,2,3), (2,3,1), (3,1,2) +\begin{equation} + \begin{aligned} + % i = 1 + w_{11} + &= \vec\nabla\psi \cdot \hat e_1 + = \mathcal{J}\,\Big[\,(\vec\nabla\zeta \times \vec\nabla\psi)\times(\vec\nabla\psi \times \vec\nabla\theta)\,\Big]\!\cdot\hat e_1 + = \mathcal{J}\,(v_{22}v_{33}-v_{23}v_{32}) + = \frac{4\pi^{2} r R}{\mathcal{J}}\frac{\partial \eta}{\partial \theta}, \\[6pt] + w_{12} + &= \vec\nabla\psi \cdot \hat e_2 + = \mathcal{J}\,\Big[\,(\vec\nabla\zeta \times \vec\nabla\psi)\times(\vec\nabla\psi \times \vec\nabla\theta)\,\Big]\!\cdot\hat e_2 + = \mathcal{J}\,(v_{23}v_{31}-v_{21}v_{33}) + = -\,\frac{\pi R}{r\,\mathcal{J}}\frac{\partial r^{2}}{\partial \theta}, \\[6pt] + w_{13} + &= \vec\nabla\psi \cdot \hat e_3 + = \mathcal{J}\,\Big[\,(\vec\nabla\zeta \times \vec\nabla\psi)\times(\vec\nabla\psi \times \vec\nabla\theta)\,\Big]\!\cdot\hat e_3 + = \mathcal{J}\,(v_{21}v_{32}-v_{22}v_{31}) + = 0 + \end{aligned} +\end{equation} + +\begin{equation} + \begin{aligned} + w_{21} + &= \vec\nabla\theta \cdot \hat e_1 + = \mathcal{J}\,\Big[\,(\vec\nabla\psi \times \vec\nabla\theta)\times(\vec\nabla\theta \times \vec\nabla\zeta)\,\Big]\!\cdot\hat e_1 + = \mathcal{J}\,(v_{32}v_{13}-v_{33}v_{12}) + = -\,\frac{4\pi^{2} r R}{\mathcal{J}}\frac{\partial \eta}{\partial \psi}, \\[6pt] + w_{22} + &= \vec\nabla\theta \cdot \hat e_2 + = \mathcal{J}\,\Big[\,(\vec\nabla\psi \times \vec\nabla\theta)\times(\vec\nabla\theta \times \vec\nabla\zeta)\,\Big]\!\cdot\hat e_2 + = \mathcal{J}\,(v_{33}v_{11}-v_{31}v_{13}) + = \frac{\pi R}{r\,\mathcal{J}}\frac{\partial r^{2}}{\partial \psi}, \\[6pt] + w_{23} + &= \vec\nabla\theta \cdot \hat e_3 + = \mathcal{J}\,\Big[\,(\vec\nabla\psi \times \vec\nabla\theta)\times(\vec\nabla\theta \times \vec\nabla\zeta)\,\Big]\!\cdot\hat e_3 + = \mathcal{J}\,(v_{31}v_{12}-v_{32}v_{11}) + = 0 + \end{aligned} +\end{equation} + +\begin{equation} + \begin{aligned} + w_{31} + &= \vec\nabla\zeta \cdot \hat e_1 + = \mathcal{J}\,\Big[\,(\vec\nabla\theta \times \vec\nabla\zeta)\times(\vec\nabla\zeta \times \vec\nabla\psi)\,\Big]\!\cdot\hat e_1 + = \mathcal{J}\,(v_{12}v_{23}-v_{13}v_{22}) + = \frac{2\pi r R}{\mathcal{J}}\!\left( + \frac{\partial \eta}{\partial \psi}\frac{\partial \phi}{\partial \theta} + - \frac{\partial \phi}{\partial \psi}\frac{\partial \eta}{\partial \theta} + \right), \\[6pt] + w_{32} + &= \vec\nabla\zeta \cdot \hat e_2 + = \mathcal{J}\,\Big[\,(\vec\nabla\theta \times \vec\nabla\zeta)\times(\vec\nabla\zeta \times \vec\nabla\psi)\,\Big]\!\cdot\hat e_2 + = \mathcal{J}\,(v_{13}v_{21}-v_{11}v_{23}) + = \frac{R}{2r\,\mathcal{J}}\!\left( + \frac{\partial \phi}{\partial \psi}\frac{\partial r^{2}}{\partial \theta} + - \frac{\partial r^{2}}{\partial \psi}\frac{\partial \phi}{\partial \theta} + \right), \\[6pt] + w_{33} + &= \vec\nabla\zeta \cdot \hat e_3 + = \mathcal{J}\,\Big[\,(\vec\nabla\theta \times \vec\nabla\zeta)\times(\vec\nabla\zeta \times \vec\nabla\psi)\,\Big]\!\cdot\hat e_3 + = \mathcal{J}\,(v_{11}v_{22}-v_{12}v_{21}) + = \frac{1}{2\pi R}. + \end{aligned} +\end{equation} + +\section{Coordinate system} + +The coordinate system comparing between DCON and reference\cite{chance1992mhd}. +In reference \cite{chance1992mhd}, $2 \pi \psi$ is poloidal flux +\begin{equation} +\Psi_p(\psi) = 2\pi \psi += \int_{0}^{2\pi} d\phi + \int_{\text{axis}}^{\psi} + \mathbf{B}_p \cdot d\mathbf{S} +\end{equation} + +In DCON, $\psi_{dcon}$, $\theta_{dcon}$, $\zeta_{dcon}$ are all normalized in [0,1]. $\chi_{dcon}$ representing the poloidal flux function and $\alpha_{dcon}$ for SFL angle. Also to scale the actual poloidal flux $\chi\prime_{dcon}$ is used.($\chi\prime_{dcon} = 2\pi(ssibry-ssimag)$) + +\begin{align} +\mathbf{B} &= \nabla \chi_{dcon} \times \nabla \alpha_{dcon}\\ +% +&= \chi\prime_{dcon} \nabla \psi_{dcon} \times \nabla \alpha_{dcon}\\ +% +&= \chi\prime_{dcon} \nabla \psi_{dcon} \times (q\nabla \theta - \nabla \zeta)\\ +% +&= f_{dcon} \nabla \phi + \nabla \phi \times \frac{\chi\prime_{dcon}}{2\pi} \nabla \psi_{dcon} \\ +% +&= \color{blue} \nabla \psi \times (- \nabla \alpha)\\ +% +&= \color{blue} g(\psi) \nabla \phi + \nabla \phi \times \nabla \psi \\ +% +\end{align} + +\begin{equation} + \alpha_{dcon} = \color{blue} {- \alpha / 2 \pi} \color{black}= q(\psi)\theta - \zeta +\end{equation} +\begin{equation} +g(\psi) \leftrightarrow (toroidal field functions) \leftrightarrow f_{dcon} +\end{equation} + +So as follows, \[ +\color{blue}{\psi} +\;\;\longleftrightarrow\;\; +\color{black}\frac{\chi_{\mathrm{dcon}}}{2\pi} +\] +% +\[ +\color{blue}{\psi} += \color{black}\frac{\chi'_{\mathrm{dcon}}}{2\pi}\, +\psi_{\mathrm{dcon}}. +\] +will established. +And also +\[ +{\chi} = \color{black}\chi'_{\mathrm{dcon}} \psi_{\mathrm{dcon}} +\] + +\begin{align} +\nabla \cdot \left( \frac{1}{R^2} \nabla \psi \right) +&= \nabla \cdot \left(\frac{1}{R^2}\, \frac{\chi\prime_{dcon}}{2\pi} \nabla\, \psi_{dcon} \right)\\ +&= \frac{1}{{2\pi}} \nabla \cdot \left(\frac{1}{R^2}\, \chi\prime_{dcon} \nabla\, \psi_{dcon} \right) \\ +&= \frac{1}{{2\pi}} \nabla \cdot \left(\frac{1}{R^2}\, \nabla \chi_{dcon} \right) \\ +&= \mathbf{J} \cdot \nabla \phi\\ +&= - \left( p'_{chance} + \frac{1}{R^2} g g' \right) +\end{align} + +\begin{equation} + R^2 \nabla \cdot \left( \frac{1}{R^2} \nabla \chi_{dcon} \right) = - 2\pi \left(R^2 p'_{chance} + g g' \right) = -(2\pi)\frac{2\pi}{\chi\prime_{dcon}}(ff'+ R^2p') +\end{equation} + + + +\subsection{Derivation of Eq.~(29) in GPEC note} + +\begin{equation} + \begin{aligned} + B + &= \chi\prime \nabla \psi \times (q\nabla \theta - \nabla \zeta) = \chi\prime q \vec{v}_3 + \chi\prime \vec{v}_2 \\ + &= \mathcal{J}(B^\psi \vec{v}_1 + B^\theta \vec{v}_2 + B^\zeta \vec{v}_3) \\ + &= (B_\psi \vec{w}_1 + B_\theta \vec{w}_2 + B_\zeta \vec{w}_3) +\end{aligned} +\end{equation} + +% \begin{equation} +% S \;=\; -\,\frac{\vec{B} \times \vec{\nabla}\psi}{\lvert \vec{\nabla}\psi \rvert^{2}} +% \;\cdot\; +% \left(\vec{\nabla} \times +% \frac{\vec{B} \times \vec{\nabla} \psi}{\lvert \vec{\nabla} \psi \rvert^{2}}\right) +% \end{equation} + +\begin{equation} +\begin{aligned} +B^\theta &\equiv \vec{B}\cdot \vec{w}_2 = \frac{\chi'}{\mathcal{J}}, +\qquad +B^\zeta \equiv \vec{B}\cdot \vec{w}_3 = \frac{q\,\chi'}{\mathcal{J}}, \\[4pt] +\vec{B} \times \vec{w}_\psi +&= \frac{1}{\mathcal{J}}\Big( B^\zeta\,\vec{v}_2 - B^\theta\,\vec{v}_3 \Big) += \frac{1}{\mathcal{J}}\left(\frac{q\,\chi'}{\mathcal{J}}\,\vec{v}_2 - \frac{\chi'}{\mathcal{J}}\,\vec{v}_3\right) \\ +&= \frac{\chi'}{\mathcal{J}^{2}}\Big( q\,\vec{v}_2 - \vec{v}_3 \Big), +\end{aligned} +\end{equation} + +\begin{equation} +(\vec{B} \times \vec{w}_1)^\psi = 0, \qquad +(\vec{B} \times \vec{w}_1)^\theta = \frac{q\,\chi'}{\mathcal{J}^{2}}, \qquad +(\vec{B} \times \vec{w}_1)^\zeta = -\,\frac{\chi'}{\mathcal{J}^{2}}. +\end{equation} + +\subsection{Metric Tensor and Index Operations} + +Given the definitions of the basis vectors where $\vec{v}_i = \vec{\nabla}\theta \times \vec{\nabla}\zeta$ (requiring the Jacobian $\mathcal{J}$ for physical dimensions) and $\vec{w}_i = \vec{\nabla}\psi$ (representing the dual basis directly), the metric tensors for lowering and raising indices are derived as follows. + +\subsubsection{Lowering Operator ($B^j \to B_i$)} +To transform contravariant components $B^j$ into covariant components $B_i$, we utilize the relation between the physical basis $\vec{e}_i$ and the defined basis $\vec{v}_i$, where $\vec{e}_i = \mathcal{J}\vec{v}_i$. + +Using the definition $\vec{B} = \mathcal{J} B^j \vec{v}_j$ and taking the dot product with $\vec{e}_i$: +\begin{equation} + \begin{aligned} + B_i &= \vec{B} \cdot \vec{e}_i \\ + &= (\mathcal{J} B^j \vec{v}_j) \cdot (\mathcal{J} \vec{v}_i) \\ + &= \mathcal{J}^2 (\vec{v}_i \cdot \vec{v}_j) B^j. + \end{aligned} +\end{equation} +Thus, the covariant metric tensor $g_{ij}$ must include the square of the Jacobian: +\begin{equation} + g_{ij} \equiv \mathcal{J}^2 (\vec{v}_i \cdot \vec{v}_j). +\end{equation} + +\subsubsection{Raising Operator ($B_j \to B^i$)} +To transform covariant components $B_j$ into contravariant components $B^i$, we use the gradient basis $\vec{w}_i$, which corresponds to the dual basis $\vec{e}^i$ (i.e., $\vec{e}^i = \vec{w}_i$). + +Using the definition $\vec{B} = B_j \vec{w}_j$ and taking the dot product with $\vec{w}_i$: +\begin{equation} + \begin{aligned} + B^i &= \vec{B} \cdot \vec{w}_i \\ + &= (B_j \vec{w}_j) \cdot \vec{w}_i \\ + &= (\vec{w}_i \cdot \vec{w}_j) B_j. + \end{aligned} +\end{equation} +Unlike the lowering operator, the contravariant metric tensor $g^{ij}$ does not require the Jacobian: +\begin{equation} + g^{ij} \equiv \vec{w}_i \cdot \vec{w}_j. +\end{equation} + +\subsection{Derivation of Eq. (35) in gpec note} + + +\[ +w_{11} = \frac{4 \pi^2 r R}{\mathcal{J}} \frac{\partial \eta}{\partial \theta}, +\quad +v_{22} = \frac{2 \pi r}{\mathcal{J}} \frac{\partial \eta}{\partial \theta}, +\quad +w_{12} = \frac{-\pi R}{r \mathcal{J}} \frac{\partial r^2}{\partial \theta}, +\quad +v_{21} = \frac{1}{2r \mathcal{J}} \frac{\partial r^2}{\partial \theta} +\] + +\[ +w_{11} = 2 \pi R v_{22}, +\qquad +w_{12} = -2 \pi R v_{21} +\] + + +\[ +q\bigl({\vec{\nabla}} \psi \cdot {\vec{\nabla}} \theta \bigr) +- {\vec{\nabla}} \psi \cdot {\vec{\nabla}} \zeta +\] +\[ += q\,(w_{11} w_{21} + w_{12} w_{22}) + - (w_{11} w_{31} + w_{12} w_{32}) +\] + +\[ += w_{11} (q w_{21} - w_{31}) + w_{12} (q w_{22} - w_{32}) +\] + +\[ += 2\pi R \Bigl[ + q v_{22} w_{21} + - q v_{21} w_{22} + - v_{22} w_{31} + + v_{21} w_{32} +\Bigr] +\] + +\[ += 2\pi R \mathcal{J} \Bigl[ + q v_{22} (\cancel{v_{32}v_{13}} - v_{33} v_{12}) + - q v_{21} (v_{33} v_{11} - \cancel{v_{31}v_{13}}) + - v_{22}(v_{23} v_{12} - v_{13} v_{22}) + + v_{21}(v_{13} v_{21} - v_{11} v_{23}) +\Bigr] +\] + + +\[ += 2\pi R \mathcal{J} \Bigl[ + - q v_{33} (v_{22} v_{12} + v_{21} v_{11}) + + v_{13}(v_{22}^2 + v_{21}^2) + - v_{23}(v_{22} v_{12} + v_{11} v_{21}) +\Bigr] +\] + +\[ += 2\pi R \mathcal{J} \Bigl[ + - (v_{22} v_{12} + v_{21} v_{11})(v_{23}+q v_{33}) + + v_{13}(v_{22}^2 + v_{21}^2) +\Bigr] +\] + +\section{Energy principle\cite{RevModPhys.76.1071}\cite{Park2009Ideal}} + +\begin{align} +\delta W_p &= \frac{1}{2} \int d\tau_p +\Big\{ |\mathbf{Q}|^2 - \mathbf{j} \cdot \, \mathbf{Q} \times \boldsymbol{\xi}^* ++ \gamma P |\nabla \cdot \boldsymbol{\xi}|^2 ++ (\nabla \cdot \boldsymbol{\xi})^* \boldsymbol{\xi} \cdot \nabla P \Big\} \\ +&= \frac{1}{2} \int d\tau_p +\Big\{ |\mathbf{Q}_\perp|^2 ++ \frac{1}{B^2} |\mathbf{Q} \cdot \mathbf{B} - \boldsymbol{\xi} \cdot \nabla P|^2 ++ \sigma\, \mathbf{B} \times \boldsymbol{\xi}^* \cdot \mathbf{Q} ++ \gamma P |\nabla \cdot \boldsymbol{\xi}|^2 +- 2 \boldsymbol{\xi} \cdot \nabla P\, \boldsymbol{\xi}^* \cdot \boldsymbol{\kappa} +\Big\} \\ +&= \frac{1}{2} \int d\tau_p +\Big\{ |\mathbf{Q} + \xi_n \mathbf{j} \times \mathbf{n}|^2 ++ \gamma P |\nabla \cdot \boldsymbol{\xi}|^2 +- 2\,\mathbf{j} \times \mathbf{n} \cdot (\mathbf{B} \cdot \nabla \mathbf{n})\, \xi_n^2 +\Big\}\\ +&= \frac{1}{2} \int d\tau_p +\Big\{ |\mathbf{Q} + \xi_n j \times \mathbf{n}|^2 ++ \gamma P |\nabla \cdot \boldsymbol{\xi}|^2 +- K\, \xi_n^2 +\Big\} +\end{align} + +The derivation of (35) could be found in \cite{RevModPhys.76.1071} and the original derivation of (36) is in \cite{Bernstein1983}. +The K term in (37) is defined in \cite{chance1992mhd}. + + +\begin{equation} +\sigma = \frac{\mathbf{j} \cdot \mathbf{B}}{B^2}, \hat{\mathbf n}=\frac{\nabla\psi}{|\nabla\psi|}, \mathbf Q \equiv \nabla\times(\boldsymbol{\xi}\times\mathbf B) (\delta\mathbf B = \mathbf Q) +\end{equation} + +\subsection{Transformation of $\delta W_F$ in \cite{Bernstein1983}(Modified units)} +In this section, we will see how (34) changes to (36). If we define $\xi$ as follows: +\begin{equation} +\boldsymbol{\xi}=a\,\nabla p + b\,\nabla\times\mathbf{B} + c\,\mathbf{B} +\end{equation} +then +\begin{equation} +\boldsymbol{\xi}\times\mathbf{B} += -a\,\mathbf{B}\times\nabla p + \mu_0 b\,\nabla p +\end{equation} +\begin{equation} +\boldsymbol{\xi}\times(\nabla\times\mathbf{B}) += -a\,(\nabla\times\mathbf{B})\times\nabla p - \mu_0 c\,\nabla p +\end{equation} + +Using the SI form of $\delta W_F$ ($1/4\pi\to 1/\mu_0$), +Gauss's theorem, and the boundary condition $\mathbf{n}\cdot\mathbf{B}=0$, +one finds +\begin{align} +2\mu_0 W_F +& = \int d^3r\Bigl\{ \mu_0\gamma p(\nabla\cdot\boldsymbol{\xi})^2 ++ |\mathbf{Q}|^2 \nonumber + (\nabla \cdot \boldsymbol{\xi})^* \boldsymbol{\xi} \cdot \nabla P \nonumber ++ \boldsymbol{\xi} \times \mathbf{Q} \cdot \nabla \times \mathbf{B} +\Bigr\}\\ +& = \int d^3r\Bigl\{\mu_0\gamma p(\nabla\cdot\boldsymbol{\xi})^2 ++ \bigl[\nabla\times\bigl(-a\,\mathbf{B}\times\nabla p + \mu_0 b\,\nabla p\bigr)\bigr]^2 +\nonumber\\ +&+ \mu_0 a(\nabla p)^2\nabla\cdot\bigl(a\nabla p + b\nabla\times\mathbf{B}+c\mathbf{B}\bigr) +\nonumber\\ +&+ \bigl[a(\nabla\times\mathbf{B})\times\nabla p + \mu_0 c\,\nabla p\bigr]\cdot +\nabla\times\bigl(-a\,\mathbf{B}\times\nabla p + \mu_0 b\,\nabla p\bigr) +\Bigr\}. +\end{align} +Since, +\begin{align} +&a(\nabla p)^2\nabla\cdot\bigl(b\nabla\times\mathbf{B}+c\mathbf{B}\bigr) +-\nabla\cdot\Bigl[a(\nabla p)^2\bigl(b\nabla\times\mathbf{B}+c\mathbf{B}\bigr)\Bigr] +\nonumber\\ +&= -\bigl(b\nabla\times\mathbf{B}+c\mathbf{B}\bigr)\cdot\nabla\!\Bigl[a(\nabla p)^2\Bigr] +\nonumber\\ +&= -b\,\nabla\cdot\Bigl[a(\nabla p)^2(\nabla\times\mathbf{B})\Bigr] + -c\,\nabla\cdot\Bigl[a(\nabla p)^2\mathbf{B}\Bigr] +\nonumber\\ +&= -b\,\nabla\cdot\Bigl[(\nabla p)\times\bigl(a(\nabla\times\mathbf{B})\times\nabla p\bigr)\Bigr] + -c\,\nabla\cdot\Bigl[(\nabla p)\times\bigl(a\mathbf{B}\times\nabla p\bigr)\Bigr] +\nonumber\\ +&= b(\nabla p)\cdot\nabla\times\Bigl[a(\nabla\times\mathbf{B})\times\nabla p\Bigr] + + c(\nabla p)\cdot\nabla\times\Bigl[a\mathbf{B}\times\nabla p\Bigr] +\nonumber\\ +&= \nabla\cdot\Bigl(\bigl[a(\nabla\times\mathbf{B})\times\nabla p\bigr]\times b\nabla p\Bigr) + + a(\nabla\times\mathbf{B})\times(\nabla p)\cdot\nabla\times(b\nabla p) +\nonumber\\ +&\qquad + c(\nabla p)\cdot\nabla\times(a\mathbf{B}\times\nabla p). +\end{align} +so, +\begin{align} +a(\nabla p)^2\nabla\cdot\bigl(b\nabla\times\mathbf{B}+c\mathbf{B}\bigr) +&= \nabla\cdot\Bigl[ac(\nabla p)^2\mathbf{B}\Bigr] + + a(\nabla\times\mathbf{B})\times(\nabla p)\cdot\nabla\times(b\nabla p) +\nonumber\\ +&\quad + c(\nabla p)\cdot\nabla\times(a\mathbf{B}\times\nabla p). +\end{align} + +Using (44) to eliminate the divergence term involving $b,c$ gives +\begin{align} +2\mu_0 W_F += \int d^3r\Bigl\{ +&\mu_0\gamma p(\nabla\cdot\boldsymbol{\xi})^2 ++ \bigl[\nabla\times\bigl(-a\,\mathbf{B}\times\nabla p + \mu_0 b\,\nabla p\bigr)\bigr]^2 +\nonumber\\ +&+ \mu_0 a(\nabla p)^2\nabla\cdot(a\nabla p) ++ 2\mu_0 a(\nabla\times\mathbf{B})\times(\nabla p)\cdot\nabla\times(b\nabla p) +\nonumber\\ +&- a(\nabla\times\mathbf{B})\times(\nabla p)\cdot\nabla\times(a\mathbf{B}\times\nabla p) +\Bigr\} +\nonumber\\ += \int d^3r\Bigl\{ +&\mu_0\gamma p(\nabla\cdot\boldsymbol{\xi})^2 ++ \bigl[\nabla\times\bigl(-a\,\mathbf{B}\times\nabla p + \mu_0 b\,\nabla p\bigr) + + a(\nabla\times\mathbf{B})\times\nabla p\bigr]^2 +\nonumber\\ +&+ a(\nabla\times\mathbf{B})\times(\nabla p)\cdot\nabla\times(a\mathbf{B}\times\nabla p) +- a^2\bigl[(\nabla\times\mathbf{B})\times\nabla p\bigr]^2 ++ \mu_0 a(\nabla p)^2\nabla\cdot(a\nabla p) +\Bigr\}. +\end{align} + +Define +\begin{equation} +\mathbf{n}=\frac{\nabla p}{|\nabla p|}. +\end{equation} +Then, since $\mu_0\nabla p=(\nabla\times\mathbf{B})\times\mathbf{B}$, +\begin{align} +&-a^2\bigl[(\nabla\times\mathbf{B})\times\nabla p\bigr]^2 ++ a(\nabla\times\mathbf{B})\times(\nabla p)\cdot\nabla\times(a\mathbf{B}\times\nabla p) ++ \mu_0 a(\nabla p)^2\nabla\cdot(a\nabla p) +\nonumber\\ +&= -a^2(\nabla\times\mathbf{B})^2(\nabla p)^2 ++ a^2(\nabla\times\mathbf{B})\times(\nabla p)\cdot\nabla\times(\mathbf{B}\times\nabla p) +\nonumber\\ +&\quad + a(\nabla\times\mathbf{B})\times(\nabla p)\cdot(\nabla a)\times(\mathbf{B}\times\nabla p) ++ \mu_0 a^2(\nabla p)^2\nabla^2 p ++ \mu_0 a(\nabla p)^2(\nabla a)\cdot\nabla p +\nonumber\\ +&= -a^2(\nabla\times\mathbf{B})^2(\nabla p)^2 ++ a^2(\nabla\times\mathbf{B})\times(\nabla p)\cdot\Bigl[(\nabla p)\cdot\nabla\mathbf{B} +- \mathbf{B}\cdot\nabla\nabla p + \mathbf{B}\nabla^2 p\Bigr] +\nonumber\\ +&\quad + a(\nabla\times\mathbf{B})\times(\nabla p)\cdot\Bigl[\mathbf{B}(\nabla a)\cdot\nabla p +- (\nabla p)\,\mathbf{B}\cdot\nabla a\Bigr] ++ \mu_0 a^2(\nabla p)^2\nabla^2 p ++ \mu_0 a(\nabla p)^2(\nabla a)\cdot\nabla p +\nonumber\\ +&= a^2(\nabla p)^2\Bigl[-(\nabla\times\mathbf{B})^2 ++ (\nabla\times\mathbf{B})\times\mathbf{n}\cdot(\mathbf{n}\cdot\nabla\mathbf{B} +- \mathbf{B}\cdot\nabla\mathbf{n})\Bigr]. +\end{align} + +Since $\nabla\cdot\mathbf{B}=0$, it follows that +\begin{equation} +0=\nabla(\mathbf{n}\cdot\mathbf{B}) +=\mathbf{n}\cdot\nabla\mathbf{B}+\mathbf{B}\cdot\nabla\mathbf{n} ++\mathbf{n}\times(\nabla\times\mathbf{B})+\mathbf{B}\times(\nabla\times\mathbf{n}), +\end{equation} +whence +\begin{align} +&-(\nabla\times\mathbf{B})^2 ++(\nabla\times\mathbf{B})\times\mathbf{n}\cdot\bigl[\mathbf{n}\cdot\nabla\mathbf{B} +-\mathbf{B}\cdot\nabla\mathbf{n}\bigr] +\nonumber\\ +&=-(\nabla\times\mathbf{B})^2 ++(\nabla\times\mathbf{B})\times\mathbf{n}\cdot\bigl[-2\mathbf{B}\cdot\nabla\mathbf{n} +-\mathbf{n}\times(\nabla\times\mathbf{B})-\mathbf{B}\times(\nabla\times\mathbf{n})\bigr] +\nonumber\\ +&=-(\nabla\times\mathbf{B})^2+\bigl[\mathbf{n}\times(\nabla\times\mathbf{B})\bigr]^2 +-2(\nabla\times\mathbf{B})\times\mathbf{n}\cdot(\mathbf{B}\cdot\nabla\mathbf{n}) +\nonumber\\ +&\quad -(\nabla\times\mathbf{B})\cdot\mathbf{B}\,\mathbf{n}\cdot\nabla\times\mathbf{n} +-(\nabla\times\mathbf{B})\cdot(\nabla\times\mathbf{n})\,\mathbf{n}\cdot\mathbf{B} +\nonumber\\ +&=-2(\nabla\times\mathbf{B})\times\mathbf{n}\cdot(\mathbf{B}\cdot\nabla\mathbf{n}). +\end{align} + +Since $\mu_0\nabla p=(\nabla\times\mathbf{B})\times\mathbf{B}$, it follows that +$\mathbf{n}\cdot\nabla\times\mathbf{B}=0$, whence +\begin{equation} +\bigl[\mathbf{n}\times(\nabla\times\mathbf{B})\bigr]^2 +=\mathbf{n}^2(\nabla\times\mathbf{B})^2-(\mathbf{n}\cdot\nabla\times\mathbf{B})^2 +=(\nabla\times\mathbf{B})^2. +\end{equation} + +Also, since $\mathbf{n}$ is a unit normal to the surfaces $p=\text{const}$, for any area +contained in such a surface, Stokes' theorem gives +\begin{equation} +\int d^2r\,\mathbf{n}\cdot\nabla\times\mathbf{n} +=\oint d\mathbf{r}\cdot\mathbf{n}=0, +\end{equation} +and since the surface is arbitrary, $\mathbf{n}\cdot\nabla\times\mathbf{n}=0$. + +Thus one can write, +\begin{equation} +2\mu_0 W_F +=\int_I d^3r\Bigl\{ +\mu_0\gamma p(\nabla\cdot\boldsymbol{\xi})^2 ++\bigl[\mathbf{Q}+(\nabla\times\mathbf{B})\times\mathbf{n}\,(\mathbf{n}\cdot\boldsymbol{\xi})\bigr]^2 +-2(\mathbf{n}\cdot\boldsymbol{\xi})^2\,(\nabla\times\mathbf{B})\times\mathbf{n}\cdot(\mathbf{B}\cdot\nabla\mathbf{n}) +\Bigr\}. +\end{equation} + +% If desired, replace curl B by current density j: +% \nabla\times\mathbf{B} = \mu_0\mathbf{j}, so the equilibrium is \nabla p=\mathbf{j}\times\mathbf{B}. +% \begin{align} +% K &= 2(\mathbf{j} \times \hat{n}) \cdot (\mathbf{B} \cdot \nabla) \hat{n} \\ +% &=\frac{2}{|\nabla \psi|^2}(\mathbf{j} \times \nabla \psi) \cdot (\mathbf{B} \cdot \nabla) \nabla \psi \\ +% &=-(\frac{\mathbf{j} \cdot \mathbf{B}}{B^2})\mathbf{B} \times \nabla \psi\, \cdot\, (\nabla \times \frac{\mathbf{B} \times \nabla \psi}{|\nabla \psi|^2}) + \mathbf{j} \cdot \mathbf{B} + 2p'|\nabla \psi|^2 \kappa \cdot \nabla \psi \\ +% &=\frac{2}{|\nabla \chi|^2}(\mathbf{j} \times \nabla \psi) \cdot (\mathbf{B} \cdot \nabla) \nabla \chi +% \end{align} +\subsection{Derivation of K} +\color{blue} +\begin{align} +K +&= 2(\mathbf{j} \times \hat{n}) \cdot (\mathbf{B} \cdot \nabla) \hat{n}\\ +&= \frac{2}{|\nabla \psi|} (\mathbf{j} \times \hat{n}) \cdot (\mathbf{B} \cdot \nabla) \nabla \psi + \cancel{2(\mathbf{j} \times \hat{n}) \cdot [\nabla \psi (\mathbf{B} \cdot \nabla) (\frac{1}{|\nabla \psi|})]}\\ +&= -\frac{2}{|\nabla \psi|^2} (\mathbf{j} \times \nabla \psi) \cdot \big[(\nabla \psi \cdot \nabla)\mathbf{B} + \nabla \psi \times \mathbf{j}\big]\\ +&= -\frac{2}{|\nabla \psi|^2} \big[(\mathbf{j} \times \nabla \psi)(\nabla \psi \cdot \nabla)\mathbf{B} - (\mathbf{j} \times \nabla \psi)^2\big]\\ +&= +2j^2 -\frac{2}{|\nabla \psi|^2} \big[(\mathbf{j} \times \nabla \psi)(\nabla \psi \cdot \nabla)\mathbf{B} \big]\\ +&= 2\sigma^2 B^2 + \underbrace{2 \frac{(\nabla p)^2}{B^2}-\frac{2}{|\nabla \psi|^2} \big[(\mathbf{j} \times \nabla \psi)(\nabla \psi \cdot \nabla)\mathbf{B} \big]}_{\text{$K_1 + K_3$}} +\end{align} +\color{black} +If we decompose current density into perpendicular and parallel components to magnetic field, then the perpendicular and parallel contributions to K are given by + +\color{blue} +\begin{align} +K_3 +&= -\frac{2}{|\nabla \psi|^2} (\mathbf{j}_\perp \times \nabla \psi) \cdot \big[(\nabla \psi \cdot \nabla)\mathbf{B}\big] +2 \frac{(\nabla p)^2}{B^2}\\ +&= -\frac{2}{|\nabla \psi|^2} ((\frac{p^\prime}{B^2} \mathbf{B}\times \nabla \psi) \times \nabla \psi) \cdot \big[(\nabla \psi \cdot \nabla)\mathbf{B}\big] + 2 \frac{(p^\prime \nabla \psi)^2}{B^2}\\ +&= \frac{2}{|\nabla \psi|^2}\frac{p^\prime}{B^2} [\mathbf{B} |\nabla \psi|^2 - \cancel{\nabla \psi (\nabla \psi \cdot \mathbf{B})}] \cdot \big[(\nabla \psi \cdot \nabla)\mathbf{B}\big] + 2 \frac{(p^\prime \nabla \psi)^2}{B^2}\\ +&= \frac{2p^\prime}{B^2} \{ \mathbf{B} \cdot [(\nabla \psi \cdot \nabla) \mathbf{B}] +(\nabla p \cdot \nabla \psi)\} \\ +&= \frac{2p^\prime}{B^2} \{ \mathbf{B} \cdot [(\nabla \psi \cdot \nabla) \mathbf{B}] +(\mathbf{j} \times \mathbf{B}) \cdot \nabla \psi\} \\ +&= \frac{2p^\prime}{B^2} \{ \mathbf{B} \cdot [(\nabla \psi \cdot \nabla) \mathbf{B}] + \mathbf{B} \cdot (\nabla \psi \times \mathbf{j})\}\\ +&= -\frac{2p^\prime}{B^2} \mathbf{B} \cdot (\mathbf{B} \cdot \nabla) (\nabla \psi) = \frac{2p^\prime}{B^2}(\mathbf{B} \cdot \nabla) \cdot \mathbf{B} \cdot \nabla \psi \\ +&= \frac{2p^\prime}{B^2}((\mathbf{B} \cdot \nabla) \cdot \mathbf{B} \cdot \nabla \psi - \nabla \frac{B^2}{2}\cdot \nabla \psi) = +2 p^\prime [ (\frac{\mathbf{B}}{B} \cdot \nabla) \frac{\mathbf{B}}{B} ]\cdot \nabla \psi \\ +&= +2 p^\prime \boldsymbol{\kappa} \cdot \nabla \psi +\end{align} + +% \color{black} +% \begin{equation} +% \mathbf{B}=B \mathbf{b} +% \end{equation} + +\color{blue} +\begin{align} +K_1 +&= -\frac{2}{|\nabla \psi|^2} (\mathbf{j}_\parallel \times \nabla \psi) \cdot \big[(\nabla \psi \cdot \nabla)\mathbf{B}\big] +\frac{2}{|\nabla \psi|^2}(\mathbf{j} \times \nabla \psi)^2\\ +&= -\frac{2}{|\nabla \psi|^2} (\frac{\mathbf{j} \cdot \mathbf{B}}{|\mathbf{B}|^2} \mathbf{B}\times \nabla \psi) \cdot \big[(\nabla \psi \cdot \nabla)\mathbf{B}\big] \\ +&= -\sigma \frac{2}{|\nabla \psi|^2} (\mathbf{B} \times \nabla \psi) \cdot \big[(\nabla \psi \cdot \nabla)\mathbf{B}\big] +\end{align} + +\color{black} +Since we can use the vector identity, +\begin{equation} + \nabla\times(\mathbf a\times\mathbf c) += \mathbf a(\nabla\cdot\mathbf c)-\mathbf c(\nabla\cdot\mathbf a) ++(\mathbf c\cdot\nabla)\mathbf a-(\mathbf a\cdot\nabla)\mathbf c. +\end{equation} +\begin{equation} +\nabla \times (\mathbf{B} \times \nabla \psi) = \mathbf{B} (\nabla^2 \psi) - \cancel{\nabla \psi (\nabla \cdot \mathbf{B}) }+ (\nabla \psi \cdot \nabla) \mathbf{B} - (\mathbf{B} \cdot \nabla) (\nabla \psi) +\end{equation} + +\begin{equation} + \nabla(\mathbf a\cdot\mathbf b) + =(\mathbf a\cdot\nabla)\mathbf b+(\mathbf b\cdot\nabla)\mathbf a+\mathbf a\times(\nabla\times\mathbf b)+\mathbf b\times(\nabla\times\mathbf a) +\end{equation} +\begin{equation} +\cancel{\nabla(\mathbf B\cdot\nabla\psi)}=(\mathbf B\cdot\nabla)\nabla\psi+(\nabla\psi\cdot\nabla)\mathbf B+\nabla\psi\times(\nabla\times\mathbf B)+\cancel{\mathbf B\times(\nabla\times\nabla\psi)} +\end{equation} +\begin{equation} + (\mathbf{B} \cdot \nabla) (\nabla \psi) = - (\nabla \psi \cdot \nabla) \mathbf{B} - \nabla \psi \times \mathbf{j} +\end{equation} + +\begin{equation} +\nabla \times (\mathbf{B} \times \nabla \psi) = \mathbf{B} (\nabla^2 \psi) +2 (\nabla \psi \cdot \nabla) \mathbf{B} + \nabla \psi \times \mathbf{j} +\end{equation} +\begin{equation} +(\mathbf{B} \times \nabla \psi) \cdot [\nabla \times (\mathbf{B} \times \nabla \psi)] = \cancel{(\mathbf{B} \times \nabla \psi) \cdot \mathbf{B} (\nabla^2 \psi)} +2 (\mathbf{B} \times \nabla \psi) \cdot (\nabla \psi \cdot \nabla) \mathbf{B} + (\mathbf{B} \times \nabla \psi) \cdot (\nabla \psi \times \mathbf{j}) +\end{equation} +and rearranging the terms, we have +\begin{equation} + (\mathbf{B} \times \nabla \psi) \cdot \nabla \times (\frac{\mathbf{B} \times \nabla \psi}{|\nabla \psi|^2}) + = \cancel{(\mathbf{B} \times \nabla \psi) \cdot \nabla (\frac{1}{|\nabla \psi|^2}) \times (\mathbf{B} \times \nabla \psi) }+ (\mathbf{B} \times \nabla \psi) \cdot \frac{1}{|\nabla \psi|^2} \nabla \times (\mathbf{B} \times \nabla \psi) +\end{equation} + +\color{blue} +\begin{align} +K_1 +&= -\sigma \frac{1}{|\nabla \psi|^2} (\mathbf{B} \times \nabla \psi) \cdot [\nabla \times (\mathbf{B} \times \nabla \psi)] +\sigma \frac{1}{|\nabla \psi|^2}(\mathbf{B} \times \nabla \psi) \cdot (\nabla \psi \times \mathbf{j})\\ +&= -\sigma \mathbf{B}\times \nabla \psi\cdot (\nabla \times \frac{\mathbf{B} \times \nabla \psi}{|\nabla \psi|^2}) + \sigma \frac{1}{|\nabla \psi|^2} [-|\nabla \psi|^2 (\mathbf{B}\cdot\mathbf{j})+\cancel{(\mathbf{B}\cdot \nabla \psi)} \cdot (\nabla \psi \cdot \mathbf{j})]\\ +&= \sigma S |\nabla \psi|^2 - \sigma (\mathbf{B}\cdot\mathbf{j}) = \sigma S |\nabla \psi|^2 - \sigma^2 B^2 +\end{align} + +\color{blue} +\begin{align} + K + % &= - \mathbf{j} \cdot \mathbf{B} \frac{\mathbf{B}\times \nabla \psi}{|\mathbf{B}|^2} \cdot (\nabla \times \frac{\mathbf{B} \times \nabla \psi}{|\nabla \psi|^2}) + \mathbf{j} \cdot \mathbf{B} + 2p'(\frac{\mathbf{B}}{B} \cdot \nabla)\frac{\mathbf{B}}{B}\cdot \nabla \psi \\ + % &= - |\nabla \psi|^2 \sigma \frac{\mathbf{B}\times \nabla \psi}{|\nabla\psi|^2} \cdot (\nabla \times \frac{\mathbf{B} \times \nabla \psi}{|\nabla \psi|^2}) + \mathbf{j} \cdot \mathbf{B} + 2p'\boldsymbol{\kappa} \cdot \nabla \psi \\ + &= |\nabla \psi|^2 \sigma S + \sigma^2 B^2+ 2p'\boldsymbol{\kappa} \cdot \nabla \psi +\end{align} + +\color{black} +\subsection{Normalization of K between Chance and DCON coordinates} +\color{blue} +\begin{align} +K&=|\nabla \psi|^2 \sigma S + \sigma \mathbf{j} \cdot \mathbf{B} + 2p'\boldsymbol{\kappa} \cdot \nabla \psi +\end{align} + +\begin{align} + S&=-\frac{\mathbf{B}\times \nabla \psi}{|\nabla\psi|^2} \cdot (\nabla \times \frac{\mathbf{B} \times \nabla \psi}{|\nabla \psi|^2}) +\end{align} +\color{black} + +From this definition, the following relationships hold: +\begin{align} +\color{blue} |\nabla \psi|^2 +&= \left(\frac{\chi^\prime_{\mathrm{dcon}}}{2\pi}\right)^2 |\nabla \psi_{\mathrm{dcon}}|^2 +\end{align} + +Substituting these relations into the original expression of \(K_{\mathrm{Chance}}\), we obtain +\begin{align} +K +&= \left(\frac{\chi^\prime_{\mathrm{dcon}}}{2\pi}\right)^2 +|\nabla \psi_{\mathrm{dcon}}|^2 \sigma S ++ \sigma \mathbf{j}\!\cdot\!\mathbf{B} ++ 2p'\!\left(\!\boldsymbol{\kappa}\cdot\frac{\chi^\prime_{\mathrm{dcon}}}{2\pi}\nabla \psi_{\mathrm{dcon}}\right) \\[4pt] +&= \left(\frac{\chi^\prime_{\mathrm{dcon}}}{2\pi}\right)^2 +|\nabla \psi_{\mathrm{dcon}}|^2 \sigma S ++ \sigma \mathbf{j}\!\cdot\!\mathbf{B} ++ p'\,(\boldsymbol{\kappa}\!\cdot\!\nabla \psi_{\mathrm{dcon}}) \chi^\prime / \pi. +\end{align} + +Therefore, the final form of \(K\) in the DCON coordinate system is +\begin{equation} +\boxed{ +K += \left(\frac{\chi^\prime_{\mathrm{dcon}}}{2\pi}\right)^2 +|\nabla \psi_{\mathrm{dcon}}|^2\,\sigma\,S ++ \sigma \mathbf{j}\!\cdot\!\mathbf{B} ++ p'\,(\boldsymbol{\kappa}\!\cdot\!\nabla \psi_{\mathrm{dcon}}) \chi^\prime / \pi. +} +\end{equation} + + +\subsection{Normalization of S between Chance and DCON coordinates} + +In Chance's formulation, the magnetic shear scalar \(S\) is defined as +\begin{equation} +\color{blue} +S += -\,\frac{\mathbf{B}\times\nabla\psi}{|\nabla\psi|^2} +\cdot +\left( +\nabla\times +\frac{\mathbf{B}\times\nabla\psi}{|\nabla\psi|^2} +\right). +\end{equation} + +Using the DCON normalization of the flux coordinate, +\begin{equation} +\color{blue} +\psi +\color{black} += \frac{\chi^\prime_{\mathrm{dcon}}}{2\pi}\, +\psi_{\mathrm{dcon}}, +\qquad +\color{blue} \nabla \psi +\color{black} += \frac{\chi^\prime_{\mathrm{dcon}}}{2\pi}\, \nabla \psi_{\mathrm{dcon}}, +\end{equation} +we can rewrite each factor in terms of DCON variables. + +Hence, the normalized cross term becomes +\begin{equation} +\frac{\mathbf{B}\times\nabla\psi}{|\nabla\psi|^2} += \frac{2\pi}{\chi^\prime_{\mathrm{dcon}}}\, +\frac{\mathbf{B}\times\nabla\psi_{\mathrm{dcon}}}{|\nabla\psi_{\mathrm{dcon}}|^2}. +\end{equation} + +Substituting this back into the original definition of \(S\), we find +\begin{align} +S +&= -\left(\frac{2\pi}{\chi^\prime_{\mathrm{dcon}}}\right)^2 +\frac{\mathbf{B}\times\nabla\psi_{\mathrm{dcon}}}{|\nabla\psi_{\mathrm{dcon}}|^2} +\cdot +\left[ +\nabla\times +\frac{\mathbf{B}\times\nabla\psi_{\mathrm{dcon}}}{|\nabla\psi_{\mathrm{dcon}}|^2} +\right]\\ +&=-(2\pi)^2 +\frac{\mathbf{B}\times\nabla\psi_{\mathrm{dcon}}\chi^\prime_{dcon}}{|\nabla\psi_{\mathrm{dcon}}*\chi^\prime_{dcon}|^2} +\cdot +\left[ +\nabla\times +\frac{\mathbf{B}\times\nabla\psi_{\mathrm{dcon}}\chi^\prime_{dcon}}{|\nabla\psi_{\mathrm{dcon}}\chi^\prime_{dcon}|^2} +\right]\\ +&= -\,(2\pi)^2 \frac{\mathbf{B}\times\nabla\chi_{dcon}}{|\nabla\chi_{dcon}|^2} +\cdot +\left( +\nabla\times +\frac{\mathbf{B}\times\nabla\chi_{dcon}}{|\nabla\chi_{dcon}|^2} +\right) +\end{align} + +\begin{align} +\boldsymbol{\Lambda} +&\equiv \frac{\mathbf{B} \times \nabla \chi_{dcon}}{|\nabla \chi_{dcon}|^2} += \frac{(\nabla \chi_{dcon} \times \nabla \alpha) \times \nabla \chi_{dcon}}{|\nabla \chi_{dcon}|^2} \\[4pt] +&= \nabla \alpha +- \frac{(\nabla \chi_{dcon} \cdot \nabla \alpha)}{|\nabla \chi_{dcon}|^2}\, \nabla \chi_{dcon}. +\end{align} + +The curl becomes ($\alpha\, \text{represents}\, \alpha_{dcon}$ below this point) +\begin{align} +\nabla \times \boldsymbol{\Lambda} +&= -\,\nabla \times +\left[ +\frac{(\nabla \chi_{dcon} \cdot \nabla \alpha)}{|\nabla \chi_{dcon}|^2}\, \nabla \chi_{dcon} +\right] \\[4pt] +&= -\,\nabla \left(\frac{\nabla \chi_{dcon} \cdot \nabla \alpha}{|\nabla \chi_{dcon}|^2}\right) +\times \nabla \chi_{dcon}, +\end{align} + +since $\nabla \times \nabla = 0$. The magnetic shear: + +\begin{align} +S +&= - (2\pi)^2\, \boldsymbol{\Lambda} \cdot (\nabla \times \boldsymbol{\Lambda}) \\[4pt] +&= - (2\pi)^2 +\left[ +\nabla \alpha +- \frac{(\nabla \chi_{dcon} \cdot \nabla \alpha)}{|\nabla \chi_{dcon}|^2}\, \nabla \chi_{dcon} +\right] +\cdot +\left[ +\nabla \left(\frac{\nabla \chi_{dcon} \cdot \nabla \alpha}{|\nabla \chi_{dcon}|^2}\right) +\times \nabla \chi_{dcon} +\right] \\[6pt] +&= (2\pi)^2\, \nabla \alpha \cdot +\left[ +\nabla \left(\frac{\nabla \chi_{dcon} \cdot \nabla \alpha}{|\nabla \chi_{dcon}|^2}\right) +\times \nabla \chi_{dcon} +\right] \\[6pt] +&= (2\pi)^2\, (\nabla \chi_{dcon} \times \nabla \alpha) \cdot +\nabla \left(\frac{\nabla \chi_{dcon} \cdot \nabla \alpha}{|\nabla \chi_{dcon}|^2}\right) \\[6pt] +&= (2\pi)^2\, \mathbf{B} \cdot +\nabla \left(\frac{\nabla \chi_{dcon} \cdot \nabla \alpha}{|\nabla \chi_{dcon}|^2}\right)\\ +&= \frac{(2\pi)^2}{\chi\prime_{dcon}}\, \mathbf{B} \cdot \nabla (\frac{\nabla \psi \cdot \nabla \alpha}{\nabla\psi \cdot \nabla\psi}) +\end{align} + + +The parallel gradient operator is: +\begin{equation} +\mathbf{B} \cdot \nabla += B^{\theta} \frac{\partial}{\partial \theta} ++ B^{\zeta} \frac{\partial}{\partial \zeta} += \frac{\chi'}{\mathcal{J}} +\left( +\frac{\partial}{\partial \theta} ++ q \frac{\partial}{\partial \zeta} +\right). +\end{equation} + +Also note +\begin{align} +\nabla \psi \cdot \nabla \alpha +&= \nabla \psi \cdot \nabla \big(q(\psi)\theta - \zeta\big) += q'(\nabla \psi \cdot \nabla \psi)\theta ++ \nabla \psi \cdot \big(q \nabla \theta - \nabla \zeta\big). +\end{align} + +Since $\partial / \partial \zeta = 0$ for a tokamak, one obtains: +\begin{align} +S +&= \frac{(2\pi)^2}{\mathcal{J}} +\frac{\partial}{\partial \theta} +\left[ +q' \theta ++ \frac{q(\nabla \psi \cdot \nabla \theta) +- (\nabla \psi \cdot \nabla \zeta)} +{(\nabla \psi \cdot \nabla \psi)} +\right] \\[6pt] +&= \frac{(2\pi)^2}{\mathcal{J}} +\left[ +q' ++ \frac{\partial}{\partial \theta} +\left( +\frac{q(\nabla \psi \cdot \nabla \theta) +- (\nabla \psi \cdot \nabla \zeta)} +{(\nabla \psi \cdot \nabla \psi)} +\right) +\right]. +\end{align} + +\subsection{$\xi^{\psi}$ in DCON berstein caculation} + +\begin{align} +\boxed{ +\boldsymbol{\xi}_\perp \cdot \hat{n} += \frac{\boldsymbol{\xi} \cdot \nabla \psi}{|\nabla \psi|} += \frac{\xi^\psi}{|\nabla \psi|}, +} +\qquad +\boxed{ +(\boldsymbol{\xi}_\perp \cdot \hat{n})^2 += \frac{(\xi^\psi)^2}{|\nabla \psi|^2}. +} +\end{align} + +\begin{equation} +\boxed{ +\boldsymbol{\xi}_\perp \cdot \hat{n} += \frac{1}{|\nabla \psi|} +\sum_{m,n} v_{m,n}(\psi)\, e^{2\pi i(m\theta - n\zeta)}. +} +\end{equation} + +\subsection{$\boldsymbol{\kappa}$ in DCON berstein caculation} + + +\section{Reconstruction of energy principle variables in DCON} +\subsection{Reconstruction v1} + +\begin{align} +\xi^\psi = \sum_{m}^{} \sum_{n}^{} v_{m,n}(\psi) \cdot \exp 2\pi i(m\theta -n\zeta) \\ +\xi^s = \sum_{m}^{} \sum_{n}^{} u_{m,n}(\psi) \cdot \exp 2\pi i(m\theta -n\zeta) +\end{align} + +\begin{align} +\vec{j} &= \mathcal{J} (j^{\psi} \nabla \theta \times \nabla \zeta + j^{\theta} \nabla \zeta \times \nabla \psi + j^{\zeta} \nabla \psi \times \nabla \theta) \\ +&= \mathcal{J} ( j^{\psi} \vec{v_1} + j^{\theta} \vec{v_2} + j^{\zeta} \vec{v_3})\\ +&=\mathcal{J} (j^{\theta} \nabla \zeta \times \nabla \psi + j^{\zeta} \nabla \psi \times \nabla \theta) +\end{align} + +\begin{equation} +\vec{Q} = \mathcal{J} (Q^{\psi} \nabla \theta \times \nabla \zeta + Q^{\theta} \nabla \zeta \times \nabla \psi + Q^{\zeta} \nabla \psi \times \nabla \theta) = \mathcal{J} ( Q^{\psi} \vec{v_1} + Q^{\theta} \vec{v_2} + Q^{\zeta} \vec{v_3}) +\end{equation} + +\begin{equation} +Q^{\psi} = \frac{\chi^\prime}{\mathcal{J}} (\frac{\partial}{\partial \theta} + q \frac{\partial}{\partial \zeta} )\xi^\psi = \frac{\chi^\prime}{\mathcal{J}} \sum_{m}^{} \sum_{n}^{} v_{m,n}(\psi) \cdot \exp 2 \pi i(m\theta -n\zeta)\cdot 2 \pi i (m-nq) +\end{equation} + +\begin{align} +Q^{\theta} &= - \frac{1}{\mathcal{J}} \frac{\partial}{\partial \psi}(\chi ^ \prime \xi ^\psi) + \frac{1}{\mathcal{J}} \frac{\partial \xi^s}{\partial \zeta} \\ +&= - \frac{1}{\mathcal{J}} \sum_{m}^{} \sum_{n}^{} \left(\chi ^ \prime \frac{\partial}{\partial \psi}(v_{m,n}(\psi)) + 2\pi i n u_{m,n}(\psi) \right) \cdot \exp 2\pi i(m\theta -n\zeta) +\end{align} + +\begin{align} +Q^{\zeta} +&= - \frac{1}{\mathcal{J}} \frac{\partial}{\partial \psi} (\chi^\prime q \xi^\psi) + -\frac{1}{\mathcal{J}} \frac{\partial \xi^s}{\partial \theta} \\ +&= - \frac{1}{\mathcal{J}} \sum_{m} \sum_{n} + \left( \chi ^ \prime q \frac{\partial v_{m,n}(\psi)}{\partial \psi} + + \chi^\prime q^\prime v_{m,n}(\psi) + + 2\pi i m u_{m,n}(\psi) \right) + \exp\!\bigl(2 \pi i(m\theta - n\zeta)\bigr). +\end{align} + +\begin{equation} +\Xi_{\psi} += \texttt{u(:,:,1)} \quad \text{(Fortran, DCON)} += \texttt{u(:,:,1)} \quad \text{(Fortran, MATCH)}. +\end{equation} + +\begin{equation} +\Xi_{s} += \texttt{ud(:,:,2)} \quad \text{(Fortran, DCON)} += \texttt{u(:,:,4)} \quad \text{(Fortran, MATCH)}. +\end{equation} + +\begin{equation} +\Xi_{\psi}^\prime += \texttt{ud(:,:,1)} += \texttt{du(:,:,1)} \quad \text{(Fortran, DCON)} += \texttt{u(:,:,3)} \quad \text{(Fortran, MATCH)}. +\end{equation} + +And if you see the 331 line in ideal.f of MATCH, it constructs all the eigenvectors in variable v. +\begin{equation} +v_{m,n}(\psi) += v(:,1,mstep) +\end{equation} + +\begin{equation} +v_{m,n}^\prime(\psi) += v(:,3,mstep) +\end{equation} + +\begin{equation} +u_{m,n}(\psi) += v(:,4,mstep) +\end{equation} + +\begin{equation} + \mu_0 \vec{j} = \mathcal{J} (\mu_0 j^\theta \vec{v}_2 + \mu_0 j^\zeta \vec{v}_3) +\end{equation} +\begin{equation} + \mu_0 \vec{j} \times \nabla \psi = \mathcal{J} \mu_0 j^\theta (\vec{v}_2 \times \nabla \psi) + \mathcal{J} \mu_0 j^\zeta (\vec{v}_3 \times \nabla \psi) +\end{equation} + +\begin{equation} + j^\theta = j \cdot \nabla \theta = - 2 \pi f^\prime / \mathcal{J} +\end{equation} + +\begin{equation} + j^\zeta = j \cdot \nabla \zeta = - \mu_0 p^\prime / \chi^\prime - 2 \pi f^\prime q / \mathcal{J} +\end{equation} +Now we can reconstruct the cross term in the energy principle: + +\begin{align} +\vec{C} &\equiv \vec{Q} + (\vec{\xi} \cdot \hat{n} ) (\mu_0 \vec{j} \times \hat{n}) \\ +&=C^\psi \vec{e}_1 + C^\theta \vec{e}_2 + C^\zeta \vec{e}_3 = \mathcal{J} ( C^\psi \vec{v}_1 + C^\theta \vec{v}_2 + C^\zeta \vec{v}_3 )\\ +&=C_1 \nabla\psi + C_2 \nabla\theta + C_3 \nabla\zeta +\end{align} + +\begin{align} +C^\psi &= \vec{C} \cdot \nabla\psi = Q^\psi \\ +C^\theta &= \vec{C} \cdot \nabla\theta = Q^\theta + \frac{\xi^\psi}{|\nabla\psi|^2} \mu_0 \vec{j} \cdot (\nabla\psi \times \nabla\theta) \\ +C^\zeta &= \vec{C} \cdot \nabla\zeta = Q^\zeta + \frac{\xi^\psi}{|\nabla\psi|^2} \mu_0 \vec{j} \cdot (\nabla\psi \times \nabla\zeta) +\end{align} + +\begin{align} +C_1 &= Q_1 + \frac{\mathcal{J}\xi^\psi}{|\nabla\psi|^2} \left[ \mu_0 j^\theta (\nabla\psi \cdot \nabla\zeta) - \mu_0 j^\zeta (\nabla\psi \cdot \nabla\theta) \right] \\ +C_2 &= Q_2 + \mathcal{J}\xi^\psi \mu_0 j^\zeta \\ +C_3 &= Q_3 - \mathcal{J}\xi^\psi \mu_0 j^\theta +\end{align} + +\begin{align} +\delta W_{term1} &= \frac{1}{2} \int \bigl(\frac{|\vec{C}|^2}{\mu_0} \bigr) dx^3 \\ +&= \frac{1}{2} \int d\psi d\theta d\zeta \mathcal{J} \Bigl[ \frac{|\vec{C}|^2}{\mu_0}\Bigr] +\end{align} + +\begin{align} +g_{11} &\equiv \mathcal{J}^2\,|\nabla\theta\times\nabla\zeta|^2, \\ +g_{22} &\equiv \mathcal{J}^2\,|\nabla\zeta\times\nabla\psi|^2, \\ +g_{33} &\equiv \mathcal{J}^2\,|\nabla\psi\times\nabla\theta|^2, \\ +g_{12} &\equiv \mathcal{J}^2\,(\nabla\theta\times\nabla\zeta)\cdot(\nabla\zeta\times\nabla\psi), \\ +g_{23} &\equiv \mathcal{J}^2\,(\nabla\zeta\times\nabla\psi)\cdot(\nabla\psi\times\nabla\theta), \\ +g_{31} &\equiv \mathcal{J}^2\,(\nabla\psi\times\nabla\theta)\cdot(\nabla\theta\times\nabla\zeta), +\end{align} +so that +\begin{equation} +\boxed{\;\mathcal{J}\,(\vec v_i\cdot\vec v_j)=\frac{g_{ij}}{\mathcal{J}}\;} +\end{equation} + +\begin{equation} +\boxed{ +\left\langle F \right\rangle_{mm'} +\equiv \int_{0}^{1} d\theta\; +\mathcal{J}(\psi,\theta)\, +\exp\!\bigl(2\pi i(m'-m)\theta\bigr)\, +F(\psi,\theta) +} +\end{equation} + +\begin{equation} +\boxed{ +(G_{ij})_{mm'} \equiv \left\langle \frac{g_{ij}}{\mathcal{J}} \right\rangle_{mm'} +} +\end{equation} + +\begin{align} +\delta W_{\mathrm{term1}} +&= \frac{1}{2} \int \bigl(\frac{|\vec{C}|^2}{\mu_0} \bigr) dx^3 \\ +&= \frac{1}{2\mu_0}\int d\psi\,d\theta\,d\zeta\; +\mathcal{J}\,|\vec C|^2 += \frac{1}{2\mu_0}\int d\psi\,d\theta\,d\zeta\;\mathcal{J} \sum_{i,j=1}^{3} C^{i} C^{j*} g_{ij}\\ +&=\frac{1}{2\mu_0} \int d\psi d\theta\,d\zeta\ \left[ \mathcal{J} \sum_{i,j}\ \sum_{m,n}\ \sum_{m'n'}\ C_{m,n}^{i} C_{m',n'}^{j*} g_{ij} e^{2\pi i ((m-m')\theta -(n-n') \zeta)}\right] \\ +\end{align} + +Since $n$ is fixed in DCON so, +\begin{align} + \delta W_{n=fixed}&=\frac{1}{2\mu_0} \int d\psi\ \left[ \int d\theta \, \sum_{m, m'} e^{2\pi i(m-m')\theta} \mathcal{J}(\psi, \theta) \sum_{i,j} C_{m,n}^{i}(\psi, \theta) C_{m',n}^{j*}(\psi, \theta) g_{ij}(\psi, \theta) \right] \\ + &=\frac{1}{2\mu_0} \int d\psi \int_0^1 d\theta \; \mathcal{J}(\psi, \theta) \sum_{i,j} \left( \sum_m C_{m,n}^i e^{2\pi i m \theta} \right) \left( \sum_{m'} C_{m',n}^{j*} e^{-2\pi i m' \theta} \right) g_{ij}(\psi, \theta) +\end{align} + +The second term is $\nabla \cdot \vec{\xi} = 0$, it vanishes: +\begin{equation} +\boxed{ +\delta W_{\mathrm{term2}} += \frac{1}{2} \int \gamma p |\vec{\nabla} \cdot \vec{\xi}|^2 dx^3 = \frac{1}{2} \int d\psi d\theta d\zeta \mathcal{J} \Bigl[ \gamma p |\vec{\nabla} \cdot \vec{\xi}|^2 \Bigr] = 0. +} +\end{equation} + +For the last term in $\delta W$, +\begin{align} + \delta W_{\mathrm{term3}} &= \frac{1}{2} \int -K(\vec{\xi} \cdot \hat{n})^2 dx^3 \\ + &= \frac{1}{2} \int d\psi d\theta d\zeta \mathcal{J} \Bigl[ -K(\vec{\xi} \cdot \hat{n})^2 \Bigr] \\ + &= \frac{1}{2} \int d\psi d\theta d\zeta \mathcal{J} \Bigl[ -K(\frac{\vec{\xi}^{\psi}}{|\nabla\psi|})^2 \Bigr] +\end{align} + +% --- Term 3 as quadratic form --- +\begin{equation} +\delta W_{\mathrm{term3}} += -\frac{1}{2}\int d\psi\,d\theta\,d\zeta\; +\mathcal{J}\,\frac{K}{|\nabla\psi|^2}\; +\xi^\psi\,\xi^{\psi *}. +\end{equation} + +\begin{equation} +(K_{mm'}) \equiv \left\langle \frac{K}{|\nabla\psi|^2}\right\rangle_{mm'} += \int_0^1 d\theta\;\mathcal{J}(\psi,\theta)\, +e^{2\pi i(m'-m)\theta}\, +\frac{K}{|\nabla\psi|^2}. +\end{equation} + +\begin{equation} +\boxed{ +\delta W_{\mathrm{term3}} += -\frac{1}{2}\int d\psi \sum_{m,m'} +v^*_{m,n}(\psi)\; +(K_{mm'}(\psi))\; +v_{m',n}(\psi). +} +\end{equation} + +\subsection{Reconstruction $\boldsymbol{v2}$ : Matrix representation of $\delta W$} + + +\begin{equation} +\begin{aligned} +2\delta W +&= \int \big[ \frac{|\vec{C}|^2}{\mu_0}- K(\vec{\xi} \cdot \hat{n})^2 +\gamma p |\vec{\nabla} \cdot \vec{\xi}|^2 \big] dx^3\\ +&= \int d\psi d\theta d\zeta \mathcal{J} \Big\{ [ \nabla \xi_s \times \nabla \psi ++ (\nabla \theta \times \nabla \zeta)\,\mathcal{J}\,\mathbf{B}\cdot\nabla \xi_\psi +- \mathbf{B}\,\xi_\psi' \\ +&- +\left( + \chi'' \nabla \zeta \times \nabla \psi + + (q\chi')' \nabla \psi \times \nabla \theta +\right)\xi_\psi \\ +&+\frac{\xi_\psi}{|\nabla \psi|^2} [ +j^\theta +\big( +\nabla\psi(\nabla\zeta\cdot\nabla\psi) +- +\nabla\zeta|\nabla\psi|^2 +\big)+j^\zeta +\big( +\nabla\theta|\nabla\psi|^2 +- +\nabla\psi(\nabla\theta\cdot\nabla\psi) +\big)]]^2 \\ +&-K(\vec{\xi} \cdot \hat{n})^2 +\gamma p |\vec{\nabla} \cdot \vec{\xi}|^2\} +\end{aligned} +\end{equation} + +\subsubsection{Matrix representation of $\delta W_{\mathrm{term1}}$} +First we focus on the first term in $\delta W$. If we change each terms in $\vec{C}$ as follows: +\begin{equation} +\begin{aligned} +&\mathbf X \equiv \nabla \xi_s \times \nabla \psi,\\ +&\mathbf Y \equiv (\nabla \theta \times \nabla \zeta)\, \mathcal J \, \mathbf B \cdot \nabla \xi_\psi,\\ +&\mathbf Z \equiv -\mathbf B\, \xi_\psi',\\ +&\mathbf U \equiv -\left( +\chi'' \nabla \zeta \times \nabla \psi ++ +(q\chi')' +\nabla \psi \times \nabla \theta +\right)\xi_\psi,\\ +&\mathbf V \equiv +\frac{\xi_\psi}{|\nabla \psi|^2} +\, \mu_0 \mathbf j \times \nabla \psi . +\end{aligned} +\end{equation} + +\begin{equation} +\begin{aligned} +2\delta W_{\mathrm{term1}} & = \int d\psi d\theta d\zeta \mathcal{J} [\frac{|\vec{C}|^2}{\mu_0}]\\ +&= \int d\psi d\theta d\zeta \mathcal{J}|\mathbf C|^2\\ +&= \int d\psi d\theta d\zeta \mathcal{J} \{ |\mathbf Q|^2+ +2\,\Re\!\left[ +(\mathbf X+\mathbf Y+\mathbf Z+\mathbf U)\cdot\mathbf V^* +\right]+|\mathbf V|^2\} +\end{aligned} +\end{equation} + +The detailed derivation of the term already in \cite{10.1063/1.4958328} willbe skipped here. +The first term $|\mathbf X|^2$ can be written with matrix form as $\Xi_s^\dagger \mathbf A \Xi_s$ where $\Xi_s$ is a vector of the coefficients of the poloidal harmonics in $\xi_s$, and $\mathbf A$ is a matrix given by: +\begin{equation} +\mathbf A=(2\pi)^2\left[n^2 \mathbf G_{22}+n \mathbf G_{23} \mathbf M+n \mathbf M \mathbf G_{23}+\mathbf M \mathbf G_{33} \mathbf M\right]. +\end{equation} + +The second term $\mathbf X \cdot \mathbf Z + \mathbf Z \cdot \mathbf X$ can be written in matrix form as $\Xi_s^\dagger \mathbf B \Xi_\psi^\prime + \Xi_\psi'^\dagger \mathbf B^\dagger \Xi_s$, where $\mathbf B$ is a matrix given by: +\begin{equation} + \mathbf B = -2\pi i\chi' [n(\mathbf G_{22} + q\mathbf G_{23}) + \mathbf M(\mathbf G_{23} + q\mathbf G_{33})] +\end{equation} + +The term $\mathbf X \cdot \mathbf Y + \mathbf Y \cdot \mathbf X$ as $\Xi_s^\dagger \mathbf C_1 \Xi_\psi + \Xi_\psi^\dagger \mathbf C_1^\dagger \Xi_s$, where $\mathbf C_1$ is a matrix given by: +\begin{equation} + \mathbf C_1 = -(2\pi)^2 \chi^\prime (\mathbf M \mathbf G_{31} + n \mathbf G_{12})\mathbf Q +\end{equation} + +The term $\mathbf X \cdot \mathbf U + \mathbf U \cdot \mathbf X$ as $\Xi_s^\dagger \mathbf C_2 \Xi_\psi + \Xi_\psi^\dagger \mathbf C_2^\dagger \Xi_s$, where $\mathbf C_2$ is a matrix given by: +\begin{equation} + \mathbf C_2 = -2\pi [\chi'' (n \mathbf G_{22} + \mathbf M \mathbf G_{23}) + (q\chi')' (n \mathbf G_{23} + \mathbf M \mathbf G_{33})] +\end{equation} + +The term $|\mathbf Y|^2$ as $\Xi_\psi^\dagger \mathbf H_1 \Xi_\psi$, where $\mathbf H_1$ is a matrix given by: +\begin{equation} + \mathbf H_1 = (2\pi\chi^{\prime} )^2 \mathbf Q\mathbf G_{11} \mathbf Q +\end{equation} + +The term $\mathbf Y \cdot \mathbf Z + \mathbf Z \cdot \mathbf Y$ as $\Xi_\psi^{\prime\dagger }\mathbf E_1 \Xi_\psi + \Xi_\psi^{\dagger} \mathbf E_1^\dagger \Xi_\psi^\prime$, where $\mathbf E_1$ is a matrix given by: +\begin{equation} + \mathbf E_1 = -2\pi i \chi^{\prime 2} (\mathbf G_{12}+q \mathbf G_{31})\mathbf Q +\end{equation} + +The term $\mathbf Y \cdot \mathbf U + \mathbf U \cdot \mathbf Y$ as $\Xi_\psi^\dagger \mathbf H_2 \Xi_\psi$, where $\mathbf H_2$ is a matrix given by: +\begin{equation} + \mathbf H_2 = 2\pi i \chi' +\left[ +\chi''\left(\mathbf M \mathbf G_{12} -\mathbf G_{12} \mathbf M\right) ++ +(q\chi')'\left(\mathbf M \mathbf G_{31} -\mathbf G_{31} \mathbf M\right) +\right] +\end{equation} + +The term $|\mathbf Z|^2$ as $\Xi_\psi^{\prime \dagger} \mathbf D \Xi_\psi^\prime$, where $\mathbf D$ is a matrix given by: +\begin{equation} + \mathbf D = \chi'^2 +\left[ +(\mathbf{G}_{22} + q\,\mathbf{G}_{23}) ++ +q\,(\mathbf{G}_{23} + q\,\mathbf{G}_{33}) +\right] +\end{equation} + +The term $\mathbf Z \cdot \mathbf U + \mathbf U \cdot \mathbf Z$ as $\Xi_\psi^{\prime\dagger}\mathbf E_2 \Xi_\psi + \Xi_\psi^\dagger \mathbf E_2^\dagger \Xi_\psi^\prime$, where $\mathbf E_2$ is a matrix given by: +\begin{equation} +\mathbf E_2 = \chi' +\left[ +\chi'' +\left( +\mathbf{G}_{22} ++ +q\,\mathbf{G}_{23} +\right) ++ +(q\chi')' +\left( +\mathbf{G}_{23} ++ +q\,\mathbf{G}_{33} +\right) +\right] +\end{equation} + +Finally, the term $|\mathbf U|^2$ as $\Xi_\psi^\dagger \mathbf H_3 \Xi_\psi$, where $\mathbf H_3$ is a matrix given by: +\begin{equation} +\mathbf{H}_3 += +\chi'' +\left[ +\chi''\,\mathbf{G}_{22} ++ +(q\chi')'\,\mathbf{G}_{23} +\right] ++ +(q\chi')' +\left[ +\chi''\,\mathbf{G}_{23} ++ +(q\chi')'\,\mathbf{G}_{33} +\right] +\end{equation} + +The new terms are the cross terms between $\mathbf V$ and the other four terms. The term $\mathbf X \cdot \mathbf V + \mathbf V \cdot \mathbf X$ can be written in matrix form as $\Xi_s^\dagger \mathbf C_3 \Xi_\psi + \Xi_\psi^\dagger \mathbf C_3^\dagger \Xi_s$, where $\mathbf C_3$ is a matrix given by: +\begin{equation} +(\nabla \xi_s \times \nabla \psi) \cdot (\frac{\xi_\psi}{|\nabla \psi|^2} \mu_0 \mathbf j \times \nabla \psi) = (\nabla \xi_s \cdot \mu_0 \mathbf j) - \cancel{(\nabla \xi_s \cdot \nabla \psi)(\mu_0 \mathbf j \cdot \nabla \psi)} +\end{equation} + +\begin{align} + \mathbf{X}^* \cdot \mathbf{V}&= +\left[ +-2\pi i\, \xi_s^* +\left( +m\, \nabla\theta \times \nabla\psi +- +n\, \nabla\zeta \times \nabla\psi +\right) +\right] +\cdot +\left[ +\frac{\xi_\psi}{|\nabla\psi|^2} +\,\mu_0 +\left( +\mathbf{j} \times \nabla\psi +\right) +\right]\\ +&= +(-2\pi i)\,\mu_0\, +\xi_s^*\, +\left( +m\, j_\theta +- +n\, j_\zeta +\right) +\xi_\psi\, +\end{align} +This term is same as the term $\xi_\psi \mathbf J \cdot \nabla \psi - \xi_s \mathbf J \cdot \nabla \psi$ in original form. +And the matrix form can be written as $\Xi_s^\dagger \mathbf C_3 \Xi_\psi + \Xi_\psi^\dagger \mathbf C_3^\dagger \Xi_s$, where $\mathbf C_3$ is a matrix given by: +\begin{equation} +\mathbf C_3 = 2\pi i (2\pi f^\prime \mathbf Q -n \frac{p^\prime}{\chi^\prime} \mathbf J) +\end{equation} + +The term $Z \cdot V + V \cdot Z$ can be written in matrix form as $\Xi_\psi^\dagger \mathbf E_3 \Xi_\psi^\prime + \Xi_\psi^{\dagger\prime} \mathbf E_3^\dagger \Xi_\psi + \Xi_\psi^\dagger \mathbf H_4 \Xi_\psi$, where $\mathbf E_3$ is a matrix given by: + +\begin{equation} +\mathbf Y^* += +(\nabla \theta \times \nabla \zeta)\, +(-2\pi i)\chi' +\sum_m +(m - nq)\, +v_m^*\, +e^{-2\pi i (m\theta - n\zeta)} . +\end{equation} + +\begin{equation} +\mathbf V += +\sum_{m'} +v_{m'}\, +e^{2\pi i (m'\theta - n\zeta)} +\, +\frac{\mu_0 \mathbf j \times \nabla \psi} +{|\nabla \psi|^2} . +\end{equation} + +\begin{equation} +\begin{aligned} +\mathbf Y^* \cdot \mathbf V +&= +(-2\pi i)\chi' +\sum_{m,m'} +v_m^* +(m - nq) +v_{m'} +e^{2\pi i (m' - m)\theta} +\; +\frac{ +(\nabla \theta \times \nabla \zeta) +\cdot +(\mu_0 \mathbf j \times \nabla \psi) +}{ +|\nabla \psi|^2 +}\\ +&= +(-2\pi i)\chi' +\sum_{m,m'} +v_m^* +(m - nq) +v_{m'} +e^{2\pi i (m' - m)\theta} +\; +\mu_0 \, +\frac{ +j^{\theta} \left( \nabla \zeta \cdot \nabla \psi \right) +- +j^{\zeta} \left( \nabla \theta \cdot \nabla \psi \right) +}{ +|\nabla \psi|^2 +}. +\end{aligned} +\end{equation} + + +\section{Plasma Magnetic Potential on the Surface} + +The plasma magnetic potential $\Phi$ on the boundary surface is computed using covariant magnetic field components obtained from the perturbed equilibrium solution. The calculation involves four components that represent different aspects of the magnetic potential response. + +\subsection{Equilibrium Data} + +The equilibrium spline $s_q$ contains the following flux functions indexed by their position in the spline: +\begin{align} +s_q(\psi) &= \begin{cases} +s_q(\psi)_1 &: \psi_{\text{fac}} \; (\text{flux normalization}) \\ +s_q(\psi)_2 &: F(\psi) = R B_\phi \; (\text{poloidal current}) \\ +s_q(\psi)_3 &: \mu_0 p(\psi) \; (\text{pressure term}) \\ +s_q(\psi)_4 &: q(\psi) \; (\text{safety factor}) \\ +s_q(\psi)_5 &: \rho(\psi) \; (\text{auxiliary quantity}) +\end{cases} +\end{align} + +\subsection{Covariant Field Components Transformation} + +From the contravariant field components in mode space $(B_{w,p}^{(m)}, B_{m,t}^{(m)}, B_{m,z}^{(m)})$, the covariant components in physical space are obtained via inverse Fourier transform and metric tensor contraction: +\begin{align} +B_{v,\theta} &= \mathcal{F}^{-1}\{b_{v,t}^{(m)}\} \quad \text{(covariant theta component)}\\ +B_{v,\zeta} &= \mathcal{F}^{-1}\{b_{v,z}^{(m)}\} \quad \text{(covariant zeta component)}\\ +\Xi_\psi &= \mathcal{F}^{-1}\{x_{w,p}^{(m)}\} \quad \text{(poloidal flux perturbation)} +\end{align} + +where $\mathcal{F}^{-1}$ denotes the inverse discrete Fourier transform in the poloidal angle direction. + +\subsection{Magnetic Potential Components} + +The four components of the plasma magnetic potential on the surface are computed as follows: + +\begin{equation} +\begin{aligned} +\Phi_3(\theta) &= -\frac{B_{v,\zeta}(\theta)}{2\pi i n} +\\ +\Phi_1(\theta) &= \Phi_3(\theta) - \frac{\frac{dF}{d\psi} \cdot \Xi_\psi(\theta)}{2\pi i n \cdot \mathcal{J}(\theta)} +\\ +\Phi_4(\theta) &= B_{v,\theta}(\theta) +\\ +\Phi_2(\theta) &= \Phi_4(\theta) - \left( +\frac{dF}{d\psi} q(\psi) + \mathcal{J}(\theta) \frac{d(\mu_0 p)}{d\psi} \chi_1^{-1} +\right) \frac{\Xi_\psi(\theta)}{\mathcal{J}(\theta)} +\end{aligned} +\end{equation} + +Here: +\begin{itemize} +\item $\Phi_3$ represents the potential associated with toroidal field perturbation ($\zeta$ component) +\item $\Phi_1$ includes the coupling between flux perturbation and poloidal current derivative +\item $\Phi_4$ is the direct poloidal field response +\item $\Phi_2$ combines poloidal field response with pressure and current effects +\item $\mathcal{J}(\theta) = \partial(\mathbf{r}, \mathbf{z}, \phi)/\partial(\psi, \theta, \zeta)$ (Jacobian of coordinate transformation) +\item $\chi_1 = \psi_0 \cdot 2\pi$ (flux scaling factor) +\item $n$ is the toroidal mode number +\end{itemize} + +\subsection{Physical Interpretation} + +Each potential component couples different physical mechanisms: +\begin{enumerate} +\item \textbf{$\Phi_3$}: Direct response to toroidal field perturbation, normalized by mode number. + +\item \textbf{$\Phi_1$}: Additional correction accounting for the interaction between the poloidal flux perturbation $\Xi_\psi$ and the poloidal current profile $(dF/d\psi)$. The denominator $\mathcal{J}$ accounts for local metric effects. + +\item \textbf{$\Phi_4$}: The primary poloidal magnetic field response from the perturbed equilibrium. + +\item \textbf{$\Phi_2$}: Complex response combining: +\begin{itemize} +\item Gradient of poloidal current: $(dF/d\psi) q$ +\item Pressure gradient effect: $\mathcal{J} (d\mu_0 p/d\psi)\chi_1^{-1}$ +\item Both weighted by normalized flux perturbation: $\Xi_\psi/\mathcal{J}$ +\end{itemize} +\end{enumerate} + + +\bibliographystyle{plain} +\bibliography{references} + +\end{document} \ No newline at end of file diff --git a/docs/tex/recon/references.bib b/docs/tex/recon/references.bib new file mode 100644 index 000000000..deb3bc5fc --- /dev/null +++ b/docs/tex/recon/references.bib @@ -0,0 +1,58 @@ +@techreport{chance1992mhd, + author = {Chance, M. S. and Jardin, S. C. and Kessel, C. E. and Okabayashi, M. and others}, + title = {Mhd stability of tokamak plasmas}, + institution = {Princeton Univ., NJ (United States). Plasma Physics Lab}, + year = {1992}, + type = {Technical Report} +} +@article{RevModPhys.76.1071, + title = {Physics of magnetically confined plasmas}, + author = {Boozer, Allen H.}, + journal = {Rev. Mod. Phys.}, + volume = {76}, + issue = {4}, + pages = {1071--1141}, + numpages = {0}, + year = {2005}, + month = {Jan}, + publisher = {American Physical Society}, + doi = {10.1103/RevModPhys.76.1071}, + url = {https://link.aps.org/doi/10.1103/RevModPhys.76.1071} +} +@phdthesis{Park2009Ideal, + author = {Park, Jong-Kyu}, + title = {Ideal Perturbed Equilibria in Tokamaks}, + school = {Princeton University}, + year = {2009}, + month = {June}, + address = {Princeton, NJ}, + note = {Advisers: Jonathan E. Menard and Allen H. Boozer}, + department = {Department of Astrophysical Sciences, Program in Plasma Physics} +} +@incollection{Bernstein1983, + author = {Bernstein, I. B.}, + title = {Basic Plasma Physics I}, + booktitle = {Handbook of Plasma Physics, Volume 1}, + editor = {A. A. Galeev and R. N. Sudan}, + publisher = {North-Holland}, + address = {Amsterdam}, + year = {1983}, + pages = {421} +} +@article{10.1063/1.4958328, + author = {Glasser, A. H.}, + title = {The direct criterion of Newcomb for the ideal MHD stability of an axisymmetric toroidal plasma}, + journal = {Physics of Plasmas}, + volume = {23}, + number = {7}, + pages = {072505}, + year = {2016}, + month = {07}, + abstract = {A method is presented for determining the ideal magnetohydrodynamic stability of an axisymmetric toroidal plasma, based on a toroidal generalization of the method developed by Newcomb for fixed-boundary modes in a cylindrical plasma. For toroidal mode number n≠0, the stability problem is reduced to the numerical integration of a high-order complex system of ordinary differential equations, the Euler-Lagrange equation for extremizing the potential energy, for the coupled amplitudes of poloidal harmonics m as a function of the radial coordinate ψ in a straight-fieldline flux coordinate system. Unlike the cylindrical case, different poloidal harmonics couple to each other, which introduces coupling between adjacent singular intervals. A boundary condition is used at each singular surface, where m = nq and q(ψ) is the safety factor, to cross the singular surface and continue the solutions beyond it. Fixed-boundary instability is indicated by the vanishing of a real determinant of a Hermitian complex matrix constructed from the fundamental matrix of solutions, the generalization of Newcomb's crossing criterion. In the absence of fixed-boundary instabilities, an M × M plasma response matrix WP, with M the number of poloidal harmonics used, is constructed from the Euler-Lagrange solutions at the plasma-vacuum boundary. This is added to a vacuum response matrix WV to form a total response matrix WT. The existence of negative eigenvalues of WT indicates the presence of free-boundary instabilities. The method is implemented in the fast and accurate DCON code.}, + issn = {1070-664X}, + doi = {10.1063/1.4958328}, + url = {https://doi.org/10.1063/1.4958328}, + eprint = {https://pubs.aip.org/aip/pop/article-pdf/doi/10.1063/1.4958328/14131506/072505_1_online.pdf}, +} + + From af7bb2a6a83b2a536f9b80611f5d03567fb94a9c Mon Sep 17 00:00:00 2001 From: satelite2517 Date: Wed, 18 Mar 2026 14:57:22 +0900 Subject: [PATCH 05/62] GPEC - WIP - modify shear calculation and add some C value calculation logic (cherry picked from commit cc25b1779f73e6b47a8e8a0121c27f91181dde7e) --- gpec/gpeq.f | 448 ++++++++++++++++++++++++++++++++++++------------ gpec/gpglobal.F | 25 ++- gpec/gpout.f | 335 +++++++++++++++++++++++++++++++++--- 3 files changed, 662 insertions(+), 146 deletions(-) diff --git a/gpec/gpeq.f b/gpec/gpeq.f index 30ecc0f8c..dc89d7d94 100644 --- a/gpec/gpeq.f +++ b/gpec/gpeq.f @@ -645,26 +645,10 @@ SUBROUTINE gpeq_surface(psi) RETURN END SUBROUTINE gpeq_surface c----------------------------------------------------------------------- -c subprogram 9. gpeq_epf. +c subprogram 9. gpeq_c. c compute C vector (covariant + contravariant) for EPF calculation. -c -c Stores mode-space coefficients for all psi levels: -c C_psi_mn(mpert, 0:mpsi) - covariant psi component -c C_theta_mn(mpert, 0:mpsi) - covariant theta component -c C_zeta_mn(mpert, 0:mpsi) - covariant zeta component -c C1_mn(mpert, 0:mpsi) - contravariant scalar C_1 -c C2_mn(mpert, 0:mpsi) - contravariant scalar C_2 -c C3_mn(mpert, 0:mpsi) - contravariant scalar C_3 -c -c INPUT: psi (flux coordinate) -c ipsi (psi index for storage) -c -c REFERENCES: -c - Q = ξ × (∇ × B) in energy principle -c - C = Q + ξ·n̂ (μ₀ j × n̂) where n̂ = ∇ψ/|∇ψ| -c - Formulas from main.tex section "Reconstruction v1" c----------------------------------------------------------------------- - SUBROUTINE gpeq_epf(psi, ipsi) + SUBROUTINE gpeq_c(psi, ipsi) c----------------------------------------------------------------------- c declaration. c----------------------------------------------------------------------- @@ -674,27 +658,33 @@ SUBROUTINE gpeq_epf(psi, ipsi) INTEGER :: itheta, ipert, jpert, m, m1, dm REAL(r8) :: q, q1, f1raw, p1, chi1, jac, delpsi - REAL(r8) :: eta, rfac + REAL(r8) :: eta, rfac, singfac REAL(r8), DIMENSION(0:mthsurf) :: jacs, dphi, r_vec, z_vec -c Metric tensor (COMPLEX - see gpeq_cova) + COMPLEX(r8), DIMENSION(-mband:mband) :: g11, g12, g22, g23, $ g31, g33 -c Eigenfunction components in spatial representation - COMPLEX(r8), DIMENSION(0:mthsurf) :: xi_psi_fun, xi_s_fun, - $ xwp_fun, xmt_fun + COMPLEX(r8), DIMENSION(0:mthsurf) :: xi_psi_fun + COMPLEX(r8), DIMENSION(0:mthsurf) :: bwp_fun, bwt_fun, + $ bwz_fun, bvp_fun, bvt_fun, bvz_fun, + $ cvp_fun_p, cvt_fun_p, cvz_fun_p, xno_fun -c C vector components (covariant) in spatial rep - COMPLEX(r8), DIMENSION(0:mthsurf) :: C_psi_fun, C_theta_fun, - $ C_zeta_fun, C1_fun, C2_fun, C3_fun +c Supporting variables for Fourier reconstruction + REAL(r8) :: jwt, jwz c Supporting functions - REAL(r8), DIMENSION(0:mthsurf) :: delpsi_arr + REAL(r8), DIMENSION(0:mthsurf) :: delpsi_arr, dpdt_arr, dpdz_arr + +c Local temporal arrays for computation + COMPLEX(r8), DIMENSION(0:mthsurf) :: qwp_tmp, qwt_tmp, qwz_tmp + COMPLEX(r8), DIMENSION(0:mthsurf) :: qvp_tmp, qvt_tmp, qvz_tmp + COMPLEX(r8), DIMENSION(0:mthsurf) :: cwp_tmp, cwt_tmp, cwz_tmp + COMPLEX(r8), DIMENSION(0:mthsurf) :: cvp_tmp, cvt_tmp, cvz_tmp IF(debug_flag) PRINT *, "Entering gpeq_epf at ipsi=", ipsi c----------------------------------------------------------------------- -c 0) Setup: evaluate equilibrium data at this psi. +c 1) Setup: equilibrium and metric at this psi. c----------------------------------------------------------------------- CALL spline_eval(sq, psi, 1) q = sq%f(4) @@ -702,8 +692,7 @@ SUBROUTINE gpeq_epf(psi, ipsi) f1raw = sq%f1(1) p1 = sq%f1(2) chi1 = psio * twopi - -c Get metric tensor (same as gpeq_cova) + CALL cspline_eval(metric%cs, psi, 0) g11(0:-mband:-1) = metric%cs%f(1:mband+1) g22(0:-mband:-1) = metric%cs%f(2*mband+2:3*mband+2) @@ -711,17 +700,28 @@ SUBROUTINE gpeq_epf(psi, ipsi) g23(0:-mband:-1) = metric%cs%f(3*mband+4:4*mband+4) g31(0:-mband:-1) = metric%cs%f(4*mband+5:5*mband+5) g12(0:-mband:-1) = metric%cs%f(5*mband+6:6*mband+6) - -c Fill upper half of metric arrays (conjugate symmetry) + g11(1:mband) = CONJG(g11(-1:-mband:-1)) g22(1:mband) = CONJG(g22(-1:-mband:-1)) g33(1:mband) = CONJG(g33(-1:-mband:-1)) g23(1:mband) = CONJG(g23(-1:-mband:-1)) g31(1:mband) = CONJG(g31(-1:-mband:-1)) g12(1:mband) = CONJG(g12(-1:-mband:-1)) +c----------------------------------------------------------------------- +c 3) Reconstruct eigenfunctions in spatial representation. +c----------------------------------------------------------------------- + CALL iscdftb(mfac, mpert, xi_psi_fun, mthsurf, xsp_mn) + CALL iscdftb(mfac, mpert, bwp_fun, mthsurf, bwp_mn) + CALL iscdftb(mfac, mpert, bwt_fun, mthsurf, bwt_mn) + CALL iscdftb(mfac, mpert, bwz_fun, mthsurf, bwz_mn) + + CALL iscdftb(mfac,mpert,bvp_fun,mthsurf,bvp_mn) + CALL iscdftb(mfac,mpert,bvt_fun,mthsurf,bvt_mn) + CALL iscdftb(mfac,mpert,bvz_fun,mthsurf,bvz_mn) + CALL iscdftb(mfac,mpert,xno_fun,mthsurf,xno_mn) c----------------------------------------------------------------------- -c 1) Compute theta grid: |∇ψ|² and coordinate values. +c 4) Extract contravariant components: divide by jacobian. c----------------------------------------------------------------------- DO itheta = 0, mthsurf CALL bicube_eval(rzphi, psi, theta(itheta), 1) @@ -732,56 +732,192 @@ SUBROUTINE gpeq_epf(psi, ipsi) z_vec(itheta) = zo + rfac*SIN(eta) jacs(itheta) = jac dphi(itheta) = rzphi%f(3) - -c Compute |∇ψ|² from contravariant metric + delpsi_arr(itheta) = SQRT(w(1,1)**2 + w(1,2)**2) + w(1,1) = (1.0_r8 + rzphi%fy(2))*twopi**2*rfac*r_vec(itheta) $ /jac w(1,2) = -rzphi%fy(1)*pi*r_vec(itheta)/(rfac*jac) - delpsi_arr(itheta) = SQRT(w(1,1)**2 + w(1,2)**2) - ENDDO + + w(2,1) = -twopi**2*rfac*r_vec(itheta)*rzphi%fx(2)/jac + w(2,2) = pi*r_vec(itheta)*rzphi%fx(1)/(rfac*jac) + + w(3,1) = (twopi*r_vec(itheta)*rfac/jac)* + $ (rzphi%fx(2)*rzphi%fy(3)-rzphi%fx(3)*(1+rzphi%fy(2))) + w(3,2) = (r_vec(itheta)/(2*rfac*jac))* + $ (rzphi%fx(3)*rzphi%fy(1)-rzphi%fx(1)*rzphi%fy(3)) + dpdt_arr(itheta) = w(1,1)*w(2,1) + w(1,2)*w(2,2) + dpdz_arr(itheta) = w(1,1)*w(3,1) + w(1,2)*w(3,2) + + qwp_tmp(itheta) = bwp_fun(itheta) / CMPLX(jac, 0.0_r8, r8) + qwt_tmp(itheta) = bwt_fun(itheta) / CMPLX(jac, 0.0_r8, r8) + qwz_tmp(itheta) = bwz_fun(itheta) / CMPLX(jac, 0.0_r8, r8) + + qvp_tmp(itheta) = bvp_fun(itheta) + qvt_tmp(itheta) = bvt_fun(itheta) + qvz_tmp(itheta) = bvz_fun(itheta) + + ENDDO c----------------------------------------------------------------------- -c 2) Reconstruct eigenfunctions in spatial representation. -c Use iscdftb: mode-space coefficients → spatial functions +c 6) Apply physics method: add j × ξ term to covariant C. c----------------------------------------------------------------------- - CALL iscdftb(mfac, mpert, xi_psi_fun, mthsurf, xsp_mn) - CALL iscdftb(mfac, mpert, xi_s_fun, mthsurf, xss_mn) - CALL iscdftb(mfac, mpert, xwp_fun, mthsurf, xwp_mn) - CALL iscdftb(mfac, mpert, xmt_fun, mthsurf, xmt_mn) + DO itheta = 0, mthsurf + jac = jacs(itheta) + delpsi = delpsi_arr(itheta)**2 + jwt = - sq%f1(3) / jac + jwz = - sq%f1(2) / chi1 - sq%f1(3) * q / jac + + cwp_tmp(itheta) = qwp_tmp(itheta) + cwt_tmp(itheta) = qwt_tmp(itheta)+xno_fun(itheta)*jwz / delpsi + cwz_tmp(itheta) = qwz_tmp(itheta)-xno_fun(itheta)*jwt / delpsi + + cvp_fun_p(itheta) = qvp_tmp(itheta)+ jac*xno_fun(itheta)/delpsi + $ * (jwt*(dpdz_arr(itheta)) + jwz*(dpdt_arr(itheta))) + cvt_fun_p(itheta) = qvt_tmp(itheta)+ jac*xi_psi_fun(itheta)*jwz + cvz_fun_p(itheta) = qvz_tmp(itheta)- jac*xi_psi_fun(itheta)*jwt + ENDDO c----------------------------------------------------------------------- -c 3) Construct C vectors in spatial representation. -c For now: simplified version using existing eigenfunctions. -c Full version would include current coupling terms. +c 7) Metric contraction: C covariant = g_ij * C contravariant. c----------------------------------------------------------------------- DO itheta = 0, mthsurf - C_psi_fun(itheta) = xwp_fun(itheta) - C_theta_fun(itheta) = xmt_fun(itheta) - C_zeta_fun(itheta) = CMPLX(0.0_r8, 0.0_r8, r8) - -c Contravariant representation (same as covariant for now) - C1_fun(itheta) = C_psi_fun(itheta) - C2_fun(itheta) = C_theta_fun(itheta) - C3_fun(itheta) = C_zeta_fun(itheta) + cvp_tmp(itheta) = g11(0)*cwp_tmp(itheta) + + $ g12(0)*cwt_tmp(itheta) + g31(0)*cwz_tmp(itheta) + cvt_tmp(itheta) = g12(0)*cwp_tmp(itheta) + + $ g22(0)*cwt_tmp(itheta) + g23(0)*cwz_tmp(itheta) + cvz_tmp(itheta) = g31(0)*cwp_tmp(itheta) + + $ g23(0)*cwt_tmp(itheta) + g33(0)*cwz_tmp(itheta) ENDDO +c----------------------------------------------------------------------- +c 8) Store results to global arrays (spatial and mode space). +c----------------------------------------------------------------------- + cwp_fun(0:mthsurf, ipsi) = cwp_tmp(0:mthsurf) + cwt_fun(0:mthsurf, ipsi) = cwt_tmp(0:mthsurf) + cwz_fun(0:mthsurf, ipsi) = cwz_tmp(0:mthsurf) + + cvp_fun(0:mthsurf, ipsi) = cvp_tmp(0:mthsurf) + cvt_fun(0:mthsurf, ipsi) = cvt_tmp(0:mthsurf) + cvz_fun(0:mthsurf, ipsi) = cvz_tmp(0:mthsurf) + + cvp_funp(0:mthsurf, ipsi) = cvp_fun_p(0:mthsurf) + cvt_funp(0:mthsurf, ipsi) = cvt_fun_p(0:mthsurf) + cvz_funp(0:mthsurf, ipsi) = cvz_fun_p(0:mthsurf) + + qwp_fun(0:mthsurf, ipsi) = qwp_tmp(0:mthsurf) + qwt_fun(0:mthsurf, ipsi) = qwt_tmp(0:mthsurf) + qwz_fun(0:mthsurf, ipsi) = qwz_tmp(0:mthsurf) + + qvp_fun(0:mthsurf, ipsi) = qvp_tmp(0:mthsurf) + qvt_fun(0:mthsurf, ipsi) = qvt_tmp(0:mthsurf) + qvz_fun(0:mthsurf, ipsi) = qvz_tmp(0:mthsurf) + + + CALL iscdftf(mfac, mpert, cwp_tmp, mthsurf, + $ cwp_mn(1:mpert, ipsi)) + CALL iscdftf(mfac, mpert, cwt_tmp, mthsurf, + $ cwt_mn(1:mpert, ipsi)) + CALL iscdftf(mfac, mpert, cwz_tmp, mthsurf, + $ cwz_mn(1:mpert, ipsi)) + CALL iscdftf(mfac, mpert, cvp_fun_p, mthsurf, + $ cvp_mn(1:mpert, ipsi)) + CALL iscdftf(mfac, mpert, cvt_fun_p, mthsurf, + $ cvt_mn(1:mpert, ipsi)) + CALL iscdftf(mfac, mpert, cvz_fun_p, mthsurf, + $ cvz_mn(1:mpert, ipsi)) + CALL iscdftf(mfac, mpert, qwp_tmp, mthsurf, + $ qwp_mn(1:mpert, ipsi)) + CALL iscdftf(mfac, mpert, qwt_tmp, mthsurf, + $ qwt_mn(1:mpert, ipsi)) + CALL iscdftf(mfac, mpert, qwz_tmp, mthsurf, + $ qwz_mn(1:mpert, ipsi)) + CALL iscdftf(mfac, mpert, qvp_tmp, mthsurf, + $ qvp_mn(1:mpert, ipsi)) + CALL iscdftf(mfac, mpert, qvt_tmp, mthsurf, + $ qvt_mn(1:mpert, ipsi)) + CALL iscdftf(mfac, mpert, qvz_tmp, mthsurf, + $ qvz_mn(1:mpert, ipsi)) + + IF(debug_flag) PRINT *, "->Leaving gpeq_c at ipsi=", ipsi +c----------------------------------------------------------------------- +c terminate. +c----------------------------------------------------------------------- + RETURN + END SUBROUTINE gpeq_c +c----------------------------------------------------------------------- +c subprogram 9b. gpeq_epf. +c compute C norm squared: three forms (cw only, cv only, mixed). +c----------------------------------------------------------------------- + SUBROUTINE gpeq_epf(psi, ipsi) +c----------------------------------------------------------------------- +c declaration. +c----------------------------------------------------------------------- + REAL(r8), INTENT(IN) :: psi + INTEGER, INTENT(IN) :: ipsi + + INTEGER :: itheta + + COMPLEX(r8), DIMENSION(0:mthsurf) :: cwp_tmp, cwt_tmp, cwz_tmp + COMPLEX(r8), DIMENSION(0:mthsurf) :: cvp_tmp, cvt_tmp, cvz_tmp + + COMPLEX(r8), DIMENSION(0:mthsurf) :: c2_cw_tmp,c2_cv_tmp, + $ c2_cvw_tmp + + IF(debug_flag) PRINT *, "Entering gpeq_epf at ipsi=", ipsi +c----------------------------------------------------------------------- +c Call gpeq_c to compute C components first. +c----------------------------------------------------------------------- + CALL gpeq_c(psi, ipsi) + +c----------------------------------------------------------------------- +c Extract C components from global storage. +c----------------------------------------------------------------------- + cwp_tmp(0:mthsurf) = cwp_fun(0:mthsurf, ipsi) + cwt_tmp(0:mthsurf) = cwt_fun(0:mthsurf, ipsi) + cwz_tmp(0:mthsurf) = cwz_fun(0:mthsurf, ipsi) + + cvp_tmp(0:mthsurf) = cvp_fun(0:mthsurf, ipsi) + cvt_tmp(0:mthsurf) = cvt_fun(0:mthsurf, ipsi) + cvz_tmp(0:mthsurf) = cvz_fun(0:mthsurf, ipsi) c----------------------------------------------------------------------- -c 4) Fourier transform C components to mode-space and store. -c Use iscdftf: spatial functions → mode-space coefficients -c----------------------------------------------------------------------- - CALL iscdftf(mfac, mpert, C_psi_fun, mthsurf, - $ C_psi_mn(1:mpert, ipsi)) - CALL iscdftf(mfac, mpert, C_theta_fun, mthsurf, - $ C_theta_mn(1:mpert, ipsi)) - CALL iscdftf(mfac, mpert, C_zeta_fun, mthsurf, - $ C_zeta_mn(1:mpert, ipsi)) - CALL iscdftf(mfac, mpert, C1_fun, mthsurf, - $ C1_mn(1:mpert, ipsi)) - CALL iscdftf(mfac, mpert, C2_fun, mthsurf, - $ C2_mn(1:mpert, ipsi)) - CALL iscdftf(mfac, mpert, C3_fun, mthsurf, - $ C3_mn(1:mpert, ipsi)) +c 1) C^2 from contravariant components only. +c Note: |C^i|^2 = C^i C^i (no metric needed for this form) +c----------------------------------------------------------------------- + DO itheta = 0, mthsurf + c2_cw_tmp(itheta) = cwp_tmp(itheta)*cwp_tmp(itheta)+ + $ cwt_tmp(itheta)*cwt_tmp(itheta)+ + $ cwz_tmp(itheta)*cwz_tmp(itheta) + ENDDO + +c----------------------------------------------------------------------- +c 2) C^2 from covariant components only. +c Note: |C_i|^2 = C_i C_i (metric already included in cvp_tmp) +c----------------------------------------------------------------------- + DO itheta = 0, mthsurf + c2_cv_tmp(itheta) = cvp_tmp(itheta)*cvp_tmp(itheta)+ + $ cvt_tmp(itheta)*cvt_tmp(itheta)+ + $ cvz_tmp(itheta)*cvz_tmp(itheta) + ENDDO +c----------------------------------------------------------------------- +c 3) C^2 using both covariant and contravariant. +c Note: C_i C^i = CONJG(cvp) * cwp + CONJG(cvt) * cwt + ... +c----------------------------------------------------------------------- + DO itheta = 0, mthsurf + c2_cvw_tmp(itheta) = CONJG(cvp_tmp(itheta))* + $ cwp_tmp(itheta)+CONJG(cvt_tmp(itheta))*cwt_tmp(itheta)+ + $ CONJG(cvz_tmp(itheta))*cwz_tmp(itheta) + ENDDO + +c----------------------------------------------------------------------- +c Store results to global arrays. +c----------------------------------------------------------------------- + IF (ipsi <= mpsi) THEN + c2_cw_fun(0:mthsurf, ipsi) = c2_cw_tmp(0:mthsurf) + c2_cv_fun(0:mthsurf, ipsi) = c2_cv_tmp(0:mthsurf) + c2_cvw_fun(0:mthsurf, ipsi) = c2_cvw_tmp(0:mthsurf) + ENDIF + IF(debug_flag) PRINT *, "->Leaving gpeq_epf at ipsi=", ipsi c----------------------------------------------------------------------- c terminate. @@ -790,11 +926,27 @@ SUBROUTINE gpeq_epf(psi, ipsi) END SUBROUTINE gpeq_epf c----------------------------------------------------------------------- c subprogram 10. gpeq_dst. -c compute DST mode coefficients and spatial functions. +c compute DST(psi,theta) = K(psi,theta) * CONJG(xi_normal(psi,theta)). +c Store both theta-space and mode-space for later integration. c----------------------------------------------------------------------- SUBROUTINE gpeq_dst(psi, ipsi) REAL(r8), INTENT(IN) :: psi INTEGER, INTENT(IN) :: ipsi + COMPLEX(r8), DIMENSION(mpert) :: K_mn + COMPLEX(r8), DIMENSION(0:mthsurf) :: K_fun, xi_normal_fun, + $ dst_theta_fun + +c----------------------------------------------------------------------- +c DST(psi,theta) = K(psi,theta) * CONJG(xi_normal(psi,theta)) +c Store both theta-space and mode-space for later integration. +c----------------------------------------------------------------------- + CALL gpeq_K(psi, K_mn, K_fun) + CALL iscdftb(mfac, mpert, xi_normal_fun, mthsurf, xsp_mn) + dst_theta_fun = K_fun * CONJG(xi_normal_fun) + + DST_fun(0:mthsurf, ipsi) = dst_theta_fun + CALL iscdftf(mfac, mpert, dst_theta_fun, mthsurf, + $ DST_mn(1:mpert, ipsi)) c----------------------------------------------------------------------- c terminate. c----------------------------------------------------------------------- @@ -802,55 +954,123 @@ SUBROUTINE gpeq_dst(psi, ipsi) END SUBROUTINE gpeq_dst c----------------------------------------------------------------------- c subprogram 11. gpeq_shear. -c compute magnetic shear mode coefficients and spatial functions. +c compute magnetic shear at a single psi level. +c approach: compute spatial domain first (theta), then FFT to mode space. c----------------------------------------------------------------------- - SUBROUTINE gpeq_shear(psi, shear_mn, shear_fun) + SUBROUTINE gpeq_shear(psi, shear_fun) REAL(r8), INTENT(IN) :: psi - COMPLEX(r8), DIMENSION(mpert), INTENT(OUT) :: shear_mn - COMPLEX(r8), DIMENSION(0:mthsurf), OPTIONAL, INTENT(OUT) - $ :: shear_fun + COMPLEX(r8), DIMENSION(0:mthsurf), INTENT(OUT) :: shear_fun - INTEGER :: itheta, ipert, jpert, dm, m1 - REAL(r8) :: q, q1, eta, r, rfac - REAL(r8), DIMENSION(0:mthsurf) :: theta_vals - COMPLEX(r8), DIMENSION(-mband:mband) :: jmat, jmat1 - COMPLEX(r8), DIMENSION(0:mthsurf) :: shear_theta_fun - + INTEGER :: itheta + REAL(r8) :: q, q1, jac, rfac, eta, r_val, theta_val + REAL(r8) :: w11, w12, w21, w22, w31, w32 + REAL(r8) :: v11, v12, v13, v21, v22, v23, v33 + REAL(r8) :: dpdp, dpdt, dpdz, shear_deriv + REAL(r8) :: shear_contra, shear_cova, diff_shear + TYPE(spline_type) :: shear_temp + +c----------------------------------------------------------------------- +c Setup: get equilibrium at this psi. +c----------------------------------------------------------------------- CALL spline_eval(sq, psi, 1) q = sq%f(4) q1 = sq%f1(4) - CALL cspline_eval(metric%cs, psi, 0) - - jmat(0:-mband:-1) = metric%cs%f(6*mband+7:7*mband+7) - jmat1(0:-mband:-1) = metric%cs%f(7*mband+8:8*mband+8) - jmat(1:mband) = CONJG(jmat(-1:-mband:-1)) - jmat1(1:mband) = CONJG(jmat1(-1:-mband:-1)) - + c----------------------------------------------------------------------- -c compute shear in mode space from metric tensors and solutions. +c Allocate spline for shear_temp with 5 components: +c 1: covariant numerator term +c 2: (q*dpdt - dpdz) numerator +c 3: g_psi_g_psi denominator +c 4: contravariant denominator (v21^2 + v22^2)*r^2 +c 5: covariant shear (component 1 / component 4) c----------------------------------------------------------------------- - ipert = 0 - shear_mn = 0.0_r8 - DO m1 = mlow, mhigh - ipert = ipert + 1 - DO dm = MAX(1-ipert, -mband), MIN(mpert-ipert, mband) - jpert = ipert + dm - shear_mn(ipert) = shear_mn(ipert) - $ + (twopi**2/jac) * (q1 - $ + (jmat(dm)*xwp_mn(jpert) - q*jmat1(dm)*xwp_mn(jpert))/ - $ q) - ENDDO + CALL spline_alloc(shear_temp, mthsurf, 5) + shear_temp%xs = theta(0:mthsurf) + shear_temp%name = "shear_temp" + +c----------------------------------------------------------------------- +c Step 1: Compute shear components at all theta points. +c----------------------------------------------------------------------- + DO itheta = 0, mthsurf + theta_val = theta(itheta) + CALL bicube_eval(rzphi, psi, theta(itheta), 1) + + jac = rzphi%f(4) + rfac = SQRT(MAX(rzphi%f(1), 0.0_r8)) + eta = twopi*(theta_val + rzphi%f(2)) + r_val = ro + rfac*COS(eta) + + +c Compute w_ij contravariant metric in Cartesian components + w11 = (1.0_r8 + rzphi%fy(2))*twopi**2*rfac*r_val/jac + w12 = -rzphi%fy(1)*pi*r_val/(rfac*jac) + + w21 = -twopi**2*rfac*r_val*rzphi%fx(2)/jac + w22 = pi*r_val*rzphi%fx(1)/(rfac*jac) + + w31 = (twopi*r_val*rfac/jac)* + $ (rzphi%fx(2)*rzphi%fy(3) - rzphi%fx(3)*(1.0_r8 + + $ rzphi%fy(2))) + w32 = (r_val/(2.0_r8*rfac*jac))* + $ (rzphi%fx(3)*rzphi%fy(1) - rzphi%fx(1)*rzphi%fy(3)) + +c Compute covariant basis v_ij = ∂r/∂ξ_j (Cartesian components) +c From recon_metric: + v11 = rzphi%fx(1)/(2.0_r8*rfac*jac) + v12 = rzphi%fx(2)*twopi*rfac/jac + v13 = rzphi%fx(3)*r_val/jac + + v21 = rzphi%fy(1)/(2.0_r8*rfac*jac) + v22 = (1.0_r8 + rzphi%fy(2))*twopi*rfac/jac + v23 = rzphi%fy(3)*r_val/jac + +c Component 33 of covariant basis + v33 = twopi*r_val/jac + +c Contravariant dot products: dpdp = ∇ψ·∇ψ, etc. + dpdp = w11**2 + w12**2 + dpdt = w11*w21 + w12*w22 + dpdz = w11*w31 + w12*w32 + + shear_temp%fs(itheta, 1) = twopi*r_val*jac* + $ (-(v11*v21+v12*v22)*(v23+q*v33)+v13*(v21**2+v22**2)) + shear_temp%fs(itheta, 2) = (q*dpdt - dpdz) + shear_temp%fs(itheta, 3) = dpdp + shear_temp%fs(itheta, 4) = + $ twopi**2 * r_val**2 * (v21**2 + v22**2) + + + shear_temp%fs(itheta, 5) = + $ shear_temp%fs(itheta, 1) / shear_temp%fs(itheta, 4) + ENDDO - c----------------------------------------------------------------------- -c convert to spatial functions if requested. +c Step 2: Fit spline to compute derivatives. +c----------------------------------------------------------------------- + CALL spline_fit(shear_temp, "periodic") +c----------------------------------------------------------------------- +c Step 3: Compute shear_fun = (2π²/J)*(q' + ∂shear_temp/∂θ) +c Compare covariant and contravariant approaches. +c----------------------------------------------------------------------- + DO itheta = 0, mthsurf + theta_val = theta(itheta) + + CALL spline_eval(shear_temp, theta_val, 1) + CALL bicube_eval(rzphi, psi, theta_val, 1) + jac = rzphi%f(4) + +c Contravariant approach: derivative of component 5 + shear_deriv = shear_temp%f1(5) + shear_contra = (twopi**2/jac)*(q1 + shear_deriv) + shear_fun(itheta) = CMPLX(shear_contra, 0.0_r8, r8) + + ENDDO + +c----------------------------------------------------------------------- +c Step 4: Transform to mode space via FFT. +c----------------------------------------------------------------------- + CALL spline_dealloc(shear_temp) c----------------------------------------------------------------------- - IF (PRESENT(shear_fun)) THEN - CALL iscdftb(mfac, mpert, shear_theta_fun, mthsurf, - $ shear_mn) - shear_fun = shear_theta_fun - ENDIF - RETURN END SUBROUTINE gpeq_shear c----------------------------------------------------------------------- @@ -887,9 +1107,9 @@ SUBROUTINE gpeq_curvature(psi, curv_mn, curv_fun) c compute covariant components needed for curvature. c----------------------------------------------------------------------- ipert = 0 - bvt_local = 0.0_r8 - bvz_local = 0.0_r8 - curv_mn = 0.0_r8 + bvt_local = CMPLX(0.0_r8, 0.0_r8, r8) + bvz_local = CMPLX(0.0_r8, 0.0_r8, r8) + curv_mn = CMPLX(0.0_r8, 0.0_r8, r8) DO m1 = mlow, mhigh ipert = ipert + 1 DO dm = MAX(1-ipert, -mband), MIN(mpert-ipert, mband) @@ -929,7 +1149,7 @@ SUBROUTINE gpeq_K(psi, K_mn, K_fun) COMPLEX(r8), DIMENSION(-mband:mband) :: g22, g33, g23 COMPLEX(r8), DIMENSION(0:mthsurf) :: K_theta_fun COMPLEX(r8), DIMENSION(mpert) :: bvt_local, bvz_local - COMPLEX(r8), DIMENSION(mpert) :: sigma_mn, shear_mn + COMPLEX(r8), DIMENSION(mpert) :: sigma_mn chi1 = psio * twopi @@ -953,7 +1173,7 @@ SUBROUTINE gpeq_K(psi, K_mn, K_fun) c compute K-related quantities in mode space. c----------------------------------------------------------------------- ipert = 0 - K_mn = 0.0_r8 + K_mn = CMPLX(0.0_r8, 0.0_r8, r8) DO m1 = mlow, mhigh ipert = ipert + 1 DO dm = MAX(1-ipert, -mband), MIN(mpert-ipert, mband) @@ -998,7 +1218,7 @@ SUBROUTINE gpeq_terms(psi, mode, xspmn, term_mn, term_fun) c placeholder: compute integration terms. c full implementation depends on integration methodology. c----------------------------------------------------------------------- - term_mn = 0.0_r8 + term_mn = CMPLX(0.0_r8, 0.0_r8, r8) c----------------------------------------------------------------------- c convert to spatial functions if requested. diff --git a/gpec/gpglobal.F b/gpec/gpglobal.F index 79411e0da..52c7ee1d6 100644 --- a/gpec/gpglobal.F +++ b/gpec/gpglobal.F @@ -73,8 +73,15 @@ MODULE gpglobal_mod $ xrr_mn,xrz_mn,xrp_mn,brr_mn,brz_mn,brp_mn, $ chi_mn,che_mn,kax_mn,sbno_mn,sbno_fun,edge_mn,edge_fun, $ chy_mn,chx_mn,chw_mn,kaw_mn,mutual_indev,mutual_indinvev - COMPLEX(r8), DIMENSION(:,:), ALLOCATABLE :: C_psi_mn,C_theta_mn, - $ C_zeta_mn,C1_mn,C2_mn,C3_mn + COMPLEX(r8), DIMENSION(:,:), ALLOCATABLE :: cwp_mn,cwt_mn, + $ cwz_mn, cvp_mn,cvt_mn,cvz_mn, + $ qvp_mn,qvt_mn, qvz_mn, qwp_mn,qwt_mn,qwz_mn, + $ c2_cvw_mn,c2_cw_mn, c2_cv_mn + COMPLEX(r8), DIMENSION(:,:), ALLOCATABLE :: cwp_fun,cwt_fun, + $ cwz_fun,cvp_fun,cvt_fun,cvz_fun,cvp_funp,cvt_funp,cvz_funp, + $ qvp_fun,qvt_fun,qvz_fun,qwp_fun,qwt_fun,qwz_fun,c2_cw_fun, + $ c2_cv_fun,c2_cvw_fun + COMPLEX(r8), DIMENSION(:,:), ALLOCATABLE :: DST_mn,DST_fun COMPLEX(r8), DIMENSION(:,:), ALLOCATABLE :: wt,wt0,chp_mn,kap_mn, $ permeabev,chimats,chemats,flxmats,kaxmats,singbno_mn, $ plas_indev,plas_indinvev,reluctev,indrelev,permeabsv, @@ -157,12 +164,14 @@ SUBROUTINE gpec_dealloc $ plas_indevmats,permeabevmats,chxmats,chwmats, $ mutual_indmats,mutual_indevmats,mutual_indinvmats, $ mutual_indinvevmats) - IF(ALLOCATED(C_psi_mn)) DEALLOCATE(C_psi_mn) - IF(ALLOCATED(C_theta_mn)) DEALLOCATE(C_theta_mn) - IF(ALLOCATED(C_zeta_mn)) DEALLOCATE(C_zeta_mn) - IF(ALLOCATED(C1_mn)) DEALLOCATE(C1_mn) - IF(ALLOCATED(C2_mn)) DEALLOCATE(C2_mn) - IF(ALLOCATED(C3_mn)) DEALLOCATE(C3_mn) + IF(ALLOCATED(cwp_mn)) DEALLOCATE(cwp_mn) + IF(ALLOCATED(cwt_mn)) DEALLOCATE(cwt_mn) + IF(ALLOCATED(cwz_mn)) DEALLOCATE(cwz_mn) + IF(ALLOCATED(cvp_mn)) DEALLOCATE(cvp_mn) + IF(ALLOCATED(cvt_mn)) DEALLOCATE(cvt_mn) + IF(ALLOCATED(cvz_mn)) DEALLOCATE(cvz_mn) + IF(ALLOCATED(DST_mn)) DEALLOCATE(DST_mn) + IF(ALLOCATED(DST_fun)) DEALLOCATE(DST_fun) CALL spline_dealloc(sq) CALL bicube_dealloc(eqfun) diff --git a/gpec/gpout.f b/gpec/gpout.f index aca9f7ba1..6843924bf 100644 --- a/gpec/gpout.f +++ b/gpec/gpout.f @@ -6877,11 +6877,31 @@ SUBROUTINE gpout_recon(mode, xspmn) INTEGER, INTENT(IN) :: mode COMPLEX(r8), DIMENSION(:), INTENT(IN) :: xspmn - INTEGER :: ipsi - REAL(r8) :: psi - COMPLEX(r8), DIMENSION(mpert) :: shear_mn, curv_mn, K_mn, + INTEGER :: ipsi, itheta, ipert, ushear_fun, ucurv, uk, + $ ucov, ucontra_phy, ucontra_met, uQv, uQw, uc2cw, uc2cv, + $ uc2cvw + REAL(r8) :: psi, eta, rfac + REAL(r8), DIMENSION(0:mthsurf) :: rvals, zvals + COMPLEX(r8), DIMENSION(mpert) :: curv_mn, K_mn, $ term_mn COMPLEX(r8), DIMENSION(0:mthsurf) :: shear_fun, curv_fun, K_fun + CHARACTER(8) :: smode + CHARACTER(128) :: shear_fun_file, curv_file + CHARACTER(128) :: k_file, c2cw_file, c2cv_file, c2cvw_file + CHARACTER(128) :: ccov_file, ccontra_phy_file, ccontra_met_file + CHARACTER(128) :: qv_file, qw_file + +c Diagnostic variables for C vector comparison + INTEGER :: ipsi_mid, itheta_mid, ipert_diag, m1 + REAL(r8) :: psi_mid, theta_mid, delpsi_sq, jac_mid, q_mid, + $ q1_mid, chi1_mid, f1_mid, p1_mid, j_theta_coef, j_zeta_coef + COMPLEX(r8) :: C1_phys, C2_phys, C3_phys, C1_metr, C2_metr, + $ C3_metr, term_exp, j_cross_factor, xi_psi_val + COMPLEX(r8) :: C_psi_val, C_theta_val, C_zeta_val + COMPLEX(r8), DIMENSION(-mband:mband) :: g11_diag, g12_diag, + $ g22_diag, g23_diag, g31_diag, g33_diag + REAL(r8), DIMENSION(10,10) :: w + REAL(r8) :: g11_r, g22_r, g33_r, g23_r, g31_r, g12_r IF(verbose) WRITE(*,*)"" IF(verbose) WRITE(*,*)"GPOUT_RECON: Starting reconstruction"// @@ -6892,19 +6912,86 @@ SUBROUTINE gpout_recon(mode, xspmn) c allocate C vector arrays for EPF calculation. c Storage: C_*_mn(mpert, 0:mpsi) for all psi levels. c----------------------------------------------------------------------- - IF (.NOT. ALLOCATED(C_psi_mn)) THEN - ALLOCATE(C_psi_mn(mpert, 0:mpsi)) - ALLOCATE(C_theta_mn(mpert, 0:mpsi)) - ALLOCATE(C_zeta_mn(mpert, 0:mpsi)) - ALLOCATE(C1_mn(mpert, 0:mpsi)) - ALLOCATE(C2_mn(mpert, 0:mpsi)) - ALLOCATE(C3_mn(mpert, 0:mpsi)) - C_psi_mn = 0.0_r8 - C_theta_mn = 0.0_r8 - C_zeta_mn = 0.0_r8 - C1_mn = 0.0_r8 - C2_mn = 0.0_r8 - C3_mn = 0.0_r8 + IF (.NOT. ALLOCATED(cwp_mn)) THEN + ALLOCATE(cwp_mn(mpert, 0:mpsi)) + ALLOCATE(cwt_mn(mpert, 0:mpsi)) + ALLOCATE(cwz_mn(mpert, 0:mpsi)) + cwp_mn = 0.0_r8 + cwt_mn = 0.0_r8 + cwz_mn = 0.0_r8 + ENDIF + IF (.NOT. ALLOCATED(DST_mn)) THEN + ALLOCATE(DST_mn(mpert, 0:mpsi)) + DST_mn = 0.0_r8 + ENDIF + IF (.NOT. ALLOCATED(DST_fun)) THEN + ALLOCATE(DST_fun(0:mthsurf, 0:mpsi)) + DST_fun = 0.0_r8 + ENDIF + +c Allocate C and Q vector spatial function arrays (theta, psi grid) + IF (.NOT. ALLOCATED(cwp_fun)) THEN + ALLOCATE(cwp_fun(0:mthsurf, 0:mpsi)) + ALLOCATE(cwt_fun(0:mthsurf, 0:mpsi)) + ALLOCATE(cwz_fun(0:mthsurf, 0:mpsi)) + ALLOCATE(cvp_fun(0:mthsurf, 0:mpsi)) + ALLOCATE(cvt_fun(0:mthsurf, 0:mpsi)) + ALLOCATE(cvz_fun(0:mthsurf, 0:mpsi)) + ALLOCATE(cvp_funp(0:mthsurf, 0:mpsi)) + ALLOCATE(cvt_funp(0:mthsurf, 0:mpsi)) + ALLOCATE(cvz_funp(0:mthsurf, 0:mpsi)) + ALLOCATE(c2_cw_fun(0:mthsurf, 0:mpsi)) + ALLOCATE(c2_cv_fun(0:mthsurf, 0:mpsi)) + ALLOCATE(c2_cvw_fun(0:mthsurf, 0:mpsi)) + + cwp_fun = 0.0_r8 + cwt_fun = 0.0_r8 + cwz_fun = 0.0_r8 + cvp_fun = 0.0_r8 + cvt_fun = 0.0_r8 + cvz_fun = 0.0_r8 + cvp_funp = 0.0_r8 + cvt_funp = 0.0_r8 + cvz_funp = 0.0_r8 + c2_cw_fun = 0.0_r8 + c2_cv_fun = 0.0_r8 + c2_cvw_fun = 0.0_r8 + ENDIF + + IF (.NOT. ALLOCATED(qvp_fun)) THEN + ALLOCATE(qvp_fun(0:mthsurf, 0:mpsi)) + ALLOCATE(qvt_fun(0:mthsurf, 0:mpsi)) + ALLOCATE(qvz_fun(0:mthsurf, 0:mpsi)) + ALLOCATE(qwp_fun(0:mthsurf, 0:mpsi)) + ALLOCATE(qwt_fun(0:mthsurf, 0:mpsi)) + ALLOCATE(qwz_fun(0:mthsurf, 0:mpsi)) + qvp_fun = 0.0_r8 + qvt_fun = 0.0_r8 + qvz_fun = 0.0_r8 + qwp_fun = 0.0_r8 + qwt_fun = 0.0_r8 + qwz_fun = 0.0_r8 + ENDIF + + IF (.NOT. ALLOCATED(qvp_mn)) THEN + ALLOCATE(qvp_mn(mpert, 0:mpsi)) + ALLOCATE(qvt_mn(mpert, 0:mpsi)) + ALLOCATE(qvz_mn(mpert, 0:mpsi)) + ALLOCATE(cvp_mn(mpert, 0:mpsi)) + ALLOCATE(cvt_mn(mpert, 0:mpsi)) + ALLOCATE(cvz_mn(mpert, 0:mpsi)) + ALLOCATE(qwp_mn(mpert, 0:mpsi)) + ALLOCATE(qwt_mn(mpert, 0:mpsi)) + ALLOCATE(qwz_mn(mpert, 0:mpsi)) + qvp_mn = 0.0_r8 + qvt_mn = 0.0_r8 + qvz_mn = 0.0_r8 + cvp_mn = 0.0_r8 + cvt_mn = 0.0_r8 + cvz_mn = 0.0_r8 + qwp_mn = 0.0_r8 + qwt_mn = 0.0_r8 + qwz_mn = 0.0_r8 ENDIF c----------------------------------------------------------------------- @@ -6915,15 +7002,88 @@ SUBROUTINE gpout_recon(mode, xspmn) ALLOCATE(gpout_curvature) ALLOCATE(gpout_k) + WRITE(smode,'(I8)') mode + smode = ADJUSTL(smode) + shear_fun_file = "gpec_recon_shear_fun_sol"//TRIM(smode)//".out" + curv_file = "gpec_recon_curvature_sol"//TRIM(smode)//".out" + k_file = "gpec_recon_k_sol"//TRIM(smode)//".out" + c2cw_file = "gpec_recon_C2_cw_sol"//TRIM(smode)//".out" + c2cv_file = "gpec_recon_C2_cv_sol"//TRIM(smode)//".out" + c2cvw_file = "gpec_recon_C2_cvw_sol"//TRIM(smode)//".out" + ccov_file = "gpec_recon_Ccov_sol"//TRIM(smode)//".out" + ccontra_phy_file = "gpec_recon_Ccontra_physics_sol"/ + $ /TRIM(smode)//".out" + ccontra_met_file = "gpec_recon_Ccontra_metric_sol"/ + $ /TRIM(smode)//".out" + qv_file = "gpec_recon_Qv_sol"//TRIM(smode)//".out" + qw_file = "gpec_recon_Qw_sol"/ + $ /TRIM(smode)//".out" + + ushear_fun = 82 + ucurv = 72 + uk = 73 + uc2cw = 79 + uc2cv = 80 + uc2cvw = 81 + ucov = 74 + ucontra_phy = 75 + ucontra_met = 76 + uQv = 77 + uQw = 78 + + OPEN(UNIT=ushear_fun, FILE=shear_fun_file, STATUS="UNKNOWN") + OPEN(UNIT=ucurv, FILE=curv_file, STATUS="UNKNOWN") + OPEN(UNIT=uk, FILE=k_file, STATUS="UNKNOWN") + OPEN(UNIT=uc2cw, FILE=c2cw_file, STATUS="UNKNOWN") + OPEN(UNIT=uc2cv, FILE=c2cv_file, STATUS="UNKNOWN") + OPEN(UNIT=uc2cvw, FILE=c2cvw_file, STATUS="UNKNOWN") + OPEN(UNIT=ucov, FILE=ccov_file, STATUS="UNKNOWN") + OPEN(UNIT=ucontra_phy, FILE=ccontra_phy_file, STATUS="UNKNOWN") + OPEN(UNIT=ucontra_met, FILE=ccontra_met_file, STATUS="UNKNOWN") + OPEN(UNIT=uQv, FILE=qv_file, STATUS="UNKNOWN") + OPEN(UNIT=uQw, FILE=qw_file, STATUS="UNKNOWN") + WRITE(ushear_fun,'(6(1x,a16))') + $ "psi","theta","r","z","shear_re","shear_im" + WRITE(ucurv,'(6(1x,a16))') + $ "psi","theta","r","z","curv_re","curv_im" + WRITE(uk,'(6(1x,a16))') + $ "psi","theta","r","z","K_re","K_im" + WRITE(uc2cw,'(6(1x,a16))') + $ "psi","theta","r","z","C2_cw_re","C2_cw_im" + WRITE(uc2cv,'(6(1x,a16))') + $ "psi","theta","r","z","C2_cv_re","C2_cv_im" + WRITE(uc2cvw,'(6(1x,a16))') + $ "psi","theta","r","z","C2_cvw_re","C2_cvw_im" + WRITE(ucov,'(10(1x,a14))') + $ "psi","theta","r","z", + $ "C_psi_re","C_psi_im","C_theta_re","C_theta_im", + $ "C_zeta_re","C_zeta_im" + WRITE(ucontra_phy,'(10(1x,a14))') + $ "psi","theta","r","z", + $ "C1_phy_re","C1_phy_im","C2_phy_re","C2_phy_im", + $ "C3_phy_re","C3_phy_im" + WRITE(ucontra_met,'(10(1x,a14))') + $ "psi","theta","r","z", + $ "C1_met_re","C1_met_im","C2_met_re","C2_met_im", + $ "C3_met_re","C3_met_im" + WRITE(uQv,'(10(1x,a14))') + $ "psi","theta","r","z", + $ "Qv_psi_re","Qv_psi_im","Qv_theta_re","Qv_theta_im", + $ "Qv_zeta_re","Qv_zeta_im" + WRITE(uQw,'(10(1x,a14))') + $ "psi","theta","r","z", + $ "Qw1_re","Qw1_im","Qw2_re","Qw2_im", + $ "Qw3_re","Qw3_im" + c----------------------------------------------------------------------- c main loop over all psi levels. c compute gpeq equilibrium quantities at each psi and call gpeq_epf -c to populate C vectors for the EPF/DST diagnostics. +c to populate C norm squared for the EPF/DST diagnostics. c----------------------------------------------------------------------- CALL gpeq_alloc DO ipsi = 0, mpsi - psi = psifac(ipsi) - + psi = rzphi%xs(ipsi) + c Compute all necessary gpeq quantities at this psi level. CALL gpeq_sol(psi) CALL gpeq_contra(psi) @@ -6932,18 +7092,145 @@ SUBROUTINE gpout_recon(mode, xspmn) CALL gpeq_tangent(psi) CALL gpeq_parallel(psi) CALL gpeq_rzphi(psi) + +c Compute shear/curvature/K in mode-space and spatial-space. + CALL gpeq_shear(psi, shear_fun) + CALL gpeq_curvature(psi, curv_mn, curv_fun) + CALL gpeq_K(psi, K_mn, K_fun) + +c Store spatial values with coordinates. + DO itheta = 0, mthsurf + CALL bicube_eval(rzphi, psi, theta(itheta), 1) + rfac = SQRT(rzphi%f(1)) + eta = twopi*(theta(itheta) + rzphi%f(2)) + rvals(itheta) = ro + rfac*COS(eta) + zvals(itheta) = zo + rfac*SIN(eta) + + WRITE(ushear_fun,'(6(es17.8e3))') psi, theta(itheta), + $ rvals(itheta), zvals(itheta), REAL(shear_fun(itheta)), + $ AIMAG(shear_fun(itheta)) + WRITE(ucurv,'(6(es17.8e3))') psi, theta(itheta), + $ rvals(itheta), zvals(itheta), REAL(curv_fun(itheta)), + $ AIMAG(curv_fun(itheta)) + WRITE(uk,'(6(es17.8e3))') psi, theta(itheta), + $ rvals(itheta), zvals(itheta), REAL(K_fun(itheta)), + $ AIMAG(K_fun(itheta)) + ENDDO + WRITE(ushear_fun,*) + WRITE(ucurv,*) + WRITE(uk,*) -c Compute C vectors (covariant + contravariant) for this psi -c and store in C_*_mn(:, ipsi). -c gpeq_epf handles Q vector, current coupling, and Fourier transform. +c Compute C and Q vectors (covariant + contravariant) for this psi CALL gpeq_epf(psi, ipsi) + +c Write C^2 values (contravariant form only - no metric) + DO itheta = 0, mthsurf + WRITE(uc2cw,'(6(es17.8e3))') psi, theta(itheta), + $ rvals(itheta), zvals(itheta), REAL(c2_cw_fun(itheta, ipsi)), + $ AIMAG(c2_cw_fun(itheta, ipsi)) + ENDDO + WRITE(uc2cw,*) + +c Write C^2 values (covariant form only - with metric) + DO itheta = 0, mthsurf + WRITE(uc2cv,'(6(es17.8e3))') psi, theta(itheta), + $ rvals(itheta), zvals(itheta), REAL(c2_cv_fun(itheta, ipsi)), + $ AIMAG(c2_cv_fun(itheta, ipsi)) + ENDDO + WRITE(uc2cv,*) + +c Write C^2 values (mixed form - Cov x Contra) + DO itheta = 0, mthsurf + WRITE(uc2cvw,'(6(es17.8e3))') psi, theta(itheta), + $ rvals(itheta), zvals(itheta), REAL(c2_cvw_fun(itheta, ipsi)), + $ AIMAG(c2_cvw_fun(itheta, ipsi)) + ENDDO + WRITE(uc2cvw,*) + +c Write C vectors to files - contravariant components (all 3) + DO itheta = 0, mthsurf + WRITE(ucov,'(10(es15.7e2))') psi, theta(itheta), + $ rvals(itheta), zvals(itheta), + $ REAL(cwp_fun(itheta, ipsi)), + $ AIMAG(cwp_fun(itheta, ipsi)), + $ REAL(cwt_fun(itheta, ipsi)), + $ AIMAG(cwt_fun(itheta, ipsi)), + $ REAL(cwz_fun(itheta, ipsi)), + $ AIMAG(cwz_fun(itheta, ipsi)) + ENDDO + WRITE(ucov,*) + +c Write C vectors (contravariant) - contrvariant components with p + DO itheta = 0, mthsurf + WRITE(ucontra_phy,'(10(es15.7e2))') psi, theta(itheta), + $ rvals(itheta), zvals(itheta), + $ REAL(cvp_funp(itheta, ipsi)), + $ AIMAG(cvp_funp(itheta, ipsi)), + $ REAL(cvt_funp(itheta, ipsi)), + $ AIMAG(cvt_funp(itheta, ipsi)), + $ REAL(cvz_funp(itheta, ipsi)), + $ AIMAG(cvz_funp(itheta, ipsi)) + ENDDO + WRITE(ucontra_phy,*) + + +c Write C vectors (contravariant) - contrvariant components with metric + DO itheta = 0, mthsurf + WRITE(ucontra_met,'(10(es15.7e2))') psi, theta(itheta), + $ rvals(itheta), zvals(itheta), + $ REAL(cvp_fun(itheta, ipsi)), + $ AIMAG(cvp_fun(itheta, ipsi)), + $ REAL(cvt_fun(itheta, ipsi)), + $ AIMAG(cvt_fun(itheta, ipsi)), + $ REAL(cvz_fun(itheta, ipsi)), + $ AIMAG(cvz_fun(itheta, ipsi)) + ENDDO + WRITE(ucontra_met,*) + + +c Write Q covariant vectors - all 3 components + DO itheta = 0, mthsurf + WRITE(uQv,'(10(es15.7e2))') psi, theta(itheta), + $ rvals(itheta), zvals(itheta), + $ REAL(qvp_fun(itheta, ipsi)), + $ AIMAG(qvp_fun(itheta, ipsi)), + $ REAL(qvt_fun(itheta, ipsi)), + $ AIMAG(qvt_fun(itheta, ipsi)), + $ REAL(qvz_fun(itheta, ipsi)), + $ AIMAG(qvz_fun(itheta, ipsi)) + ENDDO + WRITE(uQv,*) + + DO itheta = 0, mthsurf + WRITE(uQw,'(10(es15.7e2))') psi, theta(itheta), + $ rvals(itheta), zvals(itheta), + $ REAL(qwp_fun(itheta, ipsi)), + $ AIMAG(qwp_fun(itheta, ipsi)), + $ REAL(qwt_fun(itheta, ipsi)), + $ AIMAG(qwt_fun(itheta, ipsi)), + $ REAL(qwz_fun(itheta, ipsi)), + $ AIMAG(qwz_fun(itheta, ipsi)) + ENDDO + WRITE(uQw,*) + CALL gpeq_dst(psi,ipsi) ENDDO + CALL gpeq_dealloc + CLOSE(ushear_fun) + CLOSE(ucurv) + CLOSE(uk) + CLOSE(uc2cw) + CLOSE(uc2cv) + CLOSE(uc2cvw) + CLOSE(ucov) + CLOSE(ucontra_phy) + CLOSE(ucontra_met) + CLOSE(uQv) + CLOSE(uQw) c----------------------------------------------------------------------- c C vectors now populated in gpglobal_mod for all psi levels. -c Next phase: compute EPF/DST from C vectors (placeholder). c----------------------------------------------------------------------- IF(ALLOCATED(gpout_shear)) THEN IF(verbose) WRITE(*,*)" Shear bicube computed" @@ -6963,7 +7250,7 @@ SUBROUTINE gpout_recon(mode, xspmn) IF(verbose) WRITE(*,*) $ "GPDIAG_RECON: Reconstruction diagnostics complete" IF(verbose) WRITE(*,*)" C vectors computed and stored in"// - $ " C_*_mn(mpert, 0:mpsi)" + $ " cw*_mn(mpert, 0:mpsi)" IF(verbose) WRITE(*,*)"__________________________________________" c----------------------------------------------------------------------- c terminate. From b3428dfc65c4981252426a07d8e951a6c4535441 Mon Sep 17 00:00:00 2001 From: satelite2517 Date: Wed, 18 Mar 2026 14:57:41 +0900 Subject: [PATCH 06/62] GPEC - docs - Add variable naming convention and mathematical symbols section to documentation (cherry picked from commit 557b62c88e15cdb86adeb8f581f2b0d9703bf4b3) --- docs/tex/recon/main.tex | 160 ++++++++++++++++++++++++++++++++++++++-- 1 file changed, 155 insertions(+), 5 deletions(-) diff --git a/docs/tex/recon/main.tex b/docs/tex/recon/main.tex index 9bd826a23..2866583c6 100644 --- a/docs/tex/recon/main.tex +++ b/docs/tex/recon/main.tex @@ -10,6 +10,7 @@ \usepackage{hyperref} \usepackage{cancel} \usepackage{color} +\usepackage{pdflscape} \title{DCON $recon flag$ document} \author{Sunjae Lee} @@ -898,9 +899,10 @@ \subsection{Reconstruction v1} &=\mathcal{J} (j^{\theta} \nabla \zeta \times \nabla \psi + j^{\zeta} \nabla \psi \times \nabla \theta) \end{align} -\begin{equation} -\vec{Q} = \mathcal{J} (Q^{\psi} \nabla \theta \times \nabla \zeta + Q^{\theta} \nabla \zeta \times \nabla \psi + Q^{\zeta} \nabla \psi \times \nabla \theta) = \mathcal{J} ( Q^{\psi} \vec{v_1} + Q^{\theta} \vec{v_2} + Q^{\zeta} \vec{v_3}) -\end{equation} +\begin{align} +\vec{Q} &= \mathcal{J} (Q^{\psi} \nabla \theta \times \nabla \zeta + Q^{\theta} \nabla \zeta \times \nabla \psi + Q^{\zeta} \nabla \psi \times \nabla \theta) &= \mathcal{J} ( Q^{\psi} \vec{v_1} + Q^{\theta} \vec{v_2} + Q^{\zeta} \vec{v_3}) \\ +&= Q_1 \nabla \psi + Q_2 \nabla \theta + Q_3 \nabla \zeta +\end{align} \begin{equation} Q^{\psi} = \frac{\chi^\prime}{\mathcal{J}} (\frac{\partial}{\partial \theta} + q \frac{\partial}{\partial \zeta} )\xi^\psi = \frac{\chi^\prime}{\mathcal{J}} \sum_{m}^{} \sum_{n}^{} v_{m,n}(\psi) \cdot \exp 2 \pi i(m\theta -n\zeta)\cdot 2 \pi i (m-nq) @@ -981,8 +983,8 @@ \subsection{Reconstruction v1} \begin{align} C^\psi &= \vec{C} \cdot \nabla\psi = Q^\psi \\ -C^\theta &= \vec{C} \cdot \nabla\theta = Q^\theta + \frac{\xi^\psi}{|\nabla\psi|^2} \mu_0 \vec{j} \cdot (\nabla\psi \times \nabla\theta) \\ -C^\zeta &= \vec{C} \cdot \nabla\zeta = Q^\zeta + \frac{\xi^\psi}{|\nabla\psi|^2} \mu_0 \vec{j} \cdot (\nabla\psi \times \nabla\zeta) +C^\theta &= \vec{C} \cdot \nabla\theta = Q^\theta + \xi^\psi \frac{1}{|\nabla\psi|^2} \mu_0 j^\zeta \\ +C^\zeta &= \vec{C} \cdot \nabla\zeta = Q^\zeta - \xi^\psi \frac{1}{|\nabla\psi|^2} \mu_0 j^\theta \end{align} \begin{align} @@ -1408,6 +1410,154 @@ \subsection{Physical Interpretation} \end{enumerate} +\section{Variable Naming Convention and Mathematical Symbols} + +This section summarizes the implementation of C and Q vectors with proper tensor transformations between contravariant and covariant representations. + +\subsection{Fundamental Transformation Laws} + +The C and Q vectors are defined in two complementary basis systems: + +\textbf{Contravariant basis:} $\vec{w}_i \equiv \nabla \psi, \nabla \theta, \nabla \zeta$ \\ +\textbf{Covariant basis:} $\vec{v}_i \equiv \nabla \theta \times \nabla \zeta, \nabla \zeta \times \nabla \psi, \nabla \psi \times \nabla \theta$ + +\begin{equation} +\boxed{ +\begin{aligned} +\text{Contravariant} \quad &Q^i = \frac{b^i}{\mathcal{J}} \\ +\text{Covariant} \quad &Q_i = g_{ij} Q^j = g_{ij} \frac{b^j}{\mathcal{J}} \\ +\text{Physics method} \quad &C_i = Q_i + (\vec{j} \times \vec{\xi})_i +\end{aligned} +} +\end{equation} + +where $\mathcal{J}$ is the Jacobian, $g_{ij}$ is the metric tensor at MODE index 0, and $(\vec{j} \times \vec{\xi})_i$ represents current-displacement coupling. + +\subsection{Code Variable Mapping Table} + +\subsubsection*{Q Vector - Contravariant (w-basis, $Q^i$)} +\footnotesize +\begin{table}[h!] +\centering +\begin{tabular}{|l|l|} +\hline +\textbf{Variable} & \textbf{Symbol/Definition} \\ +\hline +\texttt{qwp\_tmp, qwp\_fun, qwp\_mn} & $Q^\psi$ (contravariant component) \\ +\texttt{qwt\_tmp, qwt\_fun, qwt\_mn} & $Q^\theta$ (contravariant component) \\ +\texttt{qwz\_tmp, qwz\_fun, qwz\_mn} & $Q^\zeta$ (contravariant component) \\ +\hline +\end{tabular} +\end{table} + +\subsubsection*{Q Vector - Covariant (v-basis, $Q_i$)} +\footnotesize +\begin{table}[h!] +\centering +\begin{tabular}{|l|l|} +\hline +\textbf{Variable} & \textbf{Symbol/Definition} \\ +\hline +\texttt{qvp\_tmp, qvp\_fun, qvp\_mn} & $Q_\psi = g_{11}Q^\psi + g_{12}Q^\theta + g_{13}Q^\zeta$ \\ +\texttt{qvt\_tmp, qvt\_fun, qvt\_mn} & $Q_\theta = g_{12}Q^\psi + g_{22}Q^\theta + g_{23}Q^\zeta$ \\ +\texttt{qvz\_tmp, qvz\_fun, qvz\_mn} & $Q_\zeta = g_{13}Q^\psi + g_{23}Q^\theta + g_{33}Q^\zeta$ \\ +\hline +\end{tabular} +\end{table} + +\subsubsection*{C Vector - Contravariant (w-basis, $C^i$)} +\footnotesize +\begin{table}[h!] +\centering +\begin{tabular}{|l|l|} +\hline +\textbf{Variable} & \textbf{Symbol/Definition} \\ +\hline +\texttt{cwp\_tmp, cwp\_fun, cwp\_mn} & $C^\psi$ (contravariant component) \\ +\texttt{cwt\_tmp, cwt\_fun, cwt\_mn} & $C^\theta$ (contravariant component) \\ +\texttt{cwz\_tmp, cwz\_fun, cwz\_mn} & $C^\zeta$ (contravariant component) \\ +\hline +\end{tabular} +\end{table} + +\subsubsection*{C Vector - Covariant (v-basis, $C_i$)} +\footnotesize +\begin{table}[h!] +\centering +\begin{tabular}{|l|l|} +\hline +\textbf{Variable} & \textbf{Symbol/Definition} \\ +\hline +\texttt{cvp\_tmp, cvp\_fun} & $C_\psi^{\text{metric}} = g_{ij}C^j$ (metric contraction) \\ +\texttt{cvt\_tmp, cvt\_fun} & $C_\theta^{\text{metric}} = g_{ij}C^j$ (metric contraction) \\ +\texttt{cvz\_tmp, cvz\_fun} & $C_\zeta^{\text{metric}} = g_{ij}C^j$ (metric contraction) \\ +\hline +\multicolumn{2}{|l|}{\textit{Physics form with current-displacement coupling:}} \\ +\hline +\texttt{cvp\_fun\_p, cvp\_mn} & $C_\psi = C_\psi^{\text{metric}} + (\vec{j} \times \vec{\xi})_\psi$ \\ +\texttt{cvt\_fun\_p, cvt\_mn} & $C_\theta = C_\theta^{\text{metric}} + (\vec{j} \times \vec{\xi})_\theta$ \\ +\texttt{cvz\_fun\_p, cvz\_mn} & $C_\zeta = C_\zeta^{\text{metric}} + (\vec{j} \times \vec{\xi})_\zeta$ \\ +\hline +\end{tabular} +\end{table} + +\subsubsection*{Input Variables and Parameters} +\footnotesize +\begin{table}[h!] +\centering +\begin{tabular}{|l|l|} +\hline +\textbf{Variable} & \textbf{Symbol/Definition} \\ +\hline +\texttt{bwp\_fun, bwt\_fun, bwz\_fun} & $\mathcal{J} Q^\psi, \mathcal{J} Q^\theta, \mathcal{J} Q^\zeta$ \\ +\texttt{jacs}$(itheta)$ & $\mathcal{J}(\theta)$ = Jacobian at each $\theta$ \\ +\texttt{metric\%cs\%f}$(0, i, j)$ & $g_{ij}(0)$ = Metric tensor at MODE index 0 \\ +\hline +\end{tabular} +\end{table} + +\paragraph{Variable Storage Types:} +\begin{itemize} +\item \textbf{\texttt{tmp}}: Local 1D array at single flux surface ($\psi$ level), dimension $(0:m_\theta)$ +\item \textbf{\texttt{fun}}: Global 2D spatial array on $(\theta, \psi)$ grid, dimension $(0:m_\theta, 0:m_\psi)$ +\item \textbf{\texttt{mn}}: Global 2D MODE space array, dimension $(m_{pert}, 0:m_\psi)$ +\item \textbf{\texttt{p}}: Physics form (includes j$\times\xi$ coupling term) +\item \textbf{\texttt{w}}-basis: Contravariant (w-basis, using $\nabla$ forms) +\item \textbf{\texttt{v}}-basis: Covariant (v-basis, using cross products) +\end{itemize} + +\subsection{Computational Algorithm} + +The reconstruction algorithm follows these steps for each flux surface ($\psi$ level): + +\begin{enumerate} +\item \textbf{Extract contravariant Q:} +\begin{equation} +Q^i(\theta) = \frac{b^i(\theta)}{\mathcal{J}(\theta)} = \frac{\text{bwp\_fun}(\theta), \text{bwt\_fun}(\theta), \text{bwz\_fun}(\theta)}{\text{jacs}(\theta)} +\end{equation} + +\item \textbf{Apply metric contraction for covariant Q:} +\begin{equation} +Q_i(\theta) = g_{ij}(0) \cdot Q^j(\theta) \quad \text{where } i,j \in \{\psi, \theta, \zeta\} +\end{equation} + +\item \textbf{Compute physics-based C with $j \times \xi$ coupling:} +\begin{equation} +C_i(\theta) = Q_i(\theta) + (\vec{j} \times \vec{\xi})_i(\theta) +\end{equation} + +\item \textbf{Store spatial representations:} +\begin{equation} +\text{qwp\_fun}(\theta, \psi) = Q^\psi(\theta), \quad \text{qvp\_fun}(\theta, \psi) = Q_\psi(\theta), \quad \cdots +\end{equation} + +\item \textbf{Transform to MODE space via Fourier:} +\begin{equation} +\tilde{Q}^\psi_{n,m} = \text{ISCDFTF}(Q^\psi(\theta)) \quad \Rightarrow \quad \text{qwp\_mn}(m_{pert}, \psi) +\end{equation} + +\end{enumerate} + \bibliographystyle{plain} \bibliography{references} From a6369705aaf05adfa898d53d8226813b55b1c3a2 Mon Sep 17 00:00:00 2001 From: satelite2517 Date: Wed, 18 Mar 2026 16:30:37 +0900 Subject: [PATCH 07/62] GPEC- WIP - fix curvature calcuation and make allocation process align with convention (cherry picked from commit 1ef312755fbdabde5109264c4bb93fbf05d022d6) --- gpec/gpeq.f | 120 +++++++++++++++++++++++++++++------------------- gpec/gpglobal.F | 10 +--- gpec/gpout.f | 45 +----------------- 3 files changed, 75 insertions(+), 100 deletions(-) diff --git a/gpec/gpeq.f b/gpec/gpeq.f index dc89d7d94..706920fd1 100644 --- a/gpec/gpeq.f +++ b/gpec/gpeq.f @@ -1075,62 +1075,76 @@ SUBROUTINE gpeq_shear(psi, shear_fun) END SUBROUTINE gpeq_shear c----------------------------------------------------------------------- c subprogram 12. gpeq_curvature. -c compute curvature mode coefficients and spatial functions. +c compute curvature in spatial domain. +c κ·∇ψ = (|∇ψ|²/B²)[μ₀p' + (1/2)(∂B²/∂ψ) + (1/2)(∂B²/∂θ)(∇ψ·∇ψ)/(∇ψ·∇θ)] c----------------------------------------------------------------------- - SUBROUTINE gpeq_curvature(psi, curv_mn, curv_fun) + SUBROUTINE gpeq_curvature(psi, curv_fun) REAL(r8), INTENT(IN) :: psi - COMPLEX(r8), DIMENSION(mpert), INTENT(OUT) :: curv_mn - COMPLEX(r8), DIMENSION(0:mthsurf), OPTIONAL, INTENT(OUT) - $ :: curv_fun + COMPLEX(r8), DIMENSION(0:mthsurf), INTENT(OUT) :: curv_fun - INTEGER :: itheta, ipert, jpert, dm, m1 - REAL(r8) :: q, p1, chi1, eta, r, rfac, bsq_val - COMPLEX(r8), DIMENSION(-mband:mband) :: g22, g23, g33 - COMPLEX(r8), DIMENSION(0:mthsurf) :: curv_theta_fun - COMPLEX(r8), DIMENSION(mpert) :: bvt_local, bvz_local - - chi1 = psio * twopi - + INTEGER :: itheta + REAL(r8) :: q, q1, p1, jac, rfac, eta, r_val, theta_val + REAL(r8) :: chi1, delpsi + REAL(r8) :: w11, w12, w13, w21, w22, w23, w31, w32, w33 + REAL(r8) :: v21, v22, v23, v33 + REAL(r8) :: bsq_val, bsq_psi, bsq_theta + REAL(r8) :: dpdt , kappa_psi, safe_denom + TYPE(spline_type) :: bsq_temp + +c----------------------------------------------------------------------- +c Setup: get equilibrium at this psi. +c----------------------------------------------------------------------- CALL spline_eval(sq, psi, 1) q = sq%f(4) + q1 = sq%f1(4) p1 = sq%f1(2) - CALL cspline_eval(metric%cs, psi, 0) - - g22(0:-mband:-1) = metric%cs%f(2*mband+2:3*mband+2) - g23(0:-mband:-1) = metric%cs%f(3*mband+3:4*mband+3) - g33(0:-mband:-1) = metric%cs%f(4*mband+4:5*mband+4) - g22(1:mband) = CONJG(g22(-1:-mband:-1)) - g23(1:mband) = CONJG(g23(-1:-mband:-1)) - g33(1:mband) = CONJG(g33(-1:-mband:-1)) - + chi1 = psio * twopi + c----------------------------------------------------------------------- -c compute covariant components needed for curvature. +c Step 3: Compute curvature at all theta points. c----------------------------------------------------------------------- - ipert = 0 - bvt_local = CMPLX(0.0_r8, 0.0_r8, r8) - bvz_local = CMPLX(0.0_r8, 0.0_r8, r8) - curv_mn = CMPLX(0.0_r8, 0.0_r8, r8) - DO m1 = mlow, mhigh - ipert = ipert + 1 - DO dm = MAX(1-ipert, -mband), MIN(mpert-ipert, mband) - jpert = ipert + dm - bvt_local(ipert) = bvt_local(ipert) - $ + g22(dm)*bmt_mn(jpert) + g23(dm)*bmz_mn(jpert) - bvz_local(ipert) = bvz_local(ipert) - $ + g23(dm)*bmt_mn(jpert) + g33(dm)*bmz_mn(jpert) - ENDDO - curv_mn(ipert) = (chi1**2 / mu0) * - $ (p1 + bvt_local(ipert)*bvz_local(ipert)) + DO itheta = 0, mthsurf + theta_val = theta(itheta) + CALL bicube_eval(rzphi, psi, theta_val, 1) + + jac = rzphi%f(4) + rfac = SQRT(rzphi%f(1)) + eta = twopi*(theta_val + rzphi%f(2)) + r_val = ro + rfac*COS(eta) + +c Compute contravariant metrics + w11 = (1.0_r8 + rzphi%fy(2))*(twopi**2)*rfac*r_val/jac + w12 = -rzphi%fy(1)*pi*r_val/(rfac*jac) + + w21 = -(twopi**2)*rfac*r_val*rzphi%fx(2)/jac + w22 = pi*r_val*rzphi%fx(1)/(rfac*jac) + + w31 = (twopi*r_val*rfac/jac)* + $ (rzphi%fx(2)*rzphi%fy(3) - rzphi%fx(3)* + $ (1.0_r8 + rzphi%fy(2))) + w32 = (r_val/(2.0_r8*rfac*jac))* + $ (rzphi%fx(3)*rzphi%fy(1) - rzphi%fx(1)*rzphi%fy(3)) + +c Compute |∇ψ|² and ∇ψ·∇θ + delpsi = SQRT(w11**2 + w12**2) + dpdt = w11*w21 + w12*w22 + + CALL bicube_eval(eqfun, psi, theta_val, 1) +c Retrieve B² and derivatives + bsq_val = eqfun%f(1) ** 2 + bsq_psi = eqfun%fx(1) * 2 * eqfun%f(1) + bsq_theta = eqfun%fy(1) * 2 * eqfun%f(1) + +c Compute κ·∇ψ safely + + kappa_psi = (delpsi**2 / bsq_val) * + $ (p1 + 0.5_r8*bsq_psi + + $ 0.5_r8*bsq_theta*dpdt/(delpsi**2)) + + curv_fun(itheta) = CMPLX(kappa_psi, 0.0_r8, r8) + ENDDO - c----------------------------------------------------------------------- -c convert to spatial functions if requested. -c----------------------------------------------------------------------- - IF (PRESENT(curv_fun)) THEN - CALL iscdftb(mfac, mpert, curv_theta_fun, mthsurf, curv_mn) - curv_fun = curv_theta_fun - ENDIF - RETURN END SUBROUTINE gpeq_curvature c----------------------------------------------------------------------- @@ -1885,7 +1899,14 @@ SUBROUTINE gpeq_alloc $ xno_mn(mpert),xta_mn(mpert),xpa_mn(mpert), $ bno_mn(mpert),bta_mn(mpert),bpa_mn(mpert), $ xrr_mn(mpert),xrz_mn(mpert),xrp_mn(mpert), - $ brr_mn(mpert),brz_mn(mpert),brp_mn(mpert)) + $ brr_mn(mpert),brz_mn(mpert),brp_mn(mpert), + $ qvp_mn(mpert,0:mpsi),qvt_mn(mpert,0:mpsi), + $ qvz_mn(mpert,0:mpsi),cvp_mn(mpert,0:mpsi), + $ cvt_mn(mpert,0:mpsi),cvz_mn(mpert,0:mpsi), + $ qwp_mn(mpert,0:mpsi),qwt_mn(mpert,0:mpsi), + $ qwz_mn(mpert,0:mpsi),cwp_mn(mpert,0:mpsi), + $ cwt_mn(mpert,0:mpsi),cwz_mn(mpert,0:mpsi), + $ DST_mn(0:mthsurf,0:mpsi),DST_fun(0:mthsurf,0:mpsi)) IF(debug_flag) PRINT *, "->Leaving gpeq_alloc" c----------------------------------------------------------------------- c terminate. @@ -1903,7 +1924,10 @@ SUBROUTINE gpeq_dealloc $ xwp_mn,xwt_mn,xwz_mn,bwp_mn,bwt_mn,bwz_mn,xmt_mn,bmt_mn, $ xvp_mn,xvt_mn,xvz_mn,bvp_mn,bvt_mn,bvz_mn,xmz_mn,bmz_mn, $ xno_mn,xta_mn,xpa_mn,bno_mn,bta_mn,bpa_mn, - $ xrr_mn,xrz_mn,xrp_mn,brr_mn,brz_mn,brp_mn) + $ xrr_mn,xrz_mn,xrp_mn,brr_mn,brz_mn,brp_mn, + $ qvp_mn,qvt_mn,qvz_mn,cvp_mn,cvt_mn,cvz_mn, + $ qwp_mn,qwt_mn,qwz_mn,cwp_mn,cwt_mn,cwz_mn, + $ DST_mn,DST_fun) IF(debug_flag) PRINT *, "->Leaving gpeq_dealloc" c----------------------------------------------------------------------- c terminate. diff --git a/gpec/gpglobal.F b/gpec/gpglobal.F index 52c7ee1d6..09bfe611f 100644 --- a/gpec/gpglobal.F +++ b/gpec/gpglobal.F @@ -164,15 +164,7 @@ SUBROUTINE gpec_dealloc $ plas_indevmats,permeabevmats,chxmats,chwmats, $ mutual_indmats,mutual_indevmats,mutual_indinvmats, $ mutual_indinvevmats) - IF(ALLOCATED(cwp_mn)) DEALLOCATE(cwp_mn) - IF(ALLOCATED(cwt_mn)) DEALLOCATE(cwt_mn) - IF(ALLOCATED(cwz_mn)) DEALLOCATE(cwz_mn) - IF(ALLOCATED(cvp_mn)) DEALLOCATE(cvp_mn) - IF(ALLOCATED(cvt_mn)) DEALLOCATE(cvt_mn) - IF(ALLOCATED(cvz_mn)) DEALLOCATE(cvz_mn) - IF(ALLOCATED(DST_mn)) DEALLOCATE(DST_mn) - IF(ALLOCATED(DST_fun)) DEALLOCATE(DST_fun) - + CALL spline_dealloc(sq) CALL bicube_dealloc(eqfun) CALL bicube_dealloc(rzphi) diff --git a/gpec/gpout.f b/gpec/gpout.f index 6843924bf..a36d83fbd 100644 --- a/gpec/gpout.f +++ b/gpec/gpout.f @@ -6912,23 +6912,6 @@ SUBROUTINE gpout_recon(mode, xspmn) c allocate C vector arrays for EPF calculation. c Storage: C_*_mn(mpert, 0:mpsi) for all psi levels. c----------------------------------------------------------------------- - IF (.NOT. ALLOCATED(cwp_mn)) THEN - ALLOCATE(cwp_mn(mpert, 0:mpsi)) - ALLOCATE(cwt_mn(mpert, 0:mpsi)) - ALLOCATE(cwz_mn(mpert, 0:mpsi)) - cwp_mn = 0.0_r8 - cwt_mn = 0.0_r8 - cwz_mn = 0.0_r8 - ENDIF - IF (.NOT. ALLOCATED(DST_mn)) THEN - ALLOCATE(DST_mn(mpert, 0:mpsi)) - DST_mn = 0.0_r8 - ENDIF - IF (.NOT. ALLOCATED(DST_fun)) THEN - ALLOCATE(DST_fun(0:mthsurf, 0:mpsi)) - DST_fun = 0.0_r8 - ENDIF - c Allocate C and Q vector spatial function arrays (theta, psi grid) IF (.NOT. ALLOCATED(cwp_fun)) THEN ALLOCATE(cwp_fun(0:mthsurf, 0:mpsi)) @@ -6972,27 +6955,6 @@ SUBROUTINE gpout_recon(mode, xspmn) qwt_fun = 0.0_r8 qwz_fun = 0.0_r8 ENDIF - - IF (.NOT. ALLOCATED(qvp_mn)) THEN - ALLOCATE(qvp_mn(mpert, 0:mpsi)) - ALLOCATE(qvt_mn(mpert, 0:mpsi)) - ALLOCATE(qvz_mn(mpert, 0:mpsi)) - ALLOCATE(cvp_mn(mpert, 0:mpsi)) - ALLOCATE(cvt_mn(mpert, 0:mpsi)) - ALLOCATE(cvz_mn(mpert, 0:mpsi)) - ALLOCATE(qwp_mn(mpert, 0:mpsi)) - ALLOCATE(qwt_mn(mpert, 0:mpsi)) - ALLOCATE(qwz_mn(mpert, 0:mpsi)) - qvp_mn = 0.0_r8 - qvt_mn = 0.0_r8 - qvz_mn = 0.0_r8 - cvp_mn = 0.0_r8 - cvt_mn = 0.0_r8 - cvz_mn = 0.0_r8 - qwp_mn = 0.0_r8 - qwt_mn = 0.0_r8 - qwz_mn = 0.0_r8 - ENDIF c----------------------------------------------------------------------- c allocate bicubes for shear, curvature, K (placeholder allocation). @@ -7089,13 +7051,10 @@ SUBROUTINE gpout_recon(mode, xspmn) CALL gpeq_contra(psi) CALL gpeq_cova(psi) CALL gpeq_normal(psi) - CALL gpeq_tangent(psi) - CALL gpeq_parallel(psi) - CALL gpeq_rzphi(psi) -c Compute shear/curvature/K in mode-space and spatial-space. +c Compute shear/curvature/K in spatial-space. CALL gpeq_shear(psi, shear_fun) - CALL gpeq_curvature(psi, curv_mn, curv_fun) + CALL gpeq_curvature(psi, curv_fun) CALL gpeq_K(psi, K_mn, K_fun) c Store spatial values with coordinates. From d95f29ffe958bd72d8daef7f285d6c624d050345 Mon Sep 17 00:00:00 2001 From: satelite2517 Date: Thu, 23 Apr 2026 15:42:17 +0900 Subject: [PATCH 08/62] GPEC - FEATURE - Update core calculations (cherry picked from commit f6a5e27c0a4b226cb8db9f3c36f1402971563440) --- gpec/gpeq.f | 764 ++++++++++++++++++++++++++---------------------- gpec/gpglobal.F | 15 +- gpec/gpout.f | 451 +++++++++++++--------------- 3 files changed, 629 insertions(+), 601 deletions(-) diff --git a/gpec/gpeq.f b/gpec/gpeq.f index 706920fd1..ad1263812 100644 --- a/gpec/gpeq.f +++ b/gpec/gpeq.f @@ -19,18 +19,17 @@ c 11. gpeq_shear (reconstruction: magnetic shear) c 12. gpeq_curvature (reconstruction: curvature) c 13. gpeq_K (reconstruction: Bernstein K quantity) -c 14. gpeq_terms (reconstruction: integration terms) -c 15. gpeq_fcoords -c 16. gpeq_fcoordsout -c 17. gpeq_bcoords -c 18. gpeq_bcoordsout -c 19. gpeq_weight -c 20. gpeq_rzpgrid -c 21. gpeq_rzpdiv -c 22. gpeq_alloc -c 23. gpeq_dealloc -c 24. gpeq_interp_singsurf -c 25. gpeq_interp_sol +c 14. gpeq_fcoords +c 15. gpeq_fcoordsout +c 16. gpeq_bcoords +c 17. gpeq_bcoordsout +c 18. gpeq_weight +c 19. gpeq_rzpgrid +c 20. gpeq_rzpdiv +c 21. gpeq_alloc +c 22. gpeq_dealloc +c 23. gpeq_interp_singsurf +c 24. gpeq_interp_sol c----------------------------------------------------------------------- c subprogram 0. gpeq_mod. c module declarations. @@ -101,7 +100,7 @@ SUBROUTINE gpeq_sol(psi) xss_mn=-MATMUL(bmat,xsp1_mn)-MATMUL(cmat,xsp_mn) ENDIF c----------------------------------------------------------------------- -c compute contravariant b fields. +c compute Jacobian-weighted contravariant b fields: J b^i. c----------------------------------------------------------------------- bwp_mn=(chi1*singfac*twopi*ifac*xsp_mn) bwt_mn=-(chi1*xsp1_mn+twopi*ifac*nn*xss_mn) @@ -225,7 +224,8 @@ SUBROUTINE gpeq_contra(psi) END SUBROUTINE gpeq_contra c----------------------------------------------------------------------- c subprogram 3. gpeq_cova. -c compute covariant components. +c compute Jacobian-weighted covariant components from +c Jacobian-weighted contravariant components. c----------------------------------------------------------------------- SUBROUTINE gpeq_cova(psi) c----------------------------------------------------------------------- @@ -261,7 +261,7 @@ SUBROUTINE gpeq_cova(psi) g31(1:mband)=CONJG(g31(-1:-mband:-1)) g12(1:mband)=CONJG(g12(-1:-mband:-1)) c----------------------------------------------------------------------- -c compute covariant components with metric tensors. +c compute Jacobian-weighted covariant components with metric tensors. c----------------------------------------------------------------------- ipert=0 xvp_mn=0 @@ -655,73 +655,61 @@ SUBROUTINE gpeq_c(psi, ipsi) REAL(r8), INTENT(IN) :: psi INTEGER, INTENT(IN) :: ipsi - INTEGER :: itheta, ipert, jpert, m, m1, dm + INTEGER :: itheta, ipert, jpert, m1, dm - REAL(r8) :: q, q1, f1raw, p1, chi1, jac, delpsi - REAL(r8) :: eta, rfac, singfac + REAL(r8) :: q, q1, f1raw, p1, chi1, jac + REAL(r8) :: eta, rfac, v21, v22, v23, v33 REAL(r8), DIMENSION(0:mthsurf) :: jacs, dphi, r_vec, z_vec - - COMPLEX(r8), DIMENSION(-mband:mband) :: g11, g12, g22, g23, - $ g31, g33 - - COMPLEX(r8), DIMENSION(0:mthsurf) :: xi_psi_fun - COMPLEX(r8), DIMENSION(0:mthsurf) :: bwp_fun, bwt_fun, - $ bwz_fun, bvp_fun, bvt_fun, bvz_fun, - $ cvp_fun_p, cvt_fun_p, cvz_fun_p, xno_fun - + COMPLEX(r8), DIMENSION(0:mthsurf) :: xwp_fun, xno_fun, bno_fun + COMPLEX(r8), DIMENSION(0:mthsurf) :: bwp_fun, bmt_fun, bmz_fun + COMPLEX(r8), DIMENSION(0:mthsurf) :: bvp_fun, bvt_fun, bvz_fun + +c Local temporal arrays for computation + COMPLEX(r8), DIMENSION(0:mthsurf) :: cwp_fun, cwt_fun, cwz_fun + COMPLEX(r8), DIMENSION(0:mthsurf) :: cvp_fun, cvt_fun, cvz_fun + COMPLEX(r8), DIMENSION(0:mthsurf) :: cvp_funp, cvt_funp, cvz_funp + c Supporting variables for Fourier reconstruction REAL(r8) :: jwt, jwz c Supporting functions - REAL(r8), DIMENSION(0:mthsurf) :: delpsi_arr, dpdt_arr, dpdz_arr - -c Local temporal arrays for computation - COMPLEX(r8), DIMENSION(0:mthsurf) :: qwp_tmp, qwt_tmp, qwz_tmp - COMPLEX(r8), DIMENSION(0:mthsurf) :: qvp_tmp, qvt_tmp, qvz_tmp - COMPLEX(r8), DIMENSION(0:mthsurf) :: cwp_tmp, cwt_tmp, cwz_tmp - COMPLEX(r8), DIMENSION(0:mthsurf) :: cvp_tmp, cvt_tmp, cvz_tmp - + REAL(r8), DIMENSION(0:mthsurf) :: delpsi, dpdt, dpdz + REAL(r8), DIMENSION(0:mthsurf) :: g_22, g_23, g_33 + COMPLEX(r8), DIMENSION(-mband:mband) :: g11,g22,g33,g23,g31,g12 + IF(debug_flag) PRINT *, "Entering gpeq_epf at ipsi=", ipsi c----------------------------------------------------------------------- c 1) Setup: equilibrium and metric at this psi. c----------------------------------------------------------------------- CALL spline_eval(sq, psi, 1) + CALL cspline_eval(metric%cs, psi, 0) q = sq%f(4) q1 = sq%f1(4) f1raw = sq%f1(1) - p1 = sq%f1(2) + p1 = sq%f1(2) / mu0 chi1 = psio * twopi - - CALL cspline_eval(metric%cs, psi, 0) - g11(0:-mband:-1) = metric%cs%f(1:mband+1) - g22(0:-mband:-1) = metric%cs%f(2*mband+2:3*mband+2) - g33(0:-mband:-1) = metric%cs%f(4*mband+6:5*mband+6) - g23(0:-mband:-1) = metric%cs%f(3*mband+4:4*mband+4) - g31(0:-mband:-1) = metric%cs%f(4*mband+5:5*mband+5) - g12(0:-mband:-1) = metric%cs%f(5*mband+6:6*mband+6) - - g11(1:mband) = CONJG(g11(-1:-mband:-1)) - g22(1:mband) = CONJG(g22(-1:-mband:-1)) - g33(1:mband) = CONJG(g33(-1:-mband:-1)) - g23(1:mband) = CONJG(g23(-1:-mband:-1)) - g31(1:mband) = CONJG(g31(-1:-mband:-1)) - g12(1:mband) = CONJG(g12(-1:-mband:-1)) +c----------------------------------------------------------------------- + CALL iscdftb(mfac,mpert,xwp_fun,mthsurf,xwp_mn) c----------------------------------------------------------------------- c 3) Reconstruct eigenfunctions in spatial representation. c----------------------------------------------------------------------- - CALL iscdftb(mfac, mpert, xi_psi_fun, mthsurf, xsp_mn) CALL iscdftb(mfac, mpert, bwp_fun, mthsurf, bwp_mn) - CALL iscdftb(mfac, mpert, bwt_fun, mthsurf, bwt_mn) - CALL iscdftb(mfac, mpert, bwz_fun, mthsurf, bwz_mn) - - CALL iscdftb(mfac,mpert,bvp_fun,mthsurf,bvp_mn) - CALL iscdftb(mfac,mpert,bvt_fun,mthsurf,bvt_mn) - CALL iscdftb(mfac,mpert,bvz_fun,mthsurf,bvz_mn) + CALL iscdftb(mfac, mpert, bmt_fun, mthsurf, bmt_mn) + CALL iscdftb(mfac, mpert, bmz_fun, mthsurf, bmz_mn) + CALL iscdftb(mfac, mpert, bvp_fun, mthsurf, bvp_mn) + CALL iscdftb(mfac, mpert, bvt_fun, mthsurf, bvt_mn) + CALL iscdftb(mfac, mpert, bvz_fun, mthsurf, bvz_mn) - CALL iscdftb(mfac,mpert,xno_fun,mthsurf,xno_mn) c----------------------------------------------------------------------- c 4) Extract contravariant components: divide by jacobian. +c +c bwp_mn, bwt_mn, bwz_mn are complex Fourier mode coefficients +c (derived from complex eigenfunctions xsp_mn, xss_mn). +c After IFFT via iscdftb(), they remain complex-valued functions +c of theta. Dividing by real jacobian preserves complex nature. +c This is essential because perturbations are inherently complex +c functions in MHD stability analysis. c----------------------------------------------------------------------- DO itheta = 0, mthsurf CALL bicube_eval(rzphi, psi, theta(itheta), 1) @@ -732,10 +720,8 @@ SUBROUTINE gpeq_c(psi, ipsi) z_vec(itheta) = zo + rfac*SIN(eta) jacs(itheta) = jac dphi(itheta) = rzphi%f(3) - delpsi_arr(itheta) = SQRT(w(1,1)**2 + w(1,2)**2) - w(1,1) = (1.0_r8 + rzphi%fy(2))*twopi**2*rfac*r_vec(itheta) - $ /jac + w(1,1) = (1.0+ rzphi%fy(2))*twopi**2*rfac*r_vec(itheta)/jac w(1,2) = -rzphi%fy(1)*pi*r_vec(itheta)/(rfac*jac) w(2,1) = -twopi**2*rfac*r_vec(itheta)*rzphi%fx(2)/jac @@ -746,97 +732,126 @@ SUBROUTINE gpeq_c(psi, ipsi) w(3,2) = (r_vec(itheta)/(2*rfac*jac))* $ (rzphi%fx(3)*rzphi%fy(1)-rzphi%fx(1)*rzphi%fy(3)) - dpdt_arr(itheta) = w(1,1)*w(2,1) + w(1,2)*w(2,2) - dpdz_arr(itheta) = w(1,1)*w(3,1) + w(1,2)*w(3,2) + delpsi(itheta) = SQRT(w(1,1)**2 + w(1,2)**2) + dpdt(itheta) = w(1,1)*w(2,1) + w(1,2)*w(2,2) + dpdz(itheta) = w(1,1)*w(3,1) + w(1,2)*w(3,2) - qwp_tmp(itheta) = bwp_fun(itheta) / CMPLX(jac, 0.0_r8, r8) - qwt_tmp(itheta) = bwt_fun(itheta) / CMPLX(jac, 0.0_r8, r8) - qwz_tmp(itheta) = bwz_fun(itheta) / CMPLX(jac, 0.0_r8, r8) +c contravariant basis vectors (idcon_metric style - NO jac) + v21 = rzphi%fy(1)/(2*rfac) + v22 = (1+rzphi%fy(2))*twopi*rfac + v23 = rzphi%fy(3)*r_vec(itheta) + v33 = twopi*r_vec(itheta) - qvp_tmp(itheta) = bvp_fun(itheta) - qvt_tmp(itheta) = bvt_fun(itheta) - qvz_tmp(itheta) = bvz_fun(itheta) - +c metric tensor: g_ij = sum(v_i * v_j) + g_22(itheta) = (v21**2 + v22**2 + v23**2) + g_33(itheta) = (v33**2) + g_23(itheta) = (v23*v33) ENDDO + + xno_fun=xwp_fun/(jacs*delpsi) + bno_fun=bwp_fun/(jacs*delpsi) c----------------------------------------------------------------------- -c 6) Apply physics method: add j × ξ term to covariant C. +c 6) Compute C components. +c bwp stores J Q^psi, while bmt/bmz store the modified +c upper-family J Q^theta/J Q^zeta used consistently by gpeq_cova. +c +c The metric stored in metric%cs is g_ij / J, so lowering via gpeq_cova +c maps J Q^i -> Q_i. Therefore bv* and cv2* are lower/covariant +c components without an extra Jacobian factor. +c +c xwp_fun stores J xi^psi. Therefore: +c - upper J C^i corrections use xwp_fun/(J |grad psi|^2), +c - lower C_i corrections use xwp_fun/|grad psi|^2 or xwp_fun*j^i. +c This matches Eqs. (148)-(151) together with the metric convention +c used in idcon_metric. c----------------------------------------------------------------------- DO itheta = 0, mthsurf jac = jacs(itheta) - delpsi = delpsi_arr(itheta)**2 - jwt = - sq%f1(3) / jac - jwz = - sq%f1(2) / chi1 - sq%f1(3) * q / jac - - cwp_tmp(itheta) = qwp_tmp(itheta) - cwt_tmp(itheta) = qwt_tmp(itheta)+xno_fun(itheta)*jwz / delpsi - cwz_tmp(itheta) = qwz_tmp(itheta)-xno_fun(itheta)*jwt / delpsi - - cvp_fun_p(itheta) = qvp_tmp(itheta)+ jac*xno_fun(itheta)/delpsi - $ * (jwt*(dpdz_arr(itheta)) + jwz*(dpdt_arr(itheta))) - cvt_fun_p(itheta) = qvt_tmp(itheta)+ jac*xi_psi_fun(itheta)*jwz - cvz_fun_p(itheta) = qvz_tmp(itheta)- jac*xi_psi_fun(itheta)*jwt + jwt = - f1raw / jac + jwz = - p1 * mu0 / chi1 - f1raw * q / jac + +c J C^psi = J Q^psi + cwp_fun(itheta)= bwp_fun(itheta) + +c J C^theta = J Q^theta + xi^psi/|grad psi|^2 +c * [mu0 j^theta g_theta_zeta + mu0 j^zeta g_zeta_zeta] +c = J Q^theta + xwp_fun/(J |grad psi|^2) * [...] + cwt_fun(itheta) = bmt_fun(itheta) + xwp_fun(itheta) + $ / ((delpsi(itheta)**2) * jac )* + $ (jwt * g_23(itheta) + jwz * g_33(itheta)) + +c J C^zeta = J Q^zeta - xi^psi/|grad psi|^2 +c * [mu0 j^theta g_theta_theta + mu0 j^zeta g_theta_zeta] +c = J Q^zeta - xwp_fun/(J |grad psi|^2) * [...] + cwz_fun(itheta) = bmz_fun(itheta) - xwp_fun(itheta) + $ / ((delpsi(itheta)**2) * jac )* + $ (jwt * g_22(itheta) + jwz * g_23(itheta)) + +c C_psi = Q_psi + (J xi^psi)/|grad psi|^2 +c * [mu0 j^theta (grad psi.grad zeta) - mu0 j^zeta (grad psi.grad theta)] + cvp_fun(itheta) = bvp_fun(itheta) + + $ xwp_fun(itheta) / (delpsi(itheta)**2) * + $ (jwt * dpdz(itheta) - jwz * dpdt(itheta)) + +c C_theta = Q_theta + (J xi^psi) mu0 j^zeta + cvt_fun(itheta) = bvt_fun(itheta) + + $ xwp_fun(itheta) * jwz + +c C_zeta = Q_zeta - (J xi^psi) mu0 j^theta + cvz_fun(itheta) = bvz_fun(itheta) - + $ xwp_fun(itheta) * jwt ENDDO + cwp_mn = 0 + cwt_mn = 0 + cwz_mn = 0 c----------------------------------------------------------------------- -c 7) Metric contraction: C covariant = g_ij * C contravariant. +c compute lower half of matrices. c----------------------------------------------------------------------- - DO itheta = 0, mthsurf - cvp_tmp(itheta) = g11(0)*cwp_tmp(itheta) + - $ g12(0)*cwt_tmp(itheta) + g31(0)*cwz_tmp(itheta) - cvt_tmp(itheta) = g12(0)*cwp_tmp(itheta) + - $ g22(0)*cwt_tmp(itheta) + g23(0)*cwz_tmp(itheta) - cvz_tmp(itheta) = g31(0)*cwp_tmp(itheta) + - $ g23(0)*cwt_tmp(itheta) + g33(0)*cwz_tmp(itheta) - ENDDO + g11(0:-mband:-1)=metric%cs%f(1:mband+1) + g22(0:-mband:-1)=metric%cs%f(mband+2:2*mband+2) + g33(0:-mband:-1)=metric%cs%f(2*mband+3:3*mband+3) + g23(0:-mband:-1)=metric%cs%f(3*mband+4:4*mband+4) + g31(0:-mband:-1)=metric%cs%f(4*mband+5:5*mband+5) + g12(0:-mband:-1)=metric%cs%f(5*mband+6:6*mband+6) c----------------------------------------------------------------------- -c 8) Store results to global arrays (spatial and mode space). -c----------------------------------------------------------------------- - cwp_fun(0:mthsurf, ipsi) = cwp_tmp(0:mthsurf) - cwt_fun(0:mthsurf, ipsi) = cwt_tmp(0:mthsurf) - cwz_fun(0:mthsurf, ipsi) = cwz_tmp(0:mthsurf) - - cvp_fun(0:mthsurf, ipsi) = cvp_tmp(0:mthsurf) - cvt_fun(0:mthsurf, ipsi) = cvt_tmp(0:mthsurf) - cvz_fun(0:mthsurf, ipsi) = cvz_tmp(0:mthsurf) - - cvp_funp(0:mthsurf, ipsi) = cvp_fun_p(0:mthsurf) - cvt_funp(0:mthsurf, ipsi) = cvt_fun_p(0:mthsurf) - cvz_funp(0:mthsurf, ipsi) = cvz_fun_p(0:mthsurf) - - qwp_fun(0:mthsurf, ipsi) = qwp_tmp(0:mthsurf) - qwt_fun(0:mthsurf, ipsi) = qwt_tmp(0:mthsurf) - qwz_fun(0:mthsurf, ipsi) = qwz_tmp(0:mthsurf) - - qvp_fun(0:mthsurf, ipsi) = qvp_tmp(0:mthsurf) - qvt_fun(0:mthsurf, ipsi) = qvt_tmp(0:mthsurf) - qvz_fun(0:mthsurf, ipsi) = qvz_tmp(0:mthsurf) - - - CALL iscdftf(mfac, mpert, cwp_tmp, mthsurf, - $ cwp_mn(1:mpert, ipsi)) - CALL iscdftf(mfac, mpert, cwt_tmp, mthsurf, - $ cwt_mn(1:mpert, ipsi)) - CALL iscdftf(mfac, mpert, cwz_tmp, mthsurf, - $ cwz_mn(1:mpert, ipsi)) - CALL iscdftf(mfac, mpert, cvp_fun_p, mthsurf, - $ cvp_mn(1:mpert, ipsi)) - CALL iscdftf(mfac, mpert, cvt_fun_p, mthsurf, - $ cvt_mn(1:mpert, ipsi)) - CALL iscdftf(mfac, mpert, cvz_fun_p, mthsurf, - $ cvz_mn(1:mpert, ipsi)) - CALL iscdftf(mfac, mpert, qwp_tmp, mthsurf, - $ qwp_mn(1:mpert, ipsi)) - CALL iscdftf(mfac, mpert, qwt_tmp, mthsurf, - $ qwt_mn(1:mpert, ipsi)) - CALL iscdftf(mfac, mpert, qwz_tmp, mthsurf, - $ qwz_mn(1:mpert, ipsi)) - CALL iscdftf(mfac, mpert, qvp_tmp, mthsurf, - $ qvp_mn(1:mpert, ipsi)) - CALL iscdftf(mfac, mpert, qvt_tmp, mthsurf, - $ qvt_mn(1:mpert, ipsi)) - CALL iscdftf(mfac, mpert, qvz_tmp, mthsurf, - $ qvz_mn(1:mpert, ipsi)) - +c compute upper half of matrices. +c----------------------------------------------------------------------- + g11(1:mband)=CONJG(g11(-1:-mband:-1)) + g22(1:mband)=CONJG(g22(-1:-mband:-1)) + g33(1:mband)=CONJG(g33(-1:-mband:-1)) + g23(1:mband)=CONJG(g23(-1:-mband:-1)) + g31(1:mband)=CONJG(g31(-1:-mband:-1)) + g12(1:mband)=CONJG(g12(-1:-mband:-1)) + + CALL iscdftf(mfac, mpert, cwp_fun, mthsurf,cwp_mn) + CALL iscdftf(mfac, mpert, cwt_fun, mthsurf,cwt_mn) + CALL iscdftf(mfac, mpert, cwz_fun, mthsurf,cwz_mn) + CALL iscdftf(mfac, mpert, cvp_fun, mthsurf,cvp_mn) + CALL iscdftf(mfac, mpert, cvt_fun, mthsurf,cvt_mn) + CALL iscdftf(mfac, mpert, cvz_fun, mthsurf,cvz_mn) + + ipert = 0 + c2vp_mn = 0 + c2vt_mn = 0 + c2vz_mn = 0 + DO m1=mlow,mhigh + ipert=ipert+1 + DO dm=MAX(1-ipert,-mband),MIN(mpert-ipert,mband) + jpert=ipert+dm + c2vp_mn(ipert)=c2vp_mn(ipert)+g11(dm)*cwp_mn(jpert)+ + $ g12(dm)*cwt_mn(jpert)+g31(dm)*cwz_mn(jpert) + c2vt_mn(ipert)=c2vt_mn(ipert)+g12(dm)*cwp_mn(jpert)+ + $ g22(dm)*cwt_mn(jpert)+g23(dm)*cwz_mn(jpert) + c2vz_mn(ipert)=c2vz_mn(ipert)+g31(dm)*cwp_mn(jpert)+ + $ g23(dm)*cwt_mn(jpert)+g33(dm)*cwz_mn(jpert) + ENDDO + ENDDO + + CALL iscdftb(mfac, mpert, cvp_funp, mthsurf, c2vp_mn) + CALL iscdftb(mfac, mpert, cvt_funp, mthsurf, c2vt_mn) + CALL iscdftb(mfac, mpert, cvz_funp, mthsurf, c2vz_mn) + IF(debug_flag) PRINT *, "->Leaving gpeq_c at ipsi=", ipsi c----------------------------------------------------------------------- c terminate. @@ -844,81 +859,122 @@ SUBROUTINE gpeq_c(psi, ipsi) RETURN END SUBROUTINE gpeq_c c----------------------------------------------------------------------- -c subprogram 9b. gpeq_epf. -c compute C norm squared: three forms (cw only, cv only, mixed). -c----------------------------------------------------------------------- - SUBROUTINE gpeq_epf(psi, ipsi) +c subprogram 9c. gpeq_cveri. +c verify the C-vector identity +c +c (curl C) · grad(psi) +c = (d C_zeta / d theta - d C_theta / d zeta) / J +c +c using the single-n Fourier convention +c +c exp[2*pi*i*(m*theta - n*zeta)]. +c +c Therefore +c +c d/dtheta -> 2*pi*i*m +c d/dzeta -> -2*pi*i*n +c +c and +c +c (curl C) · grad(psi) +c = (d_theta C_zeta + 2*pi*i*n*C_theta)/J. +c----------------------------------------------------------------------- + SUBROUTINE gpeq_cveri(psi, cveri_fun) c----------------------------------------------------------------------- c declaration. c----------------------------------------------------------------------- REAL(r8), INTENT(IN) :: psi - INTEGER, INTENT(IN) :: ipsi + COMPLEX(r8), DIMENSION(0:mthsurf), INTENT(OUT) :: cveri_fun - INTEGER :: itheta - - COMPLEX(r8), DIMENSION(0:mthsurf) :: cwp_tmp, cwt_tmp, cwz_tmp - COMPLEX(r8), DIMENSION(0:mthsurf) :: cvp_tmp, cvt_tmp, cvz_tmp - - COMPLEX(r8), DIMENSION(0:mthsurf) :: c2_cw_tmp,c2_cv_tmp, - $ c2_cvw_tmp - - IF(debug_flag) PRINT *, "Entering gpeq_epf at ipsi=", ipsi + INTEGER :: itheta, ipert + COMPLEX(r8), DIMENSION(mpert) :: dth_cvz_mn, dzt_cvt_mn + COMPLEX(r8), DIMENSION(mpert) :: curlpsi_mn + + IF(debug_flag) PRINT *, "Entering gpeq_cveri" c----------------------------------------------------------------------- -c Call gpeq_c to compute C components first. +c prepare psi-local equilibrium and reconstruct C. c----------------------------------------------------------------------- - CALL gpeq_c(psi, ipsi) - + CALL gpeq_sol(psi) + CALL gpeq_contra(psi) + CALL gpeq_cova(psi) + CALL gpeq_normal(psi) + CALL gpeq_c(psi, 0) + c----------------------------------------------------------------------- -c Extract C components from global storage. +c exact theta/zeta derivatives in mode space. c----------------------------------------------------------------------- - cwp_tmp(0:mthsurf) = cwp_fun(0:mthsurf, ipsi) - cwt_tmp(0:mthsurf) = cwt_fun(0:mthsurf, ipsi) - cwz_tmp(0:mthsurf) = cwz_fun(0:mthsurf, ipsi) - - cvp_tmp(0:mthsurf) = cvp_fun(0:mthsurf, ipsi) - cvt_tmp(0:mthsurf) = cvt_fun(0:mthsurf, ipsi) - cvz_tmp(0:mthsurf) = cvz_fun(0:mthsurf, ipsi) + DO ipert = 1, mpert + dth_cvz_mn(ipert) = twopi * ifac * mfac(ipert) * cvz_mn(ipert) + dzt_cvt_mn(ipert) = -twopi * ifac * nn * cvt_mn(ipert) + curlpsi_mn(ipert) = dth_cvz_mn(ipert) - dzt_cvt_mn(ipert) + ENDDO + + CALL iscdftb(mfac, mpert, cveri_fun, mthsurf, curlpsi_mn) c----------------------------------------------------------------------- -c 1) C^2 from contravariant components only. -c Note: |C^i|^2 = C^i C^i (no metric needed for this form) +c divide by Jacobian pointwise: +c (curl C) · grad(psi) = (d_theta C_zeta - d_zeta C_theta)/J c----------------------------------------------------------------------- DO itheta = 0, mthsurf - c2_cw_tmp(itheta) = cwp_tmp(itheta)*cwp_tmp(itheta)+ - $ cwt_tmp(itheta)*cwt_tmp(itheta)+ - $ cwz_tmp(itheta)*cwz_tmp(itheta) + CALL bicube_eval(rzphi, psi, theta(itheta), 0) + jac = rzphi%f(4) + cveri_fun(itheta) = cveri_fun(itheta) / jac ENDDO - + + IF(debug_flag) PRINT *, "->Leaving gpeq_cveri" c----------------------------------------------------------------------- -c 2) C^2 from covariant components only. -c Note: |C_i|^2 = C_i C_i (metric already included in cvp_tmp) +c terminate. c----------------------------------------------------------------------- - DO itheta = 0, mthsurf - c2_cv_tmp(itheta) = cvp_tmp(itheta)*cvp_tmp(itheta)+ - $ cvt_tmp(itheta)*cvt_tmp(itheta)+ - $ cvz_tmp(itheta)*cvz_tmp(itheta) - ENDDO - + RETURN + END SUBROUTINE gpeq_cveri c----------------------------------------------------------------------- -c 3) C^2 using both covariant and contravariant. -c Note: C_i C^i = CONJG(cvp) * cwp + CONJG(cvt) * cwt + ... +c subprogram 9b. gpeq_epf. +c compute the flux-surface integral of the first EPF kernel, +c +c \int dtheta dzeta J |C|^2 / mu0 +c +c and return the theta/zeta integrated value for one psi. c----------------------------------------------------------------------- - DO itheta = 0, mthsurf - c2_cvw_tmp(itheta) = CONJG(cvp_tmp(itheta))* - $ cwp_tmp(itheta)+CONJG(cvt_tmp(itheta))*cwt_tmp(itheta)+ - $ CONJG(cvz_tmp(itheta))*cwz_tmp(itheta) - ENDDO - + SUBROUTINE gpeq_epf(psi, epf_int) c----------------------------------------------------------------------- -c Store results to global arrays. +c declaration. c----------------------------------------------------------------------- - IF (ipsi <= mpsi) THEN - c2_cw_fun(0:mthsurf, ipsi) = c2_cw_tmp(0:mthsurf) - c2_cv_fun(0:mthsurf, ipsi) = c2_cv_tmp(0:mthsurf) - c2_cvw_fun(0:mthsurf, ipsi) = c2_cvw_tmp(0:mthsurf) - ENDIF + REAL(r8), INTENT(IN) :: psi + REAL(r8), INTENT(OUT) :: epf_int + INTEGER :: itheta + COMPLEX(r8), DIMENSION(0:mthsurf) :: cwp_fun, cwt_fun, cwz_fun + COMPLEX(r8), DIMENSION(0:mthsurf) :: cv2p_fun, cv2t_fun, cv2z_fun + COMPLEX(r8) :: epf_theta + + IF(debug_flag) PRINT *, "Entering gpeq_epf" +c----------------------------------------------------------------------- +c Prepare psi-local perturbed equilibrium and compute C components. +c----------------------------------------------------------------------- + CALL gpeq_sol(psi) + CALL gpeq_contra(psi) + CALL gpeq_cova(psi) + CALL gpeq_normal(psi) + CALL gpeq_c(psi, 0) + + CALL iscdftb(mfac, mpert, cwp_fun, mthsurf, cwp_mn) + CALL iscdftb(mfac, mpert, cwt_fun, mthsurf, cwt_mn) + CALL iscdftb(mfac, mpert, cwz_fun, mthsurf, cwz_mn) + CALL iscdftb(mfac, mpert, cv2p_fun, mthsurf, c2vp_mn) + CALL iscdftb(mfac, mpert, cv2t_fun, mthsurf, c2vt_mn) + CALL iscdftb(mfac, mpert, cv2z_fun, mthsurf, c2vz_mn) + + epf_int = 0.0_r8 + DO itheta = 0, mthsurf-1 + CALL bicube_eval(rzphi, psi, theta(itheta), 0) + jac = rzphi%f(4) + epf_theta = CONJG(cwp_fun(itheta)/jac) * cv2p_fun(itheta) + + $ CONJG(cwt_fun(itheta)/jac) * cv2t_fun(itheta) + + $ CONJG(cwz_fun(itheta)/jac) * cv2z_fun(itheta) + epf_int = epf_int + REAL(epf_theta, r8) / + $ (mu0 * REAL(mthsurf, r8)) * jac + ENDDO - IF(debug_flag) PRINT *, "->Leaving gpeq_epf at ipsi=", ipsi + IF(debug_flag) PRINT *, "->Leaving gpeq_epf" c----------------------------------------------------------------------- c terminate. c----------------------------------------------------------------------- @@ -926,27 +982,35 @@ SUBROUTINE gpeq_epf(psi, ipsi) END SUBROUTINE gpeq_epf c----------------------------------------------------------------------- c subprogram 10. gpeq_dst. -c compute DST(psi,theta) = K(psi,theta) * CONJG(xi_normal(psi,theta)). -c Store both theta-space and mode-space for later integration. +c compute the flux-surface integral of the destabilizing kernel, +c +c \int dtheta dzeta J * K * xi_n^2 +c +c and return the theta/zeta integrated value for one psi. c----------------------------------------------------------------------- - SUBROUTINE gpeq_dst(psi, ipsi) + SUBROUTINE gpeq_dst(psi, dst_int) REAL(r8), INTENT(IN) :: psi - INTEGER, INTENT(IN) :: ipsi - COMPLEX(r8), DIMENSION(mpert) :: K_mn - COMPLEX(r8), DIMENSION(0:mthsurf) :: K_fun, xi_normal_fun, - $ dst_theta_fun + COMPLEX(r8), INTENT(OUT) :: dst_int + INTEGER :: itheta + COMPLEX(r8), DIMENSION(0:mthsurf) :: K_fun, xno_fun c----------------------------------------------------------------------- -c DST(psi,theta) = K(psi,theta) * CONJG(xi_normal(psi,theta)) -c Store both theta-space and mode-space for later integration. +c DST(psi) = \int dtheta dzeta J * K * xi_n^2 c----------------------------------------------------------------------- - CALL gpeq_K(psi, K_mn, K_fun) - CALL iscdftb(mfac, mpert, xi_normal_fun, mthsurf, xsp_mn) - dst_theta_fun = K_fun * CONJG(xi_normal_fun) - - DST_fun(0:mthsurf, ipsi) = dst_theta_fun - CALL iscdftf(mfac, mpert, dst_theta_fun, mthsurf, - $ DST_mn(1:mpert, ipsi)) + CALL gpeq_sol(psi) + CALL gpeq_contra(psi) + CALL gpeq_cova(psi) + CALL gpeq_normal(psi) + CALL gpeq_K(psi, K_fun) + CALL iscdftb(mfac, mpert, xno_fun, mthsurf, xno_mn) + dst_int = CMPLX(0.0_r8, 0.0_r8, r8) + DO itheta = 0, mthsurf-1 + CALL bicube_eval(rzphi, psi, theta(itheta), 0) + jac = rzphi%f(4) + dst_int = dst_int + + $ jac* K_fun(itheta) * + $ ABS(xno_fun(itheta))**2 / REAL(mthsurf, r8) + ENDDO c----------------------------------------------------------------------- c terminate. c----------------------------------------------------------------------- @@ -962,11 +1026,9 @@ SUBROUTINE gpeq_shear(psi, shear_fun) COMPLEX(r8), DIMENSION(0:mthsurf), INTENT(OUT) :: shear_fun INTEGER :: itheta - REAL(r8) :: q, q1, jac, rfac, eta, r_val, theta_val - REAL(r8) :: w11, w12, w21, w22, w31, w32 - REAL(r8) :: v11, v12, v13, v21, v22, v23, v33 + REAL(r8) :: r_val, theta_val REAL(r8) :: dpdp, dpdt, dpdz, shear_deriv - REAL(r8) :: shear_contra, shear_cova, diff_shear + REAL(r8) :: shear_contra TYPE(spline_type) :: shear_temp c----------------------------------------------------------------------- @@ -986,7 +1048,7 @@ SUBROUTINE gpeq_shear(psi, shear_fun) c----------------------------------------------------------------------- CALL spline_alloc(shear_temp, mthsurf, 5) shear_temp%xs = theta(0:mthsurf) - shear_temp%name = "shear_temp" + shear_temp%name = "shear_" c----------------------------------------------------------------------- c Step 1: Compute shear components at all theta points. @@ -1002,42 +1064,43 @@ SUBROUTINE gpeq_shear(psi, shear_fun) c Compute w_ij contravariant metric in Cartesian components - w11 = (1.0_r8 + rzphi%fy(2))*twopi**2*rfac*r_val/jac - w12 = -rzphi%fy(1)*pi*r_val/(rfac*jac) + w(1,1) = (1.0_r8 + rzphi%fy(2))*twopi**2*rfac*r_val/jac + w(1,2) = -rzphi%fy(1)*pi*r_val/(rfac*jac) - w21 = -twopi**2*rfac*r_val*rzphi%fx(2)/jac - w22 = pi*r_val*rzphi%fx(1)/(rfac*jac) + w(2,1) = -twopi**2*rfac*r_val*rzphi%fx(2)/jac + w(2,2) = pi*r_val*rzphi%fx(1)/(rfac*jac) - w31 = (twopi*r_val*rfac/jac)* + w(3,1) = (twopi*r_val*rfac/jac)* $ (rzphi%fx(2)*rzphi%fy(3) - rzphi%fx(3)*(1.0_r8 + $ rzphi%fy(2))) - w32 = (r_val/(2.0_r8*rfac*jac))* + w(3,2) = (r_val/(2.0_r8*rfac*jac))* $ (rzphi%fx(3)*rzphi%fy(1) - rzphi%fx(1)*rzphi%fy(3)) c Compute covariant basis v_ij = ∂r/∂ξ_j (Cartesian components) c From recon_metric: - v11 = rzphi%fx(1)/(2.0_r8*rfac*jac) - v12 = rzphi%fx(2)*twopi*rfac/jac - v13 = rzphi%fx(3)*r_val/jac + v(1,1) = rzphi%fx(1)/(2.0_r8*rfac*jac) + v(1,2) = rzphi%fx(2)*twopi*rfac/jac + v(1,3) = rzphi%fx(3)*r_val/jac - v21 = rzphi%fy(1)/(2.0_r8*rfac*jac) - v22 = (1.0_r8 + rzphi%fy(2))*twopi*rfac/jac - v23 = rzphi%fy(3)*r_val/jac + v(2,1) = rzphi%fy(1)/(2.0_r8*rfac*jac) + v(2,2) = (1.0_r8 + rzphi%fy(2))*twopi*rfac/jac + v(2,3) = rzphi%fy(3)*r_val/jac c Component 33 of covariant basis - v33 = twopi*r_val/jac + v(3,3) = twopi*r_val/jac c Contravariant dot products: dpdp = ∇ψ·∇ψ, etc. - dpdp = w11**2 + w12**2 - dpdt = w11*w21 + w12*w22 - dpdz = w11*w31 + w12*w32 + dpdp = w(1,1)**2 + w(1,2)**2 + dpdt = w(1,1)*w(2,1) + w(1,2)*w(2,2) + dpdz = w(1,1)*w(3,1) + w(1,2)*w(3,2) shear_temp%fs(itheta, 1) = twopi*r_val*jac* - $ (-(v11*v21+v12*v22)*(v23+q*v33)+v13*(v21**2+v22**2)) + $ (-(v(1,1)*v(2,1)+v(1,2)*v(2,2))*(v(2,3)+q*v(3,3)) + $ +v(1,3)*(v(2,1)**2+v(2,2)**2)) shear_temp%fs(itheta, 2) = (q*dpdt - dpdz) shear_temp%fs(itheta, 3) = dpdp shear_temp%fs(itheta, 4) = - $ twopi**2 * r_val**2 * (v21**2 + v22**2) + $ twopi**2 * r_val**2 * (v(2,1)**2 + v(2,2)**2) shear_temp%fs(itheta, 5) = @@ -1061,7 +1124,7 @@ SUBROUTINE gpeq_shear(psi, shear_fun) c Contravariant approach: derivative of component 5 shear_deriv = shear_temp%f1(5) - shear_contra = (twopi**2/jac)*(q1 + shear_deriv) + shear_contra = (chi1**2/jac)*(q1 + shear_deriv) shear_fun(itheta) = CMPLX(shear_contra, 0.0_r8, r8) ENDDO @@ -1076,29 +1139,23 @@ END SUBROUTINE gpeq_shear c----------------------------------------------------------------------- c subprogram 12. gpeq_curvature. c compute curvature in spatial domain. -c κ·∇ψ = (|∇ψ|²/B²)[μ₀p' + (1/2)(∂B²/∂ψ) + (1/2)(∂B²/∂θ)(∇ψ·∇ψ)/(∇ψ·∇θ)] +c κ·∇ψ = (|∇ψ|²/B²)[μ₀p' + (1/2)(∂B²/∂ψ) + (1/2)(∂B²/∂θ)(∇ψ·∇θ)/(∇ψ·∇ψ)] c----------------------------------------------------------------------- SUBROUTINE gpeq_curvature(psi, curv_fun) REAL(r8), INTENT(IN) :: psi COMPLEX(r8), DIMENSION(0:mthsurf), INTENT(OUT) :: curv_fun INTEGER :: itheta - REAL(r8) :: q, q1, p1, jac, rfac, eta, r_val, theta_val - REAL(r8) :: chi1, delpsi - REAL(r8) :: w11, w12, w13, w21, w22, w23, w31, w32, w33 - REAL(r8) :: v21, v22, v23, v33 + REAL(r8) :: r_val, theta_val + REAL(r8) :: delpsi REAL(r8) :: bsq_val, bsq_psi, bsq_theta - REAL(r8) :: dpdt , kappa_psi, safe_denom - TYPE(spline_type) :: bsq_temp + REAL(r8) :: dpdt , kappa_psi c----------------------------------------------------------------------- c Setup: get equilibrium at this psi. c----------------------------------------------------------------------- CALL spline_eval(sq, psi, 1) - q = sq%f(4) - q1 = sq%f1(4) - p1 = sq%f1(2) - chi1 = psio * twopi + p1 = sq%f1(2) / mu0 c----------------------------------------------------------------------- c Step 3: Compute curvature at all theta points. @@ -1113,21 +1170,21 @@ SUBROUTINE gpeq_curvature(psi, curv_fun) r_val = ro + rfac*COS(eta) c Compute contravariant metrics - w11 = (1.0_r8 + rzphi%fy(2))*(twopi**2)*rfac*r_val/jac - w12 = -rzphi%fy(1)*pi*r_val/(rfac*jac) + w(1,1) = (1.0+ rzphi%fy(2))*(twopi**2)*rfac*r_val/jac + w(1,2) = -rzphi%fy(1)*pi*r_val/(rfac*jac) - w21 = -(twopi**2)*rfac*r_val*rzphi%fx(2)/jac - w22 = pi*r_val*rzphi%fx(1)/(rfac*jac) + w(2,1) = -(twopi**2)*rfac*r_val*rzphi%fx(2)/jac + w(2,2) = pi*r_val*rzphi%fx(1)/(rfac*jac) - w31 = (twopi*r_val*rfac/jac)* + w(3,1) = (twopi*r_val*rfac/jac)* $ (rzphi%fx(2)*rzphi%fy(3) - rzphi%fx(3)* $ (1.0_r8 + rzphi%fy(2))) - w32 = (r_val/(2.0_r8*rfac*jac))* + w(3,2) = (r_val/(2.0_r8*rfac*jac))* $ (rzphi%fx(3)*rzphi%fy(1) - rzphi%fx(1)*rzphi%fy(3)) c Compute |∇ψ|² and ∇ψ·∇θ - delpsi = SQRT(w11**2 + w12**2) - dpdt = w11*w21 + w12*w22 + delpsi = SQRT(w(1,1)**2 + w(1,2)**2) + dpdt = w(1,1)*w(2,1) + w(1,2)*w(2,2) CALL bicube_eval(eqfun, psi, theta_val, 1) c Retrieve B² and derivatives @@ -1138,7 +1195,7 @@ SUBROUTINE gpeq_curvature(psi, curv_fun) c Compute κ·∇ψ safely kappa_psi = (delpsi**2 / bsq_val) * - $ (p1 + 0.5_r8*bsq_psi + + $ (p1*mu0 + 0.5_r8*bsq_psi + $ 0.5_r8*bsq_theta*dpdt/(delpsi**2)) curv_fun(itheta) = CMPLX(kappa_psi, 0.0_r8, r8) @@ -1150,101 +1207,117 @@ END SUBROUTINE gpeq_curvature c----------------------------------------------------------------------- c subprogram 13. gpeq_K. c compute Bernstein K quantity (stability indicator). +c K = |∇ψ_dcon|^2 * σ * S_dcon + B^2 * σ^2 + 2 P' * κ^psi +c Uses pre-computed metric from idcon_metric c----------------------------------------------------------------------- - SUBROUTINE gpeq_K(psi, K_mn, K_fun) + SUBROUTINE gpeq_K(psi, K_fun, K_term1, K_term2, K_term3, + $ sigma_fun, jdotb_fun, shear_out, curv_out) REAL(r8), INTENT(IN) :: psi - COMPLEX(r8), DIMENSION(mpert), INTENT(OUT) :: K_mn - COMPLEX(r8), DIMENSION(0:mthsurf), OPTIONAL, INTENT(OUT) - $ :: K_fun - - INTEGER :: ipert, jpert, dm, m1 - REAL(r8) :: q, f1, p1, chi1, jac, jac1, bpfac, btfac - REAL(r8) :: bth, bze, jth, jze - COMPLEX(r8), DIMENSION(-mband:mband) :: g22, g33, g23 - COMPLEX(r8), DIMENSION(0:mthsurf) :: K_theta_fun - COMPLEX(r8), DIMENSION(mpert) :: bvt_local, bvz_local - COMPLEX(r8), DIMENSION(mpert) :: sigma_mn - + COMPLEX(r8), DIMENSION(0:mthsurf), INTENT(OUT) :: K_fun + REAL(r8), DIMENSION(0:mthsurf), OPTIONAL, INTENT(OUT) :: + $ K_term1, K_term2, K_term3, sigma_fun, jdotb_fun + COMPLEX(r8), DIMENSION(0:mthsurf), OPTIONAL, INTENT(OUT) :: + $ shear_out, curv_out + + INTEGER :: itheta + REAL(r8) :: f1raw, delpsi + REAL(r8) :: jwt, jwz, bth, bze, bsq_val, sigma, jdotb_val + REAL(r8) :: g22, g23, g33, r_val + REAL(r8), DIMENSION(0:mthsurf) :: K_t1, K_t2, K_t3 + REAL(r8), DIMENSION(0:mthsurf) :: sigma_vals, jdotb_vals + COMPLEX(r8), DIMENSION(0:mthsurf) :: shear_fun, curv_fun + chi1 = psio * twopi - - CALL spline_eval(sq, psi, 1) - f1 = sq%f1(1) / twopi - p1 = sq%f1(2) - q = sq%f(4) - CALL bicube_eval(rzphi, psi, 0.0_r8, 0) - jac = rzphi%f(4) - jac1 = rzphi%fx(4) - - CALL cspline_eval(metric%cs, psi, 0) - g22(0:-mband:-1) = metric%cs%f(2*mband+2:3*mband+2) - g23(0:-mband:-1) = metric%cs%f(3*mband+3:4*mband+3) - g33(0:-mband:-1) = metric%cs%f(4*mband+4:5*mband+4) - g22(1:mband) = CONJG(g22(-1:-mband:-1)) - g23(1:mband) = CONJG(g23(-1:-mband:-1)) - g33(1:mband) = CONJG(g33(-1:-mband:-1)) - -c----------------------------------------------------------------------- -c compute K-related quantities in mode space. -c----------------------------------------------------------------------- - ipert = 0 - K_mn = CMPLX(0.0_r8, 0.0_r8, r8) - DO m1 = mlow, mhigh - ipert = ipert + 1 - DO dm = MAX(1-ipert, -mband), MIN(mpert-ipert, mband) - jpert = ipert + dm - jth = -f1*twopi/jac - jze = q*jth - p1/chi1 - bth = chi1 / jac - bze = q * chi1 / jac - - K_mn(ipert) = K_mn(ipert) + - $ (g22(dm)*bth*jth + g33(dm)*bze*jze + - $ g23(dm)*(bth*jze + bze*jth)) * bwp_mn(jpert) - ENDDO - ENDDO - + + IF(debug_flag) PRINT *, "Entering gpeq_K" c----------------------------------------------------------------------- -c convert to spatial functions if requested. +c load equilibrium parameters c----------------------------------------------------------------------- - IF (PRESENT(K_fun)) THEN - CALL iscdftb(mfac, mpert, K_theta_fun, mthsurf, K_mn) - K_fun = K_theta_fun - ENDIF - - RETURN - END SUBROUTINE gpeq_K + CALL spline_eval(sq, psi, 1) + f1raw = sq%f1(1) + p1 = sq%f1(2) / mu0 + q = sq%f(4) c----------------------------------------------------------------------- -c subprogram 13. gpeq_terms. -c compute integration terms for reconstruction diagnostics. +c compute shear and curvature c----------------------------------------------------------------------- - SUBROUTINE gpeq_terms(psi, mode, xspmn, term_mn, term_fun) - REAL(r8), INTENT(IN) :: psi - INTEGER, INTENT(IN) :: mode - COMPLEX(r8), DIMENSION(mpert), INTENT(IN) :: xspmn - COMPLEX(r8), DIMENSION(mpert), INTENT(OUT) :: term_mn - COMPLEX(r8), DIMENSION(0:mthsurf), OPTIONAL, INTENT(OUT) - $ :: term_fun - - INTEGER :: ipert, jpert, dm, m1 - COMPLEX(r8), DIMENSION(0:mthsurf) :: term_theta_fun - + CALL gpeq_shear(psi, shear_fun) + CALL gpeq_curvature(psi, curv_fun) c----------------------------------------------------------------------- -c placeholder: compute integration terms. -c full implementation depends on integration methodology. +c compute K in spatial domain (idcon_metric convention) c----------------------------------------------------------------------- - term_mn = CMPLX(0.0_r8, 0.0_r8, r8) - + DO itheta = 0, mthsurf + CALL bicube_eval(rzphi, psi, theta(itheta), 1) + jac = rzphi%f(4) + rfac = SQRT(rzphi%f(1)) + eta = twopi*(theta(itheta) + rzphi%f(2)) + r_val = ro + rfac*COS(eta) + +c |∇ψ| magnitude + w(1,1)=(1+rzphi%fy(2))*twopi**2*rfac*r_val/jac + w(1,2)=-rzphi%fy(1)*pi*r_val/(rfac*jac) + delpsi=SQRT(w(1,1)**2+w(1,2)**2) + +c current and magnetic field components +c note: -f1raw/jac is the mu0*j^theta component (DCON convention), +c so divide by mu0 to get the physical current j for K = mu0*sigma^2*B^2. + jwt = -f1raw/(jac*mu0) + jwz = q*jwt - p1/chi1 + bth = chi1 / jac + bze = q * chi1 / jac + +c contravariant basis vectors (idcon_metric style - NO jac) + v(2,1) = rzphi%fy(1)/(2*rfac) + v(2,2) = (1+rzphi%fy(2))*twopi*rfac + v(2,3) = rzphi%fy(3)*r_val + + v(3,3) = twopi*r_val + +c metric tensor: g_ij = sum(v_i * v_j) (idcon_metric convention) + g22 = (v(2,1)**2 + v(2,2)**2 + v(2,3)**2) + g33 = (v(3,3)**2) + g23 = (v(2,3)*v(3,3)) + +c j·B and σ = (j·B)/B² + CALL bicube_eval(eqfun, psi, theta(itheta), 0) + bsq_val = eqfun%f(1)**2 + + jdotb_val = g22*bth*jwt + g33*bze*jwz + + $ g23*(bth*jwz + bze*jwt) + sigma = jdotb_val / bsq_val + sigma_vals(itheta) = sigma + jdotb_vals(itheta) = jdotb_val + +c Term1: |∇ψ_dcon|^2 * σ * S_dcon + K_t1(itheta) = (delpsi**2) * sigma * REAL(shear_fun(itheta)) + +c Term2: B^2 * σ^2 + K_t2(itheta) = bsq_val * sigma**2 * mu0 + +c Term3: 2 p' * κ^psi + K_t3(itheta) = 2.0_r8 * REAL(curv_fun(itheta)) * p1 + ENDDO + +c total K = T1 + T2 + T3 + DO itheta = 0, mthsurf + K_fun(itheta) = CMPLX(K_t1(itheta) + K_t2(itheta) + + $ K_t3(itheta), 0.0_r8, r8) + ENDDO + +c optionally return individual term values + IF (PRESENT(K_term1)) K_term1 = K_t1 + IF (PRESENT(K_term2)) K_term2 = K_t2 + IF (PRESENT(K_term3)) K_term3 = K_t3 + IF (PRESENT(sigma_fun)) sigma_fun = sigma_vals + IF (PRESENT(jdotb_fun)) jdotb_fun = jdotb_vals + IF (PRESENT(shear_out)) shear_out = shear_fun + IF (PRESENT(curv_out)) curv_out = curv_fun + + IF(debug_flag) PRINT *, "Exiting gpeq_K" c----------------------------------------------------------------------- -c convert to spatial functions if requested. +c terminate. c----------------------------------------------------------------------- - IF (PRESENT(term_fun)) THEN - CALL iscdftb(mfac, mpert, term_theta_fun, mthsurf, term_mn) - term_fun = term_theta_fun - ENDIF - RETURN - END SUBROUTINE gpeq_terms -c----------------------------------------------------------------------- + END SUBROUTINE gpeq_K c subprogram 14. gpeq_fcoords. c transform coordinates to dcon coordinates. c----------------------------------------------------------------------- @@ -1900,13 +1973,9 @@ SUBROUTINE gpeq_alloc $ bno_mn(mpert),bta_mn(mpert),bpa_mn(mpert), $ xrr_mn(mpert),xrz_mn(mpert),xrp_mn(mpert), $ brr_mn(mpert),brz_mn(mpert),brp_mn(mpert), - $ qvp_mn(mpert,0:mpsi),qvt_mn(mpert,0:mpsi), - $ qvz_mn(mpert,0:mpsi),cvp_mn(mpert,0:mpsi), - $ cvt_mn(mpert,0:mpsi),cvz_mn(mpert,0:mpsi), - $ qwp_mn(mpert,0:mpsi),qwt_mn(mpert,0:mpsi), - $ qwz_mn(mpert,0:mpsi),cwp_mn(mpert,0:mpsi), - $ cwt_mn(mpert,0:mpsi),cwz_mn(mpert,0:mpsi), - $ DST_mn(0:mthsurf,0:mpsi),DST_fun(0:mthsurf,0:mpsi)) + $ c2vp_mn(mpert),c2vt_mn(mpert),c2vz_mn(mpert), + $ cvp_mn(mpert),cvt_mn(mpert),cvz_mn(mpert), + $ cwp_mn(mpert),cwt_mn(mpert),cwz_mn(mpert)) IF(debug_flag) PRINT *, "->Leaving gpeq_alloc" c----------------------------------------------------------------------- c terminate. @@ -1925,9 +1994,8 @@ SUBROUTINE gpeq_dealloc $ xvp_mn,xvt_mn,xvz_mn,bvp_mn,bvt_mn,bvz_mn,xmz_mn,bmz_mn, $ xno_mn,xta_mn,xpa_mn,bno_mn,bta_mn,bpa_mn, $ xrr_mn,xrz_mn,xrp_mn,brr_mn,brz_mn,brp_mn, - $ qvp_mn,qvt_mn,qvz_mn,cvp_mn,cvt_mn,cvz_mn, - $ qwp_mn,qwt_mn,qwz_mn,cwp_mn,cwt_mn,cwz_mn, - $ DST_mn,DST_fun) + $ c2vp_mn,c2vt_mn,c2vz_mn,cvp_mn,cvt_mn,cvz_mn, + $ cwp_mn,cwt_mn,cwz_mn) IF(debug_flag) PRINT *, "->Leaving gpeq_dealloc" c----------------------------------------------------------------------- c terminate. diff --git a/gpec/gpglobal.F b/gpec/gpglobal.F index 09bfe611f..00ca516fb 100644 --- a/gpec/gpglobal.F +++ b/gpec/gpglobal.F @@ -58,8 +58,8 @@ MODULE gpglobal_mod REAL(r8), DIMENSION(:), ALLOCATABLE :: psifac,rhofac,qfac,singfac, $ r,z,theta,ee,surfee,surfei,rpsifac, - $ surf_indev,vsurf_indev,fsurf_indev,surf_indinvev - $ ,eft,efp + $ surf_indev,vsurf_indev,fsurf_indev,surf_indinvev, + $ eft,efp REAL(r8), DIMENSION(:,:), ALLOCATABLE :: xzpts, $ chperr,chpsqr,grri,grre,griw,grrw,gdr,gdz,gdpsi,gdthe,gdphi REAL(r8), DIMENSION(3,3) :: w,v @@ -73,15 +73,8 @@ MODULE gpglobal_mod $ xrr_mn,xrz_mn,xrp_mn,brr_mn,brz_mn,brp_mn, $ chi_mn,che_mn,kax_mn,sbno_mn,sbno_fun,edge_mn,edge_fun, $ chy_mn,chx_mn,chw_mn,kaw_mn,mutual_indev,mutual_indinvev - COMPLEX(r8), DIMENSION(:,:), ALLOCATABLE :: cwp_mn,cwt_mn, - $ cwz_mn, cvp_mn,cvt_mn,cvz_mn, - $ qvp_mn,qvt_mn, qvz_mn, qwp_mn,qwt_mn,qwz_mn, - $ c2_cvw_mn,c2_cw_mn, c2_cv_mn - COMPLEX(r8), DIMENSION(:,:), ALLOCATABLE :: cwp_fun,cwt_fun, - $ cwz_fun,cvp_fun,cvt_fun,cvz_fun,cvp_funp,cvt_funp,cvz_funp, - $ qvp_fun,qvt_fun,qvz_fun,qwp_fun,qwt_fun,qwz_fun,c2_cw_fun, - $ c2_cv_fun,c2_cvw_fun - COMPLEX(r8), DIMENSION(:,:), ALLOCATABLE :: DST_mn,DST_fun + COMPLEX(r8), DIMENSION(:), ALLOCATABLE :: cwp_mn,cwt_mn, + $ cwz_mn, cvp_mn,cvt_mn,cvz_mn,c2vp_mn,c2vt_mn, c2vz_mn COMPLEX(r8), DIMENSION(:,:), ALLOCATABLE :: wt,wt0,chp_mn,kap_mn, $ permeabev,chimats,chemats,flxmats,kaxmats,singbno_mn, $ plas_indev,plas_indinvev,reluctev,indrelev,permeabsv, diff --git a/gpec/gpout.f b/gpec/gpout.f index a36d83fbd..d6148e869 100644 --- a/gpec/gpout.f +++ b/gpec/gpout.f @@ -6877,27 +6877,36 @@ SUBROUTINE gpout_recon(mode, xspmn) INTEGER, INTENT(IN) :: mode COMPLEX(r8), DIMENSION(:), INTENT(IN) :: xspmn - INTEGER :: ipsi, itheta, ipert, ushear_fun, ucurv, uk, - $ ucov, ucontra_phy, ucontra_met, uQv, uQw, uc2cw, uc2cv, - $ uc2cvw + INTEGER :: ipsi, itheta, ipert, ushear_fun, ucurv, uk, ucveri, + $ uk_sigma, ucw_fun, ucw_mn, ucv_fun, ucv_mn, ucv2_fun, + $ ucv2_mn, u_int REAL(r8) :: psi, eta, rfac REAL(r8), DIMENSION(0:mthsurf) :: rvals, zvals - COMPLEX(r8), DIMENSION(mpert) :: curv_mn, K_mn, + REAL(r8) :: epf_int + COMPLEX(r8) :: dst_int + COMPLEX(r8), DIMENSION(mpert) :: curv_mn, $ term_mn - COMPLEX(r8), DIMENSION(0:mthsurf) :: shear_fun, curv_fun, K_fun + COMPLEX(r8), DIMENSION(0:mthsurf) :: shear_fun, curv_fun, K_fun, + $ cveri_fun + COMPLEX(r8), DIMENSION(0:mthsurf,3) :: cw_fun, cv_fun, cv2_fun + REAL(r8), DIMENSION(0:mthsurf) :: K_term1, K_term2, K_term3 + REAL(r8), DIMENSION(0:mthsurf) :: sigma_vals, jdotb_vals CHARACTER(8) :: smode - CHARACTER(128) :: shear_fun_file, curv_file - CHARACTER(128) :: k_file, c2cw_file, c2cv_file, c2cvw_file - CHARACTER(128) :: ccov_file, ccontra_phy_file, ccontra_met_file - CHARACTER(128) :: qv_file, qw_file + CHARACTER(128) :: shear_fun_file, curv_file, cveri_file + CHARACTER(128) :: k_file, k_sigma_file + CHARACTER(128) :: cw_fun_file, cw_mn_file, cv_fun_file, cv_mn_file + CHARACTER(128) :: cv2_fun_file, cv2_mn_file, int_file + REAL(r8), DIMENSION(0:mpsi) :: epf_psi, epf_cumsum + COMPLEX(r8), DIMENSION(0:mpsi) :: dst_psi_k, dst_cumsum_k + REAL(r8) :: epf_int_total + COMPLEX(r8) :: dst_int_total_k, dw_raw_k + REAL(r8) :: psi_min, psi_max, dpsi, dpsi_local c Diagnostic variables for C vector comparison INTEGER :: ipsi_mid, itheta_mid, ipert_diag, m1 REAL(r8) :: psi_mid, theta_mid, delpsi_sq, jac_mid, q_mid, $ q1_mid, chi1_mid, f1_mid, p1_mid, j_theta_coef, j_zeta_coef - COMPLEX(r8) :: C1_phys, C2_phys, C3_phys, C1_metr, C2_metr, - $ C3_metr, term_exp, j_cross_factor, xi_psi_val - COMPLEX(r8) :: C_psi_val, C_theta_val, C_zeta_val + COMPLEX(r8) :: term_exp, j_cross_factor, xi_psi_val COMPLEX(r8), DIMENSION(-mband:mband) :: g11_diag, g12_diag, $ g22_diag, g23_diag, g31_diag, g33_diag REAL(r8), DIMENSION(10,10) :: w @@ -6908,54 +6917,6 @@ SUBROUTINE gpout_recon(mode, xspmn) $ " diagnostics" IF(verbose) WRITE(*,*)"__________________________________________" -c----------------------------------------------------------------------- -c allocate C vector arrays for EPF calculation. -c Storage: C_*_mn(mpert, 0:mpsi) for all psi levels. -c----------------------------------------------------------------------- -c Allocate C and Q vector spatial function arrays (theta, psi grid) - IF (.NOT. ALLOCATED(cwp_fun)) THEN - ALLOCATE(cwp_fun(0:mthsurf, 0:mpsi)) - ALLOCATE(cwt_fun(0:mthsurf, 0:mpsi)) - ALLOCATE(cwz_fun(0:mthsurf, 0:mpsi)) - ALLOCATE(cvp_fun(0:mthsurf, 0:mpsi)) - ALLOCATE(cvt_fun(0:mthsurf, 0:mpsi)) - ALLOCATE(cvz_fun(0:mthsurf, 0:mpsi)) - ALLOCATE(cvp_funp(0:mthsurf, 0:mpsi)) - ALLOCATE(cvt_funp(0:mthsurf, 0:mpsi)) - ALLOCATE(cvz_funp(0:mthsurf, 0:mpsi)) - ALLOCATE(c2_cw_fun(0:mthsurf, 0:mpsi)) - ALLOCATE(c2_cv_fun(0:mthsurf, 0:mpsi)) - ALLOCATE(c2_cvw_fun(0:mthsurf, 0:mpsi)) - - cwp_fun = 0.0_r8 - cwt_fun = 0.0_r8 - cwz_fun = 0.0_r8 - cvp_fun = 0.0_r8 - cvt_fun = 0.0_r8 - cvz_fun = 0.0_r8 - cvp_funp = 0.0_r8 - cvt_funp = 0.0_r8 - cvz_funp = 0.0_r8 - c2_cw_fun = 0.0_r8 - c2_cv_fun = 0.0_r8 - c2_cvw_fun = 0.0_r8 - ENDIF - - IF (.NOT. ALLOCATED(qvp_fun)) THEN - ALLOCATE(qvp_fun(0:mthsurf, 0:mpsi)) - ALLOCATE(qvt_fun(0:mthsurf, 0:mpsi)) - ALLOCATE(qvz_fun(0:mthsurf, 0:mpsi)) - ALLOCATE(qwp_fun(0:mthsurf, 0:mpsi)) - ALLOCATE(qwt_fun(0:mthsurf, 0:mpsi)) - ALLOCATE(qwz_fun(0:mthsurf, 0:mpsi)) - qvp_fun = 0.0_r8 - qvt_fun = 0.0_r8 - qvz_fun = 0.0_r8 - qwp_fun = 0.0_r8 - qwt_fun = 0.0_r8 - qwz_fun = 0.0_r8 - ENDIF - c----------------------------------------------------------------------- c allocate bicubes for shear, curvature, K (placeholder allocation). c actual bicube population should be done at each psi in gpeq. @@ -6968,94 +6929,99 @@ SUBROUTINE gpout_recon(mode, xspmn) smode = ADJUSTL(smode) shear_fun_file = "gpec_recon_shear_fun_sol"//TRIM(smode)//".out" curv_file = "gpec_recon_curvature_sol"//TRIM(smode)//".out" + cveri_file = "gpec_recon_cveri_sol"//TRIM(smode)//".out" k_file = "gpec_recon_k_sol"//TRIM(smode)//".out" - c2cw_file = "gpec_recon_C2_cw_sol"//TRIM(smode)//".out" - c2cv_file = "gpec_recon_C2_cv_sol"//TRIM(smode)//".out" - c2cvw_file = "gpec_recon_C2_cvw_sol"//TRIM(smode)//".out" - ccov_file = "gpec_recon_Ccov_sol"//TRIM(smode)//".out" - ccontra_phy_file = "gpec_recon_Ccontra_physics_sol"/ - $ /TRIM(smode)//".out" - ccontra_met_file = "gpec_recon_Ccontra_metric_sol"/ - $ /TRIM(smode)//".out" - qv_file = "gpec_recon_Qv_sol"//TRIM(smode)//".out" - qw_file = "gpec_recon_Qw_sol"/ - $ /TRIM(smode)//".out" + k_sigma_file = "gpec_recon_k_sigma_check_sol"//TRIM(smode)//".out" + cw_fun_file = "gpec_recon_cwfun_sol"//TRIM(smode)//".out" + cw_mn_file = "gpec_recon_cwmn_sol"//TRIM(smode)//".out" + cv_fun_file = "gpec_recon_cvfun_sol"//TRIM(smode)//".out" + cv_mn_file = "gpec_recon_cvmn_sol"//TRIM(smode)//".out" + cv2_fun_file = "gpec_recon_cv2fun_sol"//TRIM(smode)//".out" + cv2_mn_file = "gpec_recon_cv2mn_sol"//TRIM(smode)//".out" + int_file = "gpec_recon_integration_sol"//TRIM(smode)//".out" ushear_fun = 82 ucurv = 72 + ucveri = 74 uk = 73 - uc2cw = 79 - uc2cv = 80 - uc2cvw = 81 - ucov = 74 - ucontra_phy = 75 - ucontra_met = 76 - uQv = 77 - uQw = 78 + uk_sigma = 85 + ucw_fun = 86 + ucw_mn = 87 + ucv_fun = 88 + ucv_mn = 89 + ucv2_fun = 90 + ucv2_mn = 91 + u_int = 92 OPEN(UNIT=ushear_fun, FILE=shear_fun_file, STATUS="UNKNOWN") OPEN(UNIT=ucurv, FILE=curv_file, STATUS="UNKNOWN") + OPEN(UNIT=ucveri, FILE=cveri_file, STATUS="UNKNOWN") OPEN(UNIT=uk, FILE=k_file, STATUS="UNKNOWN") - OPEN(UNIT=uc2cw, FILE=c2cw_file, STATUS="UNKNOWN") - OPEN(UNIT=uc2cv, FILE=c2cv_file, STATUS="UNKNOWN") - OPEN(UNIT=uc2cvw, FILE=c2cvw_file, STATUS="UNKNOWN") - OPEN(UNIT=ucov, FILE=ccov_file, STATUS="UNKNOWN") - OPEN(UNIT=ucontra_phy, FILE=ccontra_phy_file, STATUS="UNKNOWN") - OPEN(UNIT=ucontra_met, FILE=ccontra_met_file, STATUS="UNKNOWN") - OPEN(UNIT=uQv, FILE=qv_file, STATUS="UNKNOWN") - OPEN(UNIT=uQw, FILE=qw_file, STATUS="UNKNOWN") + OPEN(UNIT=uk_sigma, FILE=k_sigma_file, STATUS="UNKNOWN") + CALL ascii_open(ucw_fun, cw_fun_file, "UNKNOWN") + CALL ascii_open(ucw_mn, cw_mn_file, "UNKNOWN") + CALL ascii_open(ucv_fun, cv_fun_file, "UNKNOWN") + CALL ascii_open(ucv_mn, cv_mn_file, "UNKNOWN") + CALL ascii_open(ucv2_fun, cv2_fun_file, "UNKNOWN") + CALL ascii_open(ucv2_mn, cv2_mn_file, "UNKNOWN") + OPEN(UNIT=u_int, FILE=int_file, STATUS="UNKNOWN") WRITE(ushear_fun,'(6(1x,a16))') $ "psi","theta","r","z","shear_re","shear_im" WRITE(ucurv,'(6(1x,a16))') $ "psi","theta","r","z","curv_re","curv_im" - WRITE(uk,'(6(1x,a16))') - $ "psi","theta","r","z","K_re","K_im" - WRITE(uc2cw,'(6(1x,a16))') - $ "psi","theta","r","z","C2_cw_re","C2_cw_im" - WRITE(uc2cv,'(6(1x,a16))') - $ "psi","theta","r","z","C2_cv_re","C2_cv_im" - WRITE(uc2cvw,'(6(1x,a16))') - $ "psi","theta","r","z","C2_cvw_re","C2_cvw_im" - WRITE(ucov,'(10(1x,a14))') - $ "psi","theta","r","z", - $ "C_psi_re","C_psi_im","C_theta_re","C_theta_im", - $ "C_zeta_re","C_zeta_im" - WRITE(ucontra_phy,'(10(1x,a14))') - $ "psi","theta","r","z", - $ "C1_phy_re","C1_phy_im","C2_phy_re","C2_phy_im", - $ "C3_phy_re","C3_phy_im" - WRITE(ucontra_met,'(10(1x,a14))') - $ "psi","theta","r","z", - $ "C1_met_re","C1_met_im","C2_met_re","C2_met_im", - $ "C3_met_re","C3_met_im" - WRITE(uQv,'(10(1x,a14))') - $ "psi","theta","r","z", - $ "Qv_psi_re","Qv_psi_im","Qv_theta_re","Qv_theta_im", - $ "Qv_zeta_re","Qv_zeta_im" - WRITE(uQw,'(10(1x,a14))') - $ "psi","theta","r","z", - $ "Qw1_re","Qw1_im","Qw2_re","Qw2_im", - $ "Qw3_re","Qw3_im" - + WRITE(ucveri,'(6(1x,a16))') + $ "psi","theta","r","z","cveri_re","cveri_im" + WRITE(uk,'(9(1x,a16))') + $ "psi","theta","r","z","K_re","K_im", + $ "T1_re","T2_re","T3_re" + WRITE(uk_sigma,'(8(1x,a16))') + $ "psi","theta","r","z","sigma_re","jdotb_re", + $ "bsig2_re","sigjdotb_re" + WRITE(ucw_fun,'(10(1x,a16))') + $ "psi","theta","r","z","cwp_re","cwp_im", + $ "cwt_re","cwt_im","cwz_re","cwz_im" + WRITE(ucw_mn,'(8(1x,a16))') + $ "psi","m","cwp_re","cwp_im","cwt_re","cwt_im", + $ "cwz_re","cwz_im" + WRITE(ucv_fun,'(10(1x,a16))') + $ "psi","theta","r","z","cvp_re","cvp_im", + $ "cvt_re","cvt_im","cvz_re","cvz_im" + WRITE(ucv_mn,'(8(1x,a16))') + $ "psi","m","cvp_re","cvp_im","cvt_re","cvt_im", + $ "cvz_re","cvz_im" + WRITE(ucv2_fun,'(10(1x,a16))') + $ "psi","theta","r","z","cv2p_re","cv2p_im", + $ "cv2t_re","cv2t_im","cv2z_re","cv2z_im" + WRITE(ucv2_mn,'(8(1x,a16))') + $ "psi","m","cv2p_re","cv2p_im","cv2t_re","cv2t_im", + $ "cv2z_re","cv2z_im" + WRITE(u_int,'(7(1x,a16))') + $ "psi","epf_int","dst_k_re","dst_k_im", + $ "epf_cumsum","dst_k_c_re","dst_k_c_im" c----------------------------------------------------------------------- c main loop over all psi levels. -c compute gpeq equilibrium quantities at each psi and call gpeq_epf -c to populate C norm squared for the EPF/DST diagnostics. +c compute gpeq reconstruction diagnostics at each psi. c----------------------------------------------------------------------- CALL gpeq_alloc + epf_int_total = 0.0_r8 + dst_int_total_k = CMPLX(0.0_r8, 0.0_r8, r8) + epf_cumsum = 0.0_r8 + dst_cumsum_k = CMPLX(0.0_r8, 0.0_r8, r8) + DO ipsi = 0, mpsi psi = rzphi%xs(ipsi) -c Compute all necessary gpeq quantities at this psi level. - CALL gpeq_sol(psi) - CALL gpeq_contra(psi) - CALL gpeq_cova(psi) - CALL gpeq_normal(psi) +c Compute surface-integrated EPF and DST terms for this psi. +c Store in arrays for psi integration later. + CALL gpeq_epf(psi, epf_int) + CALL gpeq_dst(psi, dst_int) + epf_psi(ipsi) = epf_int + dst_psi_k(ipsi) = dst_int -c Compute shear/curvature/K in spatial-space. - CALL gpeq_shear(psi, shear_fun) - CALL gpeq_curvature(psi, curv_fun) - CALL gpeq_K(psi, K_mn, K_fun) +c Reconstruct detailed K diagnostics for output. + CALL gpeq_K(psi, K_fun, K_term1, K_term2, K_term3, + $ sigma_vals, jdotb_vals, shear_fun, curv_fun) + CALL gpeq_cveri(psi, cveri_fun) c Store spatial values with coordinates. DO itheta = 0, mthsurf @@ -7071,138 +7037,139 @@ SUBROUTINE gpout_recon(mode, xspmn) WRITE(ucurv,'(6(es17.8e3))') psi, theta(itheta), $ rvals(itheta), zvals(itheta), REAL(curv_fun(itheta)), $ AIMAG(curv_fun(itheta)) - WRITE(uk,'(6(es17.8e3))') psi, theta(itheta), + WRITE(ucveri,'(6(es17.8e3))') psi, theta(itheta), + $ rvals(itheta), zvals(itheta), REAL(cveri_fun(itheta)), + $ AIMAG(cveri_fun(itheta)) + WRITE(uk,'(9(es17.8e3))') psi, theta(itheta), $ rvals(itheta), zvals(itheta), REAL(K_fun(itheta)), - $ AIMAG(K_fun(itheta)) + $ AIMAG(K_fun(itheta)), K_term1(itheta), K_term2(itheta), + $ K_term3(itheta) + WRITE(uk_sigma,'(8(es17.8e3))') psi, theta(itheta), + $ rvals(itheta), zvals(itheta), sigma_vals(itheta), + $ jdotb_vals(itheta), K_term2(itheta), + $ sigma_vals(itheta) * jdotb_vals(itheta) ENDDO WRITE(ushear_fun,*) WRITE(ucurv,*) + WRITE(ucveri,*) WRITE(uk,*) + WRITE(uk_sigma,*) -c Compute C and Q vectors (covariant + contravariant) for this psi - CALL gpeq_epf(psi, ipsi) - -c Write C^2 values (contravariant form only - no metric) - DO itheta = 0, mthsurf - WRITE(uc2cw,'(6(es17.8e3))') psi, theta(itheta), - $ rvals(itheta), zvals(itheta), REAL(c2_cw_fun(itheta, ipsi)), - $ AIMAG(c2_cw_fun(itheta, ipsi)) - ENDDO - WRITE(uc2cw,*) - -c Write C^2 values (covariant form only - with metric) - DO itheta = 0, mthsurf - WRITE(uc2cv,'(6(es17.8e3))') psi, theta(itheta), - $ rvals(itheta), zvals(itheta), REAL(c2_cv_fun(itheta, ipsi)), - $ AIMAG(c2_cv_fun(itheta, ipsi)) - ENDDO - WRITE(uc2cv,*) - -c Write C^2 values (mixed form - Cov x Contra) +c Reconstruct C fields from the already computed EPF state. + CALL iscdftb(mfac, mpert, cw_fun(:,1), mthsurf, cwp_mn) + CALL iscdftb(mfac, mpert, cw_fun(:,2), mthsurf, cwt_mn) + CALL iscdftb(mfac, mpert, cw_fun(:,3), mthsurf, cwz_mn) + CALL iscdftb(mfac, mpert, cv_fun(:,1), mthsurf, cvp_mn) + CALL iscdftb(mfac, mpert, cv_fun(:,2), mthsurf, cvt_mn) + CALL iscdftb(mfac, mpert, cv_fun(:,3), mthsurf, cvz_mn) + CALL iscdftb(mfac, mpert, cv2_fun(:,1), mthsurf, c2vp_mn) + CALL iscdftb(mfac, mpert, cv2_fun(:,2), mthsurf, c2vt_mn) + CALL iscdftb(mfac, mpert, cv2_fun(:,3), mthsurf, c2vz_mn) DO itheta = 0, mthsurf - WRITE(uc2cvw,'(6(es17.8e3))') psi, theta(itheta), - $ rvals(itheta), zvals(itheta), REAL(c2_cvw_fun(itheta, ipsi)), - $ AIMAG(c2_cvw_fun(itheta, ipsi)) - ENDDO - WRITE(uc2cvw,*) - -c Write C vectors to files - contravariant components (all 3) - DO itheta = 0, mthsurf - WRITE(ucov,'(10(es15.7e2))') psi, theta(itheta), + WRITE(ucw_fun,'(10(es17.8e3))') psi, theta(itheta), + $ rvals(itheta), zvals(itheta), REAL(cw_fun(itheta,1)), + $ AIMAG(cw_fun(itheta,1)), REAL(cw_fun(itheta,2)), + $ AIMAG(cw_fun(itheta,2)), REAL(cw_fun(itheta,3)), + $ AIMAG(cw_fun(itheta,3)) + WRITE(ucv_fun,'(10(es17.8e3))') psi, theta(itheta), + $ rvals(itheta), zvals(itheta), REAL(cv_fun(itheta,1)), + $ AIMAG(cv_fun(itheta,1)), REAL(cv_fun(itheta,2)), + $ AIMAG(cv_fun(itheta,2)), REAL(cv_fun(itheta,3)), + $ AIMAG(cv_fun(itheta,3)) + WRITE(ucv2_fun,'(10(es17.8e3))') psi, theta(itheta), $ rvals(itheta), zvals(itheta), - $ REAL(cwp_fun(itheta, ipsi)), - $ AIMAG(cwp_fun(itheta, ipsi)), - $ REAL(cwt_fun(itheta, ipsi)), - $ AIMAG(cwt_fun(itheta, ipsi)), - $ REAL(cwz_fun(itheta, ipsi)), - $ AIMAG(cwz_fun(itheta, ipsi)) + $ REAL(cv2_fun(itheta,1)), AIMAG(cv2_fun(itheta,1)), + $ REAL(cv2_fun(itheta,2)), AIMAG(cv2_fun(itheta,2)), + $ REAL(cv2_fun(itheta,3)), AIMAG(cv2_fun(itheta,3)) ENDDO - WRITE(ucov,*) - -c Write C vectors (contravariant) - contrvariant components with p - DO itheta = 0, mthsurf - WRITE(ucontra_phy,'(10(es15.7e2))') psi, theta(itheta), - $ rvals(itheta), zvals(itheta), - $ REAL(cvp_funp(itheta, ipsi)), - $ AIMAG(cvp_funp(itheta, ipsi)), - $ REAL(cvt_funp(itheta, ipsi)), - $ AIMAG(cvt_funp(itheta, ipsi)), - $ REAL(cvz_funp(itheta, ipsi)), - $ AIMAG(cvz_funp(itheta, ipsi)) - ENDDO - WRITE(ucontra_phy,*) - - -c Write C vectors (contravariant) - contrvariant components with metric - DO itheta = 0, mthsurf - WRITE(ucontra_met,'(10(es15.7e2))') psi, theta(itheta), - $ rvals(itheta), zvals(itheta), - $ REAL(cvp_fun(itheta, ipsi)), - $ AIMAG(cvp_fun(itheta, ipsi)), - $ REAL(cvt_fun(itheta, ipsi)), - $ AIMAG(cvt_fun(itheta, ipsi)), - $ REAL(cvz_fun(itheta, ipsi)), - $ AIMAG(cvz_fun(itheta, ipsi)) + DO ipert = 1, mpert + WRITE(ucw_mn,'(1x,es17.8e3,1x,I8,6(es17.8e3))') psi, + $ mfac(ipert), cwp_mn(ipert), cwt_mn(ipert), + $ cwz_mn(ipert) + WRITE(ucv_mn,'(1x,es17.8e3,1x,I8,6(es17.8e3))') psi, + $ mfac(ipert), cvp_mn(ipert), cvt_mn(ipert), + $ cvz_mn(ipert) + WRITE(ucv2_mn,'(1x,es17.8e3,1x,I8,6(es17.8e3))') psi, + $ mfac(ipert), c2vp_mn(ipert), c2vt_mn(ipert), + $ c2vz_mn(ipert) ENDDO - WRITE(ucontra_met,*) - - -c Write Q covariant vectors - all 3 components - DO itheta = 0, mthsurf - WRITE(uQv,'(10(es15.7e2))') psi, theta(itheta), - $ rvals(itheta), zvals(itheta), - $ REAL(qvp_fun(itheta, ipsi)), - $ AIMAG(qvp_fun(itheta, ipsi)), - $ REAL(qvt_fun(itheta, ipsi)), - $ AIMAG(qvt_fun(itheta, ipsi)), - $ REAL(qvz_fun(itheta, ipsi)), - $ AIMAG(qvz_fun(itheta, ipsi)) - ENDDO - WRITE(uQv,*) - - DO itheta = 0, mthsurf - WRITE(uQw,'(10(es15.7e2))') psi, theta(itheta), - $ rvals(itheta), zvals(itheta), - $ REAL(qwp_fun(itheta, ipsi)), - $ AIMAG(qwp_fun(itheta, ipsi)), - $ REAL(qwt_fun(itheta, ipsi)), - $ AIMAG(qwt_fun(itheta, ipsi)), - $ REAL(qwz_fun(itheta, ipsi)), - $ AIMAG(qwz_fun(itheta, ipsi)) - ENDDO - WRITE(uQw,*) - - CALL gpeq_dst(psi,ipsi) + WRITE(ucw_fun,*) + WRITE(ucw_mn,*) + WRITE(ucv_fun,*) + WRITE(ucv_mn,*) + WRITE(ucv2_fun,*) + WRITE(ucv2_mn,*) ENDDO - CALL gpeq_dealloc - CLOSE(ushear_fun) - CLOSE(ucurv) - CLOSE(uk) - CLOSE(uc2cw) - CLOSE(uc2cv) - CLOSE(uc2cvw) - CLOSE(ucov) - CLOSE(ucontra_phy) - CLOSE(ucontra_met) - CLOSE(uQv) - CLOSE(uQw) - c----------------------------------------------------------------------- -c C vectors now populated in gpglobal_mod for all psi levels. +c perform psi integration using trapezoidal rule. +c integrate: ∫dpsi epf(psi), ∫dpsi dst_k(psi) c----------------------------------------------------------------------- - IF(ALLOCATED(gpout_shear)) THEN - IF(verbose) WRITE(*,*)" Shear bicube computed" - ENDIF + psi_min = rzphi%xs(0) + psi_max = rzphi%xs(mpsi) + dpsi = (psi_max - psi_min) / REAL(mpsi, r8) - IF(ALLOCATED(gpout_curvature)) THEN - IF(verbose) WRITE(*,*)" Curvature bicube computed" - ENDIF + epf_int_total = 0.0_r8 + dst_int_total_k = CMPLX(0.0_r8, 0.0_r8, r8) + epf_cumsum(0) = 0.0_r8 + dst_cumsum_k(0) = CMPLX(0.0_r8, 0.0_r8, r8) - IF(ALLOCATED(gpout_k)) THEN - IF(verbose) WRITE(*,*)" K quantity bicube computed" - ENDIF + DO ipsi = 0, mpsi-1 + dpsi_local = rzphi%xs(ipsi+1) - rzphi%xs(ipsi) + epf_int_total = epf_int_total + + $ (epf_psi(ipsi) + epf_psi(ipsi+1)) * dpsi_local / 2.0_r8 + dst_int_total_k = dst_int_total_k + + $ (dst_psi_k(ipsi) + dst_psi_k(ipsi+1)) * dpsi_local + $ / 2.0_r8 + epf_cumsum(ipsi+1) = epf_int_total + dst_cumsum_k(ipsi+1) = dst_int_total_k + ENDDO + DO ipsi = 0, mpsi + WRITE(u_int,'(7(es17.8e3))') rzphi%xs(ipsi), epf_psi(ipsi), + $ REAL(dst_psi_k(ipsi)), AIMAG(dst_psi_k(ipsi)), + $ epf_cumsum(ipsi), REAL(dst_cumsum_k(ipsi)), + $ AIMAG(dst_cumsum_k(ipsi)) + ENDDO + WRITE(u_int,*) + +c Write integration results + WRITE(u_int,'(a)') "c Psi integration results (Trapezoidal rule)" + WRITE(u_int,'(a)') "c psi_min, psi_max, nominal_dpsi" + WRITE(u_int,'(3(es17.8e3))') psi_min, psi_max, dpsi + dw_raw_k = 0.5_r8 * + $ (CMPLX(epf_int_total, 0.0_r8, r8) - dst_int_total_k) + + WRITE(u_int,'(a)') "c Integration results:" + WRITE(u_int,'(3(es17.8e3))') epf_int_total, REAL(dst_int_total_k), + $ AIMAG(dst_int_total_k) + WRITE(u_int,'(a)') "c deltaW = 0.5 * (EPF - DST)" + WRITE(u_int,'(a)') "c raw_deltaW(K)" + WRITE(u_int,'(2(es17.8e3))') REAL(dw_raw_k), AIMAG(dw_raw_k) + + WRITE(*,'(a)') "GPEC_RECON integration totals:" + WRITE(*,'(a,es17.8e3)') " EPF = ", epf_int_total + WRITE(*,'(a,2es17.8e3)') " DST(K) = ", + $ REAL(dst_int_total_k), AIMAG(dst_int_total_k) + WRITE(*,'(a,2es17.8e3)') " dW_raw(K)= ", + $ REAL(dw_raw_k), AIMAG(dw_raw_k) + WRITE(*,*) "GPEC ep(1):", REAL(ep(1)) + WRITE(*,*) "DCON plasma1-equivalent:", REAL(ep(1))*(mu0*2.0) / + $ psio**2 / (chi1*1e-3)**2 + + CALL gpeq_dealloc + CLOSE(ushear_fun) + CLOSE(ucurv) + CLOSE(ucveri) + CLOSE(uk) + CLOSE(uk_sigma) + CLOSE(u_int) + CALL ascii_close(ucw_fun) + CALL ascii_close(ucw_mn) + CALL ascii_close(ucv_fun) + CALL ascii_close(ucv_mn) + CALL ascii_close(ucv2_fun) + CALL ascii_close(ucv2_mn) c----------------------------------------------------------------------- c completion message. c----------------------------------------------------------------------- From 4e8c2110fc2d19129aa1605f85aba29c1132164c Mon Sep 17 00:00:00 2001 From: satelite2517 Date: Thu, 23 Apr 2026 15:42:27 +0900 Subject: [PATCH 09/62] GPEC - FEATURE - Add Python analysis and plotting tools (cherry picked from commit a79f3c183752b2ad68348fdcbf4b854df1649bb5) --- .../DIIID_ideal_example/compare_corrected.py | 37 +++ .../DIIID_ideal_example/compare_correction.py | 42 +++ .../DIIID_ideal_example/compare_with_Q.py | 48 +++ .../DIIID_ideal_example/gpec_netcdf_viewer.py | 83 +++++ docs/examples/DIIID_ideal_example/plot_K.py | 120 +++++++ .../plot_c2_reconstruction.py | 181 ++++++++++ .../DIIID_ideal_example/plot_curvature.py | 134 ++++++++ .../DIIID_ideal_example/plot_cvfun.py | 199 +++++++++++ .../examples/DIIID_ideal_example/plot_cvmn.py | 216 ++++++++++++ .../plot_reconstruction.py | 311 ++++++++++++++++++ .../DIIID_ideal_example/plot_shear.py | 132 ++++++++ .../DIIID_ideal_example/plot_xbrzphi.py | 114 +++++++ 12 files changed, 1617 insertions(+) create mode 100644 docs/examples/DIIID_ideal_example/compare_corrected.py create mode 100644 docs/examples/DIIID_ideal_example/compare_correction.py create mode 100644 docs/examples/DIIID_ideal_example/compare_with_Q.py create mode 100644 docs/examples/DIIID_ideal_example/gpec_netcdf_viewer.py create mode 100644 docs/examples/DIIID_ideal_example/plot_K.py create mode 100644 docs/examples/DIIID_ideal_example/plot_c2_reconstruction.py create mode 100644 docs/examples/DIIID_ideal_example/plot_curvature.py create mode 100644 docs/examples/DIIID_ideal_example/plot_cvfun.py create mode 100644 docs/examples/DIIID_ideal_example/plot_cvmn.py create mode 100644 docs/examples/DIIID_ideal_example/plot_reconstruction.py create mode 100644 docs/examples/DIIID_ideal_example/plot_shear.py create mode 100644 docs/examples/DIIID_ideal_example/plot_xbrzphi.py diff --git a/docs/examples/DIIID_ideal_example/compare_corrected.py b/docs/examples/DIIID_ideal_example/compare_corrected.py new file mode 100644 index 000000000..86157ba05 --- /dev/null +++ b/docs/examples/DIIID_ideal_example/compare_corrected.py @@ -0,0 +1,37 @@ +#!/usr/bin/env python3 +import numpy as np + +# Load both methods +phys_data = np.loadtxt("gpec_recon_Ccontra_physics_sol1.out") +metric_data = np.loadtxt("gpec_recon_Ccontra_metric_sol1.out") + +print("=" * 80) +print("Sample comparison at different flux surfaces (theta=0)") +print("=" * 80) + +# Get unique psi values +psi_values = phys_data[:, 0] +unique_psi = np.unique(psi_values) + +for i in [0, len(unique_psi)//4, len(unique_psi)//2, 3*len(unique_psi)//4, -1]: + psi_val = unique_psi[i] + idx_phys = np.where((phys_data[:, 0] == psi_val) & (phys_data[:, 1] == 0))[0] + idx_metric = np.where((metric_data[:, 0] == psi_val) & (metric_data[:, 1] == 0))[0] + + if len(idx_phys) > 0 and len(idx_metric) > 0: + phys_row = phys_data[idx_phys[0]] + metric_row = metric_data[idx_metric[0]] + + c1p = phys_row[4] + 1j*phys_row[5] + c2p = phys_row[6] + 1j*phys_row[7] + c3p = phys_row[8] + 1j*phys_row[9] + + c1m = metric_row[4] + 1j*metric_row[5] + c2m = metric_row[6] + 1j*metric_row[7] + c3m = metric_row[8] + 1j*metric_row[9] + + print(f"\nψ = {psi_val:.6e}:") + print(f" Physics: C1={abs(c1p):.3e}, C2={abs(c2p):.3e}, C3={abs(c3p):.3e}") + print(f" Metric: C1={abs(c1m):.3e}, C2={abs(c2m):.3e}, C3={abs(c3m):.3e}") + if abs(c1m) > 1e-15: + print(f" Ratio C2_phy/C1_met = {abs(c2p)/abs(c1m):.4f}") diff --git a/docs/examples/DIIID_ideal_example/compare_correction.py b/docs/examples/DIIID_ideal_example/compare_correction.py new file mode 100644 index 000000000..4db179456 --- /dev/null +++ b/docs/examples/DIIID_ideal_example/compare_correction.py @@ -0,0 +1,42 @@ +#!/usr/bin/env python3 +import numpy as np + +# Load physics method +phys_data = np.loadtxt("gpec_recon_Ccontra_physics_sol1.out") +phys_c1 = phys_data[:, 4] + 1j * phys_data[:, 5] +phys_c2 = phys_data[:, 6] + 1j * phys_data[:, 7] +phys_c3 = phys_data[:, 8] + 1j * phys_data[:, 9] + +# Load metric method +metric_data = np.loadtxt("gpec_recon_Ccontra_metric_sol1.out") +metric_c1 = metric_data[:, 4] + 1j * metric_data[:, 5] +metric_c2 = metric_data[:, 6] + 1j * metric_data[:, 7] +metric_c3 = metric_data[:, 8] + 1j * metric_data[:, 9] + +print("=" * 70) +print("CORRECTION: sq.f1(2) and f1(3) already contain μ₀ and 2π respectively") +print("=" * 70) +print("\nUnderneath first flux surface (ψ = psi_low):") +print("\nPhysics Method Results:") +print(f" C1_physics = {phys_c1[0]:.6e}") +print(f" C2_physics = {phys_c2[0]:.6e}") +print(f" C3_physics = {phys_c3[0]:.6e}") + +print("\nMetric Method Results:") +print(f" C1_metric = {metric_c1[0]:.6e}") +print(f" C2_metric = {metric_c2[0]:.6e}") +print(f" C3_metric = {metric_c3[0]:.6e}") + +print("\n" + "=" * 70) +print("COMPARISON (Ratio of Physics / Metric):") +print("=" * 70) +c1_ratio = abs(phys_c1[0]) / abs(metric_c1[0]) +c2_ratio = abs(phys_c2[0]) / abs(metric_c2[0]) +c3_ratio = abs(phys_c3[0]) / abs(metric_c3[0]) + +print(f" C1_physics / C1_metric = {c1_ratio:.6f}") +print(f" C2_physics / C2_metric = {c2_ratio:.6f}") +print(f" C3_physics / C3_metric = {c3_ratio:.6f}") + +print(f"\n 2π ≈ {2 * 3.14159:.6f}") +print(f"\n✓ Physics method should now ≈ Metric method (within numerical error)") diff --git a/docs/examples/DIIID_ideal_example/compare_with_Q.py b/docs/examples/DIIID_ideal_example/compare_with_Q.py new file mode 100644 index 000000000..b1c1f259e --- /dev/null +++ b/docs/examples/DIIID_ideal_example/compare_with_Q.py @@ -0,0 +1,48 @@ +#!/usr/bin/env python3 +import numpy as np + +# Load files +Q_data = np.loadtxt("gpec_recon_Qvec_sol1.out") +Ccov_data = np.loadtxt("gpec_recon_Ccov_sol1.out") +Cphy_data = np.loadtxt("gpec_recon_Ccontra_physics_sol1.out") +Cmet_data = np.loadtxt("gpec_recon_Ccontra_metric_sol1.out") + +print("=" * 100) +print("Q VECTOR vs C VECTOR COMPARISON AT FIRST POINT (psi=1e-4, theta=0)") +print("=" * 100) + +# First row (theta=0) +Q_row = Q_data[0] +Ccov_row = Ccov_data[0] +Cphy_row = Cphy_data[0] +Cmet_row = Cmet_data[0] + +print("\nQ VECTOR (from gpeq_epf):") +print(f" Q_psi = {Q_row[4]:.6e} + {Q_row[5]:.6e}i") +print(f" Q_theta = {Q_row[6]:.6e} + {Q_row[7]:.6e}i") + +print("\nC COVARIANT (before adding j×ξ term):") +print(f" C_psi = {Ccov_row[4]:.6e} + {Ccov_row[5]:.6e}i") +print(f" C_theta = {Ccov_row[6]:.6e} + {Ccov_row[7]:.6e}i") + +print("\nC CONTRAVARIANT (Physics Method = Q + j×ξ):") +print(f" C1_phy = {Cphy_row[4]:.6e} + {Cphy_row[5]:.6e}i") +print(f" C2_phy = {Cphy_row[6]:.6e} + {Cphy_row[7]:.6e}i") +print(f" C3_phy = {Cphy_row[8]:.6e} + {Cphy_row[9]:.6e}i") + +print("\nC CONTRAVARIANT (Metric Method = g_ij * C_j):") +print(f" C1_met = {Cmet_row[4]:.6e} + {Cmet_row[5]:.6e}i") +print(f" C2_met = {Cmet_row[6]:.6e} + {Cmet_row[7]:.6e}i") +print(f" C3_met = {Cmet_row[8]:.6e} + {Cmet_row[9]:.6e}i") + +print("\n" + "=" * 100) +print("KEY OBSERVATION:") +print("=" * 100) +Q_theta = Q_row[6] + 1j*Q_row[7] +C2_phy = Cphy_row[6] + 1j*Cphy_row[7] + +print(f"Q_theta = {Q_theta}") +print(f"C2_physics = {C2_phy}") +print(f"C2 == Q_theta? {np.abs(C2_phy - Q_theta) < 1e-10}") +print("\n👉 C2_physics이 Q_theta와 같거나 거의 같은가?") +print(" 만약 그렇다면, j×ξ term이 거의 0이라는 뜻!") diff --git a/docs/examples/DIIID_ideal_example/gpec_netcdf_viewer.py b/docs/examples/DIIID_ideal_example/gpec_netcdf_viewer.py new file mode 100644 index 000000000..64cced7ee --- /dev/null +++ b/docs/examples/DIIID_ideal_example/gpec_netcdf_viewer.py @@ -0,0 +1,83 @@ +import numpy as np +import matplotlib.pyplot as plt +import xarray as xr +from pathlib import Path + +class GPECNetCDFViewer: + """GPEC NetCDF File Viewer and Plotter""" + + def __init__(self, filepath): + self.filepath = Path(filepath) + self.ds = None + self.load_file() + + def load_file(self): + try: + self.ds = xr.open_dataset(self.filepath) + print(f"✓ Loaded: {self.filepath.name}") + except Exception as e: + print(f"✗ Error: {e}") + + def plot_bkappaxi_perp(self): + """Plot Bkappaxi_perp in Fourier space""" + if 'Bkappaxi_perp' not in self.ds: + print("✗ 'Bkappaxi_perp' not found") + return + + data = self.ds['Bkappaxi_perp'].values + real_part = data[:, :, 0] + imag_part = data[:, :, 1] + + fig, axes = plt.subplots(1, 2, figsize=(14, 5)) + fig.suptitle('Bkappaxi_perp: Curvature Component (Fourier Space)', + fontsize=14, fontweight='bold') + + im1 = axes[0].contourf(real_part, levels=20, cmap='RdBu_r') + axes[0].set_title('Real Part') + plt.colorbar(im1, ax=axes[0]) + + im2 = axes[1].contourf(imag_part, levels=20, cmap='RdBu_r') + axes[1].set_title('Imaginary Part') + plt.colorbar(im2, ax=axes[1]) + + plt.tight_layout() + return fig + + def plot_bkappaxi_perp_fun(self): + """Plot Bkappaxi_perp_fun in function space""" + if 'Bkappaxi_perp_fun' not in self.ds: + print("✗ 'Bkappaxi_perp_fun' not found") + return + + data = self.ds['Bkappaxi_perp_fun'].values + real_part = data[:, :, 0] + imag_part = data[:, :, 1] + + fig, axes = plt.subplots(1, 2, figsize=(14, 5)) + fig.suptitle('Bkappaxi_perp_fun: Curvature Component (Function Space)', + fontsize=14, fontweight='bold') + + im1 = axes[0].contourf(real_part, levels=20, cmap='RdBu_r') + axes[0].set_title('Real Part') + plt.colorbar(im1, ax=axes[0]) + + im2 = axes[1].contourf(imag_part, levels=20, cmap='RdBu_r') + axes[1].set_title('Imaginary Part') + plt.colorbar(im2, ax=axes[1]) + + plt.tight_layout() + return fig + +# Use the viewer +if __name__ == "__main__": + filepath = "gpec_output_n1.nc" # 실제 파일명으로 변경 + viewer = GPECNetCDFViewer(filepath) + + if viewer.ds is not None: + fig1 = viewer.plot_bkappaxi_perp() + plt.savefig('bkappaxi_perp_fourier.png', dpi=150, bbox_inches='tight') + + fig2 = viewer.plot_bkappaxi_perp_fun() + plt.savefig('bkappaxi_perp_function.png', dpi=150, bbox_inches='tight') + + plt.show() diff --git a/docs/examples/DIIID_ideal_example/plot_K.py b/docs/examples/DIIID_ideal_example/plot_K.py new file mode 100644 index 000000000..39e046aed --- /dev/null +++ b/docs/examples/DIIID_ideal_example/plot_K.py @@ -0,0 +1,120 @@ +#!/usr/bin/env python3 +""" +Plot K diagnostics on the r-z plane. + +Running this script produces two figures: +1. gpec_recon_k_sol1.png +2. gpec_recon_k-term_sol1.png +""" + +import glob +import os +import re +import sys + +import matplotlib.pyplot as plt +import numpy as np +from matplotlib.colors import TwoSlopeNorm + + +def find_required_file(pattern): + """Find a reconstruction output file by wildcard pattern.""" + matches = sorted(glob.glob(pattern)) + if not matches: + print(f"Error: Could not find {pattern}") + sys.exit(1) + return matches[0] + + +def extract_suffix(path): + """Extract the solution suffix such as sol1 from the filename.""" + name = os.path.basename(path) + match = re.search(r"(sol\d+)\.out$", name) + if not match: + print(f"Error: Could not extract solution suffix from {name}") + sys.exit(1) + return match.group(1) + + +def make_norm(values): + """Build a diverging normalization centered at zero.""" + vmin_temp, vmax_temp = np.percentile(values, [2, 98]) + vmax = max(abs(vmin_temp), abs(vmax_temp)) + return TwoSlopeNorm(vmin=-vmax, vcenter=0.0, vmax=vmax) + + +def style_axis(ax, title): + """Apply common axis styling.""" + ax.set_xlabel("R (m)", fontsize=11) + ax.set_ylabel("Z (m)", fontsize=11) + ax.set_title(title, fontsize=12, fontweight="bold") + ax.grid(True, alpha=0.3) + ax.set_aspect("equal") + + +def scatter_panel(ax, r, z, values, title, cbar_label): + """Create a single scatter panel with symmetric color scaling.""" + scatter = ax.scatter( + r, + z, + c=values, + cmap="RdBu_r", + s=20, + alpha=0.6, + norm=make_norm(values), + ) + style_axis(ax, title) + cbar = plt.colorbar(scatter, ax=ax) + cbar.set_label(cbar_label, fontsize=10) + + +def main(): + """Main plotting routine.""" + print("=" * 70) + print("GPEC K Diagnostic Plotter") + print("=" * 70) + + k_file = find_required_file("gpec_recon_k_sol*.out") + suffix = extract_suffix(k_file) + + print(f"Reading K data from: {k_file}") + + k_data = np.loadtxt(k_file, skiprows=1) + + r = k_data[:, 2] + z = k_data[:, 3] + + k_total = k_data[:, 4] + t1 = k_data[:, 6] + t2 = k_data[:, 7] + t3 = k_data[:, 8] + + # Figure 1: total K + fig_k, ax_k = plt.subplots(figsize=(7, 8)) + scatter_panel(ax_k, r, z, k_total, "K (Total)", "K") + plt.tight_layout() + k_png = f"gpec_recon_k_{suffix}.png" + fig_k.savefig(k_png, dpi=150, bbox_inches="tight") + + # Figure 2: three terms in one row + fig_terms, axes = plt.subplots(1, 3, figsize=(18, 5.5)) + term_specs = [ + (t1, r"Term1: $|\nabla\psi_{\mathrm{dcon}}|^2 \sigma S_{\mathrm{dcon}}$", "T1"), + (t2, r"Term2: $B^2 \sigma^2$", "T2"), + (t3, r"Term3: $2 P' \kappa^\psi$", "T3"), + ] + + for ax, (values, title, label) in zip(axes, term_specs): + scatter_panel(ax, r, z, values, title, label) + + plt.tight_layout() + terms_png = f"gpec_recon_k-term_{suffix}.png" + fig_terms.savefig(terms_png, dpi=150, bbox_inches="tight") + + print("Saved:") + print(f" {k_png}") + print(f" {terms_png}") + + +if __name__ == "__main__": + main() diff --git a/docs/examples/DIIID_ideal_example/plot_c2_reconstruction.py b/docs/examples/DIIID_ideal_example/plot_c2_reconstruction.py new file mode 100644 index 000000000..c67c74ae3 --- /dev/null +++ b/docs/examples/DIIID_ideal_example/plot_c2_reconstruction.py @@ -0,0 +1,181 @@ +#!/usr/bin/env python3 +""" +Plot C² reconstruction diagnostics in r-z plane. + +For each C² output file, creates a PNG with real and imaginary parts +displayed as scatter plots in the r-z grid. +Color scheme: red (positive) - white (0) - blue (negative) + +Usage: + python plot_c2_reconstruction.py +""" + +import numpy as np +import matplotlib.pyplot as plt +import matplotlib.colors as mcolors +from matplotlib.colors import LinearSegmentedColormap +import glob +import os +import sys + + +def create_rwb_colormap(n_bins=256): + """ + Create a red-white-blue colormap. + + Parameters: + ----------- + n_bins : int + Number of bins in the colormap + + Returns: + -------- + cmap : LinearSegmentedColormap + Red-white-blue colormap (white at center for value 0) + """ + colors_list = ['red', 'white', 'blue'] + cmap = LinearSegmentedColormap.from_list('rwb', colors_list, N=n_bins) + return cmap + + +def plot_c2_reconstruction(filepath): + """ + Plot C² reconstruction in r-z plane. + + Creates a PNG with real and imaginary parts as subplots. + Each point is colored according to its C² value using red-white-blue + colormap where white represents zero. + + Parameters: + ----------- + filepath : str + Path to the C² output file + + Returns: + -------- + output_file : str + Path to the generated PNG file + """ + + try: + # Read the file - skip header line + data = np.loadtxt(filepath, skiprows=1) + + if data.size == 0: + print(f"Warning: {filepath} is empty") + return None + + # Handle case where file has only one data point + if data.ndim == 1: + data = data.reshape(1, -1) + + # Extract columns: psi, theta, r, z, C2_re, C2_im + psi = data[:, 0] + theta = data[:, 1] + r = data[:, 2] + z = data[:, 3] + c2_re = data[:, 4] + c2_im = data[:, 5] + + # Create red-white-blue colormap + cmap = create_rwb_colormap(256) + + # Calculate max absolute values for symmetric normalization + vmax_re = np.max(np.abs(c2_re)) + vmax_im = np.max(np.abs(c2_im)) + + # Use CenteredNorm with white at 0 + if vmax_re > 0: + norm_re = mcolors.CenteredNorm(vcenter=0, halfrange=vmax_re) + else: + norm_re = mcolors.Normalize(vmin=-1, vmax=1) + + if vmax_im > 0: + norm_im = mcolors.CenteredNorm(vcenter=0, halfrange=vmax_im) + else: + norm_im = mcolors.Normalize(vmin=-1, vmax=1) + + # Create figure with 2 subplots (real and imaginary) + fig, axes = plt.subplots(1, 2, figsize=(15, 6)) + + # Extract quantity name from filename + # e.g., gpec_recon_C2_cw_sol1.out -> C2_cw + basename = os.path.basename(filepath) + quantity = basename.replace('gpec_recon_', '').replace('.out', '').rsplit('_sol', 1)[0] + + # Plot real part + scatter_re = axes[0].scatter(r, z, c=c2_re, cmap=cmap, norm=norm_re, + s=30, alpha=0.8) + axes[0].set_xlabel('R (m)', fontsize=12, fontweight='bold') + axes[0].set_ylabel('Z (m)', fontsize=12, fontweight='bold') + axes[0].set_title(f'{quantity} - Real Part', fontsize=13, fontweight='bold') + axes[0].grid(True, alpha=0.3, linestyle='--') + axes[0].set_aspect('equal', adjustable='box') + + cbar_re = plt.colorbar(scatter_re, ax=axes[0], label='Value') + cbar_re.set_label(f'{quantity} (Re)', fontsize=11, fontweight='bold') + + # Plot imaginary part + scatter_im = axes[1].scatter(r, z, c=c2_im, cmap=cmap, norm=norm_im, + s=30, alpha=0.8) + axes[1].set_xlabel('R (m)', fontsize=12, fontweight='bold') + axes[1].set_ylabel('Z (m)', fontsize=12, fontweight='bold') + axes[1].set_title(f'{quantity} - Imaginary Part', fontsize=13, fontweight='bold') + axes[1].grid(True, alpha=0.3, linestyle='--') + axes[1].set_aspect('equal', adjustable='box') + + cbar_im = plt.colorbar(scatter_im, ax=axes[1], label='Value') + cbar_im.set_label(f'{quantity} (Im)', fontsize=11, fontweight='bold') + + # Add main title with statistics + num_points = len(r) + n_psi = len(np.unique(psi)) + fig.suptitle(f'{quantity} Reconstruction\n(n_psi={n_psi}, n_theta={num_points//n_psi if n_psi > 0 else 0})', + fontsize=14, fontweight='bold', y=1.00) + + plt.tight_layout() + + # Save as PNG + output_file = filepath.replace('.out', '.png') + plt.savefig(output_file, dpi=150, bbox_inches='tight') + print(f"✓ Saved: {output_file}") + plt.close() + + return output_file + + except Exception as e: + print(f"✗ Error processing {filepath}: {e}") + import traceback + traceback.print_exc() + return None + + +def main(): + """ + Main function: find and plot all C² output files. + """ + + # Find all C² output files + c2_files = sorted(glob.glob('gpec_recon_C2_*.out')) + + if not c2_files: + print("No C² output files found (gpec_recon_C2_*.out)") + print(f"Current directory: {os.getcwd()}") + return + + print(f"Found {len(c2_files)} C² output file(s)") + print("-" * 60) + + successful = 0 + for filepath in c2_files: + print(f"Processing: {filepath}") + output_file = plot_c2_reconstruction(filepath) + if output_file: + successful += 1 + + print("-" * 60) + print(f"Completed: {successful}/{len(c2_files)} files processed successfully") + + +if __name__ == '__main__': + main() diff --git a/docs/examples/DIIID_ideal_example/plot_curvature.py b/docs/examples/DIIID_ideal_example/plot_curvature.py new file mode 100644 index 000000000..3ddf2902a --- /dev/null +++ b/docs/examples/DIIID_ideal_example/plot_curvature.py @@ -0,0 +1,134 @@ +#!/usr/bin/env python3 +""" +Plot curvature diagnostic quantities from GPEC reconstruction output. + +Reads spatial domain data: +- gpec_recon_curvature_sol*.out: Spatial domain (r-z plane) + +Produces single r-z plane plot with curvature values colored. +""" + +import glob +import sys + +import matplotlib.pyplot as plt +import numpy as np +from matplotlib.colors import TwoSlopeNorm +from scipy.interpolate import griddata + + +def find_curvature_file(): + """Find curvature output file with wildcard matching.""" + curv_files = glob.glob("gpec_recon_curvature_sol*.out") + + if not curv_files: + print("Error: Could not find gpec_recon_curvature_sol*.out file") + sys.exit(1) + + return curv_files[0] + + +def read_curvature_data(): + """Read spatial curvature data from output file.""" + curv_file = find_curvature_file() + + print(f"Reading spatial data from: {curv_file}") + curv = np.loadtxt(curv_file, skiprows=1) + + psi = curv[:, 0] + theta = curv[:, 1] + r = curv[:, 2] + z = curv[:, 3] + curv_re = curv[:, 4] + curv_im = curv[:, 5] + + return psi, theta, r, z, curv_re, curv_im + + +def main(): + """Main plotting routine.""" + print("=" * 70) + print("GPEC Curvature Diagnostic Plotter (r-z plane only)") + print("=" * 70) + + psi, theta, r, z, curv_re, curv_im = read_curvature_data() + + unique_psi = np.unique(psi) + + print(f"Spatial grid: {len(unique_psi)} psi levels") + print(f"Total grid points: {len(r)}") + print( + f"Curvature range: min={np.min(curv_re):.4e}, max={np.max(curv_re):.4e}, " + f"imag_max={np.max(np.abs(curv_im)):.4e}" + ) + + fig, ax = plt.subplots(figsize=(10, 8)) + + # Use the same compression used by the shear plot so sign structure is visible. + curv_re_asinh = np.arcsinh(curv_re) + + r_min, r_max = np.min(r), np.max(r) + z_min, z_max = np.min(z), np.max(z) + + grid_r = np.linspace(r_min, r_max, 150) + grid_z = np.linspace(z_min, z_max, 150) + grid_r_mesh, grid_z_mesh = np.meshgrid(grid_r, grid_z) + + points = np.c_[r, z] + grid_curv = griddata( + points, curv_re_asinh, (grid_r_mesh, grid_z_mesh), + method="cubic", fill_value=np.nan + ) + + vmin, vmax = np.nanmin(grid_curv), np.nanmax(grid_curv) + norm = TwoSlopeNorm(vmin=vmin, vcenter=0, vmax=vmax) + + ax.contourf( + grid_r_mesh, grid_z_mesh, grid_curv, levels=30, + cmap="RdBu_r", norm=norm + ) + + scatter = ax.scatter( + r, z, c=curv_re_asinh, cmap="RdBu_r", + norm=norm, s=15, alpha=0.6, edgecolors="none" + ) + + ax.contour( + grid_r_mesh, grid_z_mesh, grid_curv, levels=[0], + colors="black", linewidths=2 + ) + + ax.set_xlabel("R", fontsize=22, fontweight="bold") + ax.set_ylabel("Z", fontsize=22, fontweight="bold") + ax.set_title("Curvature (spatial) - r-z plane", fontsize=24, + fontweight="bold") + ax.set_aspect("equal", adjustable="box") + ax.grid(True, alpha=0.3, linestyle="--") + ax.tick_params(labelsize=16) + + r_ticks = np.linspace(r_min, r_max, 6) + ax.set_xticks(r_ticks) + ax.set_xticklabels([f"{rv:.3f}" for rv in r_ticks], fontsize=14) + + z_ticks = np.linspace(z_min, z_max, 6) + ax.set_yticks(z_ticks) + ax.set_yticklabels([f"{zv:.3f}" for zv in z_ticks], fontsize=14) + + cbar = plt.colorbar(scatter, ax=ax) + cbar.set_label("asinh(Curvature)", fontsize=18, fontweight="bold") + cbar.ax.tick_params(labelsize=14) + + cbar_ticks = np.linspace(vmin, vmax, 7) + cbar.set_ticks(cbar_ticks) + cbar.set_ticklabels([f"{val:.1e}" for val in cbar_ticks], fontsize=12) + + plt.tight_layout() + + output_file = "gpec_recon_curvature_rz.png" + print(f"\nSaving plot to: {output_file}") + plt.savefig(output_file, dpi=150, bbox_inches="tight") + print("Plot complete!") + + +if __name__ == "__main__": + main() diff --git a/docs/examples/DIIID_ideal_example/plot_cvfun.py b/docs/examples/DIIID_ideal_example/plot_cvfun.py new file mode 100644 index 000000000..cbd948967 --- /dev/null +++ b/docs/examples/DIIID_ideal_example/plot_cvfun.py @@ -0,0 +1,199 @@ +#!/usr/bin/env python +""" +Plot cvfun vs cv2fun on the R-Z plane and report fun-space errors. + +Outputs: + - gpec_recon_cvfun_solX.png + - gpec_recon_cv2fun_solX.png + - gpec_recon_cvdiff_solX.png +""" + +import glob +import os +import re +import sys + +import matplotlib.pyplot as plt +import numpy as np +from matplotlib.colors import TwoSlopeNorm + + +def find_required_file(pattern): + matches = sorted(glob.glob(pattern)) + if not matches: + print(f"Error: Could not find {pattern}") + sys.exit(1) + return matches[0] + + +def extract_suffix(path): + name = os.path.basename(path) + match = re.search(r"(sol\d+)\.out$", name) + if not match: + print(f"Error: Could not extract solution suffix from {name}") + sys.exit(1) + return match.group(1) + + +def load_data(path): + data = np.loadtxt(path, skiprows=1) + if data.ndim == 1: + data = data[np.newaxis, :] + return data + + +def make_diverging_norm(values): + vmin_temp, vmax_temp = np.percentile(values, [2, 98]) + vmax = max(abs(vmin_temp), abs(vmax_temp), 1.0e-14) + return TwoSlopeNorm(vmin=-vmax, vcenter=0.0, vmax=vmax) + + +def scatter_component(ax, r, z, values, title, cbar_label): + scatter = ax.scatter( + r, + z, + c=values, + s=10, + cmap="RdBu_r", + alpha=0.75, + edgecolors="none", + norm=make_diverging_norm(values), + ) + ax.set_title(title, fontsize=11, fontweight="bold") + ax.set_xlabel("R (m)", fontsize=10) + ax.set_ylabel("Z (m)", fontsize=10) + ax.set_aspect("equal") + ax.grid(True, alpha=0.25) + cbar = plt.colorbar(scatter, ax=ax, fraction=0.046, pad=0.02) + cbar.set_label(cbar_label, fontsize=9) + return scatter + + +def make_six_panel_figure(r, z, values_by_comp, figure_title, output): + fig, axes = plt.subplots(3, 2, figsize=(13, 15)) + panel_order = [ + ("p_re", r"$C_\psi$ Re", "Re"), + ("p_im", r"$C_\psi$ Im", "Im"), + ("t_re", r"$C_\theta$ Re", "Re"), + ("t_im", r"$C_\theta$ Im", "Im"), + ("z_re", r"$C_\zeta$ Re", "Re"), + ("z_im", r"$C_\zeta$ Im", "Im"), + ] + for ax, (key, title, label) in zip(axes.ravel(), panel_order): + scatter_component( + ax, + r, + z, + values_by_comp[key], + f"{figure_title} {title}", + label, + ) + fig.suptitle(figure_title, fontsize=15, fontweight="bold") + fig.tight_layout(rect=[0, 0, 1, 0.95]) + fig.savefig(output, dpi=160, bbox_inches="tight") + plt.close(fig) + + +def symmetric_relative_l2(lhs, rhs): + denom = np.linalg.norm(lhs) + np.linalg.norm(rhs) + if denom == 0.0: + return 0.0 + return 2.0 * np.linalg.norm(lhs - rhs) / denom + + +def component_arrays(data): + return { + "p_re": data[:, 4], + "p_im": data[:, 5], + "t_re": data[:, 6], + "t_im": data[:, 7], + "z_re": data[:, 8], + "z_im": data[:, 9], + } + + +def main(): + cv_file = find_required_file("gpec_recon_cvfun_sol*.out") + cv2_file = find_required_file("gpec_recon_cv2fun_sol*.out") + suffix = extract_suffix(cv_file) + + print(f"Reading {os.path.basename(cv_file)}") + print(f"Reading {os.path.basename(cv2_file)}") + + cv_data = load_data(cv_file) + cv2_data = load_data(cv2_file) + + if cv_data.shape != cv2_data.shape or not np.allclose( + cv_data[:, :4], cv2_data[:, :4] + ): + print("Error: cvfun and cv2fun grids do not match.") + sys.exit(1) + + r = cv_data[:, 2] + z = cv_data[:, 3] + cv = component_arrays(cv_data) + cv2 = component_arrays(cv2_data) + panel_keys = ["p_re", "p_im", "t_re", "t_im", "z_re", "z_im"] + comp_labels = [("p", r"$C_\psi$"), ("t", r"$C_\theta$"), ("z", r"$C_\zeta$")] + + direct_values = {} + metric_values = {} + diff_values = {} + + print("") + print("Fun-space error summary:") + + for comp, latex_name in comp_labels: + for part in ["re", "im"]: + key = f"{comp}_{part}" + direct = cv[key] + metric = cv2[key] + diff = direct - metric + direct_values[key] = direct + metric_values[key] = metric + diff_values[key] = diff + + rel_l2 = symmetric_relative_l2(direct, metric) + peak = np.max(np.maximum(np.abs(direct), np.abs(metric))) + mask = np.maximum(np.abs(direct), np.abs(metric)) > 0.05 * peak + masked_rel_l2 = symmetric_relative_l2(direct[mask], metric[mask]) + abs_energy_frac = np.sum(diff[mask] ** 2) / max(np.sum(diff**2), 1.0e-30) + idx = np.argmax(np.abs(diff)) + + print( + f" cv{comp}_{part}: rel_L2 = {100*rel_l2:6.3f}%" + f" rel_L2(>5% peak) = {100*masked_rel_l2:6.3f}%" + f" mismatch energy in >5% peak region = {100*abs_energy_frac:6.2f}%" + ) + print( + f" max |Δ| = {abs(diff[idx]):.6e}" + f" at psi={cv_data[idx,0]:.6f}, theta={cv_data[idx,1]:.6f}," + f" R={cv_data[idx,2]:.6f}, Z={cv_data[idx,3]:.6f}" + ) + print( + f" direct = {direct[idx]:.6e}, metric = {metric[idx]:.6e}" + ) + + cv_png = f"gpec_recon_cvfun_{suffix}.png" + cv2_png = f"gpec_recon_cv2fun_{suffix}.png" + diff_png = f"gpec_recon_cvdiff_{suffix}.png" + + make_six_panel_figure( + r, z, direct_values, "Direct cvfun components", cv_png + ) + make_six_panel_figure( + r, z, metric_values, "Metric cv2fun components", cv2_png + ) + make_six_panel_figure( + r, z, diff_values, "Difference components (direct - metric)", diff_png + ) + + print("") + print("Saved:") + print(f" {cv_png}") + print(f" {cv2_png}") + print(f" {diff_png}") + + +if __name__ == "__main__": + main() diff --git a/docs/examples/DIIID_ideal_example/plot_cvmn.py b/docs/examples/DIIID_ideal_example/plot_cvmn.py new file mode 100644 index 000000000..f68d962d1 --- /dev/null +++ b/docs/examples/DIIID_ideal_example/plot_cvmn.py @@ -0,0 +1,216 @@ +#!/usr/bin/env python +""" +Plot reconstructed covariant C components in Fourier space. + +This script reads: + - gpec_recon_cvmn_sol*.out + - gpec_recon_cv2mn_sol*.out + +and writes: + - gpec_recon_cvmn.png + - gpec_recon_cv2mn.png + +Each PNG contains 6 subplots: + cvp_re, cvp_im, cvt_re, cvt_im, cvz_re, cvz_im +with psi on the x-axis and one line per m value. +""" + +import glob +import os +import sys + +import matplotlib.pyplot as plt +import numpy as np + + +def find_required_file(pattern): + matches = sorted(glob.glob(pattern)) + if not matches: + print(f"Error: Could not find {pattern}") + sys.exit(1) + return matches[0] + + +def load_mn_data(path): + data = np.loadtxt(path, skiprows=1) + if data.ndim == 1: + data = data[np.newaxis, :] + return data + + +def build_series(data): + psi_vals = np.unique(data[:, 0]) + m_vals = np.unique(data[:, 1].astype(int)) + series = {} + for m in m_vals: + mask = data[:, 1].astype(int) == m + block = data[mask] + order = np.argsort(block[:, 0]) + series[m] = block[order] + return psi_vals, m_vals, series + + +def style_axis(ax, title): + ax.set_title(title, fontsize=11, fontweight="bold") + ax.set_xlabel("psi", fontsize=10) + ax.grid(True, alpha=0.25, color="0.75", linewidth=0.6) + ax.set_facecolor("#fbfbfb") + + +def plot_family(data, titles, png_name, figure_title): + _, m_vals, series = build_series(data) + cmap = plt.colormaps["nipy_spectral"] + linestyles = ["-", "--", "-.", ":"] + + fig, axes = plt.subplots(3, 2, figsize=(14, 12), sharex=True) + axes = axes.ravel() + + for idx, ax in enumerate(axes): + col = idx + 2 + for i, m in enumerate(m_vals): + block = series[m] + color = cmap((i + 0.5) / max(len(m_vals), 1)) + ax.plot( + block[:, 0], + block[:, col], + color=color, + linewidth=1.6 if i % 5 else 2.1, + linestyle=linestyles[i % len(linestyles)], + alpha=0.95, + ) + style_axis(ax, titles[idx]) + + axes[0].set_ylabel("value", fontsize=10) + axes[1].set_ylabel("value", fontsize=10) + axes[2].set_ylabel("value", fontsize=10) + axes[3].set_ylabel("value", fontsize=10) + axes[4].set_ylabel("value", fontsize=10) + axes[5].set_ylabel("value", fontsize=10) + + # Add a compact colorbar-like legend using m-index colors. + sm = plt.cm.ScalarMappable( + cmap=cmap, norm=plt.Normalize(vmin=m_vals.min(), vmax=m_vals.max()) + ) + sm.set_array([]) + cbar = fig.colorbar(sm, ax=axes.tolist(), fraction=0.02, pad=0.02) + cbar.set_label("m", fontsize=10) + + fig.suptitle(figure_title, fontsize=14, fontweight="bold") + fig.tight_layout(rect=[0, 0, 0.96, 0.97]) + fig.savefig(png_name, dpi=160, bbox_inches="tight") + plt.close(fig) + + +def sort_rows(data): + return data[np.lexsort((data[:, 1], data[:, 0]))] + + +def symmetric_relative_l2(lhs, rhs): + denom = np.linalg.norm(lhs) + np.linalg.norm(rhs) + if denom == 0.0: + return 0.0 + return 2.0 * np.linalg.norm(lhs - rhs) / denom + + +def max_pointwise_relative(lhs, rhs): + scale = np.maximum(np.maximum(np.abs(lhs), np.abs(rhs)), 1.0e-14) + return np.max(np.abs(lhs - rhs) / scale) + + +def compare_families(cvmn_data, cv2mn_data): + lhs = sort_rows(cvmn_data) + rhs = sort_rows(cv2mn_data) + + if lhs.shape != rhs.shape: + raise ValueError( + f"Shape mismatch: cvmn {lhs.shape} vs cv2mn {rhs.shape}" + ) + + if not np.allclose(lhs[:, :2], rhs[:, :2], atol=0.0, rtol=0.0): + raise ValueError("psi/m grids do not match between cvmn and cv2mn.") + + labels = ["p", "t", "z"] + results = [] + all_lhs = [] + all_rhs = [] + + for i, label in enumerate(labels): + col = 2 + 2 * i + lhs_comp = lhs[:, col] + 1j * lhs[:, col + 1] + rhs_comp = rhs[:, col] + 1j * rhs[:, col + 1] + all_lhs.append(lhs_comp) + all_rhs.append(rhs_comp) + results.append( + ( + label, + symmetric_relative_l2(lhs_comp, rhs_comp), + max_pointwise_relative(lhs_comp, rhs_comp), + ) + ) + + all_lhs = np.concatenate(all_lhs) + all_rhs = np.concatenate(all_rhs) + overall = ( + symmetric_relative_l2(all_lhs, all_rhs), + max_pointwise_relative(all_lhs, all_rhs), + ) + return results, overall + + +def main(): + cvmn_file = find_required_file("gpec_recon_cvmn_sol*.out") + cv2mn_file = find_required_file("gpec_recon_cv2mn_sol*.out") + + print(f"Reading {os.path.basename(cvmn_file)}") + print(f"Reading {os.path.basename(cv2mn_file)}") + + cvmn_data = load_mn_data(cvmn_file) + cv2mn_data = load_mn_data(cv2mn_file) + component_results, overall = compare_families(cvmn_data, cv2mn_data) + + plot_family( + cvmn_data, + [ + "cvp_re", + "cvp_im", + "cvt_re", + "cvt_im", + "cvz_re", + "cvz_im", + ], + "gpec_recon_cvmn.png", + "Covariant C from direct route (mn)", + ) + + plot_family( + cv2mn_data, + [ + "cv2p_re", + "cv2p_im", + "cv2t_re", + "cv2t_im", + "cv2z_re", + "cv2z_im", + ], + "gpec_recon_cv2mn.png", + "Covariant C from metric route (mn)", + ) + + print("Saved:") + print(" gpec_recon_cvmn.png") + print(" gpec_recon_cv2mn.png") + print("") + print("Symmetric relative error between cvmn and cv2mn:") + for label, rel_l2, rel_max in component_results: + print( + f" cv{label}: rel_L2 = {100.0 * rel_l2:8.3f}%" + f" max_pointwise = {100.0 * rel_max:8.3f}%" + ) + print( + f" overall: rel_L2 = {100.0 * overall[0]:8.3f}%" + f" max_pointwise = {100.0 * overall[1]:8.3f}%" + ) + + +if __name__ == "__main__": + main() diff --git a/docs/examples/DIIID_ideal_example/plot_reconstruction.py b/docs/examples/DIIID_ideal_example/plot_reconstruction.py new file mode 100644 index 000000000..9f5ad08cd --- /dev/null +++ b/docs/examples/DIIID_ideal_example/plot_reconstruction.py @@ -0,0 +1,311 @@ +#!/usr/bin/env python3 +""" +Plot reconstruction diagnostics in r-z plane. + +For each reconstruction output file, creates a PNG with real and imaginary parts +displayed as scatter plots in the r-z grid. +Color scheme: red (positive) - white (0) - blue (negative) + +Handles different file formats: +- Scalar real-only (5 columns): 1 subplot +- Scalar complex (6 columns): 2 subplots +- 2-component vectors (8 columns): 2 subplots +- 3-component vectors (10 columns): 3 subplots + +Usage: + python plot_reconstruction.py +""" + +import numpy as np +import matplotlib.pyplot as plt +import matplotlib.colors as mcolors +from matplotlib.colors import LinearSegmentedColormap +import glob +import os + + +def create_rwb_colormap(n_bins=256): + """ + Create a red-white-blue colormap where white is centered at 0. + + Parameters: + ----------- + n_bins : int + Number of bins in the colormap + + Returns: + -------- + cmap : LinearSegmentedColormap + Red-white-blue colormap + """ + colors_list = ['red', 'white', 'blue'] + cmap = LinearSegmentedColormap.from_list('rwb', colors_list, N=n_bins) + return cmap + + +def get_component_names(filepath, n_components): + """ + Extract component names from file based on filename and number of components. + + Parameters: + ----------- + filepath : str + Path to the output file + n_components : int + Number of components (1, 2, or 3) + + Returns: + -------- + names : list + List of component names + """ + basename = os.path.basename(filepath) + quantity = basename.replace('gpec_recon_', '').replace('.out', '').rsplit('_sol', 1)[0] + + if n_components == 1: + return [quantity] + elif n_components == 2: + # For 2D vectors (like C_psi, C_theta) + if 'Ccov' in basename: + return ['ψ component (C_psi)', 'θ component (C_theta)'] + elif 'Qv' in basename: + return ['ψ component (Qv_psi)', 'θ component (Qv_theta)'] + elif 'Qw' in basename: + return ['ψ component (Qw_psi)', 'θ component (Qw_theta)'] + else: + return ['Component 1', 'Component 2'] + elif n_components == 3: + # For 3D vectors (like C1, C2, C3 or Psi, Theta, Zeta) + if 'Ccov' in basename: + return ['ψ component', 'θ component', 'ζ component'] + elif 'Qv' in basename: + return ['ψ component', 'θ component', 'ζ component'] + elif 'Qw' in basename: + return ['ψ component', 'θ component', 'ζ component'] + elif 'Ccontra' in basename: + return ['C¹ component', 'C² component', 'C³ component'] + else: + return [f'Component {i+1}' for i in range(n_components)] + else: + return [f'Component {i+1}' for i in range(n_components)] + + +def plot_reconstruction(filepath): + """ + Plot reconstruction data in r-z plane. + + Creates PNG files with real and imaginary parts as subplots. + + Parameters: + ----------- + filepath : str + Path to the reconstruction output file + + Returns: + -------- + output_files : list + List of generated PNG file paths + """ + + try: + # Read the file with error handling for inconsistent columns + with open(filepath, 'r') as f: + lines = f.readlines() + + # Skip header and filter out incomplete lines (blank lines, comment lines) + data_lines = [] + for line in lines[1:]: # Skip header + line = line.strip() + if not line or line.startswith('#'): # Skip blank lines + continue + # Count columns: split and filter empty strings + cols = [x for x in line.split() if x] + # Only keep lines with full column count. + # Supported formats: + # 5 cols = psi theta r z scalar_re + # 6 cols = psi theta r z scalar_re scalar_im + # 8 cols = psi theta r z vec2_re/im + # 10 cols = psi theta r z vec3_re/im + if len(cols) in [5, 6, 8, 10]: + data_lines.append(line) + + if not data_lines: + print(f"Warning: {filepath} has no valid data lines") + return [] + + # Convert to array + data_str = '\n'.join(data_lines) + from io import StringIO + data = np.loadtxt(StringIO(data_str)) + + if data.size == 0: + print(f"Warning: {filepath} is empty") + return [] + + # Handle case where file has only one data point + if data.ndim == 1: + data = data.reshape(1, -1) + + # Extract columns + psi = data[:, 0] + theta = data[:, 1] + r = data[:, 2] + z = data[:, 3] + + n_cols = data.shape[1] + scalar_real_only = (n_cols == 5) + + if scalar_real_only: + n_components = 1 + quantities = [{'re': data[:, 4], 'im': None}] + else: + n_data_cols = n_cols - 4 # Subtract psi, theta, r, z + n_components = n_data_cols // 2 # Each component has (re, im) + + # Extract quantities + quantities = [] + for i in range(n_components): + re_col = 4 + i * 2 + im_col = 4 + i * 2 + 1 + quantities.append({ + 're': data[:, re_col], + 'im': data[:, im_col] + }) + + # Get quantity name and component names + basename = os.path.basename(filepath) + quantity = basename.replace('gpec_recon_', '').replace('.out', '').rsplit('_sol', 1)[0] + comp_names = get_component_names(filepath, n_components) + + # Create red-white-blue colormap + cmap = create_rwb_colormap(256) + + if scalar_real_only: + fig, ax = plt.subplots(1, 1, figsize=(8, 7)) + axes = np.array([[ax]]) + else: + # Create figure with subplots (n_components rows x 2 columns for re/im) + n_rows = n_components + fig, axes = plt.subplots(n_rows, 2, figsize=(15, 6*n_rows)) + + # Handle single row case (axes not 2D) + if n_rows == 1: + axes = axes.reshape(1, -1) + + output_files = [] + + # Plot each component + for i, (comp_data, comp_name) in enumerate(zip(quantities, comp_names)): + c2_re = comp_data['re'] + c2_im = comp_data['im'] + + # Calculate max absolute values for symmetric normalization + vmax_re = np.max(np.abs(c2_re)) + if c2_im is not None: + vmax_im = np.max(np.abs(c2_im)) + + # Use CenteredNorm with white at 0 + if vmax_re > 0: + norm_re = mcolors.CenteredNorm(vcenter=0, halfrange=vmax_re) + else: + norm_re = mcolors.Normalize(vmin=-1, vmax=1) + + # Plot real part + scatter_re = axes[i, 0].scatter( + r, z, c=c2_re, cmap=cmap, norm=norm_re, s=30, alpha=0.8 + ) + axes[i, 0].set_xlabel('R (m)', fontsize=11, fontweight='bold') + axes[i, 0].set_ylabel('Z (m)', fontsize=11, fontweight='bold') + real_title = f'{quantity} - {comp_name}' if scalar_real_only \ + else f'{quantity} - {comp_name} (Real)' + axes[i, 0].set_title(real_title, fontsize=12, fontweight='bold') + axes[i, 0].grid(True, alpha=0.3, linestyle='--') + axes[i, 0].set_aspect('equal', adjustable='box') + + cbar_re = plt.colorbar(scatter_re, ax=axes[i, 0]) + cbar_re.set_label('Value', fontsize=10, fontweight='bold') + + if c2_im is not None: + if vmax_im > 0: + norm_im = mcolors.CenteredNorm(vcenter=0, halfrange=vmax_im) + else: + norm_im = mcolors.Normalize(vmin=-1, vmax=1) + + scatter_im = axes[i, 1].scatter( + r, z, c=c2_im, cmap=cmap, norm=norm_im, s=30, alpha=0.8 + ) + axes[i, 1].set_xlabel('R (m)', fontsize=11, fontweight='bold') + axes[i, 1].set_ylabel('Z (m)', fontsize=11, fontweight='bold') + axes[i, 1].set_title( + f'{quantity} - {comp_name} (Imaginary)', + fontsize=12, + fontweight='bold' + ) + axes[i, 1].grid(True, alpha=0.3, linestyle='--') + axes[i, 1].set_aspect('equal', adjustable='box') + + cbar_im = plt.colorbar(scatter_im, ax=axes[i, 1]) + cbar_im.set_label('Value', fontsize=10, fontweight='bold') + + # Add main title with statistics + num_points = len(r) + n_psi = len(np.unique(psi)) + n_theta = num_points // n_psi if n_psi > 0 else 0 + + fig.suptitle(f'{quantity} Reconstruction (n_psi={n_psi}, n_theta={n_theta})', + fontsize=14, fontweight='bold', y=0.995) + + plt.tight_layout() + + # Save as PNG + output_file = filepath.replace('.out', '.png') + plt.savefig(output_file, dpi=150, bbox_inches='tight') + print(f"✓ Saved: {output_file}") + plt.close() + + output_files.append(output_file) + return output_files + + except Exception as e: + print(f"✗ Error processing {filepath}: {e}") + import traceback + traceback.print_exc() + return [] + + +def main(): + """ + Main function: find and plot all reconstruction output files. + """ + + # Find all reconstruction output files (excluding C2 which already has its own script) + recon_files = sorted(glob.glob('gpec_recon_*.out')) + + # Filter out C2 files (they have their own dedicated script) + recon_files = [f for f in recon_files if 'C2_' not in f] + + if not recon_files: + print("No reconstruction output files found") + print(f"Current directory: {os.getcwd()}") + return + + print(f"Found {len(recon_files)} reconstruction output file(s)") + print("-" * 70) + + successful = 0 + total_files = 0 + + for filepath in recon_files: + print(f"Processing: {filepath}") + output_files = plot_reconstruction(filepath) + if output_files: + successful += 1 + total_files += len(output_files) + + print("-" * 70) + print(f"Completed: {successful}/{len(recon_files)} files processed successfully") + print(f"Generated {total_files} PNG file(s)") + + +if __name__ == '__main__': + main() diff --git a/docs/examples/DIIID_ideal_example/plot_shear.py b/docs/examples/DIIID_ideal_example/plot_shear.py new file mode 100644 index 000000000..22bc94ca0 --- /dev/null +++ b/docs/examples/DIIID_ideal_example/plot_shear.py @@ -0,0 +1,132 @@ +#!/usr/bin/env python3 +""" +Plot shear diagnostic quantities from GPEC reconstruction output. + +Reads spatial domain data: +- gpec_recon_shear_fun_sol*.out: Spatial domain (r-z plane) + +Produces single r-z plane plot with shear values colored. +""" + +import numpy as np +import matplotlib.pyplot as plt +from matplotlib.colors import TwoSlopeNorm +from scipy.interpolate import griddata +import sys +import glob + +def find_shear_fun_file(): + """Find shear_fun output file with wildcard matching.""" + fun_files = glob.glob('gpec_recon_shear_fun_sol*.out') + + if not fun_files: + print("Error: Could not find gpec_recon_shear_fun_sol*.out file") + sys.exit(1) + + return fun_files[0] + +def read_shear_fun_data(): + """Read spatial shear data from output file.""" + fun_file = find_shear_fun_file() + + print(f"Reading spatial data from: {fun_file}") + shear_fun = np.loadtxt(fun_file, skiprows=1) + + # Parse spatial data + psi_fun = shear_fun[:, 0] + theta_fun = shear_fun[:, 1] + r_fun = shear_fun[:, 2] + z_fun = shear_fun[:, 3] + shear_re_fun = shear_fun[:, 4] + shear_im_fun = shear_fun[:, 5] + + return psi_fun, theta_fun, r_fun, z_fun, shear_re_fun, shear_im_fun + +def main(): + """Main plotting routine.""" + print("=" * 70) + print("GPEC Shear Diagnostic Plotter (r-z plane only)") + print("=" * 70) + + # Read data + psi_fun, theta_fun, r_fun, z_fun, shear_re_fun, shear_im_fun = read_shear_fun_data() + + # Get unique values + unique_psi_fun = np.unique(psi_fun) + + print(f"Spatial grid: {len(unique_psi_fun)} psi levels") + print(f"Total grid points: {len(r_fun)}") + + # Create figure with single r-z plane plot + fig, ax = plt.subplots(figsize=(10, 8)) + + # Apply asinh transformation to shear + shear_re_fun_asinh = np.arcsinh(shear_re_fun) + + # Create grid for interpolation + r_min, r_max = np.min(r_fun), np.max(r_fun) + z_min, z_max = np.min(z_fun), np.max(z_fun) + + grid_r = np.linspace(r_min, r_max, 150) + grid_z = np.linspace(z_min, z_max, 150) + grid_r_mesh, grid_z_mesh = np.meshgrid(grid_r, grid_z) + + # Interpolate shear values onto grid + points = np.c_[r_fun, z_fun] + grid_shear = griddata(points, shear_re_fun_asinh, (grid_r_mesh, grid_z_mesh), + method='cubic', fill_value=np.nan) + + # Normalize with 0 at white + vmin, vmax = np.nanmin(grid_shear), np.nanmax(grid_shear) + norm = TwoSlopeNorm(vmin=vmin, vcenter=0, vmax=vmax) + + # Plot shear as filled contours with scatter points + contourf = ax.contourf(grid_r_mesh, grid_z_mesh, grid_shear, levels=30, + cmap='RdBu_r', norm=norm) + + # Overlay scatter plot for actual data points + scatter = ax.scatter(r_fun, z_fun, c=shear_re_fun_asinh, cmap='RdBu_r', + norm=norm, s=15, alpha=0.6, edgecolors='none') + + # Draw contour at shear=0 in black + contour_zero = ax.contour(grid_r_mesh, grid_z_mesh, grid_shear, + levels=[0], colors='black', linewidths=2) + + ax.set_xlabel('R', fontsize=22, fontweight='bold') + ax.set_ylabel('Z', fontsize=22, fontweight='bold') + ax.set_title('Shear (spatial) - r-z plane', fontsize=24, fontweight='bold') + ax.set_aspect('equal', adjustable='box') + ax.grid(True, alpha=0.3, linestyle='--') + ax.tick_params(labelsize=16) + + # Set r-axis ticks + r_ticks = np.linspace(r_min, r_max, 6) + ax.set_xticks(r_ticks) + ax.set_xticklabels([f'{r:.3f}' for r in r_ticks], fontsize=14) + + # Set z-axis ticks + z_ticks = np.linspace(z_min, z_max, 6) + ax.set_yticks(z_ticks) + ax.set_yticklabels([f'{z:.3f}' for z in z_ticks], fontsize=14) + + # Colorbar + cbar = plt.colorbar(scatter, ax=ax) + cbar.set_label('asinh(Shear)', fontsize=18, fontweight='bold') + cbar.ax.tick_params(labelsize=14) + + # Set colorbar ticks to span negative and positive values + cbar_ticks = np.linspace(vmin, vmax, 7) + cbar.set_ticks(cbar_ticks) + cbar.set_ticklabels([f'{val:.1e}' for val in cbar_ticks], fontsize=12) + + # Adjust layout and save + plt.tight_layout() + + output_file = 'gpec_recon_shear_rz.png' + print(f"\nSaving plot to: {output_file}") + plt.savefig(output_file, dpi=150, bbox_inches='tight') + print("Plot complete!") + + +if __name__ == '__main__': + main() diff --git a/docs/examples/DIIID_ideal_example/plot_xbrzphi.py b/docs/examples/DIIID_ideal_example/plot_xbrzphi.py new file mode 100644 index 000000000..0d09ba3f0 --- /dev/null +++ b/docs/examples/DIIID_ideal_example/plot_xbrzphi.py @@ -0,0 +1,114 @@ +import numpy as np +import matplotlib.pyplot as plt +import pandas as pd + +def load_gpec_xbrzphi(filepath): + """ + Load GPEC XBRZPHI output file + Returns: pandas DataFrame with all columns + """ + # Skip header lines (first 6 lines contain metadata) + df = pd.read_csv(filepath, sep=r'\s+', skiprows=6) + return df + +def plot_gpec_displacement_rzplane(filepath, figsize=(18, 12)): + """ + Plot 6 R-Z plane subplots for displacement components (xr, xz, xp) + Shows real and imaginary parts - 6 panels total + """ + df = load_gpec_xbrzphi(filepath) + + # Displacement components - real and imaginary + components = [ + ('real(xr) - Radial Displacement (Real)', df['real(xr)']), + ('imag(xr) - Radial Displacement (Imag)', df['imag(xr)']), + ('real(xz) - Vertical Displacement (Real)', df['real(xz)']), + ('imag(xz) - Vertical Displacement (Imag)', df['imag(xz)']), + ('real(xp) - Toroidal Displacement (Real)', df['real(xp)']), + ('imag(xp) - Toroidal Displacement (Imag)', df['imag(xp)']) + ] + + fig, axes = plt.subplots(2, 3, figsize=figsize) + fig.suptitle('GPEC XBRZPHI: Displacement Components in R-Z Plane (n=1)', + fontsize=16, fontweight='bold') + + axes_flat = axes.flatten() + + for idx, (title, values) in enumerate(components): + ax = axes_flat[idx] + + # Create scatter plot colored by value + scatter = ax.scatter(df['r'], df['z'], c=values, s=50, + cmap='RdBu_r', alpha=0.8, edgecolors='none') + + # Add colorbar + cbar = plt.colorbar(scatter, ax=ax) + cbar.set_label('Value', fontsize=10) + + ax.set_xlabel('R (Major Radius)', fontsize=11) + ax.set_ylabel('Z (Vertical Position)', fontsize=11) + ax.set_title(title, fontsize=12, fontweight='bold') + ax.grid(True, alpha=0.3, linestyle='--') + + plt.tight_layout() + return fig, df + +def plot_gpec_magnetic_field_rzplane(filepath, figsize=(18, 12)): + """ + Plot 6 R-Z plane subplots for magnetic field components (br, bz, bp) + Shows real and imaginary parts - 6 panels total + """ + df = load_gpec_xbrzphi(filepath) + + # Magnetic field components - real and imaginary + components = [ + ('real(br) - Radial Magnetic Field (Real)', df['real(br)']), + ('imag(br) - Radial Magnetic Field (Imag)', df['imag(br)']), + ('real(bz) - Vertical Magnetic Field (Real)', df['real(bz)']), + ('imag(bz) - Vertical Magnetic Field (Imag)', df['imag(bz)']), + ('real(bp) - Toroidal Magnetic Field (Real)', df['real(bp)']), + ('imag(bp) - Toroidal Magnetic Field (Imag)', df['imag(bp)']) + ] + + fig, axes = plt.subplots(2, 3, figsize=figsize) + fig.suptitle('GPEC XBRZPHI: Magnetic Field Components in R-Z Plane (n=1)', + fontsize=16, fontweight='bold') + + axes_flat = axes.flatten() + + for idx, (title, values) in enumerate(components): + ax = axes_flat[idx] + + # Create scatter plot colored by value + scatter = ax.scatter(df['r'], df['z'], c=values, s=50, + cmap='RdBu_r', alpha=0.8, edgecolors='none') + + # Add colorbar + cbar = plt.colorbar(scatter, ax=ax) + cbar.set_label('Value', fontsize=10) + + ax.set_xlabel('R (Major Radius)', fontsize=11) + ax.set_ylabel('Z (Vertical Position)', fontsize=11) + ax.set_title(title, fontsize=12, fontweight='bold') + ax.grid(True, alpha=0.3, linestyle='--') + + plt.tight_layout() + return fig, df + +# Usage +if __name__ == "__main__": + filepath = './gpec_xbrzphi_fun_n1.out' + + # Plot 1: Displacement components (x) - 6 panels + fig1, df = plot_gpec_displacement_rzplane(filepath) + output_path_1 = './gpec_xbrzphi_displacement_6panels.png' + fig1.savefig(output_path_1, dpi=150, bbox_inches='tight') + print(f"Saved: {output_path_1}") + + # Plot 2: Magnetic field components (b) - 6 panels + fig2, df = plot_gpec_magnetic_field_rzplane(filepath) + output_path_2 = './gpec_xbrzphi_magnetic_6panels.png' + fig2.savefig(output_path_2, dpi=150, bbox_inches='tight') + print(f"Saved: {output_path_2}") + + # plt.show() \ No newline at end of file From fe92331d943fabea27494366591553a7cb155660 Mon Sep 17 00:00:00 2001 From: satelite2517 Date: Thu, 23 Apr 2026 15:43:01 +0900 Subject: [PATCH 10/62] GPEC - MINOR - Update example configurations and documentation --- docs/examples/DIIID_ideal_example/gpec.in | 29 +- docs/tex/recon/main.tex | 3065 +++++++++++++++------ 2 files changed, 2248 insertions(+), 846 deletions(-) diff --git a/docs/examples/DIIID_ideal_example/gpec.in b/docs/examples/DIIID_ideal_example/gpec.in index 19c273c7e..f1b422e23 100644 --- a/docs/examples/DIIID_ideal_example/gpec.in +++ b/docs/examples/DIIID_ideal_example/gpec.in @@ -11,7 +11,7 @@ tmag_in =0 ! True(1) if external perturbation has toroidal angle defined by jac_in. False(0) if machine angle. mthsurf =0 ! Number of poloidal angle gridpoints. Minimum of twice the Nyquist condition from DCON m limits is enforced. - coil_flag=t ! Calculate external perturbation from coils in coil.in + coil_flag=f ! Calculate external perturbation from coils in coil.in data_flag=f ! Apply perturbation from thrid party code output data_type="surfmn" ! Name of said code. Choose: surfmn,?? @@ -28,8 +28,8 @@ displacement_flag=f ! Perturbations are displacement (m). Default is field (T). fixed_boundary_flag=f ! Total perturbation = external perturbation - mode_flag = .F. ! Return only a single DCON eigenfunction defined by mode (ignores external pert.) - mode = 0 ! DCON eigen function index (1 is least stable) + mode_flag = .T. ! Return only a single DCON eigenfunction defined by mode (ignores external pert.) + mode = 1 ! DCON eigen function index (1 is least stable) filter_types = 'w' ! Isolate the filter_modes of energy (w), reluctance (r), permiability (p) or singular coupling (s) eigenvectors/singular-vectors filter_modes = 0 ! Number of modes isolated, negative values isolate backwards from the last mode / @@ -49,21 +49,21 @@ tmag_out=1 ! True(1) for magnetic toroidal angle outputs (affects singcoup and singfld, appends gpec_control) mlim_out=64 ! If positive, Fourier decomposed outputs will span -mlim_out<=m<=mlim_out. Default (<=0) outputs on internal m range. - resp_flag=t ! Output energy, reluctance, inductance, and permeability eigenvalues, eigenvectors, and matrices - filter_flag=t ! Outputs energy, reluctance, pereability, and (optionally) the singular-coupling eigenmodes on the control surface - singcoup_flag=t ! Calculate coupling of each m to resonant surfaces - singfld_flag=t ! Output of resonant surface quantities (flux,current,etc.) + resp_flag=f ! Output energy, reluctance, inductance, and permeability eigenvalues, eigenvectors, and matrices + filter_flag=f ! Outputs energy, reluctance, pereability, and (optionally) the singular-coupling eigenmodes on the control surface + singcoup_flag=f ! Calculate coupling of each m to resonant surfaces + singfld_flag=f ! Output of resonant surface quantities (flux,current,etc.) vsingfld_flag=f ! Output of vacuum resonant surface quantities - singthresh_flag=t ! Calculate Callen resonant field penetration threshold (requires kinetic profiles from pentrc.in) + singthresh_flag=f ! Calculate Callen resonant field penetration threshold (requires kinetic profiles from pentrc.in) pmodb_flag=f ! Outputs delta-B_Lagrangian - xbnormal_flag=t ! Outputs normal displacement and field in plasma + xbnormal_flag=f ! Outputs normal displacement and field in plasma vbnormal_flag=f ! Outputs vacuum normal displacement and field in plasma - xclebsch_flag=t ! Outputs clebsch coordinate displacement for PENT + xclebsch_flag=f ! Outputs clebsch coordinate displacement for PENT dw_flag=f ! Outputs self-consistent energy and torque profiles (when kin_flag=t from DCON) eqbrzphi_flag=f ! Outputs equilibrium field on regular (r,z) grid - brzphi_flag=t ! Outputs perturbed field on regular (r,z) grid + brzphi_flag=f ! Outputs perturbed field on regular (r,z) grid xrzphi_flag=f ! Outputs displacement on regular (r,z) grid vbrzphi_flag=f ! Outputs field on regular (r,z) grid due to total boundary surface current (not a real field) vvbrzphi_flag=f ! Outputs field on regular (r,z) grid due to exeternal perturbation surface current (not a real field) @@ -76,11 +76,14 @@ nz = 124 ! Number of vertical grid points in rzphi outputs fun_flag=t ! Write outputs to (r,z) in addition to default (psi,m) flux_flag=f ! Write outputs to (psi,theta) in addition to default (psi,m) - bin_flag=f ! Write binary outputs for use with xdraw - bin_2d_flag=f ! Write 2D binary outputs for use with xdraw + bin_flag=t ! Write binary outputs for use with xdraw + bin_2d_flag=t ! Write 2D binary outputs for use with xdraw out_ahg2msc=f ! Output deprecated ahg2msc.out files. This is used to communicate with vacuum, but is now done through memory. max_linesout=0 ! Maximum length of ascii data tables enforced by increasing radial step size (iff .gt. 0). verbose=t ! Print run log to terminal + + recon_flag=t + netcdf_flag=t / &GPEC_DIAGNOSE timeit=t ! Print timer splits for major subroutines diff --git a/docs/tex/recon/main.tex b/docs/tex/recon/main.tex index 2866583c6..01f2dd29f 100644 --- a/docs/tex/recon/main.tex +++ b/docs/tex/recon/main.tex @@ -1,4 +1,4 @@ -\documentclass[12pt,a4paper]{article} +\documentclass[10pt,a4paper]{article} \usepackage[utf8]{inputenc} \usepackage[T1]{fontenc} @@ -182,8 +182,7 @@ \section{Coordinate system} % &= \color{blue} \nabla \psi \times (- \nabla \alpha)\\ % -&= \color{blue} g(\psi) \nabla \phi + \nabla \phi \times \nabla \psi \\ -% +&= \color{blue} g(\psi) \nabla \phi + \nabla \phi \times \nabla \psi \end{align} \begin{equation} @@ -193,7 +192,9 @@ \section{Coordinate system} g(\psi) \leftrightarrow (toroidal field functions) \leftrightarrow f_{dcon} \end{equation} -So as follows, \[ +In the following, the blue-side variable $\psi$ is Chance's flux +coordinate. Its relation to the DCON normalized flux is +\[ \color{blue}{\psi} \;\;\longleftrightarrow\;\; \color{black}\frac{\chi_{\mathrm{dcon}}}{2\pi} @@ -204,10 +205,9 @@ \section{Coordinate system} = \color{black}\frac{\chi'_{\mathrm{dcon}}}{2\pi}\, \psi_{\mathrm{dcon}}. \] -will established. -And also +Therefore \[ -{\chi} = \color{black}\chi'_{\mathrm{dcon}} \psi_{\mathrm{dcon}} +{\chi}_{\mathrm{dcon}} = \color{black}\chi'_{\mathrm{dcon}} \psi_{\mathrm{dcon}}. \] \begin{align} @@ -220,7 +220,11 @@ \section{Coordinate system} \end{align} \begin{equation} - R^2 \nabla \cdot \left( \frac{1}{R^2} \nabla \chi_{dcon} \right) = - 2\pi \left(R^2 p'_{chance} + g g' \right) = -(2\pi)\frac{2\pi}{\chi\prime_{dcon}}(ff'+ R^2p') + R^2 \nabla \cdot \left( \frac{1}{R^2} \nabla \chi_{dcon} \right) + = - 2\pi \left(R^2 p'_{chance} + g g' \right), + \qquad + p'_{dcon} \equiv \frac{dp}{d\psi_{dcon}} + = \frac{\chi'_{dcon}}{2\pi}\,p'_{chance}. \end{equation} @@ -299,22 +303,21 @@ \subsubsection{Raising Operator ($B_j \to B^i$)} \subsection{Derivation of Eq. (35) in gpec note} - +In accordance with the actual code implementation, $w_{11}$ and $w_{12}$ include the full +phase derivative $(1 + \partial_\theta\eta)$: \[ -w_{11} = \frac{4 \pi^2 r R}{\mathcal{J}} \frac{\partial \eta}{\partial \theta}, -\quad -v_{22} = \frac{2 \pi r}{\mathcal{J}} \frac{\partial \eta}{\partial \theta}, +w_{11} = \frac{(2\pi)^2 r R}{\mathcal{J}} \left(1 + \frac{\partial \eta}{\partial \theta}\right), \quad +v_{22} = \frac{2 \pi r}{\mathcal{J}} \left(1 + \frac{\partial \eta}{\partial \theta}\right), +\] +\[ w_{12} = \frac{-\pi R}{r \mathcal{J}} \frac{\partial r^2}{\partial \theta}, \quad v_{21} = \frac{1}{2r \mathcal{J}} \frac{\partial r^2}{\partial \theta} \] -\[ -w_{11} = 2 \pi R v_{22}, -\qquad -w_{12} = -2 \pi R v_{21} -\] +Note that $w_{11} = 2 \pi R v_{22}$ remains true with this definition, and +$w_{12} = -2 \pi R v_{21}$ is unchanged. \[ @@ -325,30 +328,6 @@ \subsection{Derivation of Eq. (35) in gpec note} = q\,(w_{11} w_{21} + w_{12} w_{22}) - (w_{11} w_{31} + w_{12} w_{32}) \] - -\[ -= w_{11} (q w_{21} - w_{31}) + w_{12} (q w_{22} - w_{32}) -\] - -\[ -= 2\pi R \Bigl[ - q v_{22} w_{21} - - q v_{21} w_{22} - - v_{22} w_{31} - + v_{21} w_{32} -\Bigr] -\] - -\[ -= 2\pi R \mathcal{J} \Bigl[ - q v_{22} (\cancel{v_{32}v_{13}} - v_{33} v_{12}) - - q v_{21} (v_{33} v_{11} - \cancel{v_{31}v_{13}}) - - v_{22}(v_{23} v_{12} - v_{13} v_{22}) - + v_{21}(v_{13} v_{21} - v_{11} v_{23}) -\Bigr] -\] - - \[ = 2\pi R \mathcal{J} \Bigl[ - q v_{33} (v_{22} v_{12} + v_{21} v_{11}) @@ -356,7 +335,6 @@ \subsection{Derivation of Eq. (35) in gpec note} - v_{23}(v_{22} v_{12} + v_{11} v_{21}) \Bigr] \] - \[ = 2\pi R \mathcal{J} \Bigl[ - (v_{22} v_{12} + v_{21} v_{11})(v_{23}+q v_{33}) @@ -367,26 +345,26 @@ \subsection{Derivation of Eq. (35) in gpec note} \section{Energy principle\cite{RevModPhys.76.1071}\cite{Park2009Ideal}} \begin{align} -\delta W_p &= \frac{1}{2} \int d\tau_p +\delta W_p &= \frac{1}{2\mu_0} \int d\tau_p \Big\{ |\mathbf{Q}|^2 - \mathbf{j} \cdot \, \mathbf{Q} \times \boldsymbol{\xi}^* -+ \gamma P |\nabla \cdot \boldsymbol{\xi}|^2 -+ (\nabla \cdot \boldsymbol{\xi})^* \boldsymbol{\xi} \cdot \nabla P \Big\} \\ -&= \frac{1}{2} \int d\tau_p ++ \mu_0 \gamma p |\nabla \cdot \boldsymbol{\xi}|^2 ++ \mu_0 (\nabla \cdot \boldsymbol{\xi})^* \boldsymbol{\xi} \cdot \nabla p \Big\} \\ +&= \frac{1}{2\mu_0} \int d\tau_p \Big\{ |\mathbf{Q}_\perp|^2 -+ \frac{1}{B^2} |\mathbf{Q} \cdot \mathbf{B} - \boldsymbol{\xi} \cdot \nabla P|^2 ++ \frac{1}{B^2} |\mathbf{Q} \cdot \mathbf{B} - \boldsymbol{\xi} \cdot \nabla p|^2 + \sigma\, \mathbf{B} \times \boldsymbol{\xi}^* \cdot \mathbf{Q} -+ \gamma P |\nabla \cdot \boldsymbol{\xi}|^2 -- 2 \boldsymbol{\xi} \cdot \nabla P\, \boldsymbol{\xi}^* \cdot \boldsymbol{\kappa} ++ \mu_0 \gamma p |\nabla \cdot \boldsymbol{\xi}|^2 +- 2 \boldsymbol{\xi} \cdot \nabla p\, \boldsymbol{\xi}^* \cdot \boldsymbol{\kappa} \Big\} \\ -&= \frac{1}{2} \int d\tau_p -\Big\{ |\mathbf{Q} + \xi_n \mathbf{j} \times \mathbf{n}|^2 -+ \gamma P |\nabla \cdot \boldsymbol{\xi}|^2 -- 2\,\mathbf{j} \times \mathbf{n} \cdot (\mathbf{B} \cdot \nabla \mathbf{n})\, \xi_n^2 +&= \frac{1}{2\mu_0} \int d\tau_p +\Big\{ |\mathbf{Q} + \xi_n (\mu_0\mathbf{j} \times \mathbf{n})|^2 ++ \mu_0 \gamma p |\nabla \cdot \boldsymbol{\xi}|^2 +- 2\,\mu_0\mathbf{j} \times \mathbf{n} \cdot (\mathbf{B} \cdot \nabla \mathbf{n})\, \xi_n^2 \Big\}\\ -&= \frac{1}{2} \int d\tau_p -\Big\{ |\mathbf{Q} + \xi_n j \times \mathbf{n}|^2 -+ \gamma P |\nabla \cdot \boldsymbol{\xi}|^2 -- K\, \xi_n^2 +&= \frac{1}{2\mu_0} \int d\tau_p +\Big\{ |\mathbf{Q} + \xi_n (\mu_0 \mathbf{j} \times \mathbf{n})|^2 ++ \mu_0 \gamma p |\nabla \cdot \boldsymbol{\xi}|^2 +- \mu_0 K\, \xi_n^2 \Big\} \end{align} @@ -399,11 +377,12 @@ \section{Energy principle\cite{RevModPhys.76.1071}\cite{Park2009Ideal}} \end{equation} \subsection{Transformation of $\delta W_F$ in \cite{Bernstein1983}(Modified units)} -In this section, we will see how (34) changes to (36). If we define $\xi$ as follows: +In this section, we will see how (34) changes to (36). It follows the derivation in \cite{Bernstein1983}, but since the unit and normalization are different, we need to adjust the expressions accordingly. +If we define $\xi$ as follows: \begin{equation} \boldsymbol{\xi}=a\,\nabla p + b\,\nabla\times\mathbf{B} + c\,\mathbf{B} \end{equation} -then +then, the following relations hold: \begin{equation} \boldsymbol{\xi}\times\mathbf{B} = -a\,\mathbf{B}\times\nabla p + \mu_0 b\,\nabla p @@ -412,14 +391,16 @@ \subsection{Transformation of $\delta W_F$ in \cite{Bernstein1983}(Modified unit \boldsymbol{\xi}\times(\nabla\times\mathbf{B}) = -a\,(\nabla\times\mathbf{B})\times\nabla p - \mu_0 c\,\nabla p \end{equation} +\begin{equation} +\mathbf{Q} = \nabla\times(\boldsymbol{\xi}\times\mathbf{B}) = \nabla\times\bigl(-a\,\mathbf{B}\times\nabla p + \mu_0 b\,\nabla p\bigr) +\end{equation} -Using the SI form of $\delta W_F$ ($1/4\pi\to 1/\mu_0$), Gauss's theorem, and the boundary condition $\mathbf{n}\cdot\mathbf{B}=0$, one finds \begin{align} 2\mu_0 W_F & = \int d^3r\Bigl\{ \mu_0\gamma p(\nabla\cdot\boldsymbol{\xi})^2 -+ |\mathbf{Q}|^2 \nonumber + (\nabla \cdot \boldsymbol{\xi})^* \boldsymbol{\xi} \cdot \nabla P \nonumber ++ |\mathbf{Q}|^2 \nonumber + (\mu_0 \nabla \cdot \boldsymbol{\xi})^* \boldsymbol{\xi} \cdot \nabla p \nonumber + \boldsymbol{\xi} \times \mathbf{Q} \cdot \nabla \times \mathbf{B} \Bigr\}\\ & = \int d^3r\Bigl\{\mu_0\gamma p(\nabla\cdot\boldsymbol{\xi})^2 @@ -432,48 +413,39 @@ \subsection{Transformation of $\delta W_F$ in \cite{Bernstein1983}(Modified unit \Bigr\}. \end{align} Since, -\begin{align} -&a(\nabla p)^2\nabla\cdot\bigl(b\nabla\times\mathbf{B}+c\mathbf{B}\bigr) --\nabla\cdot\Bigl[a(\nabla p)^2\bigl(b\nabla\times\mathbf{B}+c\mathbf{B}\bigr)\Bigr] -\nonumber\\ -&= -\bigl(b\nabla\times\mathbf{B}+c\mathbf{B}\bigr)\cdot\nabla\!\Bigl[a(\nabla p)^2\Bigr] -\nonumber\\ -&= -b\,\nabla\cdot\Bigl[a(\nabla p)^2(\nabla\times\mathbf{B})\Bigr] - -c\,\nabla\cdot\Bigl[a(\nabla p)^2\mathbf{B}\Bigr] -\nonumber\\ -&= -b\,\nabla\cdot\Bigl[(\nabla p)\times\bigl(a(\nabla\times\mathbf{B})\times\nabla p\bigr)\Bigr] - -c\,\nabla\cdot\Bigl[(\nabla p)\times\bigl(a\mathbf{B}\times\nabla p\bigr)\Bigr] -\nonumber\\ -&= b(\nabla p)\cdot\nabla\times\Bigl[a(\nabla\times\mathbf{B})\times\nabla p\Bigr] - + c(\nabla p)\cdot\nabla\times\Bigl[a\mathbf{B}\times\nabla p\Bigr] -\nonumber\\ -&= \nabla\cdot\Bigl(\bigl[a(\nabla\times\mathbf{B})\times\nabla p\bigr]\times b\nabla p\Bigr) - + a(\nabla\times\mathbf{B})\times(\nabla p)\cdot\nabla\times(b\nabla p) -\nonumber\\ -&\qquad + c(\nabla p)\cdot\nabla\times(a\mathbf{B}\times\nabla p). -\end{align} -so, +\begin{equation} +a(\nabla p)^2\nabla\cdot\bigl(b\nabla\times\mathbf{B}+c\mathbf{B}\bigr)+ \bigl(b\nabla\times\mathbf{B}+c\mathbf{B}\bigr)\cdot\nabla\!\Bigl[a(\nabla p)^2\Bigr] +=\nabla\cdot\Bigl[a(\nabla p)^2\bigl(b\nabla\times\mathbf{B}+c\mathbf{B}\bigr)\Bigr] +\end{equation} +So, \begin{align} a(\nabla p)^2\nabla\cdot\bigl(b\nabla\times\mathbf{B}+c\mathbf{B}\bigr) -&= \nabla\cdot\Bigl[ac(\nabla p)^2\mathbf{B}\Bigr] - + a(\nabla\times\mathbf{B})\times(\nabla p)\cdot\nabla\times(b\nabla p) -\nonumber\\ -&\quad + c(\nabla p)\cdot\nabla\times(a\mathbf{B}\times\nabla p). +&= -\bigl(b\nabla\times\mathbf{B}+c\mathbf{B}\bigr)\cdot\nabla\!\Bigl[a(\nabla p)^2\Bigr] ++\nabla\cdot\Bigl[a(\nabla p)^2\bigl(b\nabla\times\mathbf{B}+c\mathbf{B}\bigr)\Bigr]\\ +&= -b\,\nabla\cdot\Bigl[a(\nabla p)^2\Bigr](\nabla\times\mathbf{B})-c\,\nabla\cdot\Bigl[a(\nabla p)^2\Bigr]\mathbf{B}\nonumber\\ +&+\nabla\cdot\Bigl[ac(\nabla p)^2\mathbf{B}\Bigr]+\nabla\cdot\big[ab(\nabla p)^2(\nabla\times B)\big]\\ +&=-b\,(\nabla\times\mathbf B)\cdot\nabla\big[a(\nabla p)^2\big] ++\nabla\cdot\big[ab(\nabla p)^2(\nabla\times B)\big]\nonumber\\ +&- c\,\mathbf B\cdot\nabla\big[a(\nabla p)^2\big]+\nabla\cdot\big[ac(\nabla p)^2\mathbf B\big]\\ +&=\nabla\cdot\Bigl[ac(\nabla p)^2\mathbf{B}\Bigr] + + a(\nabla\times\mathbf{B})\times(\nabla p)\cdot\nabla\times(b\nabla p)+ c(\nabla p)\cdot\nabla\times(a\mathbf{B}\times\nabla p) \end{align} -Using (44) to eliminate the divergence term involving $b,c$ gives +Using (47) to eliminate the divergence term involving $b,c$ gives \begin{align} 2\mu_0 W_F = \int d^3r\Bigl\{ &\mu_0\gamma p(\nabla\cdot\boldsymbol{\xi})^2 -+ \bigl[\nabla\times\bigl(-a\,\mathbf{B}\times\nabla p + \mu_0 b\,\nabla p\bigr)\bigr]^2 -\nonumber\\ -&+ \mu_0 a(\nabla p)^2\nabla\cdot(a\nabla p) -+ 2\mu_0 a(\nabla\times\mathbf{B})\times(\nabla p)\cdot\nabla\times(b\nabla p) -\nonumber\\ -&- a(\nabla\times\mathbf{B})\times(\nabla p)\cdot\nabla\times(a\mathbf{B}\times\nabla p) -\Bigr\} -\nonumber\\ ++ \bigl[\nabla\times\bigl(-a\,\mathbf{B}\times\nabla p + \mu_0 b\,\nabla p\bigr)\bigr]^2+\mu_0a(\nabla p)^2\nabla\cdot(a\nabla p)\nonumber\\ +& +\cancel{\nabla\cdot\Bigl[ac(\nabla p)^2\mathbf{B}\Bigr]}+ \mu_0 a(\nabla\times\mathbf{B})\times(\nabla p)\cdot\nabla\times(b\nabla p)+ \mu_0 c(\nabla p)\cdot\nabla\times(a\mathbf{B}\times\nabla p)\nonumber\\ +&+ \bigl[a(\nabla\times\mathbf{B})\times\nabla p + \mu_0 c\,\nabla p\bigr]\cdot +\nabla\times\bigl(-a\,\mathbf{B}\times\nabla p + \mu_0 b\,\nabla p\bigr)\Bigr\}\\ += \int d^3r\Bigl\{ +&\mu_0\gamma p(\nabla\cdot\boldsymbol{\xi})^2 ++ \bigl[\nabla\times\bigl(-a\,\mathbf{B}\times\nabla p + \mu_0 b\,\nabla p\bigr)\bigr]^2+ \mu_0 a(\nabla p)^2\nabla\cdot(a\nabla p) ++\cancel{\mu_0 c(\nabla p)\cdot \mu_0 (\nabla \times (b\nabla p))}\nonumber\\ +&+ 2\mu_0 a(\nabla\times\mathbf{B})\times(\nabla p)\cdot\nabla\times(b\nabla p) +- a(\nabla \times \mathbf{B}) \times \nabla p \cdot \nabla\times(a\mathbf{B}\times\nabla p)\Bigr\}\\ = \int d^3r\Bigl\{ &\mu_0\gamma p(\nabla\cdot\boldsymbol{\xi})^2 + \bigl[\nabla\times\bigl(-a\,\mathbf{B}\times\nabla p + \mu_0 b\,\nabla p\bigr) @@ -482,14 +454,10 @@ \subsection{Transformation of $\delta W_F$ in \cite{Bernstein1983}(Modified unit &+ a(\nabla\times\mathbf{B})\times(\nabla p)\cdot\nabla\times(a\mathbf{B}\times\nabla p) - a^2\bigl[(\nabla\times\mathbf{B})\times\nabla p\bigr]^2 + \mu_0 a(\nabla p)^2\nabla\cdot(a\nabla p) -\Bigr\}. +\Bigr\} \end{align} -Define -\begin{equation} -\mathbf{n}=\frac{\nabla p}{|\nabla p|}. -\end{equation} -Then, since $\mu_0\nabla p=(\nabla\times\mathbf{B})\times\mathbf{B}$, +Then, $\mu_0\nabla p=(\nabla\times\mathbf{B})\times\mathbf{B}$, \begin{align} &-a^2\bigl[(\nabla\times\mathbf{B})\times\nabla p\bigr]^2 + a(\nabla\times\mathbf{B})\times(\nabla p)\cdot\nabla\times(a\mathbf{B}\times\nabla p) @@ -575,841 +543,2354 @@ \subsection{Transformation of $\delta W_F$ in \cite{Bernstein1983}(Modified unit % &=-(\frac{\mathbf{j} \cdot \mathbf{B}}{B^2})\mathbf{B} \times \nabla \psi\, \cdot\, (\nabla \times \frac{\mathbf{B} \times \nabla \psi}{|\nabla \psi|^2}) + \mathbf{j} \cdot \mathbf{B} + 2p'|\nabla \psi|^2 \kappa \cdot \nabla \psi \\ % &=\frac{2}{|\nabla \chi|^2}(\mathbf{j} \times \nabla \psi) \cdot (\mathbf{B} \cdot \nabla) \nabla \chi % \end{align} -\subsection{Derivation of K} -\color{blue} -\begin{align} -K -&= 2(\mathbf{j} \times \hat{n}) \cdot (\mathbf{B} \cdot \nabla) \hat{n}\\ -&= \frac{2}{|\nabla \psi|} (\mathbf{j} \times \hat{n}) \cdot (\mathbf{B} \cdot \nabla) \nabla \psi + \cancel{2(\mathbf{j} \times \hat{n}) \cdot [\nabla \psi (\mathbf{B} \cdot \nabla) (\frac{1}{|\nabla \psi|})]}\\ -&= -\frac{2}{|\nabla \psi|^2} (\mathbf{j} \times \nabla \psi) \cdot \big[(\nabla \psi \cdot \nabla)\mathbf{B} + \nabla \psi \times \mathbf{j}\big]\\ -&= -\frac{2}{|\nabla \psi|^2} \big[(\mathbf{j} \times \nabla \psi)(\nabla \psi \cdot \nabla)\mathbf{B} - (\mathbf{j} \times \nabla \psi)^2\big]\\ -&= +2j^2 -\frac{2}{|\nabla \psi|^2} \big[(\mathbf{j} \times \nabla \psi)(\nabla \psi \cdot \nabla)\mathbf{B} \big]\\ -&= 2\sigma^2 B^2 + \underbrace{2 \frac{(\nabla p)^2}{B^2}-\frac{2}{|\nabla \psi|^2} \big[(\mathbf{j} \times \nabla \psi)(\nabla \psi \cdot \nabla)\mathbf{B} \big]}_{\text{$K_1 + K_3$}} -\end{align} -\color{black} -If we decompose current density into perpendicular and parallel components to magnetic field, then the perpendicular and parallel contributions to K are given by - -\color{blue} -\begin{align} -K_3 -&= -\frac{2}{|\nabla \psi|^2} (\mathbf{j}_\perp \times \nabla \psi) \cdot \big[(\nabla \psi \cdot \nabla)\mathbf{B}\big] +2 \frac{(\nabla p)^2}{B^2}\\ -&= -\frac{2}{|\nabla \psi|^2} ((\frac{p^\prime}{B^2} \mathbf{B}\times \nabla \psi) \times \nabla \psi) \cdot \big[(\nabla \psi \cdot \nabla)\mathbf{B}\big] + 2 \frac{(p^\prime \nabla \psi)^2}{B^2}\\ -&= \frac{2}{|\nabla \psi|^2}\frac{p^\prime}{B^2} [\mathbf{B} |\nabla \psi|^2 - \cancel{\nabla \psi (\nabla \psi \cdot \mathbf{B})}] \cdot \big[(\nabla \psi \cdot \nabla)\mathbf{B}\big] + 2 \frac{(p^\prime \nabla \psi)^2}{B^2}\\ -&= \frac{2p^\prime}{B^2} \{ \mathbf{B} \cdot [(\nabla \psi \cdot \nabla) \mathbf{B}] +(\nabla p \cdot \nabla \psi)\} \\ -&= \frac{2p^\prime}{B^2} \{ \mathbf{B} \cdot [(\nabla \psi \cdot \nabla) \mathbf{B}] +(\mathbf{j} \times \mathbf{B}) \cdot \nabla \psi\} \\ -&= \frac{2p^\prime}{B^2} \{ \mathbf{B} \cdot [(\nabla \psi \cdot \nabla) \mathbf{B}] + \mathbf{B} \cdot (\nabla \psi \times \mathbf{j})\}\\ -&= -\frac{2p^\prime}{B^2} \mathbf{B} \cdot (\mathbf{B} \cdot \nabla) (\nabla \psi) = \frac{2p^\prime}{B^2}(\mathbf{B} \cdot \nabla) \cdot \mathbf{B} \cdot \nabla \psi \\ -&= \frac{2p^\prime}{B^2}((\mathbf{B} \cdot \nabla) \cdot \mathbf{B} \cdot \nabla \psi - \nabla \frac{B^2}{2}\cdot \nabla \psi) = +2 p^\prime [ (\frac{\mathbf{B}}{B} \cdot \nabla) \frac{\mathbf{B}}{B} ]\cdot \nabla \psi \\ -&= +2 p^\prime \boldsymbol{\kappa} \cdot \nabla \psi -\end{align} +\subsection{Derivation of $K$ with explicit $\mu_0$} -% \color{black} +% We define % \begin{equation} -% \mathbf{B}=B \mathbf{b} +% \hat{\mathbf n} \equiv \frac{\nabla\psi}{|\nabla\psi|}, +% \qquad +% \mathbf j \equiv \frac{\nabla\times\mathbf B}{\mu_0}, +% \qquad +% \nabla p = p'(\psi)\nabla\psi, +% \qquad +% \sigma \equiv \frac{\mathbf j\cdot\mathbf B}{B^2}, +% \end{equation} +% \begin{equation} +% \mathbf b \equiv \frac{\mathbf B}{B}, +% \qquad +% \boldsymbol{\kappa}\equiv (\mathbf b\cdot\nabla)\mathbf b, +% \qquad +% \kappa_\psi \equiv \boldsymbol{\kappa}\cdot\nabla\psi. % \end{equation} -\color{blue} -\begin{align} -K_1 -&= -\frac{2}{|\nabla \psi|^2} (\mathbf{j}_\parallel \times \nabla \psi) \cdot \big[(\nabla \psi \cdot \nabla)\mathbf{B}\big] +\frac{2}{|\nabla \psi|^2}(\mathbf{j} \times \nabla \psi)^2\\ -&= -\frac{2}{|\nabla \psi|^2} (\frac{\mathbf{j} \cdot \mathbf{B}}{|\mathbf{B}|^2} \mathbf{B}\times \nabla \psi) \cdot \big[(\nabla \psi \cdot \nabla)\mathbf{B}\big] \\ -&= -\sigma \frac{2}{|\nabla \psi|^2} (\mathbf{B} \times \nabla \psi) \cdot \big[(\nabla \psi \cdot \nabla)\mathbf{B}\big] -\end{align} - -\color{black} -Since we can use the vector identity, +We start from \begin{equation} - \nabla\times(\mathbf a\times\mathbf c) -= \mathbf a(\nabla\cdot\mathbf c)-\mathbf c(\nabla\cdot\mathbf a) -+(\mathbf c\cdot\nabla)\mathbf a-(\mathbf a\cdot\nabla)\mathbf c. -\end{equation} -\begin{equation} -\nabla \times (\mathbf{B} \times \nabla \psi) = \mathbf{B} (\nabla^2 \psi) - \cancel{\nabla \psi (\nabla \cdot \mathbf{B}) }+ (\nabla \psi \cdot \nabla) \mathbf{B} - (\mathbf{B} \cdot \nabla) (\nabla \psi) +\color{blue} K \equiv 2(\mathbf j\times \hat{\mathbf n})\cdot(\mathbf B\cdot\nabla)\hat{\mathbf n}. \end{equation} -\begin{equation} - \nabla(\mathbf a\cdot\mathbf b) - =(\mathbf a\cdot\nabla)\mathbf b+(\mathbf b\cdot\nabla)\mathbf a+\mathbf a\times(\nabla\times\mathbf b)+\mathbf b\times(\nabla\times\mathbf a) +Since +\color{blue}\begin{equation} +(\mathbf B\cdot\nabla)\hat{\mathbf n} += +(\mathbf B\cdot\nabla)\left(\frac{\nabla\psi}{|\nabla\psi|}\right) += +\frac{(\mathbf B\cdot\nabla)\nabla\psi}{|\nabla\psi|} ++ +\nabla\psi\,(\mathbf B\cdot\nabla)\left(\frac{1}{|\nabla\psi|}\right), \end{equation} -\begin{equation} -\cancel{\nabla(\mathbf B\cdot\nabla\psi)}=(\mathbf B\cdot\nabla)\nabla\psi+(\nabla\psi\cdot\nabla)\mathbf B+\nabla\psi\times(\nabla\times\mathbf B)+\cancel{\mathbf B\times(\nabla\times\nabla\psi)} +\color{blue}\begin{equation} +(\mathbf j\times \hat{\mathbf n})\cdot \nabla\psi = 0, \end{equation} +\color{black} +we obtain \begin{equation} - (\mathbf{B} \cdot \nabla) (\nabla \psi) = - (\nabla \psi \cdot \nabla) \mathbf{B} - \nabla \psi \times \mathbf{j} +\color{blue}K +\equiv 2(\mathbf j\times \hat{\mathbf n})\cdot(\mathbf B\cdot\nabla)\hat{\mathbf n} += +\frac{2}{|\nabla\psi|^2} +(\mathbf j\times\nabla\psi)\cdot(\mathbf B\cdot\nabla)\nabla\psi. \end{equation} +Now use $\mathbf B\cdot\nabla\psi=0$. Then \begin{equation} -\nabla \times (\mathbf{B} \times \nabla \psi) = \mathbf{B} (\nabla^2 \psi) +2 (\nabla \psi \cdot \nabla) \mathbf{B} + \nabla \psi \times \mathbf{j} -\end{equation} -\begin{equation} -(\mathbf{B} \times \nabla \psi) \cdot [\nabla \times (\mathbf{B} \times \nabla \psi)] = \cancel{(\mathbf{B} \times \nabla \psi) \cdot \mathbf{B} (\nabla^2 \psi)} +2 (\mathbf{B} \times \nabla \psi) \cdot (\nabla \psi \cdot \nabla) \mathbf{B} + (\mathbf{B} \times \nabla \psi) \cdot (\nabla \psi \times \mathbf{j}) +0=\nabla(\mathbf B\cdot\nabla\psi) += +(\mathbf B\cdot\nabla)\nabla\psi ++ +(\nabla\psi\cdot\nabla)\mathbf B ++ +\nabla\psi\times(\nabla\times\mathbf B), \end{equation} -and rearranging the terms, we have \begin{equation} - (\mathbf{B} \times \nabla \psi) \cdot \nabla \times (\frac{\mathbf{B} \times \nabla \psi}{|\nabla \psi|^2}) - = \cancel{(\mathbf{B} \times \nabla \psi) \cdot \nabla (\frac{1}{|\nabla \psi|^2}) \times (\mathbf{B} \times \nabla \psi) }+ (\mathbf{B} \times \nabla \psi) \cdot \frac{1}{|\nabla \psi|^2} \nabla \times (\mathbf{B} \times \nabla \psi) +(\mathbf B\cdot\nabla)\nabla\psi += +-(\nabla\psi\cdot\nabla)\mathbf B +-\mu_0\,\nabla\psi\times\mathbf j. \end{equation} -\color{blue} -\begin{align} -K_1 -&= -\sigma \frac{1}{|\nabla \psi|^2} (\mathbf{B} \times \nabla \psi) \cdot [\nabla \times (\mathbf{B} \times \nabla \psi)] +\sigma \frac{1}{|\nabla \psi|^2}(\mathbf{B} \times \nabla \psi) \cdot (\nabla \psi \times \mathbf{j})\\ -&= -\sigma \mathbf{B}\times \nabla \psi\cdot (\nabla \times \frac{\mathbf{B} \times \nabla \psi}{|\nabla \psi|^2}) + \sigma \frac{1}{|\nabla \psi|^2} [-|\nabla \psi|^2 (\mathbf{B}\cdot\mathbf{j})+\cancel{(\mathbf{B}\cdot \nabla \psi)} \cdot (\nabla \psi \cdot \mathbf{j})]\\ -&= \sigma S |\nabla \psi|^2 - \sigma (\mathbf{B}\cdot\mathbf{j}) = \sigma S |\nabla \psi|^2 - \sigma^2 B^2 -\end{align} - -\color{blue} -\begin{align} - K - % &= - \mathbf{j} \cdot \mathbf{B} \frac{\mathbf{B}\times \nabla \psi}{|\mathbf{B}|^2} \cdot (\nabla \times \frac{\mathbf{B} \times \nabla \psi}{|\nabla \psi|^2}) + \mathbf{j} \cdot \mathbf{B} + 2p'(\frac{\mathbf{B}}{B} \cdot \nabla)\frac{\mathbf{B}}{B}\cdot \nabla \psi \\ - % &= - |\nabla \psi|^2 \sigma \frac{\mathbf{B}\times \nabla \psi}{|\nabla\psi|^2} \cdot (\nabla \times \frac{\mathbf{B} \times \nabla \psi}{|\nabla \psi|^2}) + \mathbf{j} \cdot \mathbf{B} + 2p'\boldsymbol{\kappa} \cdot \nabla \psi \\ - &= |\nabla \psi|^2 \sigma S + \sigma^2 B^2+ 2p'\boldsymbol{\kappa} \cdot \nabla \psi -\end{align} - -\color{black} -\subsection{Normalization of K between Chance and DCON coordinates} -\color{blue} -\begin{align} -K&=|\nabla \psi|^2 \sigma S + \sigma \mathbf{j} \cdot \mathbf{B} + 2p'\boldsymbol{\kappa} \cdot \nabla \psi -\end{align} - -\begin{align} - S&=-\frac{\mathbf{B}\times \nabla \psi}{|\nabla\psi|^2} \cdot (\nabla \times \frac{\mathbf{B} \times \nabla \psi}{|\nabla \psi|^2}) -\end{align} -\color{black} - -From this definition, the following relationships hold: -\begin{align} -\color{blue} |\nabla \psi|^2 -&= \left(\frac{\chi^\prime_{\mathrm{dcon}}}{2\pi}\right)^2 |\nabla \psi_{\mathrm{dcon}}|^2 -\end{align} - -Substituting these relations into the original expression of \(K_{\mathrm{Chance}}\), we obtain -\begin{align} +Substituting this into $K$ gives +\color{blue}\begin{align} K -&= \left(\frac{\chi^\prime_{\mathrm{dcon}}}{2\pi}\right)^2 -|\nabla \psi_{\mathrm{dcon}}|^2 \sigma S -+ \sigma \mathbf{j}\!\cdot\!\mathbf{B} -+ 2p'\!\left(\!\boldsymbol{\kappa}\cdot\frac{\chi^\prime_{\mathrm{dcon}}}{2\pi}\nabla \psi_{\mathrm{dcon}}\right) \\[4pt] -&= \left(\frac{\chi^\prime_{\mathrm{dcon}}}{2\pi}\right)^2 -|\nabla \psi_{\mathrm{dcon}}|^2 \sigma S -+ \sigma \mathbf{j}\!\cdot\!\mathbf{B} -+ p'\,(\boldsymbol{\kappa}\!\cdot\!\nabla \psi_{\mathrm{dcon}}) \chi^\prime / \pi. +&= +-\frac{2}{|\nabla\psi|^2} +(\mathbf j\times\nabla\psi)\cdot +\Big[(\nabla\psi\cdot\nabla)\mathbf B+\mu_0\,\nabla\psi\times\mathbf j\Big] +\\ +&= +-\frac{2}{|\nabla\psi|^2} +(\mathbf j\times\nabla\psi)\cdot(\nabla\psi\cdot\nabla)\mathbf B ++\frac{2\mu_0}{|\nabla\psi|^2}\,|\mathbf j\times\nabla\psi|^2. \end{align} -Therefore, the final form of \(K\) in the DCON coordinate system is +\color{black} +Because \begin{equation} -\boxed{ -K -= \left(\frac{\chi^\prime_{\mathrm{dcon}}}{2\pi}\right)^2 -|\nabla \psi_{\mathrm{dcon}}|^2\,\sigma\,S -+ \sigma \mathbf{j}\!\cdot\!\mathbf{B} -+ p'\,(\boldsymbol{\kappa}\!\cdot\!\nabla \psi_{\mathrm{dcon}}) \chi^\prime / \pi. -} +0=\mathbf j\cdot\nabla p = p'\,\mathbf j\cdot\nabla\psi, \mathbf j\cdot\nabla\psi=0 \end{equation} - - -\subsection{Normalization of S between Chance and DCON coordinates} - -In Chance's formulation, the magnetic shear scalar \(S\) is defined as \begin{equation} -\color{blue} -S -= -\,\frac{\mathbf{B}\times\nabla\psi}{|\nabla\psi|^2} -\cdot -\left( -\nabla\times -\frac{\mathbf{B}\times\nabla\psi}{|\nabla\psi|^2} -\right). +|\mathbf j\times\nabla\psi|^2 = j^2 |\nabla\psi|^2. +\end{equation} +Thus, +\begin{equation} +\color{blue}K += +2\mu_0 j^2 +-\frac{2}{|\nabla\psi|^2} +(\mathbf j\times\nabla\psi)\cdot(\nabla\psi\cdot\nabla)\mathbf B. \end{equation} -Using the DCON normalization of the flux coordinate, +Now decompose the current as \begin{equation} -\color{blue} -\psi -\color{black} -= \frac{\chi^\prime_{\mathrm{dcon}}}{2\pi}\, -\psi_{\mathrm{dcon}}, +\mathbf j = \mathbf j_{\parallel}+\mathbf j_{\perp}, \qquad -\color{blue} \nabla \psi -\color{black} -= \frac{\chi^\prime_{\mathrm{dcon}}}{2\pi}\, \nabla \psi_{\mathrm{dcon}}, +\mathbf j_{\parallel}=\sigma \mathbf B, +\qquad +\mathbf j_{\perp}=\frac{\mathbf B\times\nabla p}{B^2} +=\frac{p'}{B^2}\mathbf B\times\nabla\psi. \end{equation} -we can rewrite each factor in terms of DCON variables. - -Hence, the normalized cross term becomes +Then \begin{equation} -\frac{\mathbf{B}\times\nabla\psi}{|\nabla\psi|^2} -= \frac{2\pi}{\chi^\prime_{\mathrm{dcon}}}\, -\frac{\mathbf{B}\times\nabla\psi_{\mathrm{dcon}}}{|\nabla\psi_{\mathrm{dcon}}|^2}. +\color{blue}K = K_{\parallel}+K_{\perp}, \end{equation} - -Substituting this back into the original definition of \(S\), we find -\begin{align} -S -&= -\left(\frac{2\pi}{\chi^\prime_{\mathrm{dcon}}}\right)^2 -\frac{\mathbf{B}\times\nabla\psi_{\mathrm{dcon}}}{|\nabla\psi_{\mathrm{dcon}}|^2} -\cdot -\left[ -\nabla\times -\frac{\mathbf{B}\times\nabla\psi_{\mathrm{dcon}}}{|\nabla\psi_{\mathrm{dcon}}|^2} -\right]\\ -&=-(2\pi)^2 -\frac{\mathbf{B}\times\nabla\psi_{\mathrm{dcon}}\chi^\prime_{dcon}}{|\nabla\psi_{\mathrm{dcon}}*\chi^\prime_{dcon}|^2} -\cdot -\left[ -\nabla\times -\frac{\mathbf{B}\times\nabla\psi_{\mathrm{dcon}}\chi^\prime_{dcon}}{|\nabla\psi_{\mathrm{dcon}}\chi^\prime_{dcon}|^2} -\right]\\ -&= -\,(2\pi)^2 \frac{\mathbf{B}\times\nabla\chi_{dcon}}{|\nabla\chi_{dcon}|^2} -\cdot -\left( -\nabla\times -\frac{\mathbf{B}\times\nabla\chi_{dcon}}{|\nabla\chi_{dcon}|^2} -\right) -\end{align} - -\begin{align} -\boldsymbol{\Lambda} -&\equiv \frac{\mathbf{B} \times \nabla \chi_{dcon}}{|\nabla \chi_{dcon}|^2} -= \frac{(\nabla \chi_{dcon} \times \nabla \alpha) \times \nabla \chi_{dcon}}{|\nabla \chi_{dcon}|^2} \\[4pt] -&= \nabla \alpha -- \frac{(\nabla \chi_{dcon} \cdot \nabla \alpha)}{|\nabla \chi_{dcon}|^2}\, \nabla \chi_{dcon}. +\color{blue}\begin{align} +K_{\parallel} +&= +2\mu_0 j_{\parallel}^2 +-\frac{2}{|\nabla\psi|^2} +(\mathbf j_{\parallel}\times\nabla\psi)\cdot(\nabla\psi\cdot\nabla)\mathbf B, +\\ +K_{\perp} +&= +2\mu_0 j_{\perp}^2 +-\frac{2}{|\nabla\psi|^2} +(\mathbf j_{\perp}\times\nabla\psi)\cdot(\nabla\psi\cdot\nabla)\mathbf B. \end{align} -The curl becomes ($\alpha\, \text{represents}\, \alpha_{dcon}$ below this point) +\color{black} +\paragraph{1. Perpendicular part $K_{\perp}$} +Using +\begin{equation} +\mathbf j_{\perp}=\frac{p'}{B^2}\mathbf B\times\nabla\psi, +\end{equation} +we obtain \begin{align} -\nabla \times \boldsymbol{\Lambda} -&= -\,\nabla \times -\left[ -\frac{(\nabla \chi_{dcon} \cdot \nabla \alpha)}{|\nabla \chi_{dcon}|^2}\, \nabla \chi_{dcon} -\right] \\[4pt] -&= -\,\nabla \left(\frac{\nabla \chi_{dcon} \cdot \nabla \alpha}{|\nabla \chi_{dcon}|^2}\right) -\times \nabla \chi_{dcon}, +K_{\perp} +&= +\frac{2\mu_0 p'^2 |\nabla\psi|^2}{B^2} +-\frac{2p'}{B^2|\nabla\psi|^2} +\Big[(\mathbf B\times\nabla\psi)\times\nabla\psi\Big] +\cdot(\nabla\psi\cdot\nabla)\mathbf B. \end{align} -since $\nabla \times \nabla = 0$. The magnetic shear: - +Now, +\begin{equation} +(\mathbf B\times\nabla\psi)\times\nabla\psi += +\nabla\psi(\mathbf B\cdot\nabla\psi)-\mathbf B|\nabla\psi|^2 += +-\mathbf B|\nabla\psi|^2, +\end{equation} +since $\mathbf B\cdot\nabla\psi=0$. Hence \begin{align} -S -&= - (2\pi)^2\, \boldsymbol{\Lambda} \cdot (\nabla \times \boldsymbol{\Lambda}) \\[4pt] -&= - (2\pi)^2 +K_{\perp} +&= +\frac{2\mu_0 p'^2 |\nabla\psi|^2}{B^2} ++\frac{2p'}{B^2}\,\mathbf B\cdot(\nabla\psi\cdot\nabla)\mathbf B +\\ +&= +\frac{2p'}{B^2} \left[ -\nabla \alpha -- \frac{(\nabla \chi_{dcon} \cdot \nabla \alpha)}{|\nabla \chi_{dcon}|^2}\, \nabla \chi_{dcon} +\mu_0\,\nabla p\cdot\nabla\psi ++\mathbf B\cdot(\nabla\psi\cdot\nabla)\mathbf B \right] -\cdot +\\ +&= +\frac{2p'}{B^2} \left[ -\nabla \left(\frac{\nabla \chi_{dcon} \cdot \nabla \alpha}{|\nabla \chi_{dcon}|^2}\right) -\times \nabla \chi_{dcon} -\right] \\[6pt] -&= (2\pi)^2\, \nabla \alpha \cdot +\mu_0\,(\mathbf j\times\mathbf B)\cdot\nabla\psi ++\mathbf B\cdot(\nabla\psi\cdot\nabla)\mathbf B +\right] +\\ +&= +\frac{2p'}{B^2}\, +\mathbf B\cdot \left[ -\nabla \left(\frac{\nabla \chi_{dcon} \cdot \nabla \alpha}{|\nabla \chi_{dcon}|^2}\right) -\times \nabla \chi_{dcon} -\right] \\[6pt] -&= (2\pi)^2\, (\nabla \chi_{dcon} \times \nabla \alpha) \cdot -\nabla \left(\frac{\nabla \chi_{dcon} \cdot \nabla \alpha}{|\nabla \chi_{dcon}|^2}\right) \\[6pt] -&= (2\pi)^2\, \mathbf{B} \cdot -\nabla \left(\frac{\nabla \chi_{dcon} \cdot \nabla \alpha}{|\nabla \chi_{dcon}|^2}\right)\\ -&= \frac{(2\pi)^2}{\chi\prime_{dcon}}\, \mathbf{B} \cdot \nabla (\frac{\nabla \psi \cdot \nabla \alpha}{\nabla\psi \cdot \nabla\psi}) +(\nabla\psi\cdot\nabla)\mathbf B+\mu_0\,\nabla\psi\times\mathbf j +\right]. \end{align} - -The parallel gradient operator is: +Using \begin{equation} -\mathbf{B} \cdot \nabla -= B^{\theta} \frac{\partial}{\partial \theta} -+ B^{\zeta} \frac{\partial}{\partial \zeta} -= \frac{\chi'}{\mathcal{J}} -\left( -\frac{\partial}{\partial \theta} -+ q \frac{\partial}{\partial \zeta} -\right). +(\nabla\psi\cdot\nabla)\mathbf B+\mu_0\,\nabla\psi\times\mathbf j += +-(\mathbf B\cdot\nabla)\nabla\psi, \end{equation} - -Also note -\begin{align} -\nabla \psi \cdot \nabla \alpha -&= \nabla \psi \cdot \nabla \big(q(\psi)\theta - \zeta\big) -= q'(\nabla \psi \cdot \nabla \psi)\theta -+ \nabla \psi \cdot \big(q \nabla \theta - \nabla \zeta\big). -\end{align} - -Since $\partial / \partial \zeta = 0$ for a tokamak, one obtains: -\begin{align} -S -&= \frac{(2\pi)^2}{\mathcal{J}} -\frac{\partial}{\partial \theta} -\left[ -q' \theta -+ \frac{q(\nabla \psi \cdot \nabla \theta) -- (\nabla \psi \cdot \nabla \zeta)} -{(\nabla \psi \cdot \nabla \psi)} -\right] \\[6pt] -&= \frac{(2\pi)^2}{\mathcal{J}} -\left[ -q' -+ \frac{\partial}{\partial \theta} -\left( -\frac{q(\nabla \psi \cdot \nabla \theta) -- (\nabla \psi \cdot \nabla \zeta)} -{(\nabla \psi \cdot \nabla \psi)} -\right) -\right]. -\end{align} - -\subsection{$\xi^{\psi}$ in DCON berstein caculation} - -\begin{align} -\boxed{ -\boldsymbol{\xi}_\perp \cdot \hat{n} -= \frac{\boldsymbol{\xi} \cdot \nabla \psi}{|\nabla \psi|} -= \frac{\xi^\psi}{|\nabla \psi|}, -} -\qquad -\boxed{ -(\boldsymbol{\xi}_\perp \cdot \hat{n})^2 -= \frac{(\xi^\psi)^2}{|\nabla \psi|^2}. -} -\end{align} - +we get \begin{equation} -\boxed{ -\boldsymbol{\xi}_\perp \cdot \hat{n} -= \frac{1}{|\nabla \psi|} -\sum_{m,n} v_{m,n}(\psi)\, e^{2\pi i(m\theta - n\zeta)}. -} +K_{\perp} += +-\frac{2p'}{B^2}\,\mathbf B\cdot(\mathbf B\cdot\nabla)\nabla\psi. \end{equation} -\subsection{$\boldsymbol{\kappa}$ in DCON berstein caculation} - - -\section{Reconstruction of energy principle variables in DCON} -\subsection{Reconstruction v1} - -\begin{align} -\xi^\psi = \sum_{m}^{} \sum_{n}^{} v_{m,n}(\psi) \cdot \exp 2\pi i(m\theta -n\zeta) \\ -\xi^s = \sum_{m}^{} \sum_{n}^{} u_{m,n}(\psi) \cdot \exp 2\pi i(m\theta -n\zeta) -\end{align} - -\begin{align} -\vec{j} &= \mathcal{J} (j^{\psi} \nabla \theta \times \nabla \zeta + j^{\theta} \nabla \zeta \times \nabla \psi + j^{\zeta} \nabla \psi \times \nabla \theta) \\ -&= \mathcal{J} ( j^{\psi} \vec{v_1} + j^{\theta} \vec{v_2} + j^{\zeta} \vec{v_3})\\ -&=\mathcal{J} (j^{\theta} \nabla \zeta \times \nabla \psi + j^{\zeta} \nabla \psi \times \nabla \theta) -\end{align} - -\begin{align} -\vec{Q} &= \mathcal{J} (Q^{\psi} \nabla \theta \times \nabla \zeta + Q^{\theta} \nabla \zeta \times \nabla \psi + Q^{\zeta} \nabla \psi \times \nabla \theta) &= \mathcal{J} ( Q^{\psi} \vec{v_1} + Q^{\theta} \vec{v_2} + Q^{\zeta} \vec{v_3}) \\ -&= Q_1 \nabla \psi + Q_2 \nabla \theta + Q_3 \nabla \zeta -\end{align} - +Also, \begin{equation} -Q^{\psi} = \frac{\chi^\prime}{\mathcal{J}} (\frac{\partial}{\partial \theta} + q \frac{\partial}{\partial \zeta} )\xi^\psi = \frac{\chi^\prime}{\mathcal{J}} \sum_{m}^{} \sum_{n}^{} v_{m,n}(\psi) \cdot \exp 2 \pi i(m\theta -n\zeta)\cdot 2 \pi i (m-nq) +0=(\mathbf B\cdot\nabla)(\mathbf B\cdot\nabla\psi) += +((\mathbf B\cdot\nabla)\mathbf B)\cdot\nabla\psi ++ +\mathbf B\cdot(\mathbf B\cdot\nabla)\nabla\psi, \end{equation} - -\begin{align} -Q^{\theta} &= - \frac{1}{\mathcal{J}} \frac{\partial}{\partial \psi}(\chi ^ \prime \xi ^\psi) + \frac{1}{\mathcal{J}} \frac{\partial \xi^s}{\partial \zeta} \\ -&= - \frac{1}{\mathcal{J}} \sum_{m}^{} \sum_{n}^{} \left(\chi ^ \prime \frac{\partial}{\partial \psi}(v_{m,n}(\psi)) + 2\pi i n u_{m,n}(\psi) \right) \cdot \exp 2\pi i(m\theta -n\zeta) -\end{align} - -\begin{align} -Q^{\zeta} -&= - \frac{1}{\mathcal{J}} \frac{\partial}{\partial \psi} (\chi^\prime q \xi^\psi) - -\frac{1}{\mathcal{J}} \frac{\partial \xi^s}{\partial \theta} \\ -&= - \frac{1}{\mathcal{J}} \sum_{m} \sum_{n} - \left( \chi ^ \prime q \frac{\partial v_{m,n}(\psi)}{\partial \psi} - + \chi^\prime q^\prime v_{m,n}(\psi) - + 2\pi i m u_{m,n}(\psi) \right) - \exp\!\bigl(2 \pi i(m\theta - n\zeta)\bigr). -\end{align} - +so that \begin{equation} -\Xi_{\psi} -= \texttt{u(:,:,1)} \quad \text{(Fortran, DCON)} -= \texttt{u(:,:,1)} \quad \text{(Fortran, MATCH)}. +\mathbf B\cdot(\mathbf B\cdot\nabla)\nabla\psi += +-((\mathbf B\cdot\nabla)\mathbf B)\cdot\nabla\psi. \end{equation} - +Therefore, \begin{equation} -\Xi_{s} -= \texttt{ud(:,:,2)} \quad \text{(Fortran, DCON)} -= \texttt{u(:,:,4)} \quad \text{(Fortran, MATCH)}. +K_{\perp} += +\frac{2p'}{B^2} +\big((\mathbf B\cdot\nabla)\mathbf B\big)\cdot\nabla\psi. \end{equation} +Finally, with $\mathbf B=B\mathbf b$, \begin{equation} -\Xi_{\psi}^\prime -= \texttt{ud(:,:,1)} -= \texttt{du(:,:,1)} \quad \text{(Fortran, DCON)} -= \texttt{u(:,:,3)} \quad \text{(Fortran, MATCH)}. +(\mathbf B\cdot\nabla)\mathbf B += +B^2(\mathbf b\cdot\nabla)\mathbf b ++ +B(\mathbf b\cdot\nabla B)\mathbf b, \end{equation} - -And if you see the 331 line in ideal.f of MATCH, it constructs all the eigenvectors in variable v. +and since $\mathbf b\cdot\nabla\psi=0$, \begin{equation} -v_{m,n}(\psi) -= v(:,1,mstep) +\big((\mathbf B\cdot\nabla)\mathbf B\big)\cdot\nabla\psi += +B^2\,\boldsymbol{\kappa}\cdot\nabla\psi += +B^2\kappa_\psi. \end{equation} - +Thus, \begin{equation} -v_{m,n}^\prime(\psi) -= v(:,3,mstep) +\boxed{ +K_{\perp}=2p'\kappa_\psi +}. \end{equation} +\paragraph{2. Parallel part $K_{\parallel}$} +Since $\mathbf j_{\parallel}=\sigma\mathbf B$, \begin{equation} -u_{m,n}(\psi) -= v(:,4,mstep) +K_{\parallel} += +2\mu_0\sigma^2B^2 +-\frac{2\sigma}{|\nabla\psi|^2} +(\mathbf B\times\nabla\psi)\cdot(\nabla\psi\cdot\nabla)\mathbf B. \end{equation} +Now use the vector identity \begin{equation} - \mu_0 \vec{j} = \mathcal{J} (\mu_0 j^\theta \vec{v}_2 + \mu_0 j^\zeta \vec{v}_3) +\nabla\times(\mathbf B\times\nabla\psi) += +\mathbf B\nabla^2\psi ++ +(\nabla\psi\cdot\nabla)\mathbf B +- +(\mathbf B\cdot\nabla)\nabla\psi. \end{equation} +Substituting \begin{equation} - \mu_0 \vec{j} \times \nabla \psi = \mathcal{J} \mu_0 j^\theta (\vec{v}_2 \times \nabla \psi) + \mathcal{J} \mu_0 j^\zeta (\vec{v}_3 \times \nabla \psi) +(\mathbf B\cdot\nabla)\nabla\psi += +-(\nabla\psi\cdot\nabla)\mathbf B +-\mu_0\,\nabla\psi\times\mathbf j, \end{equation} - +we obtain \begin{equation} - j^\theta = j \cdot \nabla \theta = - 2 \pi f^\prime / \mathcal{J} +\nabla\times(\mathbf B\times\nabla\psi) += +\mathbf B\nabla^2\psi ++ +2(\nabla\psi\cdot\nabla)\mathbf B ++ +\mu_0\,\nabla\psi\times\mathbf j. \end{equation} +Taking the dot product with $\mathbf B\times\nabla\psi$ gives \begin{equation} - j^\zeta = j \cdot \nabla \zeta = - \mu_0 p^\prime / \chi^\prime - 2 \pi f^\prime q / \mathcal{J} +(\mathbf B\times\nabla\psi)\cdot\nabla\times(\mathbf B\times\nabla\psi) += +2(\mathbf B\times\nabla\psi)\cdot(\nabla\psi\cdot\nabla)\mathbf B ++ +\mu_0\,(\mathbf B\times\nabla\psi)\cdot(\nabla\psi\times\mathbf j), \end{equation} -Now we can reconstruct the cross term in the energy principle: - +because +\begin{equation} +(\mathbf B\times\nabla\psi)\cdot\mathbf B = 0. +\end{equation} +Hence +\begin{align} +K_{\parallel} +&= +2\mu_0\sigma^2B^2 +- +\frac{\sigma}{|\nabla\psi|^2} +(\mathbf B\times\nabla\psi)\cdot\nabla\times(\mathbf B\times\nabla\psi) ++ +\frac{\mu_0\sigma}{|\nabla\psi|^2} +(\mathbf B\times\nabla\psi)\cdot(\nabla\psi\times\mathbf j). +\end{align} + +Now, +\begin{equation} +(\mathbf B\times\nabla\psi)\cdot(\nabla\psi\times\mathbf j) += +(\mathbf B\cdot\nabla\psi)(\nabla\psi\cdot\mathbf j) +- +(\mathbf B\cdot\mathbf j)|\nabla\psi|^2 += +-\sigma B^2|\nabla\psi|^2, +\end{equation} +so +\begin{equation} +K_{\parallel} += +\mu_0\sigma^2B^2 +- +\frac{\sigma}{|\nabla\psi|^2} +(\mathbf B\times\nabla\psi)\cdot\nabla\times(\mathbf B\times\nabla\psi). +\end{equation} + +Define the shear quantity +\begin{equation} +S +\equiv +- +\frac{\mathbf B\times\nabla\psi}{|\nabla\psi|^2} +\cdot +\nabla\times\left( +\frac{\mathbf B\times\nabla\psi}{|\nabla\psi|^2} +\right). +\end{equation} +Also, +\begin{equation} +(\mathbf B\times\nabla\psi)\cdot +\left[ +\nabla\left(\frac{1}{|\nabla\psi|^2}\right) +\times +(\mathbf B\times\nabla\psi) +\right] +=0, +\end{equation} +and therefore +\begin{equation} +\frac{1}{|\nabla\psi|^2} +(\mathbf B\times\nabla\psi)\cdot\nabla\times(\mathbf B\times\nabla\psi) += +(\mathbf B\times\nabla\psi)\cdot +\nabla\times\left( +\frac{\mathbf B\times\nabla\psi}{|\nabla\psi|^2} +\right). +\end{equation} +Thus, +\begin{equation} +\boxed{ +K_{\parallel} += +|\nabla\psi|^2 \sigma S + \mu_0\sigma^2B^2 +}. +\end{equation} + +\paragraph{3. Final expression} +Combining the two pieces, +\begin{equation} +\boxed{ +K += +K_{\parallel}+K_{\perp} += +|\nabla\psi|^2 \sigma S ++\mu_0\sigma^2B^2 ++2p'\kappa_\psi +}. +\end{equation} + +Therefore it is convenient to define +\begin{equation} +K_{\rm shear}\equiv |\nabla\psi|^2 \sigma S, +\qquad +K_\sigma\equiv \mu_0\sigma^2B^2, +\qquad +K_{p\kappa}\equiv 2p'\kappa_\psi, +\end{equation} +so that +\begin{equation} +K = K_{\rm shear}+K_\sigma+K_{p\kappa}. \quad (\hat{\mathbf n} \equiv \frac{\nabla\psi}{|\nabla\psi|}, +\sigma \equiv \frac{\mathbf j\cdot\mathbf B}{B^2}, +\mathbf b \equiv \frac{\mathbf B}{B}, +\boldsymbol{\kappa}\equiv (\mathbf b\cdot\nabla)\mathbf b, +\kappa_\psi \equiv \boldsymbol{\kappa}\cdot\nabla\psi.) +\end{equation} + +\subsection{Bernstein $K$ in DCON coordinates} + +We use the convention +\begin{equation} +K += +|\nabla\psi|^2 \sigma S ++\mu_0 \sigma^2 B^2 ++2p'\kappa_\psi, +\qquad +\sigma \equiv \frac{\mathbf j\cdot\mathbf B}{B^2}, +\qquad +\mathbf j \equiv \frac{\nabla\times\mathbf B}{\mu_0}. +\end{equation} + +In DCON straight-field-line coordinates $(\psi,\theta,\zeta)$, we write +\begin{equation} +\mathbf B += +\nabla\chi \times \nabla\alpha += +\chi'(\psi)\,\nabla\psi\times\nabla\alpha, +\qquad +\alpha \equiv q(\psi)\theta-\zeta, +\qquad +\chi' \equiv \frac{d\chi}{d\psi}. +\end{equation} + +The Jacobian is defined by +\begin{equation} +\mathcal J^{-1} +\equiv +\nabla\psi\cdot(\nabla\theta\times\nabla\zeta), +\end{equation} +so that the parallel gradient operator becomes +\begin{equation} +\mathbf B\cdot\nabla += +\frac{\chi'}{\mathcal J} +\left( +\frac{\partial}{\partial\theta} ++ +q\frac{\partial}{\partial\zeta} +\right). +\end{equation} + +We also define the contravariant metric elements +\begin{equation} +g^{\psi\psi}\equiv \nabla\psi\cdot\nabla\psi, +\qquad +g^{\psi\theta}\equiv \nabla\psi\cdot\nabla\theta, +\qquad +g^{\psi\zeta}\equiv \nabla\psi\cdot\nabla\zeta. +\end{equation} + +\subsection{Expression of $S$ in DCON coordinates} + +We define +\begin{equation} +S +\equiv +-\, +\frac{\mathbf B\times\nabla\psi}{|\nabla\psi|^2} +\cdot +\nabla\times +\left( +\frac{\mathbf B\times\nabla\psi}{|\nabla\psi|^2} +\right). +\end{equation} + +Introduce +\begin{equation} +\boldsymbol{\Lambda}_\psi +\equiv +\frac{\mathbf B\times\nabla\psi}{|\nabla\psi|^2}. +\end{equation} +Using $\mathbf B=\chi'\nabla\psi\times\nabla\alpha$, we obtain +\begin{align} +\boldsymbol{\Lambda}_\psi +&= +\chi' +\frac{(\nabla\psi\times\nabla\alpha)\times\nabla\psi}{|\nabla\psi|^2} +\\ +&= +\chi' +\left[ +\nabla\alpha +- +\frac{\nabla\psi\cdot\nabla\alpha}{|\nabla\psi|^2}\nabla\psi +\right]. +\end{align} + +Define +\begin{equation} +\Gamma_\alpha +\equiv +\frac{\nabla\psi\cdot\nabla\alpha}{|\nabla\psi|^2}. +\end{equation} +Then +\begin{equation} +\boldsymbol{\Lambda}_\psi += +\chi'(\nabla\alpha-\Gamma_\alpha \nabla\psi). +\end{equation} + +Its curl is +\begin{align} +\nabla\times\boldsymbol{\Lambda}_\psi +&= +\nabla\chi' \times (\nabla\alpha-\Gamma_\alpha\nabla\psi) ++ +\chi'\nabla\times(\nabla\alpha-\Gamma_\alpha\nabla\psi) +\\ +&= +\nabla\chi' \times (\nabla\alpha-\Gamma_\alpha\nabla\psi) +- +\chi'\,\nabla\Gamma_\alpha\times\nabla\psi, +\end{align} +since $\nabla\times\nabla\alpha=0$ and $\nabla\times\nabla\psi=0$. + +Now, because $\nabla\chi' \parallel \nabla\psi$, the first term vanishes when contracted +with $\boldsymbol{\Lambda}_\psi$, so +\begin{align} +S +&= +-\boldsymbol{\Lambda}_\psi\cdot(\nabla\times\boldsymbol{\Lambda}_\psi) +\\ +&= +\chi'^2 +(\nabla\alpha-\Gamma_\alpha\nabla\psi)\cdot +(\nabla\Gamma_\alpha\times\nabla\psi) +\\ +&= +\chi'^2\,\nabla\alpha\cdot(\nabla\Gamma_\alpha\times\nabla\psi) +\\ +&= +\chi'^2\,(\nabla\psi\times\nabla\alpha)\cdot\nabla\Gamma_\alpha +\\ +&= +\chi'\,\mathbf B\cdot\nabla\Gamma_\alpha. +\end{align} +Therefore, +\begin{equation} +\boxed{ +S += +\chi'\,\mathbf B\cdot\nabla +\left( +\frac{\nabla\psi\cdot\nabla\alpha}{\nabla\psi\cdot\nabla\psi} +\right). +} +\end{equation} + +Next, +\begin{align} +\nabla\psi\cdot\nabla\alpha +&= +\nabla\psi\cdot\nabla\big(q(\psi)\theta-\zeta\big) +\\ +&= +q'(\nabla\psi\cdot\nabla\psi)\,\theta ++ +q(\nabla\psi\cdot\nabla\theta) +- +(\nabla\psi\cdot\nabla\zeta), +\end{align} +so that +\begin{equation} +\Gamma_\alpha += +q'\theta ++ +\frac{q\,g^{\psi\theta}-g^{\psi\zeta}}{g^{\psi\psi}}. +\end{equation} + +For an axisymmetric tokamak equilibrium, all equilibrium scalars and metric elements are +independent of $\zeta$, hence $\partial\Gamma_\alpha/\partial\zeta=0$. Using +\begin{equation} +\mathbf B\cdot\nabla += +\frac{\chi'}{\mathcal J} +\left( +\frac{\partial}{\partial\theta} ++ +q\frac{\partial}{\partial\zeta} +\right), +\end{equation} +we obtain +\begin{align} +S +&= +\frac{\chi'^2}{\mathcal J} +\frac{\partial}{\partial\theta} +\left[ +q'\theta ++ +\frac{q\,g^{\psi\theta}-g^{\psi\zeta}}{g^{\psi\psi}} +\right] +\\ +&= +\boxed{ +\frac{\chi'^2}{\mathcal J} +\left[ +q' ++ +\frac{\partial}{\partial\theta} +\left( +\frac{q\,g^{\psi\theta}-g^{\psi\zeta}}{g^{\psi\psi}} +\right) +\right]. +} +\end{align} + +\subsection{Normal displacement $\xi_\psi$ in DCON coordinates} + +We define the normal displacement variable by +\begin{equation} +\xi_\psi +\equiv +\boldsymbol{\xi}\cdot\nabla\psi += +\xi^\psi, +\qquad +\hat{\mathbf n} += +\frac{\nabla\psi}{|\nabla\psi|}. +\end{equation} +Therefore, +\begin{equation} +\boxed{ +\boldsymbol{\xi}_\perp\cdot\hat{\mathbf n} += +\frac{\boldsymbol{\xi}\cdot\nabla\psi}{|\nabla\psi|} += +\frac{\xi_\psi}{|\nabla\psi|}. +} +\end{equation} + +Using the DCON Fourier convention, +\begin{equation} +\xi_\psi(\psi,\theta,\zeta) += +\sum_{m,n} +v_{m,n}(\psi)\, +e^{2\pi i(m\theta-n\zeta)}, +\end{equation} +we obtain +\begin{equation} +\boxed{ +\boldsymbol{\xi}_\perp\cdot\hat{\mathbf n} += +\frac{1}{|\nabla\psi|} +\sum_{m,n} +v_{m,n}(\psi)\, +e^{2\pi i(m\theta-n\zeta)}. +} +\end{equation} + +For the quadratic form in the energy principle, it is more precise to write +\begin{equation} +\boxed{ +(\boldsymbol{\xi}_\perp\cdot\hat{\mathbf n}) +(\boldsymbol{\xi}_\perp\cdot\hat{\mathbf n})^* += +\frac{\xi_\psi\xi_\psi^*}{|\nabla\psi|^2}. +} +\end{equation} +If one restricts to a real displacement, the complex conjugation may be dropped at the end. + +\subsection{Expression of $\kappa_\psi$ in DCON coordinates} + +We define +\begin{equation} +\kappa_\psi +\equiv +\boldsymbol{\kappa}\cdot\nabla\psi, +\qquad +\boldsymbol{\kappa}\equiv(\mathbf b\cdot\nabla)\mathbf b, +\qquad +\mathbf b\equiv\frac{\mathbf B}{B}. +\end{equation} + +Using the equilibrium force balance +\begin{equation} +(\nabla\times\mathbf B)\times\mathbf B += +\mu_0\nabla p, +\qquad +\nabla p = p'(\psi)\nabla\psi, +\end{equation} +together with +\begin{equation} +(\nabla\times\mathbf B)\times\mathbf B += +(\mathbf B\cdot\nabla)\mathbf B +- +\nabla\left(\frac{B^2}{2}\right), +\end{equation} +we obtain +\begin{equation} +(\mathbf B\cdot\nabla)\mathbf B += +\mu_0\nabla p ++ +\nabla\left(\frac{B^2}{2}\right). +\end{equation} + +Taking the dot product with $\nabla\psi$ gives +\begin{equation} +B^2\kappa_\psi += +\mu_0 p' |\nabla\psi|^2 ++ +\frac{1}{2}\,\nabla B^2\cdot\nabla\psi. +\end{equation} + +Now expand +\begin{equation} +\nabla B^2 += +\frac{\partial B^2}{\partial\psi}\nabla\psi ++ +\frac{\partial B^2}{\partial\theta}\nabla\theta ++ +\frac{\partial B^2}{\partial\zeta}\nabla\zeta. +\end{equation} +For an axisymmetric tokamak equilibrium, $\partial B^2/\partial\zeta=0$, so +\begin{equation} +\nabla B^2\cdot\nabla\psi += +\frac{\partial B^2}{\partial\psi}g^{\psi\psi} ++ +\frac{\partial B^2}{\partial\theta}g^{\psi\theta}. +\end{equation} +Hence +\begin{equation} +\boxed{ +\kappa_\psi += +\frac{1}{B^2} +\left[ +\mu_0 p' g^{\psi\psi} ++ +\frac{1}{2}\frac{\partial B^2}{\partial\psi}g^{\psi\psi} ++ +\frac{1}{2}\frac{\partial B^2}{\partial\theta}g^{\psi\theta} +\right]. +} +\end{equation} +Equivalently, +\begin{equation} +\boxed{ +\kappa_\psi += +\frac{g^{\psi\psi}}{B^2} +\left[ +\mu_0 p' ++ +\frac{1}{2}\frac{\partial B^2}{\partial\psi} ++ +\frac{1}{2}\frac{\partial B^2}{\partial\theta} +\frac{g^{\psi\theta}}{g^{\psi\psi}} +\right]. +} +\end{equation} + +\subsection{Final DCON expression for $K$} + +Combining the DCON expressions above, we obtain +\begin{equation} +\boxed{ +K += +g^{\psi\psi}\sigma S_\psi ++\mu_0\sigma^2B^2 ++2p'\kappa_\psi. +} +\end{equation} +That is, +\begin{align} +K(\psi,\theta) +&= +g^{\psi\psi}\sigma +\frac{\chi'^2}{\mathcal J} +\left[ +q' ++ +\frac{\partial}{\partial\theta} +\left( +\frac{q\,g^{\psi\theta}-g^{\psi\zeta}}{g^{\psi\psi}} +\right) +\right] ++\mu_0\sigma^2B^2 +\\ +&\quad ++\frac{2p'}{B^2} +\left[ +\mu_0 p' g^{\psi\psi} ++ +\frac{1}{2}\frac{\partial B^2}{\partial\psi}g^{\psi\psi} ++ +\frac{1}{2}\frac{\partial B^2}{\partial\theta}g^{\psi\theta} +\right]. +\end{align} +% \subsection{Normalization of S between Chance and DCON coordinates} +% \noindent Blue symbols denote Chance variables and black symbols denote DCON variables; the subscripts are omitted in this subsection. + +% In Chance's formulation, the magnetic shear scalar \(S\) is defined as +% \begin{equation} +% \color{blue} +% S +% = -\,\frac{\mathbf{B}\times\nabla\psi}{|\nabla\psi|^2} +% \cdot +% \left( +% \nabla\times +% \frac{\mathbf{B}\times\nabla\psi}{|\nabla\psi|^2} +% \right). +% \end{equation} + +% Using the DCON normalization of the flux coordinate, +% \begin{equation} +% {\color{blue}\psi} +% = \frac{\chi^\prime}{2\pi}\, +% \psi, +% \qquad +% {\color{blue}\nabla \psi} +% = \frac{\chi^\prime}{2\pi}\, \nabla \psi, +% \end{equation} +% we can rewrite each factor in terms of DCON variables. + +% Hence, the normalized cross term becomes +% \begin{equation} +% \frac{{\color{blue}\mathbf{B}\times\nabla\psi}}{{\color{blue}|\nabla\psi|^2}} +% = \frac{2\pi}{\chi^\prime}\, +% \frac{\mathbf{B}\times\nabla\psi}{|\nabla\psi|^2}. +% \end{equation} + +% Substituting this back into the original definition of \(S\), we find +% \begin{align} +% {\color{blue}S} +% &= -\left(\frac{2\pi}{\chi^\prime}\right)^2 +% \frac{\mathbf{B}\times\nabla\psi}{|\nabla\psi|^2} +% \cdot +% \left[ +% \nabla\times +% \frac{\mathbf{B}\times\nabla\psi}{|\nabla\psi|^2} +% \right]\\ +% &= \left(\frac{2\pi}{\chi^\prime}\right)^2 +% \underbrace{\left[ +% -\,\frac{\mathbf{B}\times\nabla\psi}{|\nabla\psi|^2} +% \cdot +% \left( +% \nabla\times +% \frac{\mathbf{B}\times\nabla\psi}{|\nabla\psi|^2} +% \right)\right]}_{S}\\ +% &= -\,(2\pi)^2 \frac{\mathbf{B}\times\nabla\chi_{dcon}}{|\nabla\chi_{dcon}|^2} +% \cdot +% \left( +% \nabla\times +% \frac{\mathbf{B}\times\nabla\chi_{dcon}}{|\nabla\chi_{dcon}|^2} +% \right) +% \end{align} + +% Therefore, the final relation between the two shear definitions is +% \begin{equation} +% \boxed{ +% {\color{blue}S} +% = \left(\frac{2\pi}{\chi^\prime}\right)^2 +% S +% = c^{-2} S, +% \qquad +% S +% = \left(\frac{\chi^\prime}{2\pi}\right)^2 +% {\color{blue}S}. +% } +% \end{equation} + +% Below this point in this subsection, \(S\) denotes the DCON quantity. + +% \begin{align} +% \boldsymbol{\Lambda} +% &\equiv \frac{\mathbf{B} \times \nabla \chi_{dcon}}{|\nabla \chi_{dcon}|^2} +% = \frac{(\nabla \chi_{dcon} \times \nabla \alpha) \times \nabla \chi_{dcon}}{|\nabla \chi_{dcon}|^2} \\[4pt] +% &= \nabla \alpha +% - \frac{(\nabla \chi_{dcon} \cdot \nabla \alpha)}{|\nabla \chi_{dcon}|^2}\, \nabla \chi_{dcon}. +% \end{align} + +% The curl becomes ($\alpha\, \text{represents}\, \alpha_{dcon}$ below this point) +% \begin{align} +% \nabla \times \boldsymbol{\Lambda} +% &= -\,\nabla \times +% \left[ +% \frac{(\nabla \chi_{dcon} \cdot \nabla \alpha)}{|\nabla \chi_{dcon}|^2}\, \nabla \chi_{dcon} +% \right] \\[4pt] +% &= -\,\nabla \left(\frac{\nabla \chi_{dcon} \cdot \nabla \alpha}{|\nabla \chi_{dcon}|^2}\right) +% \times \nabla \chi_{dcon}, +% \end{align} + +% since $\nabla \times \nabla = 0$. The magnetic shear: + +% \begin{align} +% {\color{blue}S} +% &= - (2\pi)^2\, \boldsymbol{\Lambda} \cdot (\nabla \times \boldsymbol{\Lambda}) \\[4pt] +% &= - (2\pi)^2 +% \left[ +% \nabla \alpha +% - \frac{(\nabla \chi_{dcon} \cdot \nabla \alpha)}{|\nabla \chi_{dcon}|^2}\, \nabla \chi_{dcon} +% \right] +% \cdot +% \left[ +% \nabla \left(\frac{\nabla \chi_{dcon} \cdot \nabla \alpha}{|\nabla \chi_{dcon}|^2}\right) +% \times \nabla \chi_{dcon} +% \right] \\[6pt] +% &= (2\pi)^2\, \nabla \alpha \cdot +% \left[ +% \nabla \left(\frac{\nabla \chi_{dcon} \cdot \nabla \alpha}{|\nabla \chi_{dcon}|^2}\right) +% \times \nabla \chi_{dcon} +% \right] \\[6pt] +% &= (2\pi)^2\, (\nabla \chi_{dcon} \times \nabla \alpha) \cdot +% \nabla \left(\frac{\nabla \chi_{dcon} \cdot \nabla \alpha}{|\nabla \chi_{dcon}|^2}\right) \\[6pt] +% &= (2\pi)^2\, \mathbf{B} \cdot +% \nabla \left(\frac{\nabla \chi_{dcon} \cdot \nabla \alpha}{|\nabla \chi_{dcon}|^2}\right)\\ +% &= \frac{(2\pi)^2}{\chi\prime_{dcon}}\, \mathbf{B} \cdot \nabla (\frac{\nabla \psi \cdot \nabla \alpha}{\nabla\psi \cdot \nabla\psi}) +% \end{align} + + +% The parallel gradient operator is: +% \begin{equation} +% \mathbf{B} \cdot \nabla +% = B^{\theta} \frac{\partial}{\partial \theta} +% + B^{\zeta} \frac{\partial}{\partial \zeta} +% = \frac{\chi'}{\mathcal{J}} +% \left( +% \frac{\partial}{\partial \theta} +% + q \frac{\partial}{\partial \zeta} +% \right). +% \end{equation} + +% Also note +% \begin{align} +% \nabla \psi \cdot \nabla \alpha +% &= \nabla \psi \cdot \nabla \big(q(\psi)\theta - \zeta\big) +% = q'(\nabla \psi \cdot \nabla \psi)\theta +% + \nabla \psi \cdot \big(q \nabla \theta - \nabla \zeta\big). +% \end{align} + +% Since $\partial / \partial \zeta = 0$ for a tokamak, one obtains: +% \begin{align} +% {\color{blue}S} +% &= \frac{(2\pi)^2}{\mathcal{J}} +% \frac{\partial}{\partial \theta} +% \left[ +% q' \theta +% + \frac{q(\nabla \psi \cdot \nabla \theta) +% - (\nabla \psi \cdot \nabla \zeta)} +% {(\nabla \psi \cdot \nabla \psi)} +% \right] \\[6pt] +% &= \frac{(2\pi)^2}{\mathcal{J}} +% \left[ +% q' +% + \frac{\partial}{\partial \theta} +% \left( +% \frac{q(\nabla \psi \cdot \nabla \theta) +% - (\nabla \psi \cdot \nabla \zeta)} +% {(\nabla \psi \cdot \nabla \psi)} +% \right) +% \right]. +% \end{align} + +% \subsection{$\xi^{\psi}$ in DCON berstein caculation} + +% \begin{align} +% \boxed{ +% \boldsymbol{\xi}_\perp \cdot \hat{n} +% = \frac{\boldsymbol{\xi} \cdot \nabla \psi}{|\nabla \psi|} +% = \frac{\xi^\psi}{|\nabla \psi|}, +% } +% \qquad +% \boxed{ +% (\boldsymbol{\xi}_\perp \cdot \hat{n})^2 +% = \frac{(\xi^\psi)^2}{|\nabla \psi|^2}. +% } +% \end{align} + +% \begin{equation} +% \boxed{ +% \boldsymbol{\xi}_\perp \cdot \hat{n} +% = \frac{1}{|\nabla \psi|} +% \sum_{m,n} v_{m,n}(\psi)\, e^{2\pi i(m\theta - n\zeta)}. +% } +% \end{equation} + +% \subsection{$\boldsymbol{\kappa}$ in DCON berstein caculation} +% \noindent Blue symbols denote Chance variables and black symbols denote DCON variables; the subscripts are omitted in this subsection. +% \begin{align} +% \kappa^\psi &\equiv \boldsymbol{\kappa} \cdot \nabla \psi. +% \end{align} + +% \begin{align} +% B^2 \boldsymbol{\kappa} +% = \mu_0 \nabla p + \nabla_\perp \frac{B^2}{2}, +% \end{align} +% \begin{align} +% \nabla p &= p' \nabla \psi, +% \nabla \frac{B^2}{2} +% = \frac{1}{2}\frac{\partial B^2}{\partial \psi}\nabla \psi +% + \frac{1}{2}\frac{\partial B^2}{\partial \theta}\nabla \theta, +% \end{align} +% \begin{align} +% B^2 \kappa^\psi +% \!= +% \mu_0 p' (\nabla \psi \cdot \nabla \psi) +% + \frac{1}{2}\frac{\partial B^2}{\partial \psi} +% (\nabla \psi \cdot \nabla \psi) +% + \frac{1}{2}\frac{\partial B^2}{\partial \theta} +% (\nabla \psi \cdot \nabla \theta). +% \end{align} +% \begin{align} +% \boxed{ +% \kappa^\psi +% = \frac{1}{B^2} +% \left[ +% \mu_0 p' (\nabla \psi \cdot \nabla \psi) +% + \frac{1}{2}\frac{\partial B^2}{\partial \psi} +% (\nabla \psi \cdot \nabla \psi) +% + \frac{1}{2}\frac{\partial B^2}{\partial \theta} +% (\nabla \psi \cdot \nabla \theta) +% \right] +% } +% \end{align} +% or equivalently +% \begin{align} +% \boxed{ +% \kappa^\psi +% = \frac{|\nabla \psi|^2}{B^2} +% \left[ +% \mu_0 p' +% + \frac{1}{2}\frac{\partial B^2}{\partial \psi} +% + \frac{1}{2}\frac{\partial B^2}{\partial \theta} +% \frac{\nabla \psi \cdot \nabla \theta}{|\nabla \psi|^2} +% \right]. +% } +% \end{align} + +% \begin{align} +% {\color{blue}\psi}= c\,\psi, +% \qquad +% c \equiv \frac{\chi'}{2\pi}. +% \end{align} +% \begin{align} +% {\color{blue}\nabla \psi}&= c\,\nabla \psi, \\ +% {\color{blue}|\nabla \psi|^2}&= c^2 |\nabla \psi|^2, \\ +% \frac{\partial B^2}{\partial {\color{blue}\psi}} +% &= \frac{1}{c}\frac{\partial B^2}{\partial \psi}, \\ +% {\color{blue}p'} +% &= \frac{dp}{d{\color{blue}\psi}} +% = \frac{1}{c} p'. +% \end{align} +% \begin{align} +% {\color{blue}\kappa^\psi} +% &= +% \frac{{\color{blue}|\nabla \psi|^2}}{B^2} +% \left[ +% \mu_0 {\color{blue}p'} +% + \frac{1}{2}\frac{\partial B^2}{\partial {\color{blue}\psi}} +% + \frac{1}{2}\frac{\partial B^2}{\partial \theta} +% \frac{{\color{blue}\nabla \psi \cdot \nabla \theta}} +% {{\color{blue}|\nabla \psi|^2}} +% \right] \\ +% &= +% \frac{c^2 |\nabla \psi|^2}{B^2} +% \left[ +% \frac{1}{c}\mu_0 p' +% + \frac{1}{2c}\frac{\partial B^2}{\partial \psi} +% + \frac{1}{2}\frac{\partial B^2}{\partial \theta} +% \frac{c\,\nabla \psi \cdot \nabla \theta} +% {c^2 |\nabla \psi|^2} +% \right] \\ +% &= +% c\,\frac{|\nabla \psi|^2}{B^2} +% \left[ +% \mu_0 p' +% + \frac{1}{2}\frac{\partial B^2}{\partial \psi} +% + \frac{1}{2}\frac{\partial B^2}{\partial \theta} +% \frac{\nabla \psi \cdot \nabla \theta} +% {|\nabla \psi|^2} +% \right]. +% \end{align} +% \begin{align} +% \boxed{ +% \kappa^\psi +% \equiv +% \boldsymbol{\kappa}\cdot\nabla \psi +% = \frac{|\nabla \psi|^2}{B^2} +% \left[ +% \mu_0 p' +% + \frac{1}{2}\frac{\partial B^2}{\partial \psi} +% + \frac{1}{2}\frac{\partial B^2}{\partial \theta} +% \frac{\nabla \psi \cdot \nabla \theta} +% {|\nabla \psi|^2} +% \right], +% } +% \end{align} +% \begin{align} +% {\color{blue}\kappa^\psi}= c\,\kappa^\psi. +% \end{align} + +\section{Reconstruction of energy principle variables in DCON} + +\begin{equation} +\begin{aligned} +2\mu_0\delta W +&= \int \big[|\vec{C}|^2- \mu_0K(\vec{\xi} \cdot \hat{n})^2 +\gamma p \mu_0|\vec{\nabla} \cdot \vec{\xi}|^2 \big] dx^3\\ +&= \int d\psi d\theta d\zeta \mathcal{J} \Big\{ [ \nabla \xi_s \times \nabla \psi ++ (\nabla \theta \times \nabla \zeta)\,\mathcal{J}\,\mathbf{B}\cdot\nabla \xi_\psi +- \mathbf{B}\,\xi_\psi' \\ +&- +\left( + \chi'' \nabla \zeta \times \nabla \psi + + (q\chi')' \nabla \psi \times \nabla \theta +\right)\xi_\psi \\ +&+\frac{\xi_\psi}{|\nabla \psi|^2} [ +j^\theta +\big( +\nabla\psi(\nabla\zeta\cdot\nabla\psi) +- +\nabla\zeta|\nabla\psi|^2 +\big)+j^\zeta +\big( +\nabla\theta|\nabla\psi|^2 +- +\nabla\psi(\nabla\theta\cdot\nabla\psi) +\big)]]^2 \\ +&-\mu_0 K(\vec{\xi} \cdot \hat{n})^2 +\gamma p \mu_0|\vec{\nabla} \cdot \vec{\xi}|^2\} +\end{aligned} +\end{equation} + +\subsection{Reconstruction v1} + +\begin{align} +\xi^\psi = \sum_{m}^{} \sum_{n}^{} v_{m,n}(\psi) \cdot \exp 2\pi i(m\theta -n\zeta) \\ +\xi^s = \sum_{m}^{} \sum_{n}^{} u_{m,n}(\psi) \cdot \exp 2\pi i(m\theta -n\zeta) +\end{align} +And if you see the 331 line in ideal.f of MATCH, it constructs all the eigenvectors in variable v. +\begin{equation} +v_{m,n}(\psi) += v(:,1,mstep) +\end{equation} +\begin{equation} +v_{m,n}^\prime(\psi) += v(:,3,mstep) +\end{equation} +\begin{equation} +u_{m,n}(\psi) += v(:,4,mstep) +\end{equation} +\medskip +\noindent\rule{\linewidth}{0.4pt} +\begin{align} +\vec{Q} &= \mathcal{J} (Q^{\psi} \nabla \theta \times \nabla \zeta + Q^{\theta} \nabla \zeta \times \nabla \psi + Q^{\zeta} \nabla \psi \times \nabla \theta) &= \mathcal{J} ( Q^{\psi} \vec{v_1} + Q^{\theta} \vec{v_2} + Q^{\zeta} \vec{v_3}) \\ +&= Q_1 \nabla \psi + Q_2 \nabla \theta + Q_3 \nabla \zeta +\end{align} + +\begin{equation} +Q^{\psi} = \frac{\chi^\prime}{\mathcal{J}} (\frac{\partial}{\partial \theta} + q \frac{\partial}{\partial \zeta} )\xi^\psi = \frac{\chi^\prime}{\mathcal{J}} \sum_{m}^{} \sum_{n}^{} v_{m,n}(\psi) \cdot \exp 2 \pi i(m\theta -n\zeta)\cdot 2 \pi i (m-nq) +\end{equation} + +\begin{align} +Q^{\theta} &= - \frac{1}{\mathcal{J}} \frac{\partial}{\partial \psi}(\chi ^ \prime \xi ^\psi) + \frac{1}{\mathcal{J}} \frac{\partial \xi^s}{\partial \zeta} \\ +&= - \frac{1}{\mathcal{J}} \sum_{m}^{} \sum_{n}^{} \left(\chi ^ \prime \frac{\partial}{\partial \psi}(v_{m,n}(\psi)) + 2\pi i n u_{m,n}(\psi) \right) \cdot \exp 2\pi i(m\theta -n\zeta) +\end{align} + +\begin{align} +Q^{\zeta} +&= - \frac{1}{\mathcal{J}} \frac{\partial}{\partial \psi} (\chi^\prime q \xi^\psi) + -\frac{1}{\mathcal{J}} \frac{\partial \xi^s}{\partial \theta} \\ +&= - \frac{1}{\mathcal{J}} \sum_{m} \sum_{n} + \left( \chi ^ \prime q \frac{\partial v_{m,n}(\psi)}{\partial \psi} + + \chi^\prime q^\prime v_{m,n}(\psi) + + 2\pi i m u_{m,n}(\psi) \right) + \exp\!\bigl(2 \pi i(m\theta - n\zeta)\bigr). +\end{align} + +Then the current vector can be reconstructed by the Grad-Shafranov equation: +\begin{align} +\mu_0 \vec{j} &= \mathcal{J} (\mu_0 j^{\psi} \nabla \theta \times \nabla \zeta + \mu_0 j^{\theta} \nabla \zeta \times \nabla \psi + \mu_0 j^{\zeta} \nabla \psi \times \nabla \theta) \\ +&= \mathcal{J} (\mu_0 j^{\psi} \vec{v_1} + \mu_0 j^{\theta} \vec{v_2} + \mu_0 j^{\zeta} \vec{v_3})\\ +&=\mathcal{J} (\mu_0 j^{\theta} \nabla \zeta \times \nabla \psi + \mu_0 j^{\zeta} \nabla \psi \times \nabla \theta) +\end{align} +\begin{equation} + \mu_0 j^\theta = \mu_0 j \cdot \nabla \theta = - 2 \pi f^\prime / \mathcal{J}, \mu_0 j^\zeta = \mu_0 j \cdot \nabla \zeta = - \mu_0 p^\prime / \chi^\prime - 2 \pi f^\prime q / \mathcal{J} +\end{equation} +Now we can reconstruct the cross term in the energy principle: +\begin{align} +\vec{C} &\equiv \vec{Q} + (\vec{\xi} \cdot \hat{n} ) (\mu_0 \vec{j} \times \hat{n}) \\ +&= \mathcal{J} ( C^\psi \vec{v}_1 + C^\theta \vec{v}_2 + C^\zeta \vec{v}_3 )\\ +&=C_1 \nabla\psi + C_2 \nabla\theta + C_3 \nabla\zeta +\end{align} +\begin{equation} +\begin{aligned} +C^\psi &= \vec{C}\cdot\nabla\psi = Q^\psi +&\qquad +C_1 &= Q_1 + \frac{\mathcal{J}\xi^\psi}{|\nabla\psi|^2} +\bigl[ \mu_0 j^\theta (\nabla\psi\cdot\nabla\zeta) +- \mu_0 j^\zeta (\nabla\psi\cdot\nabla\theta) \bigr] \\ +C^\theta &= \vec{C}\cdot\nabla\theta = Q^\theta + \xi^\psi \frac{1}{|\nabla\psi|^2 \mathcal{J}}(\mu_0j^\theta g_{23} + \mu_0j^\zeta g_{33}) +&\qquad +C_2 &= Q_2 + \mathcal{J}\xi^\psi \mu_0 j^\zeta \\ +C^\zeta &= \vec{C}\cdot\nabla\zeta = Q^\zeta - \xi^\psi \frac{1}{|\nabla\psi|^2 \mathcal{J}}(\mu_0j^\theta g_{22} + \mu_0j^\zeta g_{23}) +&\qquad +C_3 &= Q_3 - \mathcal{J}\xi^\psi \mu_0 j^\theta +\end{aligned} +\end{equation} + +\subsection{Reconstruction $\boldsymbol{v2}$ : Matrix representation of $\delta W$} +In this part, we will reconstruct the first term in $\delta W$ in the matrix form. +\begin{equation} +\boxed{\;\mathcal{J}\,(\vec v_i\cdot\vec v_j)=\frac{g_{ij}}{\mathcal{J}}\;} +\end{equation} + +\begin{equation} +\boxed{ +\left\langle F \right\rangle_{mm'} +\equiv \int_{0}^{1} d\theta\; +\mathcal{J}(\psi,\theta)\, +\exp\!\bigl(2\pi i(m'-m)\theta\bigr)\, +F(\psi,\theta) +} +\end{equation} + +\begin{equation} +\boxed{ +(G_{ij})_{mm'} \equiv \left\langle \frac{g_{ij}}{\mathcal{J}} \right\rangle_{mm'} +} +\end{equation} +where $G_{ij}$ is the matrix representation of the metric tensor in the Fourier space. +First we focus on the first term in $\delta W$. If we change each terms in $\vec{C}$ as follows: +\begin{equation} +\begin{aligned} +&\mathbf X \equiv \nabla \xi_s \times \nabla \psi,\\ +&\mathbf Y \equiv (\nabla \theta \times \nabla \zeta)\, \mathcal J \, \mathbf B \cdot \nabla \xi_\psi,\\ +&\mathbf Z \equiv -\mathbf B\, \xi_\psi',\\ +&\mathbf U \equiv -\left( +\chi'' \nabla \zeta \times \nabla \psi ++ +(q\chi')' +\nabla \psi \times \nabla \theta +\right)\xi_\psi,\\ +&\mathbf V \equiv +\frac{\xi_\psi}{|\nabla \psi|^2} +\, \mu_0 \mathbf j \times \nabla \psi . +\end{aligned} +\end{equation} + +\begin{equation} +\begin{aligned} +2\mu_0\delta W_{\mathrm{term1}} & = \int d\psi d\theta d\zeta \mathcal{J} [|\vec{C}|^2]\\ +&= \int d\psi d\theta d\zeta \mathcal{J}\{ |\mathbf Q|^2+ +\left[(\mathbf X+\mathbf Y+\mathbf Z+\mathbf U)\cdot\mathbf V^* + \mathbf V \cdot (\mathbf X+\mathbf Y+\mathbf Z+\mathbf U)^* +\right]+|\mathbf V|^2\} +\end{aligned} +\end{equation} + +\paragraph{Correction of the $\mu_0\vec j\times\nabla\psi$ decomposition} + +Before continuing, one algebraic correction is needed. +From +\begin{equation} +\vec v_2 \times \nabla\psi += +\frac{1}{\mathcal J}(g_{23}\vec v_2-g_{22}\vec v_3), +\end{equation} +and +\begin{align} +\vec v_3 \times \nabla\psi +&= +\vec v_3\times \mathcal J(\vec v_2\times \vec v_3) \\ +&= +\mathcal J\big[\vec v_2(\vec v_3\cdot \vec v_3)-\vec v_3(\vec v_3\cdot \vec v_2)\big] \\ +&= +\mathcal J\left[ +\vec v_2\left(\frac{g_{33}}{\mathcal J^2}\right) +- +\vec v_3\left(\frac{g_{23}}{\mathcal J^2}\right) +\right] \\ +&= +\frac{1}{\mathcal J}(g_{33}\vec v_2-g_{23}\vec v_3), +\end{align} +we obtain +\begin{align} +\mu_0\vec j\times \nabla\psi +&= +\mathcal J\mu_0j^\theta(\vec v_2\times \nabla\psi) ++\mathcal J\mu_0j^\zeta(\vec v_3\times \nabla\psi) \\ +&= +(\mu_0j^\theta g_{23}+\mu_0j^\zeta g_{33})\vec v_2 +- +(\mu_0j^\theta g_{22}+\mu_0j^\zeta g_{23})\vec v_3. +\end{align} + +Therefore +\begin{equation} +\boxed{ +\mathbf V += +\frac{\xi_\psi}{|\nabla\psi|^2} +\left[ +(\mu_0j^\theta g_{23}+\mu_0j^\zeta g_{33})\vec v_2 +- +(\mu_0j^\theta g_{22}+\mu_0j^\zeta g_{23})\vec v_3 +\right]. +} +\end{equation} + +For compactness, define +\begin{equation} +\mathcal A_2 \equiv \mu_0j^\theta g_{23}+\mu_0j^\zeta g_{33}, +\qquad +\mathcal A_3 \equiv \mu_0j^\theta g_{22}+\mu_0j^\zeta g_{23}, +\end{equation} +so that +\begin{equation} +\mathbf V += +\frac{\xi_\psi}{|\nabla\psi|^2} +\left( +\mathcal A_2 \vec v_2-\mathcal A_3 \vec v_3 +\right). +\end{equation} + +We will also use the cofactor identities of the covariant metric: +\begin{equation} +\boxed{ +g_{22}g_{33}-g_{23}^2=\mathcal J^2|\nabla\psi|^2, +} +\end{equation} +\begin{equation} +\boxed{ +g_{12}g_{23}-g_{31}g_{22} += +\mathcal J^2(\nabla\zeta\cdot\nabla\psi), +} +\end{equation} +\begin{equation} +\boxed{ +g_{12}g_{33}-g_{31}g_{23} += +-\mathcal J^2(\nabla\theta\cdot\nabla\psi). +} +\end{equation} + +\paragraph{Matrix representation1} + +Only the final block forms already derived in \cite{10.1063/1.4958328} are listed here: +\begin{equation} +|\mathbf X|^2 \leadsto \Xi_s^\dagger \mathbf A \Xi_s, +\qquad +\mathbf A=(2\pi)^2\left[n^2 \mathbf G_{22}+n \mathbf G_{23}\mathbf M+n \mathbf M \mathbf G_{23}+\mathbf M \mathbf G_{33}\mathbf M\right]. +\end{equation} +\begin{equation} +\mathbf X^* \cdot \mathbf Z + \mathbf Z^* \cdot \mathbf X +\leadsto +\Xi_s^\dagger \mathbf B \Xi_\psi^\prime + \Xi_\psi^{\prime\dagger} \mathbf B^\dagger \Xi_s, +\qquad +\mathbf B=-2\pi i\chi' \left[n(\mathbf G_{22}+q\mathbf G_{23})+\mathbf M(\mathbf G_{23}+q\mathbf G_{33})\right]. +\end{equation} +\begin{equation} +\mathbf X^* \cdot \mathbf Y + \mathbf Y^* \cdot \mathbf X +\leadsto +\Xi_s^\dagger \mathbf C_1 \Xi_\psi + \Xi_\psi^\dagger \mathbf C_1^\dagger \Xi_s, +\qquad +\mathbf C_1=-(2\pi)^2\chi'(\mathbf M \mathbf G_{31}+n\mathbf G_{12})\mathbf Q. +\end{equation} +\begin{equation} +\mathbf X^* \cdot \mathbf U + \mathbf U^* \cdot \mathbf X +\leadsto +\Xi_s^\dagger \mathbf C_2 \Xi_\psi + \Xi_\psi^\dagger \mathbf C_2^\dagger \Xi_s, +\qquad +\mathbf C_2=-2\pi \left[\chi''(n\mathbf G_{22}+\mathbf M \mathbf G_{23})+(q\chi')'(n\mathbf G_{23}+\mathbf M \mathbf G_{33})\right]. +\end{equation} +\begin{equation} +|\mathbf Y|^2 \leadsto \Xi_\psi^\dagger \mathbf H_1 \Xi_\psi, +\qquad +\mathbf H_1=(2\pi\chi')^2\mathbf Q\mathbf G_{11}\mathbf Q. +\end{equation} +\begin{equation} +\mathbf Y^* \cdot \mathbf Z + \mathbf Z^* \cdot \mathbf Y +\leadsto +\Xi_\psi^{\prime\dagger}\mathbf E_1 \Xi_\psi + \Xi_\psi^\dagger \mathbf E_1^\dagger \Xi_\psi^\prime, +\qquad +\mathbf E_1=-2\pi i\chi'^2(\mathbf G_{12}+q\mathbf G_{31})\mathbf Q. +\end{equation} +\begin{equation} +\mathbf Y^* \cdot \mathbf U + \mathbf U^* \cdot \mathbf Y +\leadsto +\Xi_\psi^\dagger \mathbf H_2 \Xi_\psi, +\qquad +\mathbf H_2=2\pi i\chi'\left[\chi''(\mathbf M \mathbf G_{12}-\mathbf G_{12}\mathbf M)+(q\chi')'(\mathbf M \mathbf G_{31}-\mathbf G_{31}\mathbf M)\right]. +\end{equation} +\begin{equation} +|\mathbf Z|^2 \leadsto \Xi_\psi^{\prime\dagger} \mathbf D \Xi_\psi^\prime, +\qquad +\mathbf D=\chi'^2\left[(\mathbf{G}_{22}+q\,\mathbf{G}_{23})+q(\mathbf{G}_{23}+q\,\mathbf{G}_{33})\right]. +\end{equation} +\begin{equation} +\mathbf Z^* \cdot \mathbf U + \mathbf U^* \cdot \mathbf Z +\leadsto +\Xi_\psi^{\prime\dagger}\mathbf E_2 \Xi_\psi + \Xi_\psi^\dagger \mathbf E_2^\dagger \Xi_\psi^\prime, +\qquad +\mathbf E_2=\chi'\left[\chi''(\mathbf{G}_{22}+q\,\mathbf{G}_{23})+(q\chi')'(\mathbf{G}_{23}+q\,\mathbf{G}_{33})\right]. +\end{equation} + +Finally, +\begin{equation} +|\mathbf U|^2 \leadsto \Xi_\psi^\dagger \mathbf H_3 \Xi_\psi, +\qquad +\mathbf{H}_3 += +\chi'' +\left[ +\chi''\,\mathbf{G}_{22} ++ +(q\chi')'\,\mathbf{G}_{23} +\right] ++ +(q\chi')' +\left[ +\chi''\,\mathbf{G}_{23} ++ +(q\chi')'\,\mathbf{G}_{33} +\right] +\end{equation} + +\paragraph{Matrix representation2} +The term $\mathbf X^* \cdot \mathbf V + \mathbf V^* \cdot \mathbf X$ can be written in matrix form as +\[ +\Xi_s^\dagger \mathbf C_3 \Xi_\psi + \Xi_\psi^\dagger \mathbf C_3^\dagger \Xi_s, +\] +where $\mathbf C_3$ is the corresponding cross-block matrix: + +\begin{align} +\nabla \xi_s +&=\sum_m +\left[ +u_m' \nabla\psi ++ +2\pi i\,m\,u_m \nabla\theta +- +2\pi i\,n\,u_m \nabla\zeta +\right]e^{2\pi i(m\theta-n\zeta)} +\end{align} +\begin{align} +\mathbf X +&= +\nabla\xi_s\times\nabla\psi \\ +&= +\sum_m +2\pi i\,u_m e^{2\pi i(m\theta-n\zeta)} +\left( +m\,\nabla\theta\times\nabla\psi +- +n\,\nabla\zeta\times\nabla\psi +\right)\\ +\mathbf X^* +&= +\sum_m +(-2\pi i)\,u_m^* e^{-2\pi i(m\theta-n\zeta)} +\left( +m\,\nabla\theta\times\nabla\psi +- +n\,\nabla\zeta\times\nabla\psi +\right) \\ +\mathbf V +&= +\frac{\xi_\psi}{|\nabla\psi|^2}\,\mu_0\mathbf j\times\nabla\psi += +\sum_{m'} +v_{m'} e^{2\pi i(m'\theta-n\zeta)} +\frac{1}{|\nabla\psi|^2} +\mu_0\mathbf j\times\nabla\psi\\ +\mathbf V^* +&= +\frac{\xi_\psi^*}{|\nabla\psi|^2}\,\mu_0\mathbf j\times\nabla\psi += +\sum_{m'} +v_{m'}^* e^{-2\pi i(m'\theta-n\zeta)} +\frac{1}{|\nabla\psi|^2} +\mu_0\mathbf j\times\nabla\psi +\end{align} + +Therefore +\begin{align} +\mathbf X^*\cdot \mathbf V +&= +\sum_{m,m'} +(-2\pi i)\, +u_m^* v_{m'}\, +e^{2\pi i(m'-m)\theta} +\frac{\mu_0}{|\nabla\psi|^2} +\Big[ +m(\nabla\theta\times\nabla\psi)\cdot(\mathbf j\times\nabla\psi) +- +n(\nabla\zeta\times\nabla\psi)\cdot(\mathbf j\times\nabla\psi) +\Big] +\end{align} + +Now use +$(\mathbf a\times\mathbf c)\cdot(\mathbf b\times\mathbf c)=(\mathbf a\cdot\mathbf b)|\mathbf c|^2-(\mathbf a\cdot\mathbf c)(\mathbf b\cdot\mathbf c)$ +with $\mathbf c=\nabla\psi$, together with $\mathbf j\cdot\nabla\psi=0$. Then +\begin{align} +(\nabla\theta\times\nabla\psi)\cdot(\mathbf j\times\nabla\psi) +&=(\nabla\theta\cdot\mathbf j)|\nabla\psi|^2-(\nabla\theta\cdot\nabla\psi)(\mathbf j\cdot\nabla\psi) &=j^\theta |\nabla\psi|^2\\ +(\nabla\zeta\times\nabla\psi)\cdot(\mathbf j\times\nabla\psi)&=j^\zeta |\nabla\psi|^2 +\end{align} + +Hence +\begin{align} +\mathbf X^*\cdot \mathbf V +&= +\sum_{m,m'} +(-2\pi i)\, +u_m^* v_{m'}\, +e^{2\pi i(m'-m)\theta}\, +\mu_0\left(mj^\theta-nj^\zeta\right) +\end{align} + +Now substitute the equilibrium current components. In the normalization used here, +\begin{equation} +\mu_0 j^\theta = -\frac{2\pi f'}{\mathcal J}, +\qquad +\mu_0 j^\zeta = -\frac{\mu_0 p'}{\chi'}-\frac{2\pi f' q}{\mathcal J} +\end{equation} +\begin{align} +\mu_0(mj^\theta-nj^\zeta) +&= +-\frac{2\pi f'}{\mathcal J}m ++ +n\left( +\frac{\mu_0 p'}{\chi'} ++ +\frac{2\pi f'q}{\mathcal J} +\right) \\ +&= +-\frac{2\pi f'}{\mathcal J}(m-nq) ++ +n\frac{\mu_0 p'}{\chi'} +\end{align} +Therefore \begin{align} -\vec{C} &\equiv \vec{Q} + (\vec{\xi} \cdot \hat{n} ) (\mu_0 \vec{j} \times \hat{n}) \\ -&=C^\psi \vec{e}_1 + C^\theta \vec{e}_2 + C^\zeta \vec{e}_3 = \mathcal{J} ( C^\psi \vec{v}_1 + C^\theta \vec{v}_2 + C^\zeta \vec{v}_3 )\\ -&=C_1 \nabla\psi + C_2 \nabla\theta + C_3 \nabla\zeta +(\mathbf C_3)_{mm'} +&= +\int_0^1 d\theta\; +\mathcal J\,e^{2\pi i(m'-m)\theta} +(-2\pi i) +\left[ +-\frac{2\pi f'}{\mathcal J}(m-nq) ++ +n\frac{\mu_0 p'}{\chi'} +\right] \\ +&= +\int_0^1 d\theta\; +e^{2\pi i(m'-m)\theta} +\left[ +(2\pi i)(2\pi f')(m-nq) +- +(2\pi i)n\frac{\mu_0 p'}{\chi'}\mathcal J +\right] \end{align} +\begin{equation} +\boxed{ +\mathbf C_3 += +2\pi i +\left( +2\pi f' \mathbf Q +- +n\frac{\mu_0 p'}{\chi'}\mathbf J +\right) +} +\end{equation} + +\medskip +\noindent\rule{\linewidth}{0.4pt} +\medskip + +% Thus the missing $\mathbf X$--$\mathbf V$ contribution is exactly the matrix $\mathbf C_3$ appearing in the full coefficient matrix +% \begin{equation} +% \mathbf C=\mathbf C_1+\mathbf C_2+\mathbf C_3 . +% \end{equation} + +The $\mathbf Z$--$\mathbf V$ block has the form +\[ +\Xi_\psi^{\prime\dagger}\mathbf E_3 \Xi_\psi + \Xi_\psi^\dagger \mathbf E_3^\dagger \Xi_\psi^\prime. +\] +\begin{align} +\mathbf Z^*\cdot \mathbf V +&= +\sum_{m,m'} +v_m^{\prime *}v_{m'}\,e^{2\pi i(m'-m)\theta} +\left[ +-\chi' +\frac{ +\mathcal A_2(g_{22}+qg_{23})-\mathcal A_3(g_{23}+qg_{33}) +}{ +\mathcal J^2|\nabla\psi|^2 +} +\right] +\end{align} \begin{align} -C^\psi &= \vec{C} \cdot \nabla\psi = Q^\psi \\ -C^\theta &= \vec{C} \cdot \nabla\theta = Q^\theta + \xi^\psi \frac{1}{|\nabla\psi|^2} \mu_0 j^\zeta \\ -C^\zeta &= \vec{C} \cdot \nabla\zeta = Q^\zeta - \xi^\psi \frac{1}{|\nabla\psi|^2} \mu_0 j^\theta +\mathcal A_2(g_{22}+qg_{23})-\mathcal A_3(g_{23}+qg_{33}) +&= +(\mu_0j^\theta g_{23}+\mu_0j^\zeta g_{33})(g_{22}+qg_{23}) +- +(\mu_0j^\theta g_{22}+\mu_0j^\zeta g_{23})(g_{23}+qg_{33}) \\ +&= +(\mu_0j^\zeta-q\mu_0j^\theta)(g_{22}g_{33}-g_{23}^2) \\ +&= +(\mu_0j^\zeta-q\mu_0j^\theta)\mathcal J^2|\nabla\psi|^2 . \end{align} - \begin{align} -C_1 &= Q_1 + \frac{\mathcal{J}\xi^\psi}{|\nabla\psi|^2} \left[ \mu_0 j^\theta (\nabla\psi \cdot \nabla\zeta) - \mu_0 j^\zeta (\nabla\psi \cdot \nabla\theta) \right] \\ -C_2 &= Q_2 + \mathcal{J}\xi^\psi \mu_0 j^\zeta \\ -C_3 &= Q_3 - \mathcal{J}\xi^\psi \mu_0 j^\theta +\mathbf Z^*\cdot \mathbf V +&= +-\chi'(\mu_0j^\zeta-q\mu_0j^\theta) +\sum_{m,m'}v_m^{\prime *}v_{m'}\,e^{2\pi i(m'-m)\theta} \\ +&= +\mu_0 p'\sum_{m,m'}v_m^{\prime *}v_{m'}\,e^{2\pi i(m'-m)\theta}. \end{align} +\begin{equation} +\boxed{ +\begin{aligned} +\mathbf Z^*\cdot \mathbf V+\mathbf V^*\cdot\mathbf Z +\leadsto\; +\Xi_\psi^{\prime\dagger}\mathbf E_3 \Xi_\psi ++ +\Xi_\psi^\dagger \mathbf E_3^\dagger \Xi_\psi^\prime, \\ +\qquad +\mathbf E_3 +&= +\mu_0p'\mathbf J . +\end{aligned} +} +\end{equation} + +\medskip +\noindent\rule{\linewidth}{0.4pt} +\medskip + +The term $\mathbf Y^*\cdot\mathbf V+\mathbf V^*\cdot\mathbf Y$ is also a pure-$\Xi_\psi$ contribution, so after Fourier projection it takes the form +\[ +\Xi_\psi^\dagger \mathbf H_{YV} \Xi_\psi. +\] \begin{align} -\delta W_{term1} &= \frac{1}{2} \int \bigl(\frac{|\vec{C}|^2}{\mu_0} \bigr) dx^3 \\ -&= \frac{1}{2} \int d\psi d\theta d\zeta \mathcal{J} \Bigl[ \frac{|\vec{C}|^2}{\mu_0}\Bigr] +\mathbf Y +&= +(\nabla\theta\times\nabla\zeta)\,\mathcal J\,\mathbf B\cdot\nabla\xi_\psi= +2\pi i\,\chi' +\sum_m (m-nq)\,v_m\,e^{2\pi i(m\theta-n\zeta)}\,\vec v_1 \\ +\mathbf Y^*&= +(-2\pi i)\chi' +\sum_m (m-nq)\,v_m^*\,e^{-2\pi i(m\theta-n\zeta)}\,\vec v_1 \end{align} +Using the corrected form of $\mathbf V$, \begin{align} -g_{11} &\equiv \mathcal{J}^2\,|\nabla\theta\times\nabla\zeta|^2, \\ -g_{22} &\equiv \mathcal{J}^2\,|\nabla\zeta\times\nabla\psi|^2, \\ -g_{33} &\equiv \mathcal{J}^2\,|\nabla\psi\times\nabla\theta|^2, \\ -g_{12} &\equiv \mathcal{J}^2\,(\nabla\theta\times\nabla\zeta)\cdot(\nabla\zeta\times\nabla\psi), \\ -g_{23} &\equiv \mathcal{J}^2\,(\nabla\zeta\times\nabla\psi)\cdot(\nabla\psi\times\nabla\theta), \\ -g_{31} &\equiv \mathcal{J}^2\,(\nabla\psi\times\nabla\theta)\cdot(\nabla\theta\times\nabla\zeta), +\mathbf Y^*\cdot\mathbf V +&= +(-2\pi i)\chi' +\sum_{m,m'} +v_m^*(m-nq)v_{m'} +e^{2\pi i(m'-m)\theta} +\; +\frac{1}{|\nabla\psi|^2}\, +\vec v_1\cdot(\mathcal A_2\vec v_2-\mathcal A_3\vec v_3) \\ +&= +(-2\pi i)\chi' +\sum_{m,m'} +v_m^*(m-nq)v_{m'} +e^{2\pi i(m'-m)\theta} +\; +\frac{1}{\mathcal J^2|\nabla\psi|^2} +\big( +\mathcal A_2 g_{12}-\mathcal A_3 g_{31} +\big) \end{align} -so that -\begin{equation} -\boxed{\;\mathcal{J}\,(\vec v_i\cdot\vec v_j)=\frac{g_{ij}}{\mathcal{J}}\;} -\end{equation} +Now expand the bracket: +\begin{align} +\mathcal A_2 g_{12}-\mathcal A_3 g_{31} +&= +(\mu_0j^\theta g_{23}+\mu_0j^\zeta g_{33})g_{12} +- +(\mu_0j^\theta g_{22}+\mu_0j^\zeta g_{23})g_{31} \\ +&= +\mu_0j^\theta(g_{12}g_{23}-g_{31}g_{22}) ++ +\mu_0j^\zeta(g_{12}g_{33}-g_{31}g_{23}) \\ +&= +\mathcal J^2 +\left[ +\mu_0j^\theta(\nabla\zeta\cdot\nabla\psi) +- +\mu_0j^\zeta(\nabla\theta\cdot\nabla\psi) +\right] +\end{align} \begin{equation} \boxed{ -\left\langle F \right\rangle_{mm'} -\equiv \int_{0}^{1} d\theta\; -\mathcal{J}(\psi,\theta)\, -\exp\!\bigl(2\pi i(m'-m)\theta\bigr)\, -F(\psi,\theta) +\begin{aligned} +\mathbf Y^*\cdot\mathbf V +&= +(-2\pi i)\chi' +\sum_{m,m'} +v_m^*(m-nq)v_{m'}e^{2\pi i(m'-m)\theta} \\ +&\qquad\times +\mu_0 +\frac{ +j^\theta(\nabla\zeta\cdot\nabla\psi) +- +j^\zeta(\nabla\theta\cdot\nabla\psi) +}{ +|\nabla\psi|^2 +}. +\end{aligned} } \end{equation} +It is more useful to rewrite this in field form. Since \begin{equation} -\boxed{ -(G_{ij})_{mm'} \equiv \left\langle \frac{g_{ij}}{\mathcal{J}} \right\rangle_{mm'} -} +\mathcal J\,\mathbf B\cdot\nabla += +\chi'\left(\partial_\theta+q\partial_\zeta\right), +\end{equation} +we may write +\begin{align} +\mathcal J(\mathbf Y^*\cdot\mathbf V+\mathbf V^*\cdot\mathbf Y) +&= +\chi' +\left[ +(\partial_\theta+q\partial_\zeta)\xi_\psi^* +\right] +\xi_\psi\, +\mathcal F ++ +\chi'\, +\xi_\psi^* +\left[ +(\partial_\theta+q\partial_\zeta)\xi_\psi +\right]\mathcal F, +\end{align} +where +\begin{equation} +\mathcal F +\equiv +\mathcal J +\frac{ +(\mu_0 j^\theta)(\nabla\zeta\cdot\nabla\psi) +- +(\mu_0 j^\zeta)(\nabla\theta\cdot\nabla\psi) +}{ +|\nabla\psi|^2 +}. \end{equation} +Because the equilibrium is axisymmetric and periodic in $\theta,\zeta$, we may integrate by parts in $\theta$ and drop the boundary term: +\begin{align} +\int d\theta\,d\zeta\;\mathcal J(\mathbf Y^*\cdot\mathbf V+\mathbf V^*\cdot\mathbf Y) +&= +\chi'\int d\theta\,d\zeta\; +\partial_\theta(|\xi_\psi|^2)\,\mathcal F \\ +&= +-\chi' \int d\theta\,d\zeta\; +|\xi_\psi|^2\,\partial_\theta \mathcal F. +\end{align} + +Substituting $\mu_0 j^\theta$ and $\mu_0 j^\zeta$, \begin{align} -\delta W_{\mathrm{term1}} -&= \frac{1}{2} \int \bigl(\frac{|\vec{C}|^2}{\mu_0} \bigr) dx^3 \\ -&= \frac{1}{2\mu_0}\int d\psi\,d\theta\,d\zeta\; -\mathcal{J}\,|\vec C|^2 -= \frac{1}{2\mu_0}\int d\psi\,d\theta\,d\zeta\;\mathcal{J} \sum_{i,j=1}^{3} C^{i} C^{j*} g_{ij}\\ -&=\frac{1}{2\mu_0} \int d\psi d\theta\,d\zeta\ \left[ \mathcal{J} \sum_{i,j}\ \sum_{m,n}\ \sum_{m'n'}\ C_{m,n}^{i} C_{m',n'}^{j*} g_{ij} e^{2\pi i ((m-m')\theta -(n-n') \zeta)}\right] \\ +\mathcal F +&= +\mathcal J +\left[ +-\frac{2\pi f'}{\mathcal J} +\frac{\nabla\zeta\cdot\nabla\psi}{|\nabla\psi|^2} ++ +\left( +\frac{\mu_0p'}{\chi'} ++ +\frac{2\pi f'q}{\mathcal J} +\right) +\frac{\nabla\theta\cdot\nabla\psi}{|\nabla\psi|^2} +\right] \\ +&= +2\pi f' +\frac{ +q(\nabla\psi\cdot\nabla\theta)-(\nabla\psi\cdot\nabla\zeta) +}{ +|\nabla\psi|^2 +} ++ +\frac{\mu_0p'}{\chi'}\, +\mathcal J\, +\frac{\nabla\psi\cdot\nabla\theta}{|\nabla\psi|^2}. \end{align} -Since $n$ is fixed in DCON so, +Therefore \begin{align} - \delta W_{n=fixed}&=\frac{1}{2\mu_0} \int d\psi\ \left[ \int d\theta \, \sum_{m, m'} e^{2\pi i(m-m')\theta} \mathcal{J}(\psi, \theta) \sum_{i,j} C_{m,n}^{i}(\psi, \theta) C_{m',n}^{j*}(\psi, \theta) g_{ij}(\psi, \theta) \right] \\ - &=\frac{1}{2\mu_0} \int d\psi \int_0^1 d\theta \; \mathcal{J}(\psi, \theta) \sum_{i,j} \left( \sum_m C_{m,n}^i e^{2\pi i m \theta} \right) \left( \sum_{m'} C_{m',n}^{j*} e^{-2\pi i m' \theta} \right) g_{ij}(\psi, \theta) +\partial_\theta \mathcal F +&= +2\pi f'\, +\partial_\theta +\left[ +\frac{ +q(\nabla\psi\cdot\nabla\theta)-(\nabla\psi\cdot\nabla\zeta) +}{ +|\nabla\psi|^2 +} +\right] ++ +\frac{\mu_0p'}{\chi'}\, +\partial_\theta +\left[ +\mathcal J\frac{\nabla\psi\cdot\nabla\theta}{|\nabla\psi|^2} +\right]. \end{align} -The second term is $\nabla \cdot \vec{\xi} = 0$, it vanishes: +Using the DCON expression for the magnetic shear, \begin{equation} -\boxed{ -\delta W_{\mathrm{term2}} -= \frac{1}{2} \int \gamma p |\vec{\nabla} \cdot \vec{\xi}|^2 dx^3 = \frac{1}{2} \int d\psi d\theta d\zeta \mathcal{J} \Bigl[ \gamma p |\vec{\nabla} \cdot \vec{\xi}|^2 \Bigr] = 0. +S += +\frac{(2\pi)^2}{\mathcal J} +\left[ +q' ++ +\partial_\theta +\left( +\frac{ +q(\nabla\psi\cdot\nabla\theta)-(\nabla\psi\cdot\nabla\zeta) +}{ +|\nabla\psi|^2 +} +\right) +\right], +\end{equation} +we obtain +\begin{equation} +\partial_\theta +\left[ +\frac{ +q(\nabla\psi\cdot\nabla\theta)-(\nabla\psi\cdot\nabla\zeta) +}{ +|\nabla\psi|^2 } +\right] += +\frac{\mathcal J}{(2\pi)^2}S-q'. \end{equation} -For the last term in $\delta W$, +Hence \begin{align} - \delta W_{\mathrm{term3}} &= \frac{1}{2} \int -K(\vec{\xi} \cdot \hat{n})^2 dx^3 \\ - &= \frac{1}{2} \int d\psi d\theta d\zeta \mathcal{J} \Bigl[ -K(\vec{\xi} \cdot \hat{n})^2 \Bigr] \\ - &= \frac{1}{2} \int d\psi d\theta d\zeta \mathcal{J} \Bigl[ -K(\frac{\vec{\xi}^{\psi}}{|\nabla\psi|})^2 \Bigr] +\partial_\theta\mathcal F +&= +\frac{f'}{2\pi}\,\mathcal J\,S +- +2\pi f'q' ++ +\frac{\mu_0p'}{\chi'}\, +\partial_\theta +\left[ +\mathcal J\frac{\nabla\psi\cdot\nabla\theta}{|\nabla\psi|^2} +\right]. \end{align} -% --- Term 3 as quadratic form --- +At this point we use the standard coordinate identity \begin{equation} -\delta W_{\mathrm{term3}} -= -\frac{1}{2}\int d\psi\,d\theta\,d\zeta\; -\mathcal{J}\,\frac{K}{|\nabla\psi|^2}\; -\xi^\psi\,\xi^{\psi *}. +\boxed{ +\partial_\theta +\left( +\mathcal J\frac{\nabla\psi\cdot\nabla\theta}{|\nabla\psi|^2} +\right) += +-\mathcal J', +} \end{equation} +where the prime on $\mathcal J$ denotes $\partial/\partial\psi$. -\begin{equation} -(K_{mm'}) \equiv \left\langle \frac{K}{|\nabla\psi|^2}\right\rangle_{mm'} -= \int_0^1 d\theta\;\mathcal{J}(\psi,\theta)\, -e^{2\pi i(m'-m)\theta}\, -\frac{K}{|\nabla\psi|^2}. -\end{equation} +Therefore +\begin{align} +\int d\theta\,d\zeta\;\mathcal J(\mathbf Y^*\cdot\mathbf V+\mathbf V^*\cdot\mathbf Y) +&= +-\int d\theta\,d\zeta\;|\xi_\psi|^2 +\left[ +\frac{f'}{2\pi}\chi'\mathcal J S +- +2\pi f'q'\chi' +- +\mu_0p'\mathcal J' +\right]. +\end{align} \begin{equation} \boxed{ -\delta W_{\mathrm{term3}} -= -\frac{1}{2}\int d\psi \sum_{m,m'} -v^*_{m,n}(\psi)\; -(K_{mm'}(\psi))\; -v_{m',n}(\psi). +\begin{aligned} +\mathbf Y^*\cdot\mathbf V+\mathbf V^*\cdot\mathbf Y +&\leadsto\; +\Xi_\psi^\dagger \mathbf H_{YV}\Xi_\psi, \\ +(\mathbf H_{YV})_{mm'} +&\equiv +\int_0^1 d\theta\; +e^{2\pi i(m'-m)\theta} +\left[ +-\frac{f'}{2\pi}\chi'\mathcal J S ++ +2\pi f'q'\chi' ++ +\mu_0p'\mathcal J' +\right]. +\end{aligned} } \end{equation} -\subsection{Reconstruction $\boldsymbol{v2}$ : Matrix representation of $\delta W$} +\medskip +\noindent\rule{\linewidth}{0.4pt} +\medskip +\paragraph{The term $\mathbf U^*\cdot\mathbf V+\mathbf V^*\cdot\mathbf U$.} +Since both $\mathbf U$ and $\mathbf V$ are proportional to $\xi_\psi$, this contribution is a pure-$\Xi_\psi$ block and can be written as +\[ +\Xi_\psi^\dagger \mathbf H_{UV} \Xi_\psi. +\] + +Recall \begin{equation} -\begin{aligned} -2\delta W -&= \int \big[ \frac{|\vec{C}|^2}{\mu_0}- K(\vec{\xi} \cdot \hat{n})^2 +\gamma p |\vec{\nabla} \cdot \vec{\xi}|^2 \big] dx^3\\ -&= \int d\psi d\theta d\zeta \mathcal{J} \Big\{ [ \nabla \xi_s \times \nabla \psi -+ (\nabla \theta \times \nabla \zeta)\,\mathcal{J}\,\mathbf{B}\cdot\nabla \xi_\psi -- \mathbf{B}\,\xi_\psi' \\ -&- +\mathbf U += +-\left( +\chi''\vec v_2+(q\chi')'\vec v_3 +\right)\xi_\psi. +\end{equation} +Hence +\begin{align} +\mathbf U^*\cdot\mathbf V +&= +-\frac{|\xi_\psi|^2}{|\nabla\psi|^2} \left( - \chi'' \nabla \zeta \times \nabla \psi - + (q\chi')' \nabla \psi \times \nabla \theta -\right)\xi_\psi \\ -&+\frac{\xi_\psi}{|\nabla \psi|^2} [ -j^\theta -\big( -\nabla\psi(\nabla\zeta\cdot\nabla\psi) +\chi''\vec v_2+(q\chi')'\vec v_3 +\right)\cdot +\left( +\mathcal A_2\vec v_2-\mathcal A_3\vec v_3 +\right) \\ +&= +-\frac{|\xi_\psi|^2}{\mathcal J^2|\nabla\psi|^2} +\left[ +\chi''(\mathcal A_2 g_{22}-\mathcal A_3 g_{23}) ++ +(q\chi')'(\mathcal A_2 g_{23}-\mathcal A_3 g_{33}) +\right]. +\end{align} + +Now simplify each bracket: +\begin{align} +\mathcal A_2 g_{22}-\mathcal A_3 g_{23} +&= +(\mu_0j^\theta g_{23}+\mu_0j^\zeta g_{33})g_{22} - -\nabla\zeta|\nabla\psi|^2 -\big)+j^\zeta -\big( -\nabla\theta|\nabla\psi|^2 +(\mu_0j^\theta g_{22}+\mu_0j^\zeta g_{23})g_{23} \\ +&= +\mu_0j^\zeta(g_{22}g_{33}-g_{23}^2) \\ +&= +\mu_0j^\zeta \mathcal J^2 |\nabla\psi|^2, +\end{align} +and +\begin{align} +\mathcal A_2 g_{23}-\mathcal A_3 g_{33} +&= +(\mu_0j^\theta g_{23}+\mu_0j^\zeta g_{33})g_{23} - -\nabla\psi(\nabla\theta\cdot\nabla\psi) -\big)]]^2 \\ -&-K(\vec{\xi} \cdot \hat{n})^2 +\gamma p |\vec{\nabla} \cdot \vec{\xi}|^2\} -\end{aligned} +(\mu_0j^\theta g_{22}+\mu_0j^\zeta g_{23})g_{33} \\ +&= +-\mu_0j^\theta(g_{22}g_{33}-g_{23}^2) \\ +&= +-\mu_0j^\theta \mathcal J^2 |\nabla\psi|^2. +\end{align} +Therefore +\begin{align} +\mathbf U^*\cdot\mathbf V +&= +-|\xi_\psi|^2 +\left[ +\mu_0j^\zeta\chi'' +- +\mu_0j^\theta(q\chi')' +\right]. +\end{align} + +Substituting $j^\theta$ and $j^\zeta$, +\begin{align} +\mathbf U^*\cdot\mathbf V +&= +-|\xi_\psi|^2 +\left[ +\left( +-\frac{\mu_0p'}{\chi'}-\frac{2\pi f'q}{\mathcal J} +\right)\chi'' +- +\left( +-\frac{2\pi f'}{\mathcal J} +\right)(q\chi')' +\right] \\ +&= +|\xi_\psi|^2 +\left[ +\mu_0p'\frac{\chi''}{\chi'} ++ +\frac{2\pi f'}{\mathcal J} +\left( +q\chi''-(q\chi')' +\right) +\right]. +\end{align} +Using +\begin{equation} +(q\chi')'=q'\chi'+q\chi'', +\end{equation} +we obtain +\begin{equation} +\boxed{ +\mathbf U^*\cdot\mathbf V += +|\xi_\psi|^2 +\left[ +\mu_0p'\frac{\chi''}{\chi'} +- +\frac{2\pi f' q'\chi'}{\mathcal J} +\right]. +} \end{equation} -\subsubsection{Matrix representation of $\delta W_{\mathrm{term1}}$} -First we focus on the first term in $\delta W$. If we change each terms in $\vec{C}$ as follows: \begin{equation} +\boxed{ \begin{aligned} -&\mathbf X \equiv \nabla \xi_s \times \nabla \psi,\\ -&\mathbf Y \equiv (\nabla \theta \times \nabla \zeta)\, \mathcal J \, \mathbf B \cdot \nabla \xi_\psi,\\ -&\mathbf Z \equiv -\mathbf B\, \xi_\psi',\\ -&\mathbf U \equiv -\left( -\chi'' \nabla \zeta \times \nabla \psi -+ -(q\chi')' -\nabla \psi \times \nabla \theta -\right)\xi_\psi,\\ -&\mathbf V \equiv -\frac{\xi_\psi}{|\nabla \psi|^2} -\, \mu_0 \mathbf j \times \nabla \psi . +\mathbf U^*\cdot\mathbf V+\mathbf V^*\cdot\mathbf U +\leadsto\; +\Xi_\psi^\dagger \mathbf H_{UV}\Xi_\psi, \\ +\qquad +\mathbf H_{UV} +&= +2\mu_0p'\frac{\chi''}{\chi'}\,\mathbf J +-4\pi f'q'\chi'\,\mathbf I. \end{aligned} +} \end{equation} -\begin{equation} -\begin{aligned} -2\delta W_{\mathrm{term1}} & = \int d\psi d\theta d\zeta \mathcal{J} [\frac{|\vec{C}|^2}{\mu_0}]\\ -&= \int d\psi d\theta d\zeta \mathcal{J}|\mathbf C|^2\\ -&= \int d\psi d\theta d\zeta \mathcal{J} \{ |\mathbf Q|^2+ -2\,\Re\!\left[ -(\mathbf X+\mathbf Y+\mathbf Z+\mathbf U)\cdot\mathbf V^* -\right]+|\mathbf V|^2\} -\end{aligned} -\end{equation} +\medskip +\noindent\rule{\linewidth}{0.4pt} +\medskip + +\paragraph{The term $|\mathbf V|^2$.} + +This is again a pure-$\Xi_\psi$ contribution, so we write +\[ +\Xi_\psi^\dagger \mathbf H_V \Xi_\psi. +\] -The detailed derivation of the term already in \cite{10.1063/1.4958328} willbe skipped here. -The first term $|\mathbf X|^2$ can be written with matrix form as $\Xi_s^\dagger \mathbf A \Xi_s$ where $\Xi_s$ is a vector of the coefficients of the poloidal harmonics in $\xi_s$, and $\mathbf A$ is a matrix given by: +From \begin{equation} -\mathbf A=(2\pi)^2\left[n^2 \mathbf G_{22}+n \mathbf G_{23} \mathbf M+n \mathbf M \mathbf G_{23}+\mathbf M \mathbf G_{33} \mathbf M\right]. +\mathbf V += +\frac{\xi_\psi}{|\nabla\psi|^2} +(\mathcal A_2\vec v_2-\mathcal A_3\vec v_3), \end{equation} +we have +\begin{align} +|\mathbf V|^2 +&= +\frac{|\xi_\psi|^2}{|\nabla\psi|^4} +(\mathcal A_2\vec v_2-\mathcal A_3\vec v_3)\cdot +(\mathcal A_2\vec v_2-\mathcal A_3\vec v_3) \\ +&= +\frac{|\xi_\psi|^2}{\mathcal J^2|\nabla\psi|^4} +\left[ +\mathcal A_2^2 g_{22} +-2\mathcal A_2\mathcal A_3 g_{23} ++\mathcal A_3^2 g_{33} +\right]. +\end{align} + +Now expand the quadratic form: +\begin{align} +&\mathcal A_2^2 g_{22} +-2\mathcal A_2\mathcal A_3 g_{23} ++\mathcal A_3^2 g_{33} \\ +&= +(\mu_0j^\theta g_{23}+\mu_0j^\zeta g_{33})^2 g_{22} +-2(\mu_0j^\theta g_{23}+\mu_0j^\zeta g_{33}) +(\mu_0j^\theta g_{22}+\mu_0j^\zeta g_{23})g_{23} \\ +&\qquad ++(\mu_0j^\theta g_{22}+\mu_0j^\zeta g_{23})^2 g_{33} \\ +&= +(g_{22}g_{33}-g_{23}^2) +\left[ +\mu_0^2g_{22}(j^\theta)^2 ++ +2\mu_0^2g_{23}j^\theta j^\zeta ++ +\mu_0^2g_{33}(j^\zeta)^2 +\right]. +\end{align} +Therefore +\begin{align} +|\mathbf V|^2 +&= +\frac{|\xi_\psi|^2}{\mathcal J^2|\nabla\psi|^4} +(g_{22}g_{33}-g_{23}^2) +\left[ +\mu_0^2g_{22}(j^\theta)^2 ++ +2\mu_0^2g_{23}j^\theta j^\zeta ++ +\mu_0^2g_{33}(j^\zeta)^2 +\right] \\ +&= +\frac{|\xi_\psi|^2}{|\nabla\psi|^2} +\left[ +\mu_0^2g_{22}(j^\theta)^2 ++ +2\mu_0^2g_{23}j^\theta j^\zeta ++ +\mu_0^2g_{33}(j^\zeta)^2 +\right]. +\end{align} + +This is the completely explicit covariant-form result. -The second term $\mathbf X \cdot \mathbf Z + \mathbf Z \cdot \mathbf X$ can be written in matrix form as $\Xi_s^\dagger \mathbf B \Xi_\psi^\prime + \Xi_\psi'^\dagger \mathbf B^\dagger \Xi_s$, where $\mathbf B$ is a matrix given by: +It is also useful to rewrite it invariantly. Since \begin{equation} - \mathbf B = -2\pi i\chi' [n(\mathbf G_{22} + q\mathbf G_{23}) + \mathbf M(\mathbf G_{23} + q\mathbf G_{33})] +\mathbf j += +\sigma \mathbf B ++\frac{p'}{B^2}\mathbf B\times \nabla\psi, +\qquad +\sigma\equiv \frac{\mathbf j\cdot\mathbf B}{B^2}, \end{equation} - -The term $\mathbf X \cdot \mathbf Y + \mathbf Y \cdot \mathbf X$ as $\Xi_s^\dagger \mathbf C_1 \Xi_\psi + \Xi_\psi^\dagger \mathbf C_1^\dagger \Xi_s$, where $\mathbf C_1$ is a matrix given by: +one finds \begin{equation} - \mathbf C_1 = -(2\pi)^2 \chi^\prime (\mathbf M \mathbf G_{31} + n \mathbf G_{12})\mathbf Q +\frac{|\mu_0\mathbf j\times\nabla\psi|^2}{|\nabla\psi|^2} += +\sigma\,(\mu_0\mathbf j\cdot\mathbf B) ++ +\frac{(\mu_0p')^2}{B^2}|\nabla\psi|^2. \end{equation} - -The term $\mathbf X \cdot \mathbf U + \mathbf U \cdot \mathbf X$ as $\Xi_s^\dagger \mathbf C_2 \Xi_\psi + \Xi_\psi^\dagger \mathbf C_2^\dagger \Xi_s$, where $\mathbf C_2$ is a matrix given by: +Hence \begin{equation} - \mathbf C_2 = -2\pi [\chi'' (n \mathbf G_{22} + \mathbf M \mathbf G_{23}) + (q\chi')' (n \mathbf G_{23} + \mathbf M \mathbf G_{33})] +\boxed{ +|\mathbf V|^2 += +|\xi_\psi|^2 +\left[ +\frac{\sigma\,(\mu_0\mathbf j\cdot\mathbf B)}{|\nabla\psi|^2} ++ +\frac{(\mu_0p')^2}{B^2} +\right]. +} \end{equation} -The term $|\mathbf Y|^2$ as $\Xi_\psi^\dagger \mathbf H_1 \Xi_\psi$, where $\mathbf H_1$ is a matrix given by: \begin{equation} - \mathbf H_1 = (2\pi\chi^{\prime} )^2 \mathbf Q\mathbf G_{11} \mathbf Q +\boxed{ +\begin{aligned} +|\mathbf V|^2 +\leadsto\; +\Xi_\psi^\dagger \mathbf H_V \Xi_\psi, \\ +\qquad +(\mathbf H_V)_{mm'} +&\equiv +\left\langle +\frac{\sigma\,(\mu_0\mathbf j\cdot\mathbf B)}{|\nabla\psi|^2} ++ +\frac{(\mu_0p')^2}{B^2} +\right\rangle_{mm'}. +\end{aligned} +} \end{equation} -The term $\mathbf Y \cdot \mathbf Z + \mathbf Z \cdot \mathbf Y$ as $\Xi_\psi^{\prime\dagger }\mathbf E_1 \Xi_\psi + \Xi_\psi^{\dagger} \mathbf E_1^\dagger \Xi_\psi^\prime$, where $\mathbf E_1$ is a matrix given by: +\medskip +\noindent\rule{\linewidth}{0.4pt} +\medskip + +\paragraph{Adding the Bernstein scalar term $-K|\xi_\psi|^2/|\nabla\psi|^2$.} + +From the earlier derivation in this note, \begin{equation} - \mathbf E_1 = -2\pi i \chi^{\prime 2} (\mathbf G_{12}+q \mathbf G_{31})\mathbf Q +K += +|\nabla\psi|^2\sigma S ++ +\sigma\,\mathbf j\cdot\mathbf B ++ +2p'\,\boldsymbol{\kappa}\cdot\nabla\psi. \end{equation} - -The term $\mathbf Y \cdot \mathbf U + \mathbf U \cdot \mathbf Y$ as $\Xi_\psi^\dagger \mathbf H_2 \Xi_\psi$, where $\mathbf H_2$ is a matrix given by: +Therefore \begin{equation} - \mathbf H_2 = 2\pi i \chi' +-\frac{K}{|\nabla\psi|^2}|\xi_\psi|^2 += +-|\xi_\psi|^2 \left[ -\chi''\left(\mathbf M \mathbf G_{12} -\mathbf G_{12} \mathbf M\right) +\sigma S + -(q\chi')'\left(\mathbf M \mathbf G_{31} -\mathbf G_{31} \mathbf M\right) -\right] +\frac{\sigma\,\mathbf j\cdot\mathbf B}{|\nabla\psi|^2} ++ +\frac{2p'\,\boldsymbol{\kappa}\cdot\nabla\psi}{|\nabla\psi|^2} +\right]. \end{equation} -The term $|\mathbf Z|^2$ as $\Xi_\psi^{\prime \dagger} \mathbf D \Xi_\psi^\prime$, where $\mathbf D$ is a matrix given by: +Now combine the four remaining scalar contributions: \begin{equation} - \mathbf D = \chi'^2 -\left[ -(\mathbf{G}_{22} + q\,\mathbf{G}_{23}) +\mathcal J(\mathbf Y^*\cdot\mathbf V+\mathbf V^*\cdot\mathbf Y) + -q\,(\mathbf{G}_{23} + q\,\mathbf{G}_{33}) -\right] +\mathcal J(\mathbf U^*\cdot\mathbf V+\mathbf V^*\cdot\mathbf U) ++ +\mathcal J|\mathbf V|^2 +- +\mathcal J\frac{K}{|\nabla\psi|^2}|\xi_\psi|^2. \end{equation} -The term $\mathbf Z \cdot \mathbf U + \mathbf U \cdot \mathbf Z$ as $\Xi_\psi^{\prime\dagger}\mathbf E_2 \Xi_\psi + \Xi_\psi^\dagger \mathbf E_2^\dagger \Xi_\psi^\prime$, where $\mathbf E_2$ is a matrix given by: +At this stage the cancellations are as follows: + +\begin{enumerate} +\item +The term +\( +\displaystyle +\frac{\sigma\,\mathbf j\cdot\mathbf B}{|\nabla\psi|^2}|\xi_\psi|^2 +\) +coming from $|\mathbf V|^2$ cancels exactly the same term coming from $-K|\xi_\psi|^2/|\nabla\psi|^2$. + +\item +The oscillatory shear term from $\mathbf Y^*\cdot\mathbf V+\mathbf V^*\cdot\mathbf Y$ combines with the $|\nabla\psi|^2\sigma S$ part of $K$ through \begin{equation} -\mathbf E_2 = \chi' +S += +\frac{(2\pi)^2}{\mathcal J} \left[ -\chi'' -\left( -\mathbf{G}_{22} -+ -q\,\mathbf{G}_{23} -\right) +q' + -(q\chi')' +\partial_\theta \left( -\mathbf{G}_{23} -+ -q\,\mathbf{G}_{33} +\frac{ +q(\nabla\psi\cdot\nabla\theta)-(\nabla\psi\cdot\nabla\zeta) +}{ +|\nabla\psi|^2 +} \right) -\right] +\right]. \end{equation} +The non-oscillatory remainder is the $q'$ contribution. + +\item +The pressure-curvature term from $-K|\xi_\psi|^2/|\nabla\psi|^2$ combines with the pressure part of $|\mathbf V|^2$ and the pressure part of $\mathbf U^*\cdot\mathbf V+\mathbf V^*\cdot\mathbf U$ to give the remaining +\( +\mu_0p'(\mathcal J\chi''/\chi'+\mathcal J') +\) +piece. +\end{enumerate} -Finally, the term $|\mathbf U|^2$ as $\Xi_\psi^\dagger \mathbf H_3 \Xi_\psi$, where $\mathbf H_3$ is a matrix given by: +After these cancellations, the total scalar contribution reduces to \begin{equation} -\mathbf{H}_3 -= -\chi'' +\mathcal J \left[ -\chi''\,\mathbf{G}_{22} -+ -(q\chi')'\,\mathbf{G}_{23} -\right] +(\mathbf Y^*\cdot\mathbf V+\mathbf V^*\cdot\mathbf Y) + -(q\chi')' -\left[ -\chi''\,\mathbf{G}_{23} +(\mathbf U^*\cdot\mathbf V+\mathbf V^*\cdot\mathbf U) + -(q\chi')'\,\mathbf{G}_{33} +|\mathbf V|^2 +- +\frac{K}{|\nabla\psi|^2}|\xi_\psi|^2 \right] += +|\xi_\psi|^2 +\left[ +\mu_0p' +\left( +\mathcal J\frac{\chi''}{\chi'}+\mathcal J' +\right) +- +2\pi f'q'\chi' +\right]. \end{equation} -The new terms are the cross terms between $\mathbf V$ and the other four terms. The term $\mathbf X \cdot \mathbf V + \mathbf V \cdot \mathbf X$ can be written in matrix form as $\Xi_s^\dagger \mathbf C_3 \Xi_\psi + \Xi_\psi^\dagger \mathbf C_3^\dagger \Xi_s$, where $\mathbf C_3$ is a matrix given by: \begin{equation} -(\nabla \xi_s \times \nabla \psi) \cdot (\frac{\xi_\psi}{|\nabla \psi|^2} \mu_0 \mathbf j \times \nabla \psi) = (\nabla \xi_s \cdot \mu_0 \mathbf j) - \cancel{(\nabla \xi_s \cdot \nabla \psi)(\mu_0 \mathbf j \cdot \nabla \psi)} -\end{equation} - -\begin{align} - \mathbf{X}^* \cdot \mathbf{V}&= -\left[ --2\pi i\, \xi_s^* -\left( -m\, \nabla\theta \times \nabla\psi +\boxed{ +\begin{aligned} +(\mathbf Y^*\cdot\mathbf V+\mathbf V^*\cdot\mathbf Y) ++ +(\mathbf U^*\cdot\mathbf V+\mathbf V^*\cdot\mathbf U) ++ +|\mathbf V|^2 - -n\, \nabla\zeta \times \nabla\psi -\right) -\right] -\cdot -\left[ -\frac{\xi_\psi}{|\nabla\psi|^2} -\,\mu_0 +\frac{K}{|\nabla\psi|^2}|\xi_\psi|^2 +&\leadsto\; +\Xi_\psi^\dagger \mathbf H_{\mathrm{add}} \Xi_\psi, \\ +\qquad +\mathbf H_{\mathrm{add}} +&= +\mu_0p' \left( -\mathbf{j} \times \nabla\psi +\frac{\chi''}{\chi'}\mathbf J+\mathbf J' \right) -\right]\\ -&= -(-2\pi i)\,\mu_0\, -\xi_s^*\, -\left( -m\, j_\theta - -n\, j_\zeta -\right) -\xi_\psi\, -\end{align} -This term is same as the term $\xi_\psi \mathbf J \cdot \nabla \psi - \xi_s \mathbf J \cdot \nabla \psi$ in original form. -And the matrix form can be written as $\Xi_s^\dagger \mathbf C_3 \Xi_\psi + \Xi_\psi^\dagger \mathbf C_3^\dagger \Xi_s$, where $\mathbf C_3$ is a matrix given by: -\begin{equation} -\mathbf C_3 = 2\pi i (2\pi f^\prime \mathbf Q -n \frac{p^\prime}{\chi^\prime} \mathbf J) +2\pi f'q'\chi' \mathbf I. +\end{aligned} +} \end{equation} -The term $Z \cdot V + V \cdot Z$ can be written in matrix form as $\Xi_\psi^\dagger \mathbf E_3 \Xi_\psi^\prime + \Xi_\psi^{\dagger\prime} \mathbf E_3^\dagger \Xi_\psi + \Xi_\psi^\dagger \mathbf H_4 \Xi_\psi$, where $\mathbf E_3$ is a matrix given by: +\paragraph{Final missing pieces.} +Therefore the missing $V$-dependent matrices are \begin{equation} -\mathbf Y^* -= -(\nabla \theta \times \nabla \zeta)\, -(-2\pi i)\chi' -\sum_m -(m - nq)\, -v_m^*\, -e^{-2\pi i (m\theta - n\zeta)} . +\boxed{ +\begin{aligned} +\mathbf C_3 +&= +2\pi i\left( +2\pi f'\mathbf Q +-n\frac{\mu_0p'}{\chi'}\mathbf J +\right). +\end{aligned} +} \end{equation} - \begin{equation} -\mathbf V -= -\sum_{m'} -v_{m'}\, -e^{2\pi i (m'\theta - n\zeta)} -\, -\frac{\mu_0 \mathbf j \times \nabla \psi} -{|\nabla \psi|^2} . +\boxed{ +\mathbf E_3=\mu_0p'\mathbf J. +} \end{equation} - +and \begin{equation} +\boxed{ \begin{aligned} -\mathbf Y^* \cdot \mathbf V -&= -(-2\pi i)\chi' -\sum_{m,m'} -v_m^* -(m - nq) -v_{m'} -e^{2\pi i (m' - m)\theta} -\; -\frac{ -(\nabla \theta \times \nabla \zeta) -\cdot -(\mu_0 \mathbf j \times \nabla \psi) -}{ -|\nabla \psi|^2 -}\\ +\mathbf H_{\mathrm{add}} &= -(-2\pi i)\chi' -\sum_{m,m'} -v_m^* -(m - nq) -v_{m'} -e^{2\pi i (m' - m)\theta} -\; -\mu_0 \, -\frac{ -j^{\theta} \left( \nabla \zeta \cdot \nabla \psi \right) -- -j^{\zeta} \left( \nabla \theta \cdot \nabla \psi \right) -}{ -|\nabla \psi|^2 -}. +\mu_0p' +\left( +\frac{\chi''}{\chi'}\mathbf J+\mathbf J' +\right) \\ +&\qquad +-2\pi f'q'\chi' \mathbf I. \end{aligned} +} \end{equation} - -\section{Plasma Magnetic Potential on the Surface} - -The plasma magnetic potential $\Phi$ on the boundary surface is computed using covariant magnetic field components obtained from the perturbed equilibrium solution. The calculation involves four components that represent different aspects of the magnetic potential response. - -\subsection{Equilibrium Data} - -The equilibrium spline $s_q$ contains the following flux functions indexed by their position in the spline: -\begin{align} -s_q(\psi) &= \begin{cases} -s_q(\psi)_1 &: \psi_{\text{fac}} \; (\text{flux normalization}) \\ -s_q(\psi)_2 &: F(\psi) = R B_\phi \; (\text{poloidal current}) \\ -s_q(\psi)_3 &: \mu_0 p(\psi) \; (\text{pressure term}) \\ -s_q(\psi)_4 &: q(\psi) \; (\text{safety factor}) \\ -s_q(\psi)_5 &: \rho(\psi) \; (\text{auxiliary quantity}) -\end{cases} -\end{align} - -\subsection{Covariant Field Components Transformation} - -From the contravariant field components in mode space $(B_{w,p}^{(m)}, B_{m,t}^{(m)}, B_{m,z}^{(m)})$, the covariant components in physical space are obtained via inverse Fourier transform and metric tensor contraction: -\begin{align} -B_{v,\theta} &= \mathcal{F}^{-1}\{b_{v,t}^{(m)}\} \quad \text{(covariant theta component)}\\ -B_{v,\zeta} &= \mathcal{F}^{-1}\{b_{v,z}^{(m)}\} \quad \text{(covariant zeta component)}\\ -\Xi_\psi &= \mathcal{F}^{-1}\{x_{w,p}^{(m)}\} \quad \text{(poloidal flux perturbation)} -\end{align} - -where $\mathcal{F}^{-1}$ denotes the inverse discrete Fourier transform in the poloidal angle direction. - -\subsection{Magnetic Potential Components} - -The four components of the plasma magnetic potential on the surface are computed as follows: - +Thus the total matrices become \begin{equation} +\boxed{ \begin{aligned} -\Phi_3(\theta) &= -\frac{B_{v,\zeta}(\theta)}{2\pi i n} -\\ -\Phi_1(\theta) &= \Phi_3(\theta) - \frac{\frac{dF}{d\psi} \cdot \Xi_\psi(\theta)}{2\pi i n \cdot \mathcal{J}(\theta)} -\\ -\Phi_4(\theta) &= B_{v,\theta}(\theta) -\\ -\Phi_2(\theta) &= \Phi_4(\theta) - \left( -\frac{dF}{d\psi} q(\psi) + \mathcal{J}(\theta) \frac{d(\mu_0 p)}{d\psi} \chi_1^{-1} -\right) \frac{\Xi_\psi(\theta)}{\mathcal{J}(\theta)} +\mathbf C&=\mathbf C_1+\mathbf C_2+\mathbf C_3, \\ +\mathbf E&=\mathbf E_1+\mathbf E_2+\mathbf E_3, \\ +\mathbf H&=\mathbf H_1+\mathbf H_2+\mathbf H_3+\mathbf H_{\mathrm{add}}. \end{aligned} +} \end{equation} - -Here: -\begin{itemize} -\item $\Phi_3$ represents the potential associated with toroidal field perturbation ($\zeta$ component) -\item $\Phi_1$ includes the coupling between flux perturbation and poloidal current derivative -\item $\Phi_4$ is the direct poloidal field response -\item $\Phi_2$ combines poloidal field response with pressure and current effects -\item $\mathcal{J}(\theta) = \partial(\mathbf{r}, \mathbf{z}, \phi)/\partial(\psi, \theta, \zeta)$ (Jacobian of coordinate transformation) -\item $\chi_1 = \psi_0 \cdot 2\pi$ (flux scaling factor) -\item $n$ is the toroidal mode number -\end{itemize} - -\subsection{Physical Interpretation} - -Each potential component couples different physical mechanisms: -\begin{enumerate} -\item \textbf{$\Phi_3$}: Direct response to toroidal field perturbation, normalized by mode number. - -\item \textbf{$\Phi_1$}: Additional correction accounting for the interaction between the poloidal flux perturbation $\Xi_\psi$ and the poloidal current profile $(dF/d\psi)$. The denominator $\mathcal{J}$ accounts for local metric effects. - -\item \textbf{$\Phi_4$}: The primary poloidal magnetic field response from the perturbed equilibrium. - -\item \textbf{$\Phi_2$}: Complex response combining: -\begin{itemize} -\item Gradient of poloidal current: $(dF/d\psi) q$ -\item Pressure gradient effect: $\mathcal{J} (d\mu_0 p/d\psi)\chi_1^{-1}$ -\item Both weighted by normalized flux perturbation: $\Xi_\psi/\mathcal{J}$ -\end{itemize} -\end{enumerate} - - +which is exactly the Glasser Appendix A6 result. \section{Variable Naming Convention and Mathematical Symbols} This section summarizes the implementation of C and Q vectors with proper tensor transformations between contravariant and covariant representations. @@ -1426,62 +2907,29 @@ \subsection{Fundamental Transformation Laws} \begin{aligned} \text{Contravariant} \quad &Q^i = \frac{b^i}{\mathcal{J}} \\ \text{Covariant} \quad &Q_i = g_{ij} Q^j = g_{ij} \frac{b^j}{\mathcal{J}} \\ -\text{Physics method} \quad &C_i = Q_i + (\vec{j} \times \vec{\xi})_i +\text{Physics method} \quad &C_i = Q_i + ((\mu_0 \mathbf{j} \times \hat{n})\cdot (\xi \cdot \hat{n}))_i \end{aligned} } \end{equation} -where $\mathcal{J}$ is the Jacobian, $g_{ij}$ is the metric tensor at MODE index 0, and $(\vec{j} \times \vec{\xi})_i$ represents current-displacement coupling. - +where $\mathcal{J}$ is the Jacobian, $g_{ij}$ is the metric tensor at MODE index 0. \subsection{Code Variable Mapping Table} -\subsubsection*{Q Vector - Contravariant (w-basis, $Q^i$)} -\footnotesize -\begin{table}[h!] -\centering -\begin{tabular}{|l|l|} -\hline -\textbf{Variable} & \textbf{Symbol/Definition} \\ -\hline -\texttt{qwp\_tmp, qwp\_fun, qwp\_mn} & $Q^\psi$ (contravariant component) \\ -\texttt{qwt\_tmp, qwt\_fun, qwt\_mn} & $Q^\theta$ (contravariant component) \\ -\texttt{qwz\_tmp, qwz\_fun, qwz\_mn} & $Q^\zeta$ (contravariant component) \\ -\hline -\end{tabular} -\end{table} - -\subsubsection*{Q Vector - Covariant (v-basis, $Q_i$)} -\footnotesize -\begin{table}[h!] -\centering -\begin{tabular}{|l|l|} -\hline -\textbf{Variable} & \textbf{Symbol/Definition} \\ -\hline -\texttt{qvp\_tmp, qvp\_fun, qvp\_mn} & $Q_\psi = g_{11}Q^\psi + g_{12}Q^\theta + g_{13}Q^\zeta$ \\ -\texttt{qvt\_tmp, qvt\_fun, qvt\_mn} & $Q_\theta = g_{12}Q^\psi + g_{22}Q^\theta + g_{23}Q^\zeta$ \\ -\texttt{qvz\_tmp, qvz\_fun, qvz\_mn} & $Q_\zeta = g_{13}Q^\psi + g_{23}Q^\theta + g_{33}Q^\zeta$ \\ -\hline -\end{tabular} -\end{table} - \subsubsection*{C Vector - Contravariant (w-basis, $C^i$)} -\footnotesize \begin{table}[h!] \centering \begin{tabular}{|l|l|} \hline \textbf{Variable} & \textbf{Symbol/Definition} \\ \hline -\texttt{cwp\_tmp, cwp\_fun, cwp\_mn} & $C^\psi$ (contravariant component) \\ -\texttt{cwt\_tmp, cwt\_fun, cwt\_mn} & $C^\theta$ (contravariant component) \\ -\texttt{cwz\_tmp, cwz\_fun, cwz\_mn} & $C^\zeta$ (contravariant component) \\ +\texttt{cwp\_tmp, cwp\_fun, cwp\_mn} & $\mathcal{J}C^\psi$ (contravariant component) \\ +\texttt{cwt\_tmp, cwt\_fun, cwt\_mn} & $\mathcal{J}C^\theta$ (contravariant component) \\ +\texttt{cwz\_tmp, cwz\_fun, cwz\_mn} & $\mathcal{J}C^\zeta$ (contravariant component) \\ \hline \end{tabular} \end{table} \subsubsection*{C Vector - Covariant (v-basis, $C_i$)} -\footnotesize \begin{table}[h!] \centering \begin{tabular}{|l|l|} @@ -1492,17 +2940,10 @@ \subsubsection*{C Vector - Covariant (v-basis, $C_i$)} \texttt{cvt\_tmp, cvt\_fun} & $C_\theta^{\text{metric}} = g_{ij}C^j$ (metric contraction) \\ \texttt{cvz\_tmp, cvz\_fun} & $C_\zeta^{\text{metric}} = g_{ij}C^j$ (metric contraction) \\ \hline -\multicolumn{2}{|l|}{\textit{Physics form with current-displacement coupling:}} \\ -\hline -\texttt{cvp\_fun\_p, cvp\_mn} & $C_\psi = C_\psi^{\text{metric}} + (\vec{j} \times \vec{\xi})_\psi$ \\ -\texttt{cvt\_fun\_p, cvt\_mn} & $C_\theta = C_\theta^{\text{metric}} + (\vec{j} \times \vec{\xi})_\theta$ \\ -\texttt{cvz\_fun\_p, cvz\_mn} & $C_\zeta = C_\zeta^{\text{metric}} + (\vec{j} \times \vec{\xi})_\zeta$ \\ -\hline \end{tabular} \end{table} \subsubsection*{Input Variables and Parameters} -\footnotesize \begin{table}[h!] \centering \begin{tabular}{|l|l|} @@ -1516,49 +2957,7 @@ \subsubsection*{Input Variables and Parameters} \end{tabular} \end{table} -\paragraph{Variable Storage Types:} -\begin{itemize} -\item \textbf{\texttt{tmp}}: Local 1D array at single flux surface ($\psi$ level), dimension $(0:m_\theta)$ -\item \textbf{\texttt{fun}}: Global 2D spatial array on $(\theta, \psi)$ grid, dimension $(0:m_\theta, 0:m_\psi)$ -\item \textbf{\texttt{mn}}: Global 2D MODE space array, dimension $(m_{pert}, 0:m_\psi)$ -\item \textbf{\texttt{p}}: Physics form (includes j$\times\xi$ coupling term) -\item \textbf{\texttt{w}}-basis: Contravariant (w-basis, using $\nabla$ forms) -\item \textbf{\texttt{v}}-basis: Covariant (v-basis, using cross products) -\end{itemize} - -\subsection{Computational Algorithm} - -The reconstruction algorithm follows these steps for each flux surface ($\psi$ level): - -\begin{enumerate} -\item \textbf{Extract contravariant Q:} -\begin{equation} -Q^i(\theta) = \frac{b^i(\theta)}{\mathcal{J}(\theta)} = \frac{\text{bwp\_fun}(\theta), \text{bwt\_fun}(\theta), \text{bwz\_fun}(\theta)}{\text{jacs}(\theta)} -\end{equation} - -\item \textbf{Apply metric contraction for covariant Q:} -\begin{equation} -Q_i(\theta) = g_{ij}(0) \cdot Q^j(\theta) \quad \text{where } i,j \in \{\psi, \theta, \zeta\} -\end{equation} - -\item \textbf{Compute physics-based C with $j \times \xi$ coupling:} -\begin{equation} -C_i(\theta) = Q_i(\theta) + (\vec{j} \times \vec{\xi})_i(\theta) -\end{equation} - -\item \textbf{Store spatial representations:} -\begin{equation} -\text{qwp\_fun}(\theta, \psi) = Q^\psi(\theta), \quad \text{qvp\_fun}(\theta, \psi) = Q_\psi(\theta), \quad \cdots -\end{equation} - -\item \textbf{Transform to MODE space via Fourier:} -\begin{equation} -\tilde{Q}^\psi_{n,m} = \text{ISCDFTF}(Q^\psi(\theta)) \quad \Rightarrow \quad \text{qwp\_mn}(m_{pert}, \psi) -\end{equation} - -\end{enumerate} - \bibliographystyle{plain} \bibliography{references} -\end{document} \ No newline at end of file +\end{document} From c90ef3aa6844c77cc134707db65880f1a462de26 Mon Sep 17 00:00:00 2001 From: satelite2517 Date: Mon, 18 May 2026 16:37:21 +0900 Subject: [PATCH 11/62] GPEC - WIP - Update recon coordinate derivation (cherry picked from commit b13d2e393909ab40a0c2322cac95f3fd3333c995) --- docs/tex/recon/main.tex | 1848 +++++++++++++++++---------------------- 1 file changed, 804 insertions(+), 1044 deletions(-) diff --git a/docs/tex/recon/main.tex b/docs/tex/recon/main.tex index 01f2dd29f..8e0b33309 100644 --- a/docs/tex/recon/main.tex +++ b/docs/tex/recon/main.tex @@ -26,12 +26,19 @@ \section{Definition of covariant and contravariant basis} The dcon context will be in black and \color{blue}the reference\cite{chance1992mhd} would be in blue. -\color{black}\subsection{Covariant basis} +\color{black}\subsection{Jacobian-scaled basis $(\vec{v}_i = \vec{e}_i/\mathcal{J})$} + +The $\vec{v}_i$ are \emph{not} the true covariant tangent basis $\vec{e}_i \equiv \partial\vec{r}/\partial q^i$, but rather its Jacobian-scaled counterpart: +\begin{equation} + \vec{v}_i = \frac{\vec{e}_i}{\mathcal{J}}, \qquad + \mathcal{J}^{-1} \equiv \vec{\nabla}\psi\cdot(\vec{\nabla}\theta\times\vec{\nabla}\zeta). +\end{equation} +Explicitly, \begin{equation} \begin{aligned} \vec{v}_1 &= \vec{\nabla}\theta \times \vec{\nabla}\zeta, & \vec{v}_2 &= \vec{\nabla}\zeta \times \vec{\nabla}\psi, & - \vec{v}_3 &= \vec{\nabla}\psi \times \vec{\nabla}\theta, + \vec{v}_3 &= \vec{\nabla}\psi \times \vec{\nabla}\theta. \end{aligned} \end{equation} @@ -47,7 +54,7 @@ \section{Definition of covariant and contravariant basis} \begin{aligned} v_{11} &= \vec{v}_1 \cdot \hat{e}_1 = \frac{1}{2r\mathcal{J}}\frac{\partial r^2}{\partial \psi}, \\[6pt] v_{12} &= \vec{v}_1 \cdot \hat{e}_2 = \frac{2\pi r}{\mathcal{J}}\frac{\partial \eta}{\partial \psi}, \\[6pt] -v_{13} &= \vec{v}_1 \cdot \hat{e}_3 = \frac{R}{\mathcal{J}}\frac{\partial \phi}{\partial \psi}, , \\[6pt] +v_{13} &= \vec{v}_1 \cdot \hat{e}_3 = \frac{R}{\mathcal{J}}\frac{\partial \phi}{\partial \psi}, \\[6pt] \end{aligned} \end{equation} @@ -68,7 +75,7 @@ \section{Definition of covariant and contravariant basis} \end{equation} -\subsubsection{Contravariant basis} +\subsection{Contravariant basis} \begin{equation} \begin{aligned} \vec{w}_1 &= \vec{\nabla}\psi, & @@ -169,9 +176,8 @@ \section{Coordinate system} \mathbf{B}_p \cdot d\mathbf{S} \end{equation} -In DCON, $\psi_{dcon}$, $\theta_{dcon}$, $\zeta_{dcon}$ are all normalized in [0,1]. $\chi_{dcon}$ representing the poloidal flux function and $\alpha_{dcon}$ for SFL angle. Also to scale the actual poloidal flux $\chi\prime_{dcon}$ is used.($\chi\prime_{dcon} = 2\pi(ssibry-ssimag)$) - -\begin{align} +\color{red}In DCON, $\psi_{dcon}$, $\theta_{dcon}$, $\zeta_{dcon}$ are all normalized in [0,1]. $\chi_{dcon}$ representing the poloidal flux function and $\alpha_{dcon}$ for SFL angle. Also to scale the actual poloidal flux $\chi\prime_{dcon}$ is used.($\chi\prime_{dcon} = 2\pi(ssibry-ssimag)$) +\color{black}\begin{align} \mathbf{B} &= \nabla \chi_{dcon} \times \nabla \alpha_{dcon}\\ % &= \chi\prime_{dcon} \nabla \psi_{dcon} \times \nabla \alpha_{dcon}\\ @@ -189,7 +195,7 @@ \section{Coordinate system} \alpha_{dcon} = \color{blue} {- \alpha / 2 \pi} \color{black}= q(\psi)\theta - \zeta \end{equation} \begin{equation} -g(\psi) \leftrightarrow (toroidal field functions) \leftrightarrow f_{dcon} +g(\psi) \leftrightarrow \text{(toroidal field functions)} \leftrightarrow f_{dcon} \end{equation} In the following, the blue-side variable $\psi$ is Chance's flux @@ -233,7 +239,7 @@ \subsection{Derivation of Eq.~(29) in GPEC note} \begin{equation} \begin{aligned} - B + \mathbf{B} &= \chi\prime \nabla \psi \times (q\nabla \theta - \nabla \zeta) = \chi\prime q \vec{v}_3 + \chi\prime \vec{v}_2 \\ &= \mathcal{J}(B^\psi \vec{v}_1 + B^\theta \vec{v}_2 + B^\zeta \vec{v}_3) \\ &= (B_\psi \vec{w}_1 + B_\theta \vec{w}_2 + B_\zeta \vec{w}_3) @@ -252,7 +258,7 @@ \subsection{Derivation of Eq.~(29) in GPEC note} B^\theta &\equiv \vec{B}\cdot \vec{w}_2 = \frac{\chi'}{\mathcal{J}}, \qquad B^\zeta \equiv \vec{B}\cdot \vec{w}_3 = \frac{q\,\chi'}{\mathcal{J}}, \\[4pt] -\vec{B} \times \vec{w}_\psi +\vec{B} \times \vec{w}_1 &= \frac{1}{\mathcal{J}}\Big( B^\zeta\,\vec{v}_2 - B^\theta\,\vec{v}_3 \Big) = \frac{1}{\mathcal{J}}\left(\frac{q\,\chi'}{\mathcal{J}}\,\vec{v}_2 - \frac{\chi'}{\mathcal{J}}\,\vec{v}_3\right) \\ &= \frac{\chi'}{\mathcal{J}^{2}}\Big( q\,\vec{v}_2 - \vec{v}_3 \Big), @@ -267,12 +273,23 @@ \subsection{Derivation of Eq.~(29) in GPEC note} \subsection{Metric Tensor and Index Operations} -Given the definitions of the basis vectors where $\vec{v}_i = \vec{\nabla}\theta \times \vec{\nabla}\zeta$ (requiring the Jacobian $\mathcal{J}$ for physical dimensions) and $\vec{w}_i = \vec{\nabla}\psi$ (representing the dual basis directly), the metric tensors for lowering and raising indices are derived as follows. +Throughout this section we adopt the following conventions for expanding $\vec{B}$: +\begin{equation} + \vec{B} = \mathcal{J}\,B^j\,\vec{v}_j = B^j\,\vec{e}_j + \qquad\text{(contravariant expansion)}, +\end{equation} +\begin{equation} + \vec{B} = B_j\,\vec{w}_j = B_j\,\vec{e}^j + \qquad\text{(covariant expansion)}, +\end{equation} +where the contravariant components satisfy $B^i = \vec{B}\cdot\vec{w}_i$ and the covariant components satisfy $B_i = \vec{B}\cdot\vec{e}_i$. +These are consistent because $\vec{B}\cdot\vec{w}_i = \mathcal{J}B^j\vec{v}_j\cdot\vec{w}_i = \mathcal{J}B^j\,\delta_{ji}/\mathcal{J} = B^i$. \subsubsection{Lowering Operator ($B^j \to B_i$)} -To transform contravariant components $B^j$ into covariant components $B_i$, we utilize the relation between the physical basis $\vec{e}_i$ and the defined basis $\vec{v}_i$, where $\vec{e}_i = \mathcal{J}\vec{v}_i$. +To transform contravariant components $B^j$ into covariant components $B_i$, we use the true covariant tangent basis $\vec{e}_i = \mathcal{J}\vec{v}_i$. +Since $B_i \equiv \vec{B}\cdot\vec{e}_i$ and $\vec{B} = \mathcal{J}B^j\vec{v}_j$: -Using the definition $\vec{B} = \mathcal{J} B^j \vec{v}_j$ and taking the dot product with $\vec{e}_i$: +Using the definition $\vec{B} = \mathcal{J} B^j \vec{v}_j$ and taking the dot product with $\vec{e}_i = \mathcal{J}\vec{v}_i$: \begin{equation} \begin{aligned} B_i &= \vec{B} \cdot \vec{e}_i \\ @@ -286,7 +303,7 @@ \subsubsection{Lowering Operator ($B^j \to B_i$)} \end{equation} \subsubsection{Raising Operator ($B_j \to B^i$)} -To transform covariant components $B_j$ into contravariant components $B^i$, we use the gradient basis $\vec{w}_i$, which corresponds to the dual basis $\vec{e}^i$ (i.e., $\vec{e}^i = \vec{w}_i$). +To transform covariant components $B_j$ into contravariant components $B^i$, we use the gradient basis $\vec{w}_i$, which corresponds to the dual basis $\vec{e}^i$ (i.e., $\vec{e}^1 = \vec{w}_1 = \vec{\nabla}\psi$, etc.). Using the definition $\vec{B} = B_j \vec{w}_j$ and taking the dot product with $\vec{w}_i$: \begin{equation} @@ -342,8 +359,7 @@ \subsection{Derivation of Eq. (35) in gpec note} \Bigr] \] -\section{Energy principle\cite{RevModPhys.76.1071}\cite{Park2009Ideal}} - +\section{Energy principle\cite{RevModPhys.76.1071}\cite{Park2009Ideal}} \begin{align} \delta W_p &= \frac{1}{2\mu_0} \int d\tau_p \Big\{ |\mathbf{Q}|^2 - \mathbf{j} \cdot \, \mathbf{Q} \times \boldsymbol{\xi}^* @@ -369,220 +385,182 @@ \section{Energy principle\cite{RevModPhys.76.1071}\cite{Park2009Ideal}} \end{align} The derivation of (35) could be found in \cite{RevModPhys.76.1071} and the original derivation of (36) is in \cite{Bernstein1983}. -The K term in (37) is defined in \cite{chance1992mhd}. +The K term in (37) is defined in \cite{chance1992mhd}. +\subsection{Transformation of $\delta W_F$ into the Bernstein form (modified SI/DCON units)} +We follow the derivation of \cite{Bernstein1983}, while keeping the present SI/DCON conventions. +Throughout this subsection, we employ the following definitions: \begin{equation} -\sigma = \frac{\mathbf{j} \cdot \mathbf{B}}{B^2}, \hat{\mathbf n}=\frac{\nabla\psi}{|\nabla\psi|}, \mathbf Q \equiv \nabla\times(\boldsymbol{\xi}\times\mathbf B) (\delta\mathbf B = \mathbf Q) +\sigma \equiv \frac{\mathbf{j}\cdot\mathbf{B}}{B^2}, \qquad +\mathbf Q \equiv \nabla\times(\boldsymbol{\xi}\times\mathbf B), \qquad +\mu_0\mathbf j = \nabla\times\mathbf B, \end{equation} +\begin{equation} +\hat{\mathbf n}\equiv \frac{\nabla\psi}{|\nabla\psi|}, \qquad +\xi_n \equiv \hat{\mathbf n}\cdot\boldsymbol{\xi}, \qquad +\delta\mathbf B = \mathbf Q, +\end{equation} +with \(p=p(\psi)\). -\subsection{Transformation of $\delta W_F$ in \cite{Bernstein1983}(Modified units)} -In this section, we will see how (34) changes to (36). It follows the derivation in \cite{Bernstein1983}, but since the unit and normalization are different, we need to adjust the expressions accordingly. -If we define $\xi$ as follows: +We begin from \begin{equation} -\boldsymbol{\xi}=a\,\nabla p + b\,\nabla\times\mathbf{B} + c\,\mathbf{B} +2\mu_0 \delta W_F += +\int d^3r\left\{ +|\mathbf Q|^2 ++\mu_0\gamma p\,|\nabla\cdot\boldsymbol{\xi}|^2 ++\mu_0(\nabla\cdot\boldsymbol{\xi})^*\,\boldsymbol{\xi}\cdot\nabla p ++(\boldsymbol{\xi}^*\times\mathbf Q)\cdot(\nabla\times\mathbf B) +\right\}. \end{equation} -then, the following relations hold: + +Since $\mathbf{B}$, $\nabla p$, and $\nabla\times\mathbf{B}$ are mutually orthogonal (satisfying $\mathbf{B}\cdot\nabla p = (\nabla\times\mathbf{B})\cdot\nabla p = \mathbf{B}\cdot(\nabla\times\mathbf{B})=0$), they form an orthogonal basis. We thus introduce \begin{equation} -\boldsymbol{\xi}\times\mathbf{B} -= -a\,\mathbf{B}\times\nabla p + \mu_0 b\,\nabla p +\boldsymbol{\xi} += +a\,\nabla p + b\,\nabla\times\mathbf B + c\,\mathbf B. \end{equation} +Since \(p=p(\psi)\), \begin{equation} -\boldsymbol{\xi}\times(\nabla\times\mathbf{B}) -= -a\,(\nabla\times\mathbf{B})\times\nabla p - \mu_0 c\,\nabla p +\nabla p = p'(\psi)\nabla\psi = p'(\psi)|\nabla\psi|\,\hat{\mathbf n}, +\qquad +\xi_n = \hat{\mathbf n}\cdot\boldsymbol{\xi} = a\,p'(\psi)|\nabla\psi|, \end{equation} +so that \begin{equation} -\mathbf{Q} = \nabla\times(\boldsymbol{\xi}\times\mathbf{B}) = \nabla\times\bigl(-a\,\mathbf{B}\times\nabla p + \mu_0 b\,\nabla p\bigr) +a\,\nabla p = \xi_n\,\hat{\mathbf n}. \end{equation} - -Gauss's theorem, and the boundary condition $\mathbf{n}\cdot\mathbf{B}=0$, -one finds +Also, because \(\mathbf B\cdot\nabla p=0\) and \((\nabla\times\mathbf B)\cdot\nabla p=0\), \begin{align} -2\mu_0 W_F -& = \int d^3r\Bigl\{ \mu_0\gamma p(\nabla\cdot\boldsymbol{\xi})^2 -+ |\mathbf{Q}|^2 \nonumber + (\mu_0 \nabla \cdot \boldsymbol{\xi})^* \boldsymbol{\xi} \cdot \nabla p \nonumber -+ \boldsymbol{\xi} \times \mathbf{Q} \cdot \nabla \times \mathbf{B} -\Bigr\}\\ -& = \int d^3r\Bigl\{\mu_0\gamma p(\nabla\cdot\boldsymbol{\xi})^2 -+ \bigl[\nabla\times\bigl(-a\,\mathbf{B}\times\nabla p + \mu_0 b\,\nabla p\bigr)\bigr]^2 -\nonumber\\ -&+ \mu_0 a(\nabla p)^2\nabla\cdot\bigl(a\nabla p + b\nabla\times\mathbf{B}+c\mathbf{B}\bigr) -\nonumber\\ -&+ \bigl[a(\nabla\times\mathbf{B})\times\nabla p + \mu_0 c\,\nabla p\bigr]\cdot -\nabla\times\bigl(-a\,\mathbf{B}\times\nabla p + \mu_0 b\,\nabla p\bigr) -\Bigr\}. +\boldsymbol{\xi}\times\mathbf B +&= +-a\,\mathbf B\times\nabla p ++b\,(\nabla\times\mathbf B)\times\mathbf B += +-a\,\mathbf B\times\nabla p+\mu_0 b\,\nabla p, \\ +\boldsymbol{\xi}\times(\nabla\times\mathbf B) +&= +-a\,(\nabla\times\mathbf B)\times\nabla p ++c\,\mathbf B\times(\nabla\times\mathbf B) += +-a\,(\nabla\times\mathbf B)\times\nabla p-\mu_0 c\,\nabla p. \end{align} -Since, +Hence \begin{equation} -a(\nabla p)^2\nabla\cdot\bigl(b\nabla\times\mathbf{B}+c\mathbf{B}\bigr)+ \bigl(b\nabla\times\mathbf{B}+c\mathbf{B}\bigr)\cdot\nabla\!\Bigl[a(\nabla p)^2\Bigr] -=\nabla\cdot\Bigl[a(\nabla p)^2\bigl(b\nabla\times\mathbf{B}+c\mathbf{B}\bigr)\Bigr] +\mathbf Q += +\nabla\times\bigl(-a\,\mathbf B\times\nabla p+\mu_0 b\,\nabla p\bigr). \end{equation} -So, + +Substituting $\boldsymbol{\xi} = a\,\nabla p + b\,\nabla\times\mathbf B + c\,\mathbf B$: \begin{align} -a(\nabla p)^2\nabla\cdot\bigl(b\nabla\times\mathbf{B}+c\mathbf{B}\bigr) -&= -\bigl(b\nabla\times\mathbf{B}+c\mathbf{B}\bigr)\cdot\nabla\!\Bigl[a(\nabla p)^2\Bigr] -+\nabla\cdot\Bigl[a(\nabla p)^2\bigl(b\nabla\times\mathbf{B}+c\mathbf{B}\bigr)\Bigr]\\ -&= -b\,\nabla\cdot\Bigl[a(\nabla p)^2\Bigr](\nabla\times\mathbf{B})-c\,\nabla\cdot\Bigl[a(\nabla p)^2\Bigr]\mathbf{B}\nonumber\\ -&+\nabla\cdot\Bigl[ac(\nabla p)^2\mathbf{B}\Bigr]+\nabla\cdot\big[ab(\nabla p)^2(\nabla\times B)\big]\\ -&=-b\,(\nabla\times\mathbf B)\cdot\nabla\big[a(\nabla p)^2\big] -+\nabla\cdot\big[ab(\nabla p)^2(\nabla\times B)\big]\nonumber\\ -&- c\,\mathbf B\cdot\nabla\big[a(\nabla p)^2\big]+\nabla\cdot\big[ac(\nabla p)^2\mathbf B\big]\\ -&=\nabla\cdot\Bigl[ac(\nabla p)^2\mathbf{B}\Bigr] - + a(\nabla\times\mathbf{B})\times(\nabla p)\cdot\nabla\times(b\nabla p)+ c(\nabla p)\cdot\nabla\times(a\mathbf{B}\times\nabla p) +\nabla\cdot\boldsymbol{\xi} &= a\nabla^2 p, \quad \boldsymbol{\xi}\cdot\nabla p = a(\nabla p)^2. \end{align} - -Using (47) to eliminate the divergence term involving $b,c$ gives +By the product rule: +\begin{equation} +a(\nabla p)^2\nabla\cdot(b\nabla\times\mathbf B+c\mathbf B) = \nabla\cdot\Bigl[a(\nabla p)^2(b\nabla\times\mathbf B+c\mathbf B)\Bigr] - (b\nabla\times\mathbf B+c\mathbf B)\cdot\nabla\bigl[a(\nabla p)^2\bigr]. +\end{equation} +On flux surfaces the divergence vanishes, giving \begin{align} -2\mu_0 W_F -= \int d^3r\Bigl\{ -&\mu_0\gamma p(\nabla\cdot\boldsymbol{\xi})^2 -+ \bigl[\nabla\times\bigl(-a\,\mathbf{B}\times\nabla p + \mu_0 b\,\nabla p\bigr)\bigr]^2+\mu_0a(\nabla p)^2\nabla\cdot(a\nabla p)\nonumber\\ -& +\cancel{\nabla\cdot\Bigl[ac(\nabla p)^2\mathbf{B}\Bigr]}+ \mu_0 a(\nabla\times\mathbf{B})\times(\nabla p)\cdot\nabla\times(b\nabla p)+ \mu_0 c(\nabla p)\cdot\nabla\times(a\mathbf{B}\times\nabla p)\nonumber\\ -&+ \bigl[a(\nabla\times\mathbf{B})\times\nabla p + \mu_0 c\,\nabla p\bigr]\cdot -\nabla\times\bigl(-a\,\mathbf{B}\times\nabla p + \mu_0 b\,\nabla p\bigr)\Bigr\}\\ -= \int d^3r\Bigl\{ -&\mu_0\gamma p(\nabla\cdot\boldsymbol{\xi})^2 -+ \bigl[\nabla\times\bigl(-a\,\mathbf{B}\times\nabla p + \mu_0 b\,\nabla p\bigr)\bigr]^2+ \mu_0 a(\nabla p)^2\nabla\cdot(a\nabla p) -+\cancel{\mu_0 c(\nabla p)\cdot \mu_0 (\nabla \times (b\nabla p))}\nonumber\\ -&+ 2\mu_0 a(\nabla\times\mathbf{B})\times(\nabla p)\cdot\nabla\times(b\nabla p) -- a(\nabla \times \mathbf{B}) \times \nabla p \cdot \nabla\times(a\mathbf{B}\times\nabla p)\Bigr\}\\ -= \int d^3r\Bigl\{ -&\mu_0\gamma p(\nabla\cdot\boldsymbol{\xi})^2 -+ \bigl[\nabla\times\bigl(-a\,\mathbf{B}\times\nabla p + \mu_0 b\,\nabla p\bigr) - + a(\nabla\times\mathbf{B})\times\nabla p\bigr]^2 +a(\nabla p)^2\nabla\cdot\bigl(b\nabla\times\mathbf B+c\mathbf B\bigr) +&= +-\bigl(b\nabla\times\mathbf B+c\mathbf B\bigr)\cdot\nabla\!\bigl[a(\nabla p)^2\bigr] \nonumber\\ -&+ a(\nabla\times\mathbf{B})\times(\nabla p)\cdot\nabla\times(a\mathbf{B}\times\nabla p) -- a^2\bigl[(\nabla\times\mathbf{B})\times\nabla p\bigr]^2 -+ \mu_0 a(\nabla p)^2\nabla\cdot(a\nabla p) -\Bigr\} +&\quad ++\nabla\cdot\!\Bigl[a(\nabla p)^2\bigl(b\nabla\times\mathbf B+c\mathbf B\bigr)\Bigr]. \end{align} - -Then, $\mu_0\nabla p=(\nabla\times\mathbf{B})\times\mathbf{B}$, +For a volume bounded by flux surfaces, \(\hat{\mathbf n}\cdot\mathbf B=0\) and \(\hat{\mathbf n}\cdot(\nabla\times\mathbf B)=0\), so the surface integral of the divergence term vanishes. Using also \(\nabla\cdot\mathbf B=0\) and \(\nabla\cdot(\nabla\times\mathbf B)=0\), one obtains \begin{align} -&-a^2\bigl[(\nabla\times\mathbf{B})\times\nabla p\bigr]^2 -+ a(\nabla\times\mathbf{B})\times(\nabla p)\cdot\nabla\times(a\mathbf{B}\times\nabla p) -+ \mu_0 a(\nabla p)^2\nabla\cdot(a\nabla p) -\nonumber\\ -&= -a^2(\nabla\times\mathbf{B})^2(\nabla p)^2 -+ a^2(\nabla\times\mathbf{B})\times(\nabla p)\cdot\nabla\times(\mathbf{B}\times\nabla p) -\nonumber\\ -&\quad + a(\nabla\times\mathbf{B})\times(\nabla p)\cdot(\nabla a)\times(\mathbf{B}\times\nabla p) -+ \mu_0 a^2(\nabla p)^2\nabla^2 p -+ \mu_0 a(\nabla p)^2(\nabla a)\cdot\nabla p -\nonumber\\ -&= -a^2(\nabla\times\mathbf{B})^2(\nabla p)^2 -+ a^2(\nabla\times\mathbf{B})\times(\nabla p)\cdot\Bigl[(\nabla p)\cdot\nabla\mathbf{B} -- \mathbf{B}\cdot\nabla\nabla p + \mathbf{B}\nabla^2 p\Bigr] +2\mu_0 \delta W_F += +\int d^3r\Bigl\{ +&\mu_0\gamma p\,|\nabla\cdot\boldsymbol{\xi}|^2 ++\Bigl|\mathbf Q+a(\nabla\times\mathbf B)\times\nabla p\Bigr|^2 \nonumber\\ -&\quad + a(\nabla\times\mathbf{B})\times(\nabla p)\cdot\Bigl[\mathbf{B}(\nabla a)\cdot\nabla p -- (\nabla p)\,\mathbf{B}\cdot\nabla a\Bigr] -+ \mu_0 a^2(\nabla p)^2\nabla^2 p -+ \mu_0 a(\nabla p)^2(\nabla a)\cdot\nabla p +&\quad +-a^2\Bigl|(\nabla\times\mathbf B)\times\nabla p\Bigr|^2 ++a(\nabla\times\mathbf B)\times\nabla p\cdot\nabla\times(a\,\mathbf B\times\nabla p) \nonumber\\ -&= a^2(\nabla p)^2\Bigl[-(\nabla\times\mathbf{B})^2 -+ (\nabla\times\mathbf{B})\times\mathbf{n}\cdot(\mathbf{n}\cdot\nabla\mathbf{B} -- \mathbf{B}\cdot\nabla\mathbf{n})\Bigr]. +&\quad ++\mu_0 a(\nabla p)^2\nabla\cdot(a\nabla p) +\Bigr\}. \end{align} -Since $\nabla\cdot\mathbf{B}=0$, it follows that -\begin{equation} -0=\nabla(\mathbf{n}\cdot\mathbf{B}) -=\mathbf{n}\cdot\nabla\mathbf{B}+\mathbf{B}\cdot\nabla\mathbf{n} -+\mathbf{n}\times(\nabla\times\mathbf{B})+\mathbf{B}\times(\nabla\times\mathbf{n}), -\end{equation} -whence +Using $\mu_0\nabla p = (\nabla\times\mathbf B)\times\mathbf B$ and $\hat{\mathbf n}\cdot\mathbf B=0$, the three terms (L485--489) combine to: \begin{align} -&-(\nabla\times\mathbf{B})^2 -+(\nabla\times\mathbf{B})\times\mathbf{n}\cdot\bigl[\mathbf{n}\cdot\nabla\mathbf{B} --\mathbf{B}\cdot\nabla\mathbf{n}\bigr] -\nonumber\\ -&=-(\nabla\times\mathbf{B})^2 -+(\nabla\times\mathbf{B})\times\mathbf{n}\cdot\bigl[-2\mathbf{B}\cdot\nabla\mathbf{n} --\mathbf{n}\times(\nabla\times\mathbf{B})-\mathbf{B}\times(\nabla\times\mathbf{n})\bigr] -\nonumber\\ -&=-(\nabla\times\mathbf{B})^2+\bigl[\mathbf{n}\times(\nabla\times\mathbf{B})\bigr]^2 --2(\nabla\times\mathbf{B})\times\mathbf{n}\cdot(\mathbf{B}\cdot\nabla\mathbf{n}) -\nonumber\\ -&\quad -(\nabla\times\mathbf{B})\cdot\mathbf{B}\,\mathbf{n}\cdot\nabla\times\mathbf{n} --(\nabla\times\mathbf{B})\cdot(\nabla\times\mathbf{n})\,\mathbf{n}\cdot\mathbf{B} -\nonumber\\ -&=-2(\nabla\times\mathbf{B})\times\mathbf{n}\cdot(\mathbf{B}\cdot\nabla\mathbf{n}). +&-a^2\Bigl|(\nabla\times\mathbf B)\times\nabla p\Bigr|^2 +a(\nabla\times\mathbf B)\times\nabla p\cdot\nabla\times(a\,\mathbf B\times\nabla p) +\mu_0 a(\nabla p)^2\nabla\cdot(a\nabla p) \nonumber\\ +&= a^2(\nabla p)^2 \Bigl[-|\nabla\times\mathbf B|^2 +(\nabla\times\mathbf B)\times\hat{\mathbf n}\cdot\Bigl((\hat{\mathbf n}\cdot\nabla)\mathbf B-(\mathbf B\cdot\nabla)\hat{\mathbf n}\Bigr)\Bigr]. \end{align} -Since $\mu_0\nabla p=(\nabla\times\mathbf{B})\times\mathbf{B}$, it follows that -$\mathbf{n}\cdot\nabla\times\mathbf{B}=0$, whence +Now, since \(\hat{\mathbf n}\cdot\mathbf B=0\), \begin{equation} -\bigl[\mathbf{n}\times(\nabla\times\mathbf{B})\bigr]^2 -=\mathbf{n}^2(\nabla\times\mathbf{B})^2-(\mathbf{n}\cdot\nabla\times\mathbf{B})^2 -=(\nabla\times\mathbf{B})^2. +0=\nabla(\hat{\mathbf n}\cdot\mathbf B) += +(\hat{\mathbf n}\cdot\nabla)\mathbf B ++(\mathbf B\cdot\nabla)\hat{\mathbf n} ++\hat{\mathbf n}\times(\nabla\times\mathbf B) ++\mathbf B\times(\nabla\times\hat{\mathbf n}). \end{equation} - -Also, since $\mathbf{n}$ is a unit normal to the surfaces $p=\text{const}$, for any area -contained in such a surface, Stokes' theorem gives +Moreover, \begin{equation} -\int d^2r\,\mathbf{n}\cdot\nabla\times\mathbf{n} -=\oint d\mathbf{r}\cdot\mathbf{n}=0, +(\nabla\times\mathbf B)\cdot\hat{\mathbf n}=0, +\end{equation} +and, since \(\hat{\mathbf n}=\lambda\nabla\psi\) with \(\lambda=|\nabla\psi|^{-1}\), +\begin{equation} +\nabla\times\hat{\mathbf n} += +\nabla\lambda\times\nabla\psi, +\qquad +\hat{\mathbf n}\cdot(\nabla\times\hat{\mathbf n})=0. +\end{equation} +Therefore, +\begin{equation} +-|\nabla\times\mathbf B|^2 ++(\nabla\times\mathbf B)\times\hat{\mathbf n}\cdot +\Bigl((\hat{\mathbf n}\cdot\nabla)\mathbf B-(\mathbf B\cdot\nabla)\hat{\mathbf n}\Bigr) += +-2\,(\nabla\times\mathbf B)\times\hat{\mathbf n}\cdot(\mathbf B\cdot\nabla\hat{\mathbf n}). \end{equation} -and since the surface is arbitrary, $\mathbf{n}\cdot\nabla\times\mathbf{n}=0$. -Thus one can write, +Using \(a\nabla p=\xi_n\hat{\mathbf n}\) and \(\mu_0\mathbf j=\nabla\times\mathbf B\), we finally obtain \begin{equation} -2\mu_0 W_F -=\int_I d^3r\Bigl\{ -\mu_0\gamma p(\nabla\cdot\boldsymbol{\xi})^2 -+\bigl[\mathbf{Q}+(\nabla\times\mathbf{B})\times\mathbf{n}\,(\mathbf{n}\cdot\boldsymbol{\xi})\bigr]^2 --2(\mathbf{n}\cdot\boldsymbol{\xi})^2\,(\nabla\times\mathbf{B})\times\mathbf{n}\cdot(\mathbf{B}\cdot\nabla\mathbf{n}) -\Bigr\}. +2\mu_0 \delta W_F += +\int d^3r\left\{ +\Bigl|\mathbf Q+\xi_n(\mu_0\mathbf j\times\hat{\mathbf n})\Bigr|^2 ++\mu_0\gamma p\,|\nabla\cdot\boldsymbol{\xi}|^2 +-2\,|\xi_n|^2\,(\mu_0\mathbf j\times\hat{\mathbf n})\cdot(\mathbf B\cdot\nabla\hat{\mathbf n}) +\right\}. +\end{equation} +Defining +\begin{equation} +K \equiv 2\,(\mathbf j\times\hat{\mathbf n})\cdot(\mathbf B\cdot\nabla\hat{\mathbf n}), +\end{equation} +the Bernstein form becomes +\begin{equation} +\delta W_F += +\frac{1}{2\mu_0}\int d^3r\left\{ +\Bigl|\mathbf Q+\xi_n(\mu_0\mathbf j\times\hat{\mathbf n})\Bigr|^2 ++\mu_0\gamma p\,|\nabla\cdot\boldsymbol{\xi}|^2 +-\mu_0 K\,|\xi_n|^2 +\right\}. \end{equation} -% If desired, replace curl B by current density j: -% \nabla\times\mathbf{B} = \mu_0\mathbf{j}, so the equilibrium is \nabla p=\mathbf{j}\times\mathbf{B}. -% \begin{align} -% K &= 2(\mathbf{j} \times \hat{n}) \cdot (\mathbf{B} \cdot \nabla) \hat{n} \\ -% &=\frac{2}{|\nabla \psi|^2}(\mathbf{j} \times \nabla \psi) \cdot (\mathbf{B} \cdot \nabla) \nabla \psi \\ -% &=-(\frac{\mathbf{j} \cdot \mathbf{B}}{B^2})\mathbf{B} \times \nabla \psi\, \cdot\, (\nabla \times \frac{\mathbf{B} \times \nabla \psi}{|\nabla \psi|^2}) + \mathbf{j} \cdot \mathbf{B} + 2p'|\nabla \psi|^2 \kappa \cdot \nabla \psi \\ -% &=\frac{2}{|\nabla \chi|^2}(\mathbf{j} \times \nabla \psi) \cdot (\mathbf{B} \cdot \nabla) \nabla \chi -% \end{align} \subsection{Derivation of $K$ with explicit $\mu_0$} -% We define -% \begin{equation} -% \hat{\mathbf n} \equiv \frac{\nabla\psi}{|\nabla\psi|}, -% \qquad -% \mathbf j \equiv \frac{\nabla\times\mathbf B}{\mu_0}, -% \qquad -% \nabla p = p'(\psi)\nabla\psi, -% \qquad -% \sigma \equiv \frac{\mathbf j\cdot\mathbf B}{B^2}, -% \end{equation} -% \begin{equation} -% \mathbf b \equiv \frac{\mathbf B}{B}, -% \qquad -% \boldsymbol{\kappa}\equiv (\mathbf b\cdot\nabla)\mathbf b, -% \qquad -% \kappa_\psi \equiv \boldsymbol{\kappa}\cdot\nabla\psi. -% \end{equation} - We start from \begin{equation} \color{blue} K \equiv 2(\mathbf j\times \hat{\mathbf n})\cdot(\mathbf B\cdot\nabla)\hat{\mathbf n}. \end{equation} - Since -\color{blue}\begin{equation} -(\mathbf B\cdot\nabla)\hat{\mathbf n} -= -(\mathbf B\cdot\nabla)\left(\frac{\nabla\psi}{|\nabla\psi|}\right) -= -\frac{(\mathbf B\cdot\nabla)\nabla\psi}{|\nabla\psi|} -+ -\nabla\psi\,(\mathbf B\cdot\nabla)\left(\frac{1}{|\nabla\psi|}\right), -\end{equation} -\color{blue}\begin{equation} +\color{blue}\begin{align} +(\mathbf B\cdot\nabla)\hat{\mathbf n} &= (\mathbf B\cdot\nabla)\left(\frac{\nabla\psi}{|\nabla\psi|}\right), (\mathbf j\times \hat{\mathbf n})\cdot \nabla\psi = 0, -\end{equation} +\end{align} \color{black} -we obtain +we have \begin{equation} \color{blue}K \equiv 2(\mathbf j\times \hat{\mathbf n})\cdot(\mathbf B\cdot\nabla)\hat{\mathbf n} @@ -591,64 +569,17 @@ \subsection{Derivation of $K$ with explicit $\mu_0$} (\mathbf j\times\nabla\psi)\cdot(\mathbf B\cdot\nabla)\nabla\psi. \end{equation} -Now use $\mathbf B\cdot\nabla\psi=0$. Then -\begin{equation} -0=\nabla(\mathbf B\cdot\nabla\psi) -= -(\mathbf B\cdot\nabla)\nabla\psi -+ -(\nabla\psi\cdot\nabla)\mathbf B -+ -\nabla\psi\times(\nabla\times\mathbf B), -\end{equation} +Now use $\mathbf B\cdot\nabla\psi=0$: \begin{equation} -(\mathbf B\cdot\nabla)\nabla\psi -= --(\nabla\psi\cdot\nabla)\mathbf B --\mu_0\,\nabla\psi\times\mathbf j. +0=\nabla(\mathbf B\cdot\nabla\psi) = (\mathbf B\cdot\nabla)\nabla\psi + (\nabla\psi\cdot\nabla)\mathbf B + \nabla\psi\times(\nabla\times\mathbf B), \end{equation} - -Substituting this into $K$ gives +thus \color{blue}\begin{align} -K -&= --\frac{2}{|\nabla\psi|^2} -(\mathbf j\times\nabla\psi)\cdot -\Big[(\nabla\psi\cdot\nabla)\mathbf B+\mu_0\,\nabla\psi\times\mathbf j\Big] -\\ -&= --\frac{2}{|\nabla\psi|^2} -(\mathbf j\times\nabla\psi)\cdot(\nabla\psi\cdot\nabla)\mathbf B -+\frac{2\mu_0}{|\nabla\psi|^2}\,|\mathbf j\times\nabla\psi|^2. +K &= 2\mu_0 j^2 - \frac{2}{|\nabla\psi|^2}(\mathbf j\times\nabla\psi)\cdot(\nabla\psi\cdot\nabla)\mathbf B. \end{align} - \color{black} -Because -\begin{equation} -0=\mathbf j\cdot\nabla p = p'\,\mathbf j\cdot\nabla\psi, \mathbf j\cdot\nabla\psi=0 -\end{equation} -\begin{equation} -|\mathbf j\times\nabla\psi|^2 = j^2 |\nabla\psi|^2. -\end{equation} -Thus, -\begin{equation} -\color{blue}K -= -2\mu_0 j^2 --\frac{2}{|\nabla\psi|^2} -(\mathbf j\times\nabla\psi)\cdot(\nabla\psi\cdot\nabla)\mathbf B. -\end{equation} -Now decompose the current as -\begin{equation} -\mathbf j = \mathbf j_{\parallel}+\mathbf j_{\perp}, -\qquad -\mathbf j_{\parallel}=\sigma \mathbf B, -\qquad -\mathbf j_{\perp}=\frac{\mathbf B\times\nabla p}{B^2} -=\frac{p'}{B^2}\mathbf B\times\nabla\psi. -\end{equation} -Then +Decompose $\mathbf j = \sigma\mathbf B + \frac{p'}{B^2}\mathbf B\times\nabla\psi \equiv \mathbf j_{\parallel}+\mathbf j_{\perp}$: \begin{equation} \color{blue}K = K_{\parallel}+K_{\perp}, \end{equation} @@ -668,304 +599,154 @@ \subsection{Derivation of $K$ with explicit $\mu_0$} \color{black} \paragraph{1. Perpendicular part $K_{\perp}$} -Using -\begin{equation} -\mathbf j_{\perp}=\frac{p'}{B^2}\mathbf B\times\nabla\psi, -\end{equation} -we obtain -\begin{align} -K_{\perp} -&= -\frac{2\mu_0 p'^2 |\nabla\psi|^2}{B^2} --\frac{2p'}{B^2|\nabla\psi|^2} -\Big[(\mathbf B\times\nabla\psi)\times\nabla\psi\Big] -\cdot(\nabla\psi\cdot\nabla)\mathbf B. -\end{align} - -Now, +With $\mathbf j_{\perp}=\frac{p'}{B^2}\mathbf B\times\nabla\psi$: \begin{equation} -(\mathbf B\times\nabla\psi)\times\nabla\psi -= -\nabla\psi(\mathbf B\cdot\nabla\psi)-\mathbf B|\nabla\psi|^2 -= --\mathbf B|\nabla\psi|^2, +j_{\perp}^{2} = \frac{p'^{\,2}}{B^{2}}|\nabla\psi|^{2}, \end{equation} -since $\mathbf B\cdot\nabla\psi=0$. Hence -\begin{align} -K_{\perp} -&= -\frac{2\mu_0 p'^2 |\nabla\psi|^2}{B^2} -+\frac{2p'}{B^2}\,\mathbf B\cdot(\nabla\psi\cdot\nabla)\mathbf B -\\ -&= -\frac{2p'}{B^2} -\left[ -\mu_0\,\nabla p\cdot\nabla\psi -+\mathbf B\cdot(\nabla\psi\cdot\nabla)\mathbf B -\right] -\\ -&= -\frac{2p'}{B^2} -\left[ -\mu_0\,(\mathbf j\times\mathbf B)\cdot\nabla\psi -+\mathbf B\cdot(\nabla\psi\cdot\nabla)\mathbf B -\right] -\\ -&= -\frac{2p'}{B^2}\, -\mathbf B\cdot -\left[ -(\nabla\psi\cdot\nabla)\mathbf B+\mu_0\,\nabla\psi\times\mathbf j -\right]. -\end{align} - -Using +where $\mathbf B\cdot\nabla\psi=0$. Also, \begin{equation} -(\nabla\psi\cdot\nabla)\mathbf B+\mu_0\,\nabla\psi\times\mathbf j -= --(\mathbf B\cdot\nabla)\nabla\psi, +\mathbf j_{\perp}\times\nabla\psi = -\frac{p'}{B^{2}}\mathbf B|\nabla\psi|^{2}. \end{equation} -we get +Hence \begin{equation} -K_{\perp} -= --\frac{2p'}{B^2}\,\mathbf B\cdot(\mathbf B\cdot\nabla)\nabla\psi. +K_{\perp} = \frac{2\mu_{0}p'^{\,2}}{B^{2}}|\nabla\psi|^{2} + \frac{2p'}{B^{2}}\mathbf B\cdot(\nabla\psi\cdot\nabla)\mathbf B. \end{equation} -Also, +To simplify, use $0=\nabla(\mathbf B\cdot\nabla\psi) = (\mathbf B\cdot\nabla)\nabla\psi + (\nabla\psi\cdot\nabla)\mathbf B + \nabla\psi\times(\nabla\times\mathbf B)$. +Dotting with $\mathbf B$ and using $\nabla\times\mathbf B=\mu_{0}\mathbf j$: \begin{equation} -0=(\mathbf B\cdot\nabla)(\mathbf B\cdot\nabla\psi) -= -((\mathbf B\cdot\nabla)\mathbf B)\cdot\nabla\psi -+ -\mathbf B\cdot(\mathbf B\cdot\nabla)\nabla\psi, +\mathbf B\cdot(\nabla\psi\cdot\nabla)\mathbf B = -\mathbf B\cdot(\mathbf B\cdot\nabla)\nabla\psi - \mu_{0}\mathbf B\cdot(\nabla\psi\times\mathbf j). \end{equation} -so that +From $(\mathbf B\cdot\nabla)(\mathbf B\cdot\nabla\psi)=0$: \begin{equation} -\mathbf B\cdot(\mathbf B\cdot\nabla)\nabla\psi -= --((\mathbf B\cdot\nabla)\mathbf B)\cdot\nabla\psi. +\mathbf B\cdot(\mathbf B\cdot\nabla)\nabla\psi = -((\mathbf B\cdot\nabla)\mathbf B)\cdot\nabla\psi. \end{equation} -Therefore, -\begin{equation} -K_{\perp} -= -\frac{2p'}{B^2} -\big((\mathbf B\cdot\nabla)\mathbf B\big)\cdot\nabla\psi. -\end{equation} - -Finally, with $\mathbf B=B\mathbf b$, +From equilibrium $\mathbf j\times\mathbf B=p'\nabla\psi$: \begin{equation} -(\mathbf B\cdot\nabla)\mathbf B -= -B^2(\mathbf b\cdot\nabla)\mathbf b -+ -B(\mathbf b\cdot\nabla B)\mathbf b, +\mathbf B\cdot(\nabla\psi\times\mathbf j) = p'|\nabla\psi|^{2}. \end{equation} -and since $\mathbf b\cdot\nabla\psi=0$, +Therefore \begin{equation} -\big((\mathbf B\cdot\nabla)\mathbf B\big)\cdot\nabla\psi -= -B^2\,\boldsymbol{\kappa}\cdot\nabla\psi -= -B^2\kappa_\psi. +\mathbf B\cdot(\nabla\psi\cdot\nabla)\mathbf B = ((\mathbf B\cdot\nabla)\mathbf B)\cdot\nabla\psi - \mu_{0}p'|\nabla\psi|^{2}. \end{equation} -Thus, + +Substituting: +\begin{align} +K_{\perp} &= \frac{2\mu_{0}p'^{\,2}}{B^{2}}|\nabla\psi|^{2} + \frac{2p'}{B^{2}}\left[((\mathbf B\cdot\nabla)\mathbf B)\cdot\nabla\psi - \mu_{0}p'|\nabla\psi|^{2}\right] \\ +&= \frac{2p'}{B^{2}}((\mathbf B\cdot\nabla)\mathbf B)\cdot\nabla\psi. +\end{align} + +With $\mathbf B=B\mathbf b$ and $\mathbf b\cdot\nabla\psi=0$: \begin{equation} -\boxed{ -K_{\perp}=2p'\kappa_\psi -}. +((\mathbf B\cdot\nabla)\mathbf B)\cdot\nabla\psi = B^2\,\boldsymbol{\kappa}\cdot\nabla\psi = B^2\kappa_\psi. \end{equation} +Thus, $\boxed{K_{\perp}=2p'\kappa_\psi}$. \paragraph{2. Parallel part $K_{\parallel}$} -Since $\mathbf j_{\parallel}=\sigma\mathbf B$, +With $\mathbf j_{\parallel}=\sigma\mathbf B$: \begin{equation} -K_{\parallel} -= -2\mu_0\sigma^2B^2 --\frac{2\sigma}{|\nabla\psi|^2} -(\mathbf B\times\nabla\psi)\cdot(\nabla\psi\cdot\nabla)\mathbf B. +K_{\parallel} = 2\mu_0\sigma^2B^2 - \frac{2\sigma}{|\nabla\psi|^2}(\mathbf B\times\nabla\psi)\cdot(\nabla\psi\cdot\nabla)\mathbf B. \end{equation} -Now use the vector identity +Define $\mathbf A \equiv \mathbf B\times\nabla\psi$. Using \begin{equation} -\nabla\times(\mathbf B\times\nabla\psi) -= -\mathbf B\nabla^2\psi -+ -(\nabla\psi\cdot\nabla)\mathbf B -- -(\mathbf B\cdot\nabla)\nabla\psi. +\nabla\times(\mathbf B\times\nabla\psi) = \mathbf B\nabla^2\psi + (\nabla\psi\cdot\nabla)\mathbf B - (\mathbf B\cdot\nabla)\nabla\psi, \end{equation} -Substituting +and from $0=\nabla(\mathbf B\cdot\nabla\psi) = (\mathbf B\cdot\nabla)\nabla\psi + (\nabla\psi\cdot\nabla)\mathbf B + \nabla\psi\times(\nabla\times\mathbf B)$ with $\nabla\times\mathbf B=\mu_0\mathbf j$: \begin{equation} -(\mathbf B\cdot\nabla)\nabla\psi -= --(\nabla\psi\cdot\nabla)\mathbf B --\mu_0\,\nabla\psi\times\mathbf j, +(\mathbf B\cdot\nabla)\nabla\psi = -(\nabla\psi\cdot\nabla)\mathbf B - \mu_0\nabla\psi\times\mathbf j. \end{equation} -we obtain +Therefore \begin{equation} -\nabla\times(\mathbf B\times\nabla\psi) -= -\mathbf B\nabla^2\psi -+ -2(\nabla\psi\cdot\nabla)\mathbf B -+ -\mu_0\,\nabla\psi\times\mathbf j. +\nabla\times(\mathbf B\times\nabla\psi) = \mathbf B\nabla^2\psi + 2(\nabla\psi\cdot\nabla)\mathbf B + \mu_0\nabla\psi\times\mathbf j. \end{equation} -Taking the dot product with $\mathbf B\times\nabla\psi$ gives +Dotting with $\mathbf A=\mathbf B\times\nabla\psi$ (note: $\mathbf A\cdot\mathbf B=0$): \begin{equation} -(\mathbf B\times\nabla\psi)\cdot\nabla\times(\mathbf B\times\nabla\psi) -= -2(\mathbf B\times\nabla\psi)\cdot(\nabla\psi\cdot\nabla)\mathbf B -+ -\mu_0\,(\mathbf B\times\nabla\psi)\cdot(\nabla\psi\times\mathbf j), +\mathbf A\cdot\nabla\times(\mathbf B\times\nabla\psi) = 2\mathbf A\cdot(\nabla\psi\cdot\nabla)\mathbf B + \mu_0\mathbf A\cdot(\nabla\psi\times\mathbf j), \end{equation} -because +giving \begin{equation} -(\mathbf B\times\nabla\psi)\cdot\mathbf B = 0. +\mathbf A\cdot(\nabla\psi\cdot\nabla)\mathbf B = \frac{1}{2}\left[\mathbf A\cdot\nabla\times(\mathbf B\times\nabla\psi) - \mu_0\mathbf A\cdot(\nabla\psi\times\mathbf j)\right]. \end{equation} -Hence -\begin{align} -K_{\parallel} -&= -2\mu_0\sigma^2B^2 -- -\frac{\sigma}{|\nabla\psi|^2} -(\mathbf B\times\nabla\psi)\cdot\nabla\times(\mathbf B\times\nabla\psi) -+ -\frac{\mu_0\sigma}{|\nabla\psi|^2} -(\mathbf B\times\nabla\psi)\cdot(\nabla\psi\times\mathbf j). -\end{align} -Now, +Substituting into $K_{\parallel}$: \begin{equation} -(\mathbf B\times\nabla\psi)\cdot(\nabla\psi\times\mathbf j) -= -(\mathbf B\cdot\nabla\psi)(\nabla\psi\cdot\mathbf j) -- -(\mathbf B\cdot\mathbf j)|\nabla\psi|^2 -= --\sigma B^2|\nabla\psi|^2, -\end{equation} -so -\begin{equation} -K_{\parallel} -= -\mu_0\sigma^2B^2 -- -\frac{\sigma}{|\nabla\psi|^2} -(\mathbf B\times\nabla\psi)\cdot\nabla\times(\mathbf B\times\nabla\psi). +K_{\parallel} = 2\mu_0\sigma^2B^2 - \frac{\sigma}{|\nabla\psi|^2}\mathbf A\cdot\nabla\times(\mathbf B\times\nabla\psi) + \frac{\mu_0\sigma}{|\nabla\psi|^2}\mathbf A\cdot(\nabla\psi\times\mathbf j). \end{equation} -Define the shear quantity -\begin{equation} -S -\equiv -- -\frac{\mathbf B\times\nabla\psi}{|\nabla\psi|^2} -\cdot -\nabla\times\left( -\frac{\mathbf B\times\nabla\psi}{|\nabla\psi|^2} -\right). -\end{equation} -Also, +For the last term, using the vector identity $(\mathbf a\times\mathbf b)\cdot(\mathbf c\times\mathbf d) = (\mathbf a\cdot\mathbf c)(\mathbf b\cdot\mathbf d) - (\mathbf a\cdot\mathbf d)(\mathbf b\cdot\mathbf c)$: \begin{equation} -(\mathbf B\times\nabla\psi)\cdot -\left[ -\nabla\left(\frac{1}{|\nabla\psi|^2}\right) -\times -(\mathbf B\times\nabla\psi) -\right] -=0, +(\mathbf B\times\nabla\psi)\cdot(\nabla\psi\times\mathbf j) = (\mathbf B\cdot\nabla\psi)(\nabla\psi\cdot\mathbf j) - (\mathbf B\cdot\mathbf j)|\nabla\psi|^2 = -\sigma B^2|\nabla\psi|^2, \end{equation} -and therefore +where $\mathbf B\cdot\nabla\psi=0$ and $\mathbf B\cdot\mathbf j=\sigma B^2$ were used. Therefore +\begin{align} +K_{\parallel} &= 2\mu_0\sigma^2B^2 - \frac{\sigma}{|\nabla\psi|^2}(\mathbf B\times\nabla\psi)\cdot\nabla\times(\mathbf B\times\nabla\psi) - \mu_0\sigma^2B^2 \\ +&= \mu_0\sigma^2B^2 - \frac{\sigma}{|\nabla\psi|^2}(\mathbf B\times\nabla\psi)\cdot\nabla\times(\mathbf B\times\nabla\psi). +\end{align} + +Define \begin{equation} -\frac{1}{|\nabla\psi|^2} -(\mathbf B\times\nabla\psi)\cdot\nabla\times(\mathbf B\times\nabla\psi) -= -(\mathbf B\times\nabla\psi)\cdot -\nabla\times\left( -\frac{\mathbf B\times\nabla\psi}{|\nabla\psi|^2} -\right). +S \equiv -\frac{\mathbf B\times\nabla\psi}{|\nabla\psi|^2}\cdot\nabla\times\left(\frac{\mathbf B\times\nabla\psi}{|\nabla\psi|^2}\right), \end{equation} -Thus, +which is equivalent to $S = -\frac{1}{|\nabla\psi|^2}(\mathbf B\times\nabla\psi)\cdot\nabla\times(\mathbf B\times\nabla\psi)$ by the product rule for curl. +Thus \begin{equation} -\boxed{ -K_{\parallel} -= -|\nabla\psi|^2 \sigma S + \mu_0\sigma^2B^2 -}. +\boxed{K_{\parallel} = \mu_0\sigma^2B^2 + \sigma|\nabla\psi|^2 S}. \end{equation} \paragraph{3. Final expression} -Combining the two pieces, \begin{equation} \boxed{ -K -= -K_{\parallel}+K_{\perp} -= -|\nabla\psi|^2 \sigma S -+\mu_0\sigma^2B^2 -+2p'\kappa_\psi -}. +K = |\nabla\psi|^2 \sigma S + \mu_0\sigma^2B^2 + 2p'\kappa_\psi +} \end{equation} -Therefore it is convenient to define +\subsection{Expression of $K$ in DCON coordinates} + +Following the Bernstein formulation from §3.1-3.2, the energy principle yields +\color{blue} \begin{equation} -K_{\rm shear}\equiv |\nabla\psi|^2 \sigma S, -\qquad -K_\sigma\equiv \mu_0\sigma^2B^2, -\qquad -K_{p\kappa}\equiv 2p'\kappa_\psi, +K = |\nabla\psi|^2 \sigma S + \mu_0 \sigma^2 B^2 + 2p'\kappa_\psi, \quad +\sigma \equiv \frac{\mathbf j\cdot\mathbf B}{B^2}, \quad +\mathbf j \equiv \frac{\nabla\times\mathbf B}{\mu_0}. \end{equation} -so that +\color{black} +In §3.2, this expression was obtained in a general flux-coordinate form. We now rewrite +it so that each ingredient can be evaluated directly from the DCON equilibrium data. From +this point on, $\psi$ denotes the DCON normalized flux coordinate, $\psi\in[0,1]$, and +$p' \equiv dp/d\psi$ is the derivative with respect to this normalized flux label. + +In DCON coordinates $(\psi,\theta,\zeta)$, \begin{equation} -K = K_{\rm shear}+K_\sigma+K_{p\kappa}. \quad (\hat{\mathbf n} \equiv \frac{\nabla\psi}{|\nabla\psi|}, -\sigma \equiv \frac{\mathbf j\cdot\mathbf B}{B^2}, -\mathbf b \equiv \frac{\mathbf B}{B}, -\boldsymbol{\kappa}\equiv (\mathbf b\cdot\nabla)\mathbf b, -\kappa_\psi \equiv \boldsymbol{\kappa}\cdot\nabla\psi.) +\mathbf B = \chi'(\psi)\,\nabla\psi\times\nabla\alpha, \quad +\alpha \equiv q(\psi)\theta-\zeta, \quad +\chi' \equiv \frac{d\chi}{d\psi}, \quad +\mathcal J^{-1} \equiv \nabla\psi\cdot(\nabla\theta\times\nabla\zeta). \end{equation} -\subsection{Bernstein $K$ in DCON coordinates} - -We use the convention +We use the contravariant metric elements \begin{equation} -K -= -|\nabla\psi|^2 \sigma S -+\mu_0 \sigma^2 B^2 -+2p'\kappa_\psi, -\qquad -\sigma \equiv \frac{\mathbf j\cdot\mathbf B}{B^2}, +g^{ij}\equiv \nabla q^i\cdot\nabla q^j, \qquad -\mathbf j \equiv \frac{\nabla\times\mathbf B}{\mu_0}. +(q^1,q^2,q^3) \equiv (\psi,\theta,\zeta), \end{equation} - -In DCON straight-field-line coordinates $(\psi,\theta,\zeta)$, we write +with in particular \begin{equation} -\mathbf B -= -\nabla\chi \times \nabla\alpha -= -\chi'(\psi)\,\nabla\psi\times\nabla\alpha, -\qquad -\alpha \equiv q(\psi)\theta-\zeta, -\qquad -\chi' \equiv \frac{d\chi}{d\psi}. +g^{\psi\psi}\equiv \nabla\psi\cdot\nabla\psi, \quad +g^{\psi\theta}\equiv \nabla\psi\cdot\nabla\theta, \quad +g^{\psi\zeta}\equiv \nabla\psi\cdot\nabla\zeta. \end{equation} - -The Jacobian is defined by +The combinations involving $\alpha=q\theta-\zeta$ are \begin{equation} -\mathcal J^{-1} -\equiv -\nabla\psi\cdot(\nabla\theta\times\nabla\zeta), +g^{\psi\alpha}\equiv \nabla\psi\cdot\nabla\alpha += q\,g^{\psi\theta}-g^{\psi\zeta}, +\end{equation} +\begin{equation} +g^{\alpha\alpha}\equiv \nabla\alpha\cdot\nabla\alpha += q^2 g^{\theta\theta}-2q\,g^{\theta\zeta}+g^{\zeta\zeta}. \end{equation} -so that the parallel gradient operator becomes +Accordingly, the parallel derivative operator becomes \begin{equation} \mathbf B\cdot\nabla = @@ -974,32 +755,40 @@ \subsection{Bernstein $K$ in DCON coordinates} \frac{\partial}{\partial\theta} + q\frac{\partial}{\partial\zeta} -\right). +\right), \end{equation} - -We also define the contravariant metric elements +and the field strength is written as \begin{equation} -g^{\psi\psi}\equiv \nabla\psi\cdot\nabla\psi, -\qquad -g^{\psi\theta}\equiv \nabla\psi\cdot\nabla\theta, -\qquad -g^{\psi\zeta}\equiv \nabla\psi\cdot\nabla\zeta. +\boxed{ +B^2 += +\chi'^2|\nabla\psi\times\nabla\alpha|^2 += +\chi'^2\left(g^{\psi\psi}g^{\alpha\alpha}-(g^{\psi\alpha})^2\right). +} \end{equation} +These relations provide the DCON input form used below for the explicit evaluation of +$S$, $\xi_\psi$, $\kappa_\psi$, and finally $K$. -\subsection{Expression of $S$ in DCON coordinates} +\subsubsection{Shear parameter $S$ in DCON} -We define +\color{blue} +For any flux label $\lambda$, the shear parameter associated with that label is \begin{equation} -S +S_{\lambda} \equiv -\, -\frac{\mathbf B\times\nabla\psi}{|\nabla\psi|^2} +\frac{\mathbf B\times\nabla\lambda}{|\nabla\lambda|^2} \cdot \nabla\times \left( -\frac{\mathbf B\times\nabla\psi}{|\nabla\psi|^2} -\right). +\frac{\mathbf B\times\nabla\lambda}{|\nabla\lambda|^2} +\right), \end{equation} +and the shear contribution to $K$ is $|\nabla\lambda|^2\sigma S_{\lambda}$. + +\color{black} +In this subsection we take $\lambda=\psi$, where $\psi$ is the DCON normalized flux label. Introduce \begin{equation} @@ -1054,7 +843,7 @@ \subsection{Expression of $S$ in DCON coordinates} Now, because $\nabla\chi' \parallel \nabla\psi$, the first term vanishes when contracted with $\boldsymbol{\Lambda}_\psi$, so \begin{align} -S +S_{\psi} &= -\boldsymbol{\Lambda}_\psi\cdot(\nabla\times\boldsymbol{\Lambda}_\psi) \\ @@ -1075,7 +864,7 @@ \subsection{Expression of $S$ in DCON coordinates} Therefore, \begin{equation} \boxed{ -S +S_{\psi} = \chi'\,\mathbf B\cdot\nabla \left( @@ -1083,6 +872,8 @@ \subsection{Expression of $S$ in DCON coordinates} \right). } \end{equation} +Here $S_{\psi}$ denotes the shear parameter associated with the DCON normalized flux +label $\psi$, not the $\chi/(2\pi)$-based shear used in the GPEC note. Next, \begin{align} @@ -1120,7 +911,7 @@ \subsection{Expression of $S$ in DCON coordinates} \end{equation} we obtain \begin{align} -S +S_{\psi} &= \frac{\chi'^2}{\mathcal J} \frac{\partial}{\partial\theta} @@ -1143,10 +934,58 @@ \subsection{Expression of $S$ in DCON coordinates} \right]. } \end{align} +Therefore, in DCON coordinates the shear contribution to $K$ is written as +\begin{equation} +\boxed{ +K_{\mathrm{shear}}^{DCON} += +g^{\psi\psi}\sigma S_{\psi} += +g^{\psi\psi}\sigma +\frac{\chi'^2}{\mathcal J} +\left[ +q' ++ +\frac{\partial}{\partial\theta} +\left( +\frac{q\,g^{\psi\theta}-g^{\psi\zeta}}{g^{\psi\psi}} +\right) +\right]. +} +\end{equation} -\subsection{Normal displacement $\xi_\psi$ in DCON coordinates} +\noindent\textbf{Relation to the GPEC note.} +If one instead uses the flux label +\begin{equation} +\lambda = \frac{\chi}{2\pi} = \frac{\chi'}{2\pi}\psi, +\end{equation} +then +\begin{equation} +S_{\lambda} += +\left(\frac{2\pi}{\chi'}\right)^2 S_{\psi} += +\frac{(2\pi)^2}{\mathcal J} +\left[ +q' ++ +\frac{\partial}{\partial\theta} +\left( +\frac{q\,g^{\psi\theta}-g^{\psi\zeta}}{g^{\psi\psi}} +\right) +\right]. +\end{equation} +This is the shear normalization used in the GPEC note. The first term of $K$ is the +same only when the corresponding gradient factor is used consistently: +\begin{equation} +\left|\nabla\left(\frac{\chi}{2\pi}\right)\right|^2\sigma S_{\lambda} += +g^{\psi\psi}\sigma S_{\psi}. +\end{equation} + +\subsubsection{Normal displacement $\xi_\psi$} -We define the normal displacement variable by +In DCON coordinates, the flux-normal displacement variable is \begin{equation} \xi_\psi \equiv @@ -1168,6 +1007,8 @@ \subsection{Normal displacement $\xi_\psi$ in DCON coordinates} \frac{\xi_\psi}{|\nabla\psi|}. } \end{equation} +The variable $\xi_\psi$ itself depends on the chosen flux label, but the ratio +$\xi_\psi/|\nabla\psi|$ does not. Using the DCON Fourier convention, \begin{equation} @@ -1189,29 +1030,53 @@ \subsection{Normal displacement $\xi_\psi$ in DCON coordinates} } \end{equation} -For the quadratic form in the energy principle, it is more precise to write +For the quadratic form in the energy principle, the magnitude squared is: \begin{equation} \boxed{ (\boldsymbol{\xi}_\perp\cdot\hat{\mathbf n}) (\boldsymbol{\xi}_\perp\cdot\hat{\mathbf n})^* = -\frac{\xi_\psi\xi_\psi^*}{|\nabla\psi|^2}. +\frac{\xi_\psi(\xi_\psi)^*}{g^{\psi\psi}}, +\qquad +g^{\psi\psi}=|\nabla\psi|^2. +} +\end{equation} +Since $\xi_\psi$ is represented as a complex Fourier expansion, the product with its +complex conjugate gives the magnitude squared. Therefore the Bernstein scalar term is +evaluated in DCON as +\begin{equation} +\boxed{ +K\left|\boldsymbol{\xi}_\perp\cdot\hat{\mathbf n}\right|^2 += +\frac{K}{g^{\psi\psi}}|\xi_\psi|^2. } \end{equation} -If one restricts to a real displacement, the complex conjugation may be dropped at the end. -\subsection{Expression of $\kappa_\psi$ in DCON coordinates} +\subsubsection{Curvature $\kappa_\psi$} -We define +\color{blue} +For any flux label $\lambda$, define \begin{equation} -\kappa_\psi +\kappa_\lambda \equiv -\boldsymbol{\kappa}\cdot\nabla\psi, +\boldsymbol{\kappa}\cdot\nabla\lambda, \qquad \boldsymbol{\kappa}\equiv(\mathbf b\cdot\nabla)\mathbf b, \qquad \mathbf b\equiv\frac{\mathbf B}{B}. \end{equation} +This is the magnetic-field-line curvature projected along the chosen flux-gradient +direction. + +\color{black} +In DCON coordinates we take $\lambda=\psi$, so +\begin{equation} +\kappa_\psi\equiv\boldsymbol{\kappa}\cdot\nabla\psi, +\qquad +p'\equiv\frac{dp}{d\psi}. +\end{equation} +Both $p'$ and $\kappa_\psi$ depend on this flux-label normalization, while their product +$p'\kappa_\psi$ is the invariant pressure-curvature combination entering $K$. Using the equilibrium force balance \begin{equation} @@ -1296,22 +1161,26 @@ \subsection{Expression of $\kappa_\psi$ in DCON coordinates} \right]. } \end{equation} +Here $B^2$, $\partial B^2/\partial\psi$, and $\partial B^2/\partial\theta$ are evaluated +from the DCON field-strength expression in §3.3.1. -\subsection{Final DCON expression for $K$} +\subsubsection{Final expression} +\color{black} Combining the DCON expressions above, we obtain \begin{equation} \boxed{ -K +K_{DCON} = -g^{\psi\psi}\sigma S_\psi +g^{\psi\psi}\sigma S_{\psi} +\mu_0\sigma^2B^2 +2p'\kappa_\psi. } \end{equation} -That is, +Here each flux-label dependent quantity is evaluated with the DCON normalized coordinate +$\psi$. Explicitly: \begin{align} -K(\psi,\theta) +K_{DCON}(\psi,\theta) &= g^{\psi\psi}\sigma \frac{\chi'^2}{\mathcal J} @@ -1335,308 +1204,6 @@ \subsection{Final DCON expression for $K$} \frac{1}{2}\frac{\partial B^2}{\partial\theta}g^{\psi\theta} \right]. \end{align} -% \subsection{Normalization of S between Chance and DCON coordinates} -% \noindent Blue symbols denote Chance variables and black symbols denote DCON variables; the subscripts are omitted in this subsection. - -% In Chance's formulation, the magnetic shear scalar \(S\) is defined as -% \begin{equation} -% \color{blue} -% S -% = -\,\frac{\mathbf{B}\times\nabla\psi}{|\nabla\psi|^2} -% \cdot -% \left( -% \nabla\times -% \frac{\mathbf{B}\times\nabla\psi}{|\nabla\psi|^2} -% \right). -% \end{equation} - -% Using the DCON normalization of the flux coordinate, -% \begin{equation} -% {\color{blue}\psi} -% = \frac{\chi^\prime}{2\pi}\, -% \psi, -% \qquad -% {\color{blue}\nabla \psi} -% = \frac{\chi^\prime}{2\pi}\, \nabla \psi, -% \end{equation} -% we can rewrite each factor in terms of DCON variables. - -% Hence, the normalized cross term becomes -% \begin{equation} -% \frac{{\color{blue}\mathbf{B}\times\nabla\psi}}{{\color{blue}|\nabla\psi|^2}} -% = \frac{2\pi}{\chi^\prime}\, -% \frac{\mathbf{B}\times\nabla\psi}{|\nabla\psi|^2}. -% \end{equation} - -% Substituting this back into the original definition of \(S\), we find -% \begin{align} -% {\color{blue}S} -% &= -\left(\frac{2\pi}{\chi^\prime}\right)^2 -% \frac{\mathbf{B}\times\nabla\psi}{|\nabla\psi|^2} -% \cdot -% \left[ -% \nabla\times -% \frac{\mathbf{B}\times\nabla\psi}{|\nabla\psi|^2} -% \right]\\ -% &= \left(\frac{2\pi}{\chi^\prime}\right)^2 -% \underbrace{\left[ -% -\,\frac{\mathbf{B}\times\nabla\psi}{|\nabla\psi|^2} -% \cdot -% \left( -% \nabla\times -% \frac{\mathbf{B}\times\nabla\psi}{|\nabla\psi|^2} -% \right)\right]}_{S}\\ -% &= -\,(2\pi)^2 \frac{\mathbf{B}\times\nabla\chi_{dcon}}{|\nabla\chi_{dcon}|^2} -% \cdot -% \left( -% \nabla\times -% \frac{\mathbf{B}\times\nabla\chi_{dcon}}{|\nabla\chi_{dcon}|^2} -% \right) -% \end{align} - -% Therefore, the final relation between the two shear definitions is -% \begin{equation} -% \boxed{ -% {\color{blue}S} -% = \left(\frac{2\pi}{\chi^\prime}\right)^2 -% S -% = c^{-2} S, -% \qquad -% S -% = \left(\frac{\chi^\prime}{2\pi}\right)^2 -% {\color{blue}S}. -% } -% \end{equation} - -% Below this point in this subsection, \(S\) denotes the DCON quantity. - -% \begin{align} -% \boldsymbol{\Lambda} -% &\equiv \frac{\mathbf{B} \times \nabla \chi_{dcon}}{|\nabla \chi_{dcon}|^2} -% = \frac{(\nabla \chi_{dcon} \times \nabla \alpha) \times \nabla \chi_{dcon}}{|\nabla \chi_{dcon}|^2} \\[4pt] -% &= \nabla \alpha -% - \frac{(\nabla \chi_{dcon} \cdot \nabla \alpha)}{|\nabla \chi_{dcon}|^2}\, \nabla \chi_{dcon}. -% \end{align} - -% The curl becomes ($\alpha\, \text{represents}\, \alpha_{dcon}$ below this point) -% \begin{align} -% \nabla \times \boldsymbol{\Lambda} -% &= -\,\nabla \times -% \left[ -% \frac{(\nabla \chi_{dcon} \cdot \nabla \alpha)}{|\nabla \chi_{dcon}|^2}\, \nabla \chi_{dcon} -% \right] \\[4pt] -% &= -\,\nabla \left(\frac{\nabla \chi_{dcon} \cdot \nabla \alpha}{|\nabla \chi_{dcon}|^2}\right) -% \times \nabla \chi_{dcon}, -% \end{align} - -% since $\nabla \times \nabla = 0$. The magnetic shear: - -% \begin{align} -% {\color{blue}S} -% &= - (2\pi)^2\, \boldsymbol{\Lambda} \cdot (\nabla \times \boldsymbol{\Lambda}) \\[4pt] -% &= - (2\pi)^2 -% \left[ -% \nabla \alpha -% - \frac{(\nabla \chi_{dcon} \cdot \nabla \alpha)}{|\nabla \chi_{dcon}|^2}\, \nabla \chi_{dcon} -% \right] -% \cdot -% \left[ -% \nabla \left(\frac{\nabla \chi_{dcon} \cdot \nabla \alpha}{|\nabla \chi_{dcon}|^2}\right) -% \times \nabla \chi_{dcon} -% \right] \\[6pt] -% &= (2\pi)^2\, \nabla \alpha \cdot -% \left[ -% \nabla \left(\frac{\nabla \chi_{dcon} \cdot \nabla \alpha}{|\nabla \chi_{dcon}|^2}\right) -% \times \nabla \chi_{dcon} -% \right] \\[6pt] -% &= (2\pi)^2\, (\nabla \chi_{dcon} \times \nabla \alpha) \cdot -% \nabla \left(\frac{\nabla \chi_{dcon} \cdot \nabla \alpha}{|\nabla \chi_{dcon}|^2}\right) \\[6pt] -% &= (2\pi)^2\, \mathbf{B} \cdot -% \nabla \left(\frac{\nabla \chi_{dcon} \cdot \nabla \alpha}{|\nabla \chi_{dcon}|^2}\right)\\ -% &= \frac{(2\pi)^2}{\chi\prime_{dcon}}\, \mathbf{B} \cdot \nabla (\frac{\nabla \psi \cdot \nabla \alpha}{\nabla\psi \cdot \nabla\psi}) -% \end{align} - - -% The parallel gradient operator is: -% \begin{equation} -% \mathbf{B} \cdot \nabla -% = B^{\theta} \frac{\partial}{\partial \theta} -% + B^{\zeta} \frac{\partial}{\partial \zeta} -% = \frac{\chi'}{\mathcal{J}} -% \left( -% \frac{\partial}{\partial \theta} -% + q \frac{\partial}{\partial \zeta} -% \right). -% \end{equation} - -% Also note -% \begin{align} -% \nabla \psi \cdot \nabla \alpha -% &= \nabla \psi \cdot \nabla \big(q(\psi)\theta - \zeta\big) -% = q'(\nabla \psi \cdot \nabla \psi)\theta -% + \nabla \psi \cdot \big(q \nabla \theta - \nabla \zeta\big). -% \end{align} - -% Since $\partial / \partial \zeta = 0$ for a tokamak, one obtains: -% \begin{align} -% {\color{blue}S} -% &= \frac{(2\pi)^2}{\mathcal{J}} -% \frac{\partial}{\partial \theta} -% \left[ -% q' \theta -% + \frac{q(\nabla \psi \cdot \nabla \theta) -% - (\nabla \psi \cdot \nabla \zeta)} -% {(\nabla \psi \cdot \nabla \psi)} -% \right] \\[6pt] -% &= \frac{(2\pi)^2}{\mathcal{J}} -% \left[ -% q' -% + \frac{\partial}{\partial \theta} -% \left( -% \frac{q(\nabla \psi \cdot \nabla \theta) -% - (\nabla \psi \cdot \nabla \zeta)} -% {(\nabla \psi \cdot \nabla \psi)} -% \right) -% \right]. -% \end{align} - -% \subsection{$\xi^{\psi}$ in DCON berstein caculation} - -% \begin{align} -% \boxed{ -% \boldsymbol{\xi}_\perp \cdot \hat{n} -% = \frac{\boldsymbol{\xi} \cdot \nabla \psi}{|\nabla \psi|} -% = \frac{\xi^\psi}{|\nabla \psi|}, -% } -% \qquad -% \boxed{ -% (\boldsymbol{\xi}_\perp \cdot \hat{n})^2 -% = \frac{(\xi^\psi)^2}{|\nabla \psi|^2}. -% } -% \end{align} - -% \begin{equation} -% \boxed{ -% \boldsymbol{\xi}_\perp \cdot \hat{n} -% = \frac{1}{|\nabla \psi|} -% \sum_{m,n} v_{m,n}(\psi)\, e^{2\pi i(m\theta - n\zeta)}. -% } -% \end{equation} - -% \subsection{$\boldsymbol{\kappa}$ in DCON berstein caculation} -% \noindent Blue symbols denote Chance variables and black symbols denote DCON variables; the subscripts are omitted in this subsection. -% \begin{align} -% \kappa^\psi &\equiv \boldsymbol{\kappa} \cdot \nabla \psi. -% \end{align} - -% \begin{align} -% B^2 \boldsymbol{\kappa} -% = \mu_0 \nabla p + \nabla_\perp \frac{B^2}{2}, -% \end{align} -% \begin{align} -% \nabla p &= p' \nabla \psi, -% \nabla \frac{B^2}{2} -% = \frac{1}{2}\frac{\partial B^2}{\partial \psi}\nabla \psi -% + \frac{1}{2}\frac{\partial B^2}{\partial \theta}\nabla \theta, -% \end{align} -% \begin{align} -% B^2 \kappa^\psi -% \!= -% \mu_0 p' (\nabla \psi \cdot \nabla \psi) -% + \frac{1}{2}\frac{\partial B^2}{\partial \psi} -% (\nabla \psi \cdot \nabla \psi) -% + \frac{1}{2}\frac{\partial B^2}{\partial \theta} -% (\nabla \psi \cdot \nabla \theta). -% \end{align} -% \begin{align} -% \boxed{ -% \kappa^\psi -% = \frac{1}{B^2} -% \left[ -% \mu_0 p' (\nabla \psi \cdot \nabla \psi) -% + \frac{1}{2}\frac{\partial B^2}{\partial \psi} -% (\nabla \psi \cdot \nabla \psi) -% + \frac{1}{2}\frac{\partial B^2}{\partial \theta} -% (\nabla \psi \cdot \nabla \theta) -% \right] -% } -% \end{align} -% or equivalently -% \begin{align} -% \boxed{ -% \kappa^\psi -% = \frac{|\nabla \psi|^2}{B^2} -% \left[ -% \mu_0 p' -% + \frac{1}{2}\frac{\partial B^2}{\partial \psi} -% + \frac{1}{2}\frac{\partial B^2}{\partial \theta} -% \frac{\nabla \psi \cdot \nabla \theta}{|\nabla \psi|^2} -% \right]. -% } -% \end{align} - -% \begin{align} -% {\color{blue}\psi}= c\,\psi, -% \qquad -% c \equiv \frac{\chi'}{2\pi}. -% \end{align} -% \begin{align} -% {\color{blue}\nabla \psi}&= c\,\nabla \psi, \\ -% {\color{blue}|\nabla \psi|^2}&= c^2 |\nabla \psi|^2, \\ -% \frac{\partial B^2}{\partial {\color{blue}\psi}} -% &= \frac{1}{c}\frac{\partial B^2}{\partial \psi}, \\ -% {\color{blue}p'} -% &= \frac{dp}{d{\color{blue}\psi}} -% = \frac{1}{c} p'. -% \end{align} -% \begin{align} -% {\color{blue}\kappa^\psi} -% &= -% \frac{{\color{blue}|\nabla \psi|^2}}{B^2} -% \left[ -% \mu_0 {\color{blue}p'} -% + \frac{1}{2}\frac{\partial B^2}{\partial {\color{blue}\psi}} -% + \frac{1}{2}\frac{\partial B^2}{\partial \theta} -% \frac{{\color{blue}\nabla \psi \cdot \nabla \theta}} -% {{\color{blue}|\nabla \psi|^2}} -% \right] \\ -% &= -% \frac{c^2 |\nabla \psi|^2}{B^2} -% \left[ -% \frac{1}{c}\mu_0 p' -% + \frac{1}{2c}\frac{\partial B^2}{\partial \psi} -% + \frac{1}{2}\frac{\partial B^2}{\partial \theta} -% \frac{c\,\nabla \psi \cdot \nabla \theta} -% {c^2 |\nabla \psi|^2} -% \right] \\ -% &= -% c\,\frac{|\nabla \psi|^2}{B^2} -% \left[ -% \mu_0 p' -% + \frac{1}{2}\frac{\partial B^2}{\partial \psi} -% + \frac{1}{2}\frac{\partial B^2}{\partial \theta} -% \frac{\nabla \psi \cdot \nabla \theta} -% {|\nabla \psi|^2} -% \right]. -% \end{align} -% \begin{align} -% \boxed{ -% \kappa^\psi -% \equiv -% \boldsymbol{\kappa}\cdot\nabla \psi -% = \frac{|\nabla \psi|^2}{B^2} -% \left[ -% \mu_0 p' -% + \frac{1}{2}\frac{\partial B^2}{\partial \psi} -% + \frac{1}{2}\frac{\partial B^2}{\partial \theta} -% \frac{\nabla \psi \cdot \nabla \theta} -% {|\nabla \psi|^2} -% \right], -% } -% \end{align} -% \begin{align} -% {\color{blue}\kappa^\psi}= c\,\kappa^\psi. -% \end{align} \section{Reconstruction of energy principle variables in DCON} @@ -1652,13 +1219,13 @@ \section{Reconstruction of energy principle variables in DCON} \chi'' \nabla \zeta \times \nabla \psi + (q\chi')' \nabla \psi \times \nabla \theta \right)\xi_\psi \\ -&+\frac{\xi_\psi}{|\nabla \psi|^2} [ -j^\theta +&+\frac{\mathcal J\xi_\psi}{|\nabla \psi|^2} [ +\mu_0j^\theta \big( \nabla\psi(\nabla\zeta\cdot\nabla\psi) - \nabla\zeta|\nabla\psi|^2 -\big)+j^\zeta +\big)+\mu_0j^\zeta \big( \nabla\theta|\nabla\psi|^2 - @@ -1669,51 +1236,55 @@ \section{Reconstruction of energy principle variables in DCON} \end{equation} \subsection{Reconstruction v1} - \begin{align} -\xi^\psi = \sum_{m}^{} \sum_{n}^{} v_{m,n}(\psi) \cdot \exp 2\pi i(m\theta -n\zeta) \\ -\xi^s = \sum_{m}^{} \sum_{n}^{} u_{m,n}(\psi) \cdot \exp 2\pi i(m\theta -n\zeta) +\xi_\psi = \sum_{m}^{} \sum_{n}^{} v_{m,n}(\psi) \cdot \exp 2\pi i(m\theta -n\zeta) \\ +\xi_s = \sum_{m}^{} \sum_{n}^{} u_{m,n}(\psi) \cdot \exp 2\pi i(m\theta -n\zeta) \end{align} -And if you see the 331 line in ideal.f of MATCH, it constructs all the eigenvectors in variable v. -\begin{equation} -v_{m,n}(\psi) -= v(:,1,mstep) -\end{equation} -\begin{equation} -v_{m,n}^\prime(\psi) -= v(:,3,mstep) -\end{equation} -\begin{equation} -u_{m,n}(\psi) -= v(:,4,mstep) -\end{equation} -\medskip -\noindent\rule{\linewidth}{0.4pt} +Here $\xi_\psi\equiv\vec\xi\cdot\nabla\psi$ is the normal displacement amplitude used by DCON, and $\xi_s$ is the surface displacement variable. \begin{align} \vec{Q} &= \mathcal{J} (Q^{\psi} \nabla \theta \times \nabla \zeta + Q^{\theta} \nabla \zeta \times \nabla \psi + Q^{\zeta} \nabla \psi \times \nabla \theta) &= \mathcal{J} ( Q^{\psi} \vec{v_1} + Q^{\theta} \vec{v_2} + Q^{\zeta} \vec{v_3}) \\ &= Q_1 \nabla \psi + Q_2 \nabla \theta + Q_3 \nabla \zeta \end{align} \begin{equation} -Q^{\psi} = \frac{\chi^\prime}{\mathcal{J}} (\frac{\partial}{\partial \theta} + q \frac{\partial}{\partial \zeta} )\xi^\psi = \frac{\chi^\prime}{\mathcal{J}} \sum_{m}^{} \sum_{n}^{} v_{m,n}(\psi) \cdot \exp 2 \pi i(m\theta -n\zeta)\cdot 2 \pi i (m-nq) +Q^{\psi} = \frac{\chi^\prime}{\mathcal{J}} (\frac{\partial}{\partial \theta} + q \frac{\partial}{\partial \zeta} )\xi_\psi = \frac{\chi^\prime}{\mathcal{J}} \sum_{m}^{} \sum_{n}^{} v_{m,n}(\psi) \cdot \exp 2 \pi i(m\theta -n\zeta)\cdot 2 \pi i (m-nq) \end{equation} \begin{align} -Q^{\theta} &= - \frac{1}{\mathcal{J}} \frac{\partial}{\partial \psi}(\chi ^ \prime \xi ^\psi) + \frac{1}{\mathcal{J}} \frac{\partial \xi^s}{\partial \zeta} \\ -&= - \frac{1}{\mathcal{J}} \sum_{m}^{} \sum_{n}^{} \left(\chi ^ \prime \frac{\partial}{\partial \psi}(v_{m,n}(\psi)) + 2\pi i n u_{m,n}(\psi) \right) \cdot \exp 2\pi i(m\theta -n\zeta) +Q^{\theta} &= - \frac{1}{\mathcal{J}} \frac{\partial}{\partial \psi}(\chi ^ \prime \xi_\psi) + \frac{1}{\mathcal{J}} \frac{\partial \xi_s}{\partial \zeta} \\ +&= - \frac{1}{\mathcal{J}} \sum_{m}^{} \sum_{n}^{} \left(\chi ^ \prime \frac{\partial}{\partial \psi}(v_{m,n}(\psi)) + \chi^{\prime\prime}v_{m,n}(\psi) + 2\pi i n u_{m,n}(\psi) \right) \cdot \exp 2\pi i(m\theta -n\zeta) \end{align} \begin{align} Q^{\zeta} -&= - \frac{1}{\mathcal{J}} \frac{\partial}{\partial \psi} (\chi^\prime q \xi^\psi) - -\frac{1}{\mathcal{J}} \frac{\partial \xi^s}{\partial \theta} \\ +&= - \frac{1}{\mathcal{J}} \frac{\partial}{\partial \psi} (\chi^\prime q \xi_\psi) + -\frac{1}{\mathcal{J}} \frac{\partial \xi_s}{\partial \theta} \\ &= - \frac{1}{\mathcal{J}} \sum_{m} \sum_{n} \left( \chi ^ \prime q \frac{\partial v_{m,n}(\psi)}{\partial \psi} - + \chi^\prime q^\prime v_{m,n}(\psi) + + (\chi^{\prime\prime}q+\chi^\prime q^\prime) v_{m,n}(\psi) + 2\pi i m u_{m,n}(\psi) \right) \exp\!\bigl(2 \pi i(m\theta - n\zeta)\bigr). \end{align} +\paragraph{Implementation note on \texttt{reg\_flag}.} +The formulas above are the unregularized Bernstein reconstruction. In +\texttt{gpeq\_sol} and \texttt{gpeq\_c}, the code may instead use modified +tangential quantities when \texttt{reg\_flag=.true.}. The modification replaces +the radial derivative and surface variable entering the tangential upper +components by +\begin{equation} +x_{\psi}' \longrightarrow x_{\psi}'\, +\frac{(m-nq)^2}{(m-nq)^2+\texttt{reg\_spot}^2}, +\qquad +x_s \longrightarrow x_s^{\mathrm{mod}}, +\end{equation} +and then forms \texttt{bmt\_mn} and \texttt{bmz\_mn} from these modified +quantities. Therefore, if \texttt{reg\_flag=.false.}, \texttt{bmt\_mn=bwt\_mn} +and \texttt{bmz\_mn=bwz\_mn}, so the code follows the expressions above. If +\texttt{reg\_flag=.true.}, the v1 diagnostic is a regularized reconstruction +near rational surfaces \(m-nq=0\), not the strictly unregularized Bernstein +formula. + Then the current vector can be reconstructed by the Grad-Shafranov equation: \begin{align} \mu_0 \vec{j} &= \mathcal{J} (\mu_0 j^{\psi} \nabla \theta \times \nabla \zeta + \mu_0 j^{\theta} \nabla \zeta \times \nabla \psi + \mu_0 j^{\zeta} \nabla \psi \times \nabla \theta) \\ @@ -1733,23 +1304,54 @@ \subsection{Reconstruction v1} \begin{aligned} C^\psi &= \vec{C}\cdot\nabla\psi = Q^\psi &\qquad -C_1 &= Q_1 + \frac{\mathcal{J}\xi^\psi}{|\nabla\psi|^2} +C_1 &= Q_1 + \frac{\mathcal{J}\xi_\psi}{|\nabla\psi|^2} \bigl[ \mu_0 j^\theta (\nabla\psi\cdot\nabla\zeta) - \mu_0 j^\zeta (\nabla\psi\cdot\nabla\theta) \bigr] \\ -C^\theta &= \vec{C}\cdot\nabla\theta = Q^\theta + \xi^\psi \frac{1}{|\nabla\psi|^2 \mathcal{J}}(\mu_0j^\theta g_{23} + \mu_0j^\zeta g_{33}) +C^\theta &= \vec{C}\cdot\nabla\theta = Q^\theta + \xi_\psi \frac{1}{|\nabla\psi|^2 \mathcal{J}}(\mu_0j^\theta g_{23} + \mu_0j^\zeta g_{33}) &\qquad -C_2 &= Q_2 + \mathcal{J}\xi^\psi \mu_0 j^\zeta \\ -C^\zeta &= \vec{C}\cdot\nabla\zeta = Q^\zeta - \xi^\psi \frac{1}{|\nabla\psi|^2 \mathcal{J}}(\mu_0j^\theta g_{22} + \mu_0j^\zeta g_{23}) +C_2 &= Q_2 + \mathcal{J}\xi_\psi \mu_0 j^\zeta \\ +C^\zeta &= \vec{C}\cdot\nabla\zeta = Q^\zeta - \xi_\psi \frac{1}{|\nabla\psi|^2 \mathcal{J}}(\mu_0j^\theta g_{22} + \mu_0j^\zeta g_{23}) &\qquad -C_3 &= Q_3 - \mathcal{J}\xi^\psi \mu_0 j^\theta +C_3 &= Q_3 - \mathcal{J}\xi_\psi \mu_0 j^\theta +\end{aligned} +\end{equation} + +For direct reconstruction on the $(\psi,\theta)$ grid, the energy density is closed by the metric contraction +\begin{equation} +|\vec C|^2 += +g_{ij}C^{i*}C^j += +C_i^*C^i, +\qquad +C_i=g_{ij}C^j, +\qquad +i,j\in\{\psi,\theta,\zeta\}. +\end{equation} +Equivalently, +\begin{equation} +\begin{aligned} +|\vec C|^2 +&= +g_{\psi\psi}|C^\psi|^2 ++g_{\theta\theta}|C^\theta|^2 ++g_{\zeta\zeta}|C^\zeta|^2 \\ +&\quad ++2\operatorname{Re}\!\left[ +g_{\psi\theta}C^{\psi*}C^\theta ++g_{\psi\zeta}C^{\psi*}C^\zeta ++g_{\theta\zeta}C^{\theta*}C^\zeta +\right]. \end{aligned} \end{equation} \subsection{Reconstruction $\boldsymbol{v2}$ : Matrix representation of $\delta W$} -In this part, we will reconstruct the first term in $\delta W$ in the matrix form. +In this part, we show that the reconstructed Bernstein form can be written in the same radial matrix structure as the DCON/Newcomb formulation. \begin{equation} -\boxed{\;\mathcal{J}\,(\vec v_i\cdot\vec v_j)=\frac{g_{ij}}{\mathcal{J}}\;} +\boxed{\;\vec v_i\cdot\vec v_j=\frac{g_{ij}}{\mathcal{J}^2}\;} \end{equation} +Here $g_{ij}$ denotes the true covariant metric used in the previous sections. +The DCON matrix coefficients use the Fourier projection of $\vec v_i\cdot\vec v_j$, not of $g_{ij}$ itself. \begin{equation} \boxed{ @@ -1763,11 +1365,121 @@ \subsection{Reconstruction $\boldsymbol{v2}$ : Matrix representation of $\delta \begin{equation} \boxed{ -(G_{ij})_{mm'} \equiv \left\langle \frac{g_{ij}}{\mathcal{J}} \right\rangle_{mm'} +(G_{ij})_{mm'} \equiv \left\langle \frac{g_{ij}}{\mathcal{J}^2} \right\rangle_{mm'} +} +\end{equation} +where $G_{ij}$ is the DCON matrix representation of $\vec v_i\cdot\vec v_j$ in Fourier space. + +The reconstructed Bernstein form is written in the DCON/Newcomb radial matrix +form as +\begin{equation} +\boxed{ +\begin{aligned} +2\mu_0\delta W +&= +\int d\psi\, +\Big[ +\Xi_s^\dagger \mathbf A \Xi_s ++\Xi_s^\dagger(\mathbf B\Xi_\psi' + \mathbf C\Xi_\psi) ++(\Xi_\psi^{\prime\dagger}\mathbf B^\dagger+\Xi_\psi^\dagger\mathbf C^\dagger)\Xi_s \\ +&\qquad ++\Xi_\psi^{\prime\dagger}\mathbf D\Xi_\psi' ++\Xi_\psi^{\prime\dagger}\mathbf E\Xi_\psi ++\Xi_\psi^\dagger\mathbf E^\dagger\Xi_\psi' ++\Xi_\psi^\dagger\mathbf H\Xi_\psi +\Big]. +\end{aligned} +} +\end{equation} +Here +\begin{equation} +\Xi_s\equiv\{u_m\}, +\qquad +\Xi_\psi\equiv\{v_m\}, +\qquad +\mathbf M_{mm'}=m\delta_{mm'}, +\qquad +\mathbf Q_{mm'}=(m-nq)\delta_{mm'}. +\end{equation} +We also use +\begin{equation} +\mathbf J\equiv\langle 1\rangle, +\qquad +\mathbf J'\equiv\left\langle \frac{\mathcal J'}{\mathcal J}\right\rangle, +\qquad +\mathbf I_{mm'}=\delta_{mm'}. +\end{equation} +With the DCON-normalized flux scale $v'\leftrightarrow\chi'$ and $P'\leftrightarrow\mu_0p'$, the coefficient matrices are +\begin{equation} +\boxed{ +\begin{aligned} +\mathbf A +&=(2\pi)^2 +\left[ +n(n\mathbf G_{22}+\mathbf G_{23}\mathbf M) ++\mathbf M(n\mathbf G_{23}+\mathbf G_{33}\mathbf M) +\right],\\ +\mathbf B +&=-2\pi i\chi' +\left[ +n(\mathbf G_{22}+q\mathbf G_{23}) ++\mathbf M(\mathbf G_{23}+q\mathbf G_{33}) +\right],\\ +\mathbf C +&=-2\pi i +\left[ +\chi''(n\mathbf G_{22}+\mathbf M\mathbf G_{23}) ++(q\chi')'(n\mathbf G_{23}+\mathbf M\mathbf G_{33}) +\right] \\ +&\quad +-(2\pi)^2\chi'(n\mathbf G_{12}+\mathbf M\mathbf G_{31})\mathbf Q ++2\pi i +\left( +2\pi f'\mathbf Q +-n\frac{\mu_0p'}{\chi'}\mathbf J +\right),\\ +\mathbf D +&=\chi'^2 +\left[ +(\mathbf G_{22}+q\mathbf G_{23}) ++q(\mathbf G_{23}+q\mathbf G_{33}) +\right],\\ +\mathbf E +&=\chi' +\left[ +\chi''(\mathbf G_{22}+q\mathbf G_{23}) ++(q\chi')'(\mathbf G_{23}+q\mathbf G_{33}) +\right] \\ +&\quad +-2\pi i\chi'^2(\mathbf G_{12}+q\mathbf G_{31})\mathbf Q ++\mu_0p'\mathbf J,\\ +\mathbf H +&= +\chi'' +\left[ +\chi''\mathbf G_{22}+(q\chi')'\mathbf G_{23} +\right] ++(q\chi')' +\left[ +\chi''\mathbf G_{23}+(q\chi')'\mathbf G_{33} +\right] \\ +&\quad ++2\pi i\chi' +\left[ +\chi''(\mathbf M\mathbf G_{12}-\mathbf G_{12}\mathbf M) ++(q\chi')'(\mathbf M\mathbf G_{31}-\mathbf G_{31}\mathbf M) +\right] \\ +&\quad ++(2\pi\chi')^2\mathbf Q\mathbf G_{11}\mathbf Q ++\left[ +\mu_0p'\left(\frac{\chi''}{\chi'}\mathbf J+\mathbf J'\right) +-2\pi f'q'\chi'\mathbf I +\right]. +\end{aligned} } \end{equation} -where $G_{ij}$ is the matrix representation of the metric tensor in the Fourier space. -First we focus on the first term in $\delta W$. If we change each terms in $\vec{C}$ as follows: + +Decompose the $\vec C$ term as \begin{equation} \begin{aligned} &\mathbf X \equiv \nabla \xi_s \times \nabla \psi,\\ @@ -1785,12 +1497,123 @@ \subsection{Reconstruction $\boldsymbol{v2}$ : Matrix representation of $\delta \end{aligned} \end{equation} +\noindent Define +\begin{equation} +\mathbf Q_0\equiv \mathbf X+\mathbf Y+\mathbf Z+\mathbf U, +\qquad +\vec C=\mathbf Q_0+\mathbf V . +\end{equation} +Then the Bernstein part of the energy is +\begin{equation} +\begin{aligned} +\int d^3x\left(|\vec C|^2-\mu_0K\frac{|\xi_\psi|^2}{|\nabla\psi|^2}\right) +&= +\int d\psi d\theta d\zeta\,\mathcal J +\Big[ +|\mathbf Q_0|^2 ++\mathbf Q_0^*\cdot\mathbf V+\mathbf V^*\cdot\mathbf Q_0 \\ +&\qquad ++|\mathbf V|^2 +-\mu_0K\frac{|\xi_\psi|^2}{|\nabla\psi|^2} +\Big]. +\end{aligned} +\end{equation} +Using \(e_m\equiv e^{2\pi i(m\theta-n\zeta)}\), the four $\mathbf Q_0$ pieces are +\begin{equation} +\begin{aligned} +\mathbf X +&= +-2\pi i\sum_m u_m e_m\,(n\vec v_2+m\vec v_3),\\ +\mathbf Y +&= +2\pi i\chi'\sum_m (m-nq)v_m e_m\,\vec v_1,\\ +\mathbf Z +&= +-\chi'\sum_m v_m' e_m\,(\vec v_2+q\vec v_3),\\ +\mathbf U +&= +-\sum_m v_m e_m\, +\left[\chi''\vec v_2+(q\chi')'\vec v_3\right]. +\end{aligned} +\end{equation} +Therefore each bilinear product has a fixed matrix block: +\begin{equation} +\begin{array}{c|c|c} +\text{product} & \text{radial amplitudes} & \text{matrix block} \\ \hline +\mathbf X^*\!\cdot\mathbf X & \Xi_s^\dagger\Xi_s & \mathbf A\\ +\mathbf X^*\!\cdot\mathbf Z+\mathbf Z^*\!\cdot\mathbf X +& \Xi_s^\dagger\Xi_\psi' + \Xi_\psi^{\prime\dagger}\Xi_s & \mathbf B\\ +\mathbf X^*\!\cdot(\mathbf Y+\mathbf U+\mathbf V) ++(\mathbf Y+\mathbf U+\mathbf V)^*\!\cdot\mathbf X +& \Xi_s^\dagger\Xi_\psi + \Xi_\psi^\dagger\Xi_s & \mathbf C\\ +\mathbf Z^*\!\cdot\mathbf Z & \Xi_\psi^{\prime\dagger}\Xi_\psi' & \mathbf D\\ +\mathbf Z^*\!\cdot(\mathbf Y+\mathbf U+\mathbf V) ++(\mathbf Y+\mathbf U+\mathbf V)^*\!\cdot\mathbf Z +& \Xi_\psi^{\prime\dagger}\Xi_\psi + \Xi_\psi^\dagger\Xi_\psi' & \mathbf E\\ +\mathbf Y,\mathbf U,\mathbf V,K\ \text{pure terms} +& \Xi_\psi^\dagger\Xi_\psi & \mathbf H . +\end{array} +\end{equation} +Concretely, every entry is obtained by expanding the product in Fourier modes and using +\begin{equation} +\int_0^1 d\theta\, +\mathcal J\,e^{2\pi i(m'-m)\theta} +(\vec v_i\cdot\vec v_j) += +(G_{ij})_{mm'}. +\end{equation} +Equivalently, if +\begin{equation} +\mathbf P=\sum_m p_m e_m P_m^i\vec v_i, +\qquad +\mathbf R=\sum_{m'} r_{m'} e_{m'} R_{m'}^j\vec v_j, +\end{equation} +then +\begin{equation} +\boxed{ +\int_0^1 d\theta\,\mathcal J\,\mathbf P^*\cdot\mathbf R += +\sum_{m,m'}p_m^* +\left[ +\sum_{i,j} (P_m^i)^*(G_{ij})_{mm'}R_{m'}^j +\right]r_{m'} . +} +\end{equation} +This is the actual route from the real-space Bernstein expression to the radial matrix form. The factors \(m\) and \(m-nq\) are then written as the diagonal matrices \(\mathbf M\) and \(\mathbf Q\). +For instance, +\begin{equation} +\begin{aligned} +\int d\theta\,\mathcal J\,\mathbf X^*\cdot\mathbf X +&= +\Xi_s^\dagger +(2\pi)^2 +\left[ +n^2\mathbf G_{22} +{}+n\mathbf G_{23}\mathbf M +{}+n\mathbf M\mathbf G_{23} +{}+\mathbf M\mathbf G_{33}\mathbf M +\right]\Xi_s,\\ +\int d\theta\,\mathcal J\,\mathbf X^*\cdot\mathbf Z +&= +\Xi_s^\dagger +\left\{ +-2\pi i\chi' +\left[ +n(\mathbf G_{22}+q\mathbf G_{23}) +{}+\mathbf M(\mathbf G_{23}+q\mathbf G_{33}) +\right] +\right\} +\Xi_\psi'. +\end{aligned} +\end{equation} +The same projection rule gives \(\mathbf C_1,\mathbf C_2,\mathbf D,\mathbf E_1,\mathbf E_2,\mathbf H_1,\mathbf H_2,\mathbf H_3\) below. The only nontrivial part is the current term \(\mathbf V\), because its pure-\(\Xi_\psi\) pieces must be recombined with the scalar Bernstein term involving \(K\). + \begin{equation} \begin{aligned} 2\mu_0\delta W_{\mathrm{term1}} & = \int d\psi d\theta d\zeta \mathcal{J} [|\vec{C}|^2]\\ -&= \int d\psi d\theta d\zeta \mathcal{J}\{ |\mathbf Q|^2+ -\left[(\mathbf X+\mathbf Y+\mathbf Z+\mathbf U)\cdot\mathbf V^* + \mathbf V \cdot (\mathbf X+\mathbf Y+\mathbf Z+\mathbf U)^* -\right]+|\mathbf V|^2\} +&= \int d\psi d\theta d\zeta \mathcal{J}\{ |\mathbf Q_0|^2+ +\left[\mathbf Q_0\cdot\mathbf V^* + \mathbf V \cdot \mathbf Q_0^* +\right]+|\mathbf V|^2\} . \end{aligned} \end{equation} @@ -1882,9 +1705,9 @@ \subsection{Reconstruction $\boldsymbol{v2}$ : Matrix representation of $\delta } \end{equation} -\paragraph{Matrix representation1} +\paragraph{Blocks from \(\mathbf Q_0^*\cdot\mathbf Q_0\)} -Only the final block forms already derived in \cite{10.1063/1.4958328} are listed here: +Applying the projection rule above to the products that do not contain \(\mathbf V\) gives the following blocks: \begin{equation} |\mathbf X|^2 \leadsto \Xi_s^\dagger \mathbf A \Xi_s, \qquad @@ -1909,7 +1732,7 @@ \subsection{Reconstruction $\boldsymbol{v2}$ : Matrix representation of $\delta \leadsto \Xi_s^\dagger \mathbf C_2 \Xi_\psi + \Xi_\psi^\dagger \mathbf C_2^\dagger \Xi_s, \qquad -\mathbf C_2=-2\pi \left[\chi''(n\mathbf G_{22}+\mathbf M \mathbf G_{23})+(q\chi')'(n\mathbf G_{23}+\mathbf M \mathbf G_{33})\right]. +\mathbf C_2=-2\pi i \left[\chi''(n\mathbf G_{22}+\mathbf M \mathbf G_{23})+(q\chi')'(n\mathbf G_{23}+\mathbf M \mathbf G_{33})\right]. \end{equation} \begin{equation} |\mathbf Y|^2 \leadsto \Xi_\psi^\dagger \mathbf H_1 \Xi_\psi, @@ -1964,12 +1787,21 @@ \subsection{Reconstruction $\boldsymbol{v2}$ : Matrix representation of $\delta \right] \end{equation} -\paragraph{Matrix representation2} -The term $\mathbf X^* \cdot \mathbf V + \mathbf V^* \cdot \mathbf X$ can be written in matrix form as +\paragraph{Bernstein-current correction terms} + +The vector $\mathbf V$ is not an additional physical term. It appears only because the Bernstein form rewrites the original current--pressure contribution into +\[ +\vec C=\vec Q+\frac{\xi_\psi}{|\nabla\psi|^2}\mu_0\vec j\times\nabla\psi +=\mathbf X+\mathbf Y+\mathbf Z+\mathbf U+\mathbf V. +\] +Therefore the $\mathbf V$-dependent pieces from $|\vec C|^2$ must be combined with the scalar term +$-\mu_0K|\xi_\psi|^2/|\nabla\psi|^2$. After this recombination, the same $\mathbf C$, $\mathbf E$, and $\mathbf H$ blocks in the DCON matrix form are obtained. + +The cross term $\mathbf X^* \cdot \mathbf V + \mathbf V^* \cdot \mathbf X$ produces the current part of the $\mathbf C$ block: \[ \Xi_s^\dagger \mathbf C_3 \Xi_\psi + \Xi_\psi^\dagger \mathbf C_3^\dagger \Xi_s, \] -where $\mathbf C_3$ is the corresponding cross-block matrix: +where $\mathbf C_3$ is obtained as follows. \begin{align} \nabla \xi_s @@ -2117,12 +1949,7 @@ \subsection{Reconstruction $\boldsymbol{v2}$ : Matrix representation of $\delta \noindent\rule{\linewidth}{0.4pt} \medskip -% Thus the missing $\mathbf X$--$\mathbf V$ contribution is exactly the matrix $\mathbf C_3$ appearing in the full coefficient matrix -% \begin{equation} -% \mathbf C=\mathbf C_1+\mathbf C_2+\mathbf C_3 . -% \end{equation} - -The $\mathbf Z$--$\mathbf V$ block has the form +Next, the $\mathbf Z$--$\mathbf V$ block produces the pressure part of the $\mathbf E$ block: \[ \Xi_\psi^{\prime\dagger}\mathbf E_3 \Xi_\psi + \Xi_\psi^\dagger \mathbf E_3^\dagger \Xi_\psi^\prime. \] @@ -2179,10 +2006,10 @@ \subsection{Reconstruction $\boldsymbol{v2}$ : Matrix representation of $\delta \noindent\rule{\linewidth}{0.4pt} \medskip -The term $\mathbf Y^*\cdot\mathbf V+\mathbf V^*\cdot\mathbf Y$ is also a pure-$\Xi_\psi$ contribution, so after Fourier projection it takes the form -\[ -\Xi_\psi^\dagger \mathbf H_{YV} \Xi_\psi. -\] +The term $\mathbf Y^*\cdot\mathbf V+\mathbf V^*\cdot\mathbf Y$ is also a +pure-$\Xi_\psi$ contribution, but it is not closed as an independent DCON +block. It must be combined with the other pure scalar current--pressure terms +before the final $\mathbf H_4$ block is obtained. \begin{align} \mathbf Y @@ -2356,11 +2183,11 @@ \subsection{Reconstruction $\boldsymbol{v2}$ : Matrix representation of $\delta \right]. \end{align} -Using the DCON expression for the magnetic shear, +Using the DCON-normalized shear parameter, \begin{equation} -S +S_\psi = -\frac{(2\pi)^2}{\mathcal J} +\frac{\chi'^2}{\mathcal J} \left[ q' + @@ -2385,14 +2212,14 @@ \subsection{Reconstruction $\boldsymbol{v2}$ : Matrix representation of $\delta } \right] = -\frac{\mathcal J}{(2\pi)^2}S-q'. +\frac{\mathcal J}{\chi'^2}S_\psi-q'. \end{equation} Hence \begin{align} \partial_\theta\mathcal F &= -\frac{f'}{2\pi}\,\mathcal J\,S +\frac{2\pi f'}{\chi'^2}\,\mathcal J\,S_\psi - 2\pi f'q' + @@ -2403,53 +2230,20 @@ \subsection{Reconstruction $\boldsymbol{v2}$ : Matrix representation of $\delta \right]. \end{align} -At this point we use the standard coordinate identity +The last derivative, \begin{equation} -\boxed{ \partial_\theta -\left( -\mathcal J\frac{\nabla\psi\cdot\nabla\theta}{|\nabla\psi|^2} -\right) -= --\mathcal J', -} -\end{equation} -where the prime on $\mathcal J$ denotes $\partial/\partial\psi$. - -Therefore -\begin{align} -\int d\theta\,d\zeta\;\mathcal J(\mathbf Y^*\cdot\mathbf V+\mathbf V^*\cdot\mathbf Y) -&= --\int d\theta\,d\zeta\;|\xi_\psi|^2 -\left[ -\frac{f'}{2\pi}\chi'\mathcal J S -- -2\pi f'q'\chi' -- -\mu_0p'\mathcal J' -\right]. -\end{align} - -\begin{equation} -\boxed{ -\begin{aligned} -\mathbf Y^*\cdot\mathbf V+\mathbf V^*\cdot\mathbf Y -&\leadsto\; -\Xi_\psi^\dagger \mathbf H_{YV}\Xi_\psi, \\ -(\mathbf H_{YV})_{mm'} -&\equiv -\int_0^1 d\theta\; -e^{2\pi i(m'-m)\theta} \left[ --\frac{f'}{2\pi}\chi'\mathcal J S -+ -2\pi f'q'\chi' -+ -\mu_0p'\mathcal J' -\right]. -\end{aligned} -} +\mathcal J\frac{\nabla\psi\cdot\nabla\theta}{|\nabla\psi|^2} +\right], \end{equation} +is not a general coordinate identity and is not reduced here as a standalone +matrix block. Therefore +$\mathbf Y^*\cdot\mathbf V+\mathbf V^*\cdot\mathbf Y$ is kept as an +intermediate pure-$\Xi_\psi$ Bernstein scalar term. The closed DCON block is +obtained only after this term is combined below with +$\mathbf U^*\cdot\mathbf V+\mathbf V^*\cdot\mathbf U$, $|\mathbf V|^2$, and +the scalar $-\mu_0K|\xi_\psi|^2/|\nabla\psi|^2$ contribution. \medskip \noindent\rule{\linewidth}{0.4pt} @@ -2678,7 +2472,7 @@ \subsection{Reconstruction $\boldsymbol{v2}$ : Matrix representation of $\delta \begin{equation} \frac{|\mu_0\mathbf j\times\nabla\psi|^2}{|\nabla\psi|^2} = -\sigma\,(\mu_0\mathbf j\cdot\mathbf B) +\mu_0\sigma\,(\mu_0\mathbf j\cdot\mathbf B) + \frac{(\mu_0p')^2}{B^2}|\nabla\psi|^2. \end{equation} @@ -2689,7 +2483,7 @@ \subsection{Reconstruction $\boldsymbol{v2}$ : Matrix representation of $\delta = |\xi_\psi|^2 \left[ -\frac{\sigma\,(\mu_0\mathbf j\cdot\mathbf B)}{|\nabla\psi|^2} +\frac{\mu_0\sigma\,(\mu_0\mathbf j\cdot\mathbf B)}{|\nabla\psi|^2} + \frac{(\mu_0p')^2}{B^2} \right]. @@ -2706,7 +2500,7 @@ \subsection{Reconstruction $\boldsymbol{v2}$ : Matrix representation of $\delta (\mathbf H_V)_{mm'} &\equiv \left\langle -\frac{\sigma\,(\mu_0\mathbf j\cdot\mathbf B)}{|\nabla\psi|^2} +\frac{\mu_0\sigma\,(\mu_0\mathbf j\cdot\mathbf B)}{|\nabla\psi|^2} + \frac{(\mu_0p')^2}{B^2} \right\rangle_{mm'}. @@ -2716,109 +2510,75 @@ \subsection{Reconstruction $\boldsymbol{v2}$ : Matrix representation of $\delta \medskip \noindent\rule{\linewidth}{0.4pt} -\medskip - -\paragraph{Adding the Bernstein scalar term $-K|\xi_\psi|^2/|\nabla\psi|^2$.} - -From the earlier derivation in this note, -\begin{equation} -K -= -|\nabla\psi|^2\sigma S -+ -\sigma\,\mathbf j\cdot\mathbf B -+ -2p'\,\boldsymbol{\kappa}\cdot\nabla\psi. -\end{equation} -Therefore +\paragraph{The scalar current--pressure block.} +The reduction to a radial matrix is automatic once the integrand is a +bilinear form in the Fourier amplitudes +\((\Xi_s,\Xi_\psi,\Xi_\psi')\). What is not automatic is the equality between +the expanded Bernstein \(\mathbf V\)-sector and the compact DCON +current--pressure block. Using the energy-principle transformation proved in +the previous section, the required sesquilinear identity is \begin{equation} --\frac{K}{|\nabla\psi|^2}|\xi_\psi|^2 -= --|\xi_\psi|^2 +\mathcal J \left[ -\sigma S -+ -\frac{\sigma\,\mathbf j\cdot\mathbf B}{|\nabla\psi|^2} -+ -\frac{2p'\,\boldsymbol{\kappa}\cdot\nabla\psi}{|\nabla\psi|^2} -\right]. +\mathbf Q_0^*\!\cdot\mathbf V+\mathbf V^*\!\cdot\mathbf Q_0 ++|\mathbf V|^2 +-\mu_0K\frac{|\xi_\psi|^2}{|\nabla\psi|^2} +\right] +\equiv +\mathcal I_{\mathrm{cp}}, \end{equation} +up to the periodic surface-divergence terms that integrate to zero. Therefore +the compact DCON matrices follow from the equivalent DCON current--pressure +density below. A term-by-term reduction of the separate Bernstein pieces is +not sufficient. -Now combine the four remaining scalar contributions: +The separate pure-\(\Xi_\psi\) terms +\(\mathbf Y^*\cdot\mathbf V+\mathbf V^*\cdot\mathbf Y\), +\(\mathbf U^*\cdot\mathbf V+\mathbf V^*\cdot\mathbf U\), +\(|\mathbf V|^2\), and +\(-\mu_0K|\xi_\psi|^2/|\nabla\psi|^2\) +are intermediate Bernstein pieces. For a closed derivation of their sum, use the DCON current--pressure density \begin{equation} -\mathcal J(\mathbf Y^*\cdot\mathbf V+\mathbf V^*\cdot\mathbf Y) -+ -\mathcal J(\mathbf U^*\cdot\mathbf V+\mathbf V^*\cdot\mathbf U) -+ -\mathcal J|\mathbf V|^2 -- -\mathcal J\frac{K}{|\nabla\psi|^2}|\xi_\psi|^2. +\begin{aligned} +\mathcal I_{\mathrm{cp}} +&= +\xi_\psi\,\mathbf J\cdot\nabla\xi_s +-\xi_s\,\mathbf J\cdot\nabla\xi_\psi ++\left[J_\theta(q\chi')'-J_\zeta\chi''\right]|\xi_\psi|^2 ++\frac{P'}{\mathcal J}\left(\mathcal J|\xi_\psi|^2\right)' , +\end{aligned} \end{equation} - -At this stage the cancellations are as follows: - -\begin{enumerate} -\item -The term -\( -\displaystyle -\frac{\sigma\,\mathbf j\cdot\mathbf B}{|\nabla\psi|^2}|\xi_\psi|^2 -\) -coming from $|\mathbf V|^2$ cancels exactly the same term coming from $-K|\xi_\psi|^2/|\nabla\psi|^2$. - -\item -The oscillatory shear term from $\mathbf Y^*\cdot\mathbf V+\mathbf V^*\cdot\mathbf Y$ combines with the $|\nabla\psi|^2\sigma S$ part of $K$ through +where \(\mathbf J=\nabla\times\mathbf B=\mu_0\mathbf j\) and \(P'=\mu_0p'\). The first two terms give the already derived \(\mathbf C_3\). The remaining two terms determine \(\mathbf E_3\) and \(\mathbf H_4\): \begin{equation} -S -= -\frac{(2\pi)^2}{\mathcal J} +\begin{aligned} +\mathcal J\left[J_\theta(q\chi')'-J_\zeta\chi''\right]|\xi_\psi|^2 +&= +|\xi_\psi|^2 \left[ -q' -+ -\partial_\theta -\left( -\frac{ -q(\nabla\psi\cdot\nabla\theta)-(\nabla\psi\cdot\nabla\zeta) -}{ -|\nabla\psi|^2 -} -\right) -\right]. +-2\pi f'q'\chi' ++\mu_0p'\mathcal J\frac{\chi''}{\chi'} +\right],\\ +\mu_0p'\left(\mathcal J|\xi_\psi|^2\right)' +&= +\mu_0p'\mathcal J' +|\xi_\psi|^2 ++\mu_0p'\mathcal J +\left(\xi_\psi^{\prime *}\xi_\psi+\xi_\psi^*\xi_\psi'\right). +\end{aligned} \end{equation} -The non-oscillatory remainder is the $q'$ contribution. - -\item -The pressure-curvature term from $-K|\xi_\psi|^2/|\nabla\psi|^2$ combines with the pressure part of $|\mathbf V|^2$ and the pressure part of $\mathbf U^*\cdot\mathbf V+\mathbf V^*\cdot\mathbf U$ to give the remaining -\( -\mu_0p'(\mathcal J\chi''/\chi'+\mathcal J') -\) -piece. -\end{enumerate} - -After these cancellations, the total scalar contribution reduces to +Therefore \begin{equation} -\mathcal J -\left[ -(\mathbf Y^*\cdot\mathbf V+\mathbf V^*\cdot\mathbf Y) -+ -(\mathbf U^*\cdot\mathbf V+\mathbf V^*\cdot\mathbf U) -+ -|\mathbf V|^2 -- -\frac{K}{|\nabla\psi|^2}|\xi_\psi|^2 -\right] -= -|\xi_\psi|^2 -\left[ -\mu_0p' -\left( -\mathcal J\frac{\chi''}{\chi'}+\mathcal J' -\right) -- -2\pi f'q'\chi' -\right]. +\boxed{ +\begin{aligned} +\mathbf Z^*\!\cdot\mathbf V+\mathbf V^*\!\cdot\mathbf Z +&\leadsto +\Xi_\psi^{\prime\dagger}\mathbf E_3\Xi_\psi ++\Xi_\psi^\dagger\mathbf E_3^\dagger\Xi_\psi',\\ +\mathbf E_3&=\mu_0p'\mathbf J, +\end{aligned} +} \end{equation} - +and \begin{equation} \boxed{ \begin{aligned} @@ -2828,12 +2588,12 @@ \subsection{Reconstruction $\boldsymbol{v2}$ : Matrix representation of $\delta + |\mathbf V|^2 - -\frac{K}{|\nabla\psi|^2}|\xi_\psi|^2 +\mu_0\frac{K}{|\nabla\psi|^2}|\xi_\psi|^2 &\leadsto\; -\Xi_\psi^\dagger \mathbf H_{\mathrm{add}} \Xi_\psi, \\ +\Xi_\psi^\dagger \mathbf H_4 \Xi_\psi, \\ \qquad -\mathbf H_{\mathrm{add}} -&= +\mathbf H_4 +&= \mu_0p' \left( \frac{\chi''}{\chi'}\mathbf J+\mathbf J' @@ -2844,53 +2604,50 @@ \subsection{Reconstruction $\boldsymbol{v2}$ : Matrix representation of $\delta } \end{equation} -\paragraph{Final missing pieces.} - -Therefore the missing $V$-dependent matrices are -\begin{equation} -\boxed{ -\begin{aligned} -\mathbf C_3 -&= -2\pi i\left( -2\pi f'\mathbf Q --n\frac{\mu_0p'}{\chi'}\mathbf J -\right). -\end{aligned} -} -\end{equation} -\begin{equation} -\boxed{ -\mathbf E_3=\mu_0p'\mathbf J. -} -\end{equation} -and +The complete term-to-matrix assignment is therefore \begin{equation} \boxed{ \begin{aligned} -\mathbf H_{\mathrm{add}} -&= -\mu_0p' -\left( -\frac{\chi''}{\chi'}\mathbf J+\mathbf J' -\right) \\ -&\qquad --2\pi f'q'\chi' \mathbf I. +\mathbf A &: \quad \mathbf X^*\!\cdot\mathbf X,\\ +\mathbf B &: \quad \mathbf X^*\!\cdot\mathbf Z,\\ +\mathbf C &: \quad +\mathbf X^*\!\cdot\mathbf Y\to\mathbf C_1,\quad +\mathbf X^*\!\cdot\mathbf U\to\mathbf C_2,\quad +\mathbf X^*\!\cdot\mathbf V\to\mathbf C_3,\\ +\mathbf D &: \quad \mathbf Z^*\!\cdot\mathbf Z,\\ +\mathbf E &: \quad +\mathbf Z^*\!\cdot\mathbf Y\to\mathbf E_1,\quad +\mathbf Z^*\!\cdot\mathbf U\to\mathbf E_2,\quad +\mathbf Z^*\!\cdot\mathbf V\to\mathbf E_3,\\ +\mathbf H &: \quad +\mathbf Y^*\!\cdot\mathbf Y\to\mathbf H_1,\quad +\mathbf Y^*\!\cdot\mathbf U+\mathbf U^*\!\cdot\mathbf Y\to\mathbf H_2,\quad +\mathbf U^*\!\cdot\mathbf U\to\mathbf H_3,\\ +&\quad +\mathbf Y^*\!\cdot\mathbf V+\mathbf V^*\!\cdot\mathbf Y ++\mathbf U^*\!\cdot\mathbf V+\mathbf V^*\!\cdot\mathbf U ++|\mathbf V|^2 +-\mu_0K\frac{|\xi_\psi|^2}{|\nabla\psi|^2} +\to\mathbf H_4 . \end{aligned} } \end{equation} - -Thus the total matrices become +Thus the final coefficient matrices are \begin{equation} \boxed{ \begin{aligned} \mathbf C&=\mathbf C_1+\mathbf C_2+\mathbf C_3, \\ \mathbf E&=\mathbf E_1+\mathbf E_2+\mathbf E_3, \\ -\mathbf H&=\mathbf H_1+\mathbf H_2+\mathbf H_3+\mathbf H_{\mathrm{add}}. +\mathbf H&=\mathbf H_1+\mathbf H_2+\mathbf H_3+\mathbf H_4. \end{aligned} } \end{equation} -which is exactly the Glasser Appendix A6 result. +Subject to the same boundary and reduced-compressional assumptions stated +above, this is the DCON-normalized version of the matrix structure in +Eq.~(35) of \texttt{dcon.tex}. Thus the Bernstein form and the original DCON +current--pressure form lead to the same radial matrix functional; the +$\mathbf V$-dependent pieces are intermediate cancellation/recombination +terms, not extra physics. \section{Variable Naming Convention and Mathematical Symbols} This section summarizes the implementation of C and Q vectors with proper tensor transformations between contravariant and covariant representations. @@ -2936,9 +2693,12 @@ \subsubsection*{C Vector - Covariant (v-basis, $C_i$)} \hline \textbf{Variable} & \textbf{Symbol/Definition} \\ \hline -\texttt{cvp\_tmp, cvp\_fun} & $C_\psi^{\text{metric}} = g_{ij}C^j$ (metric contraction) \\ -\texttt{cvt\_tmp, cvt\_fun} & $C_\theta^{\text{metric}} = g_{ij}C^j$ (metric contraction) \\ -\texttt{cvz\_tmp, cvz\_fun} & $C_\zeta^{\text{metric}} = g_{ij}C^j$ (metric contraction) \\ +\texttt{cvp\_tmp, cvp\_fun} & $C_\psi$ reconstructed directly from $Q_\psi+(\xi\cdot\hat n)(\mu_0\mathbf j\times\hat n)_\psi$ \\ +\texttt{cvt\_tmp, cvt\_fun} & $C_\theta$ reconstructed directly from $Q_\theta+\mathcal J\xi_\psi\mu_0j^\zeta$ \\ +\texttt{cvz\_tmp, cvz\_fun} & $C_\zeta$ reconstructed directly from $Q_\zeta-\mathcal J\xi_\psi\mu_0j^\theta$ \\ +\texttt{c2vp\_mn, cv2p\_fun} & $g_{\psi j}C^j$ from metric lowering of the reconstructed upper components \\ +\texttt{c2vt\_mn, cv2t\_fun} & $g_{\theta j}C^j$ from metric lowering of the reconstructed upper components \\ +\texttt{c2vz\_mn, cv2z\_fun} & $g_{\zeta j}C^j$ from metric lowering of the reconstructed upper components \\ \hline \end{tabular} \end{table} From 47482ea0a6c4823c06b83f0a5ed5de06cdb8bae1 Mon Sep 17 00:00:00 2001 From: satelite2517 Date: Mon, 18 May 2026 16:38:14 +0900 Subject: [PATCH 12/62] GPEC - FEATURE - Add recon energy diagnostics (cherry picked from commit e9cc5d5590bd734baef22514e399bfcd24855666) --- gpec/gpeq.f | 76 +++++++++++----- gpec/gpout.f | 245 ++++++++++++++++++++++++++++++++++++--------------- 2 files changed, 226 insertions(+), 95 deletions(-) diff --git a/gpec/gpeq.f b/gpec/gpeq.f index ad1263812..b11f65105 100644 --- a/gpec/gpeq.f +++ b/gpec/gpeq.f @@ -935,16 +935,18 @@ END SUBROUTINE gpeq_cveri c c and return the theta/zeta integrated value for one psi. c----------------------------------------------------------------------- - SUBROUTINE gpeq_epf(psi, epf_int) + SUBROUTINE gpeq_epf(psi, epf_int, epf_p, epf_t, epf_z) c----------------------------------------------------------------------- c declaration. c----------------------------------------------------------------------- REAL(r8), INTENT(IN) :: psi REAL(r8), INTENT(OUT) :: epf_int + REAL(r8), OPTIONAL, INTENT(OUT) :: epf_p, epf_t, epf_z INTEGER :: itheta COMPLEX(r8), DIMENSION(0:mthsurf) :: cwp_fun, cwt_fun, cwz_fun - COMPLEX(r8), DIMENSION(0:mthsurf) :: cv2p_fun, cv2t_fun, cv2z_fun - COMPLEX(r8) :: epf_theta + COMPLEX(r8), DIMENSION(0:mthsurf) :: cvp_fun, cvt_fun, cvz_fun + REAL(r8) :: epf_psi_int, epf_theta_int, epf_zeta_int + REAL(r8) :: epf_fac IF(debug_flag) PRINT *, "Entering gpeq_epf" c----------------------------------------------------------------------- @@ -959,20 +961,29 @@ SUBROUTINE gpeq_epf(psi, epf_int) CALL iscdftb(mfac, mpert, cwp_fun, mthsurf, cwp_mn) CALL iscdftb(mfac, mpert, cwt_fun, mthsurf, cwt_mn) CALL iscdftb(mfac, mpert, cwz_fun, mthsurf, cwz_mn) - CALL iscdftb(mfac, mpert, cv2p_fun, mthsurf, c2vp_mn) - CALL iscdftb(mfac, mpert, cv2t_fun, mthsurf, c2vt_mn) - CALL iscdftb(mfac, mpert, cv2z_fun, mthsurf, c2vz_mn) + CALL iscdftb(mfac, mpert, cvp_fun, mthsurf, cvp_mn) + CALL iscdftb(mfac, mpert, cvt_fun, mthsurf, cvt_mn) + CALL iscdftb(mfac, mpert, cvz_fun, mthsurf, cvz_mn) epf_int = 0.0_r8 + epf_psi_int = 0.0_r8 + epf_theta_int = 0.0_r8 + epf_zeta_int = 0.0_r8 DO itheta = 0, mthsurf-1 CALL bicube_eval(rzphi, psi, theta(itheta), 0) jac = rzphi%f(4) - epf_theta = CONJG(cwp_fun(itheta)/jac) * cv2p_fun(itheta) + - $ CONJG(cwt_fun(itheta)/jac) * cv2t_fun(itheta) + - $ CONJG(cwz_fun(itheta)/jac) * cv2z_fun(itheta) - epf_int = epf_int + REAL(epf_theta, r8) / - $ (mu0 * REAL(mthsurf, r8)) * jac + epf_fac = jac / (mu0 * REAL(mthsurf, r8)) + epf_psi_int = epf_psi_int + epf_fac * + $ REAL(CONJG(cwp_fun(itheta)/jac) * cvp_fun(itheta), r8) + epf_theta_int = epf_theta_int + epf_fac * + $ REAL(CONJG(cwt_fun(itheta)/jac) * cvt_fun(itheta), r8) + epf_zeta_int = epf_zeta_int + epf_fac * + $ REAL(CONJG(cwz_fun(itheta)/jac) * cvz_fun(itheta), r8) ENDDO + epf_int = epf_psi_int + epf_theta_int + epf_zeta_int + IF (PRESENT(epf_p)) epf_p = epf_psi_int + IF (PRESENT(epf_t)) epf_t = epf_theta_int + IF (PRESENT(epf_z)) epf_z = epf_zeta_int IF(debug_flag) PRINT *, "->Leaving gpeq_epf" c----------------------------------------------------------------------- @@ -988,11 +999,15 @@ END SUBROUTINE gpeq_epf c c and return the theta/zeta integrated value for one psi. c----------------------------------------------------------------------- - SUBROUTINE gpeq_dst(psi, dst_int) + SUBROUTINE gpeq_dst(psi, dst_int, dst_t1, dst_t2, dst_t3) REAL(r8), INTENT(IN) :: psi COMPLEX(r8), INTENT(OUT) :: dst_int + COMPLEX(r8), OPTIONAL, INTENT(OUT) :: dst_t1, dst_t2, dst_t3 INTEGER :: itheta COMPLEX(r8), DIMENSION(0:mthsurf) :: K_fun, xno_fun + REAL(r8), DIMENSION(0:mthsurf) :: K_term1, K_term2, K_term3 + REAL(r8) :: xin2_fac + COMPLEX(r8) :: dst1_int, dst2_int, dst3_int c----------------------------------------------------------------------- c DST(psi) = \int dtheta dzeta J * K * xi_n^2 @@ -1001,16 +1016,28 @@ SUBROUTINE gpeq_dst(psi, dst_int) CALL gpeq_contra(psi) CALL gpeq_cova(psi) CALL gpeq_normal(psi) - CALL gpeq_K(psi, K_fun) + CALL gpeq_K(psi, K_fun, K_term1, K_term2, K_term3) CALL iscdftb(mfac, mpert, xno_fun, mthsurf, xno_mn) dst_int = CMPLX(0.0_r8, 0.0_r8, r8) + dst1_int = CMPLX(0.0_r8, 0.0_r8, r8) + dst2_int = CMPLX(0.0_r8, 0.0_r8, r8) + dst3_int = CMPLX(0.0_r8, 0.0_r8, r8) DO itheta = 0, mthsurf-1 CALL bicube_eval(rzphi, psi, theta(itheta), 0) jac = rzphi%f(4) - dst_int = dst_int + - $ jac* K_fun(itheta) * - $ ABS(xno_fun(itheta))**2 / REAL(mthsurf, r8) + xin2_fac = jac * ABS(xno_fun(itheta))**2 / + $ REAL(mthsurf, r8) + dst1_int = dst1_int + CMPLX(K_term1(itheta) * xin2_fac, + $ 0.0_r8, r8) + dst2_int = dst2_int + CMPLX(K_term2(itheta) * xin2_fac, + $ 0.0_r8, r8) + dst3_int = dst3_int + CMPLX(K_term3(itheta) * xin2_fac, + $ 0.0_r8, r8) ENDDO + dst_int = dst1_int + dst2_int + dst3_int + IF (PRESENT(dst_t1)) dst_t1 = dst1_int + IF (PRESENT(dst_t2)) dst_t2 = dst2_int + IF (PRESENT(dst_t3)) dst_t3 = dst3_int c----------------------------------------------------------------------- c terminate. c----------------------------------------------------------------------- @@ -1040,11 +1067,11 @@ SUBROUTINE gpeq_shear(psi, shear_fun) c----------------------------------------------------------------------- c Allocate spline for shear_temp with 5 components: -c 1: covariant numerator term +c 1: legacy covariant numerator term c 2: (q*dpdt - dpdz) numerator c 3: g_psi_g_psi denominator -c 4: contravariant denominator (v21^2 + v22^2)*r^2 -c 5: covariant shear (component 1 / component 4) +c 4: legacy covariant denominator +c 5: DCON shear geometry term (component 2 / component 3) c----------------------------------------------------------------------- CALL spline_alloc(shear_temp, mthsurf, 5) shear_temp%xs = theta(0:mthsurf) @@ -1104,7 +1131,7 @@ SUBROUTINE gpeq_shear(psi, shear_fun) shear_temp%fs(itheta, 5) = - $ shear_temp%fs(itheta, 1) / shear_temp%fs(itheta, 4) + $ shear_temp%fs(itheta, 2) / shear_temp%fs(itheta, 3) ENDDO c----------------------------------------------------------------------- @@ -1112,8 +1139,8 @@ SUBROUTINE gpeq_shear(psi, shear_fun) c----------------------------------------------------------------------- CALL spline_fit(shear_temp, "periodic") c----------------------------------------------------------------------- -c Step 3: Compute shear_fun = (2π²/J)*(q' + ∂shear_temp/∂θ) -c Compare covariant and contravariant approaches. +c Step 3: Compute shear_fun = (chi1^2/J)*(q' + d shear_temp/d theta) +c with shear_temp = (q*g^psi_theta - g^psi_zeta)/g^psi_psi. c----------------------------------------------------------------------- DO itheta = 0, mthsurf theta_val = theta(itheta) @@ -1207,7 +1234,8 @@ END SUBROUTINE gpeq_curvature c----------------------------------------------------------------------- c subprogram 13. gpeq_K. c compute Bernstein K quantity (stability indicator). -c K = |∇ψ_dcon|^2 * σ * S_dcon + B^2 * σ^2 + 2 P' * κ^psi +c K = |∇ψ_dcon|^2 * σ * S_dcon +c + mu0 * B^2 * σ^2 + 2 p' * κ^psi c Uses pre-computed metric from idcon_metric c----------------------------------------------------------------------- SUBROUTINE gpeq_K(psi, K_fun, K_term1, K_term2, K_term3, @@ -1290,7 +1318,7 @@ SUBROUTINE gpeq_K(psi, K_fun, K_term1, K_term2, K_term3, c Term1: |∇ψ_dcon|^2 * σ * S_dcon K_t1(itheta) = (delpsi**2) * sigma * REAL(shear_fun(itheta)) -c Term2: B^2 * σ^2 +c Term2: mu0 * B^2 * σ^2 K_t2(itheta) = bsq_val * sigma**2 * mu0 c Term3: 2 p' * κ^psi diff --git a/gpec/gpout.f b/gpec/gpout.f index d6148e869..ebaf26619 100644 --- a/gpec/gpout.f +++ b/gpec/gpout.f @@ -79,7 +79,7 @@ MODULE gpout_mod $ fldflxmat ! convert power normalized field to area normalized flux (i.e. increase by sqrt(A_m)/sqrt(A) weighting) CONTAINS - + !----------------------------------------------------------------- function str(k,fmt) !----------------------------------------------------------------- @@ -6879,10 +6879,10 @@ SUBROUTINE gpout_recon(mode, xspmn) INTEGER :: ipsi, itheta, ipert, ushear_fun, ucurv, uk, ucveri, $ uk_sigma, ucw_fun, ucw_mn, ucv_fun, ucv_mn, ucv2_fun, - $ ucv2_mn, u_int + $ ucv2_mn, u_int, u_log REAL(r8) :: psi, eta, rfac REAL(r8), DIMENSION(0:mthsurf) :: rvals, zvals - REAL(r8) :: epf_int + REAL(r8) :: epf_int, epf_p_int, epf_t_int, epf_z_int COMPLEX(r8) :: dst_int COMPLEX(r8), DIMENSION(mpert) :: curv_mn, $ term_mn @@ -6896,11 +6896,17 @@ SUBROUTINE gpout_recon(mode, xspmn) CHARACTER(128) :: k_file, k_sigma_file CHARACTER(128) :: cw_fun_file, cw_mn_file, cv_fun_file, cv_mn_file CHARACTER(128) :: cv2_fun_file, cv2_mn_file, int_file - REAL(r8), DIMENSION(0:mpsi) :: epf_psi, epf_cumsum - COMPLEX(r8), DIMENSION(0:mpsi) :: dst_psi_k, dst_cumsum_k - REAL(r8) :: epf_int_total - COMPLEX(r8) :: dst_int_total_k, dw_raw_k - REAL(r8) :: psi_min, psi_max, dpsi, dpsi_local + REAL(r8) :: dpsi_local + INTEGER :: istep + REAL(r8) :: psi_prev, psi_curr, epf_prev, epf_curr + REAL(r8) :: epf_p_prev, epf_t_prev, epf_z_prev + REAL(r8) :: epf_p_curr, epf_t_curr, epf_z_curr + REAL(r8) :: epf_int_total_hr, epf_p_total_hr, + $ epf_t_total_hr, epf_z_total_hr, dcon_fac + COMPLEX(r8) :: dst_prev, dst_curr, dst1_prev, dst2_prev, + $ dst3_prev, dst1_curr, dst2_curr, dst3_curr, + $ dst_int_total_k_hr, dst1_total_hr, dst2_total_hr, + $ dst3_total_hr, dw_raw_k_hr, dw_dcon_k_hr, dw_cum c Diagnostic variables for C vector comparison INTEGER :: ipsi_mid, itheta_mid, ipert_diag, m1 @@ -6952,6 +6958,7 @@ SUBROUTINE gpout_recon(mode, xspmn) ucv2_fun = 90 ucv2_mn = 91 u_int = 92 + u_log = 93 OPEN(UNIT=ushear_fun, FILE=shear_fun_file, STATUS="UNKNOWN") OPEN(UNIT=ucurv, FILE=curv_file, STATUS="UNKNOWN") @@ -6976,7 +6983,7 @@ SUBROUTINE gpout_recon(mode, xspmn) $ "T1_re","T2_re","T3_re" WRITE(uk_sigma,'(8(1x,a16))') $ "psi","theta","r","z","sigma_re","jdotb_re", - $ "bsig2_re","sigjdotb_re" + $ "mu0_bsig2_re","mu0_sigjdotb" WRITE(ucw_fun,'(10(1x,a16))') $ "psi","theta","r","z","cwp_re","cwp_im", $ "cwt_re","cwt_im","cwz_re","cwz_im" @@ -6995,28 +7002,25 @@ SUBROUTINE gpout_recon(mode, xspmn) WRITE(ucv2_mn,'(8(1x,a16))') $ "psi","m","cv2p_re","cv2p_im","cv2t_re","cv2t_im", $ "cv2z_re","cv2z_im" - WRITE(u_int,'(7(1x,a16))') - $ "psi","epf_int","dst_k_re","dst_k_im", - $ "epf_cumsum","dst_k_c_re","dst_k_c_im" + WRITE(u_int,'(15(1x,a16))') + $ "psi","c2_mu0","k_xin2_re","k_xin2_im", + $ "c2_mu0_sum","k_xin2_c_re","k_xin2_c_im", + $ "dw_c_re","dw_c_im","c2_psi","c2_theta","c2_zeta", + $ "k1_xin2_re","k2_xin2_re","k3_xin2_re" c----------------------------------------------------------------------- c main loop over all psi levels. c compute gpeq reconstruction diagnostics at each psi. c----------------------------------------------------------------------- + CALL idcon_build(mode, xspmn) CALL gpeq_alloc - epf_int_total = 0.0_r8 - dst_int_total_k = CMPLX(0.0_r8, 0.0_r8, r8) - epf_cumsum = 0.0_r8 - dst_cumsum_k = CMPLX(0.0_r8, 0.0_r8, r8) DO ipsi = 0, mpsi psi = rzphi%xs(ipsi) + IF (psi > psilim) EXIT -c Compute surface-integrated EPF and DST terms for this psi. -c Store in arrays for psi integration later. +c Compute the J|C|^2/mu0 state once so C fields below use +c the current psi. CALL gpeq_epf(psi, epf_int) - CALL gpeq_dst(psi, dst_int) - epf_psi(ipsi) = epf_int - dst_psi_k(ipsi) = dst_int c Reconstruct detailed K diagnostics for output. CALL gpeq_K(psi, K_fun, K_term1, K_term2, K_term3, @@ -7047,7 +7051,7 @@ SUBROUTINE gpout_recon(mode, xspmn) WRITE(uk_sigma,'(8(es17.8e3))') psi, theta(itheta), $ rvals(itheta), zvals(itheta), sigma_vals(itheta), $ jdotb_vals(itheta), K_term2(itheta), - $ sigma_vals(itheta) * jdotb_vals(itheta) + $ mu0 * sigma_vals(itheta) * jdotb_vals(itheta) ENDDO WRITE(ushear_fun,*) WRITE(ucurv,*) @@ -7055,7 +7059,7 @@ SUBROUTINE gpout_recon(mode, xspmn) WRITE(uk,*) WRITE(uk_sigma,*) -c Reconstruct C fields from the already computed EPF state. +c Reconstruct C fields from the already computed C state. CALL iscdftb(mfac, mpert, cw_fun(:,1), mthsurf, cwp_mn) CALL iscdftb(mfac, mpert, cw_fun(:,2), mthsurf, cwt_mn) CALL iscdftb(mfac, mpert, cw_fun(:,3), mthsurf, cwz_mn) @@ -7102,60 +7106,159 @@ SUBROUTINE gpout_recon(mode, xspmn) ENDDO c----------------------------------------------------------------------- -c perform psi integration using trapezoidal rule. -c integrate: ∫dpsi epf(psi), ∫dpsi dst_k(psi) -c----------------------------------------------------------------------- - psi_min = rzphi%xs(0) - psi_max = rzphi%xs(mpsi) - dpsi = (psi_max - psi_min) / REAL(mpsi, r8) - - epf_int_total = 0.0_r8 - dst_int_total_k = CMPLX(0.0_r8, 0.0_r8, r8) - epf_cumsum(0) = 0.0_r8 - dst_cumsum_k(0) = CMPLX(0.0_r8, 0.0_r8, r8) - - DO ipsi = 0, mpsi-1 - dpsi_local = rzphi%xs(ipsi+1) - rzphi%xs(ipsi) - epf_int_total = epf_int_total + - $ (epf_psi(ipsi) + epf_psi(ipsi+1)) * dpsi_local / 2.0_r8 - dst_int_total_k = dst_int_total_k + - $ (dst_psi_k(ipsi) + dst_psi_k(ipsi+1)) * dpsi_local - $ / 2.0_r8 - epf_cumsum(ipsi+1) = epf_int_total - dst_cumsum_k(ipsi+1) = dst_int_total_k +c Perform the energy check on the DCON solution grid. Do not use +c rzphi%xs for this comparison; it is a coarse geometry grid. +c----------------------------------------------------------------------- + dcon_fac = (mu0*2.0_r8) / psio**2 / (chi1*1.0e-3_r8)**2 + epf_int_total_hr = 0.0_r8 + epf_p_total_hr = 0.0_r8 + epf_t_total_hr = 0.0_r8 + epf_z_total_hr = 0.0_r8 + dst_int_total_k_hr = CMPLX(0.0_r8, 0.0_r8, r8) + dst1_total_hr = CMPLX(0.0_r8, 0.0_r8, r8) + dst2_total_hr = CMPLX(0.0_r8, 0.0_r8, r8) + dst3_total_hr = CMPLX(0.0_r8, 0.0_r8, r8) + psi_prev = MAX(psifac(0), rzphi%xs(0)) + CALL gpeq_epf(psi_prev, epf_prev, epf_p_prev, epf_t_prev, + $ epf_z_prev) + CALL gpeq_dst(psi_prev, dst_prev, dst1_prev, dst2_prev, + $ dst3_prev) + WRITE(u_int,'(a)') "c psifac-grid integration results" + WRITE(u_int,'(a)') "c C2/mu0 = int J |C|^2 / mu0" + WRITE(u_int,'(a)') "c Kxin2 = int J K |xi_n|^2" + WRITE(u_int,'(a)') "c dW_gpec(K) = 0.5 * (C2/mu0 - Kxin2)" + dw_cum = CMPLX(0.0_r8, 0.0_r8, r8) + WRITE(u_int,'(15(es17.8e3))') psi_prev, epf_prev, + $ REAL(dst_prev), AIMAG(dst_prev), epf_int_total_hr, + $ REAL(dst_int_total_k_hr), AIMAG(dst_int_total_k_hr), + $ REAL(dw_cum), AIMAG(dw_cum), epf_p_prev, epf_t_prev, + $ epf_z_prev, REAL(dst1_prev), REAL(dst2_prev), + $ REAL(dst3_prev) + DO istep = 0, mstep-1 + psi_curr = psifac(istep+1) + IF (psi_curr < rzphi%xs(0)) CYCLE + IF (psi_curr > rzphi%xs(mpsi)) EXIT + CALL gpeq_epf(psi_curr, epf_curr, epf_p_curr, + $ epf_t_curr, epf_z_curr) + CALL gpeq_dst(psi_curr, dst_curr, dst1_curr, dst2_curr, + $ dst3_curr) + dpsi_local = psi_curr - psi_prev + epf_int_total_hr = epf_int_total_hr + + $ (epf_prev + epf_curr) * dpsi_local / 2.0_r8 + epf_p_total_hr = epf_p_total_hr + + $ (epf_p_prev + epf_p_curr) * dpsi_local / 2.0_r8 + epf_t_total_hr = epf_t_total_hr + + $ (epf_t_prev + epf_t_curr) * dpsi_local / 2.0_r8 + epf_z_total_hr = epf_z_total_hr + + $ (epf_z_prev + epf_z_curr) * dpsi_local / 2.0_r8 + dst_int_total_k_hr = dst_int_total_k_hr + + $ (dst_prev + dst_curr) * dpsi_local / 2.0_r8 + dst1_total_hr = dst1_total_hr + + $ (dst1_prev + dst1_curr) * dpsi_local / 2.0_r8 + dst2_total_hr = dst2_total_hr + + $ (dst2_prev + dst2_curr) * dpsi_local / 2.0_r8 + dst3_total_hr = dst3_total_hr + + $ (dst3_prev + dst3_curr) * dpsi_local / 2.0_r8 + psi_prev = psi_curr + epf_prev = epf_curr + epf_p_prev = epf_p_curr + epf_t_prev = epf_t_curr + epf_z_prev = epf_z_curr + dst_prev = dst_curr + dst1_prev = dst1_curr + dst2_prev = dst2_curr + dst3_prev = dst3_curr + dw_cum = 0.5_r8 * + $ (CMPLX(epf_int_total_hr, 0.0_r8, r8) - + $ dst_int_total_k_hr) + WRITE(u_int,'(15(es17.8e3))') psi_curr, epf_curr, + $ REAL(dst_curr), AIMAG(dst_curr), epf_int_total_hr, + $ REAL(dst_int_total_k_hr), AIMAG(dst_int_total_k_hr), + $ REAL(dw_cum), AIMAG(dw_cum), epf_p_curr, epf_t_curr, + $ epf_z_curr, REAL(dst1_curr), REAL(dst2_curr), + $ REAL(dst3_curr) ENDDO + dw_raw_k_hr = 0.5_r8 * + $ (CMPLX(epf_int_total_hr, 0.0_r8, r8) - dst_int_total_k_hr) + dw_dcon_k_hr = dw_raw_k_hr * dcon_fac - DO ipsi = 0, mpsi - WRITE(u_int,'(7(es17.8e3))') rzphi%xs(ipsi), epf_psi(ipsi), - $ REAL(dst_psi_k(ipsi)), AIMAG(dst_psi_k(ipsi)), - $ epf_cumsum(ipsi), REAL(dst_cumsum_k(ipsi)), - $ AIMAG(dst_cumsum_k(ipsi)) - ENDDO WRITE(u_int,*) - -c Write integration results - WRITE(u_int,'(a)') "c Psi integration results (Trapezoidal rule)" - WRITE(u_int,'(a)') "c psi_min, psi_max, nominal_dpsi" - WRITE(u_int,'(3(es17.8e3))') psi_min, psi_max, dpsi - dw_raw_k = 0.5_r8 * - $ (CMPLX(epf_int_total, 0.0_r8, r8) - dst_int_total_k) - - WRITE(u_int,'(a)') "c Integration results:" - WRITE(u_int,'(3(es17.8e3))') epf_int_total, REAL(dst_int_total_k), - $ AIMAG(dst_int_total_k) - WRITE(u_int,'(a)') "c deltaW = 0.5 * (EPF - DST)" - WRITE(u_int,'(a)') "c raw_deltaW(K)" - WRITE(u_int,'(2(es17.8e3))') REAL(dw_raw_k), AIMAG(dw_raw_k) - - WRITE(*,'(a)') "GPEC_RECON integration totals:" - WRITE(*,'(a,es17.8e3)') " EPF = ", epf_int_total - WRITE(*,'(a,2es17.8e3)') " DST(K) = ", - $ REAL(dst_int_total_k), AIMAG(dst_int_total_k) - WRITE(*,'(a,2es17.8e3)') " dW_raw(K)= ", - $ REAL(dw_raw_k), AIMAG(dw_raw_k) + WRITE(u_int,'(a)') "c Final psifac-grid integration results:" + WRITE(u_int,'(3(es17.8e3))') epf_int_total_hr, + $ REAL(dst_int_total_k_hr), AIMAG(dst_int_total_k_hr) + WRITE(u_int,'(a)') "c Final C2 component totals:" + WRITE(u_int,'(3(es17.8e3))') epf_p_total_hr, + $ epf_t_total_hr, epf_z_total_hr + WRITE(u_int,'(a)') "c Final K component totals:" + WRITE(u_int,'(3(es17.8e3))') REAL(dst1_total_hr), + $ REAL(dst2_total_hr), REAL(dst3_total_hr) + WRITE(u_int,'(a)') "c dW_gpec(K)" + WRITE(u_int,'(2(es17.8e3))') REAL(dw_raw_k_hr), + $ AIMAG(dw_raw_k_hr) + WRITE(u_int,'(a)') "c dW_dcon(K), normalized from dW_gpec(K)" + WRITE(u_int,'(2(es17.8e3))') REAL(dw_dcon_k_hr), + $ AIMAG(dw_dcon_k_hr) + + WRITE(*,'(a)') "GPEC_RECON final psifac-grid dW terms:" + WRITE(*,'(a,es17.8e3)') " int_J_C2_over_mu0 = ", + $ epf_int_total_hr + WRITE(*,'(a,2es17.8e3)') " int_J_K_xin2 = ", + $ REAL(dst_int_total_k_hr), AIMAG(dst_int_total_k_hr) + WRITE(*,'(a,2es17.8e3)') " dW_gpec(K) = ", + $ REAL(dw_raw_k_hr), AIMAG(dw_raw_k_hr) + WRITE(*,'(a,2es17.8e3)') " dW_dcon(K) = ", + $ REAL(dw_dcon_k_hr), AIMAG(dw_dcon_k_hr) + WRITE(*,'(a)') "GPEC_RECON C2 component totals:" + WRITE(*,'(a,es17.8e3)') " C2_psi/mu0 = ", + $ epf_p_total_hr + WRITE(*,'(a,es17.8e3)') " C2_theta/mu0 = ", + $ epf_t_total_hr + WRITE(*,'(a,es17.8e3)') " C2_zeta/mu0 = ", + $ epf_z_total_hr + WRITE(*,'(a)') "GPEC_RECON K component totals:" + WRITE(*,'(a,2es17.8e3)') " K1_xin2 = ", + $ REAL(dst1_total_hr), AIMAG(dst1_total_hr) + WRITE(*,'(a,2es17.8e3)') " K2_xin2 = ", + $ REAL(dst2_total_hr), AIMAG(dst2_total_hr) + WRITE(*,'(a,2es17.8e3)') " K3_xin2 = ", + $ REAL(dst3_total_hr), AIMAG(dst3_total_hr) WRITE(*,*) "GPEC ep(1):", REAL(ep(1)) WRITE(*,*) "DCON plasma1-equivalent:", REAL(ep(1))*(mu0*2.0) / $ psio**2 / (chi1*1e-3)**2 + + OPEN(UNIT=u_log, FILE="gpec.log", STATUS="UNKNOWN", + $ POSITION="APPEND") + WRITE(u_log,'(a)') "GPEC_RECON final results:" + WRITE(u_log,'(a,I8)') " mode = ", mode + WRITE(u_log,'(a,L1)') " reg_flag = ", reg_flag + WRITE(u_log,'(a)') " psifac-grid dW terms:" + WRITE(u_log,'(a,es17.8e3)') " int_J_C2_over_mu0 = ", + $ epf_int_total_hr + WRITE(u_log,'(a,2es17.8e3)') " int_J_K_xin2 = ", + $ REAL(dst_int_total_k_hr), AIMAG(dst_int_total_k_hr) + WRITE(u_log,'(a,2es17.8e3)') " dW_gpec(K) = ", + $ REAL(dw_raw_k_hr), AIMAG(dw_raw_k_hr) + WRITE(u_log,'(a,2es17.8e3)') " dW_dcon(K) = ", + $ REAL(dw_dcon_k_hr), AIMAG(dw_dcon_k_hr) + WRITE(u_log,'(a)') " C2 component totals:" + WRITE(u_log,'(a,es17.8e3)') " C2_psi/mu0 = ", + $ epf_p_total_hr + WRITE(u_log,'(a,es17.8e3)') " C2_theta/mu0 = ", + $ epf_t_total_hr + WRITE(u_log,'(a,es17.8e3)') " C2_zeta/mu0 = ", + $ epf_z_total_hr + WRITE(u_log,'(a)') " K component totals:" + WRITE(u_log,'(a,2es17.8e3)') " K1_xin2 = ", + $ REAL(dst1_total_hr), AIMAG(dst1_total_hr) + WRITE(u_log,'(a,2es17.8e3)') " K2_xin2 = ", + $ REAL(dst2_total_hr), AIMAG(dst2_total_hr) + WRITE(u_log,'(a,2es17.8e3)') " K3_xin2 = ", + $ REAL(dst3_total_hr), AIMAG(dst3_total_hr) + WRITE(u_log,'(a,es17.8e3)') " GPEC ep(1) = ", REAL(ep(1)) + WRITE(u_log,'(a,es17.8e3)') " DCON plasma1-equivalent = ", + $ REAL(ep(1))*(mu0*2.0) / psio**2 / (chi1*1e-3)**2 + WRITE(u_log,*) + CLOSE(u_log) CALL gpeq_dealloc CLOSE(ushear_fun) From 6b278321e525f1afc729769797e12d2c2f02b550 Mon Sep 17 00:00:00 2001 From: satelite2517 Date: Mon, 18 May 2026 16:41:51 +0900 Subject: [PATCH 13/62] GPEC - MINOR - Document recon input settings (cherry picked from commit 86eae46c88eed6990d6d8bdaf0232a3b7192fc64) --- input/gpec.in | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/input/gpec.in b/input/gpec.in index 44d90230e..d49015413 100644 --- a/input/gpec.in +++ b/input/gpec.in @@ -85,7 +85,8 @@ out_ahg2msc=f ! Output deprecated ahg2msc.out files. This is used to communicate with vacuum, but is now done through memory. verbose=t ! Print run log to terminal - recon_flag=f ! Calculate each contribution of destabilizing term and effective perturbed field [Bernstein, Handbook of Plasma Physics, 1983] + recon_flag=f ! Calculate each contribution of destabilizing term and effective perturbed field [Bernstein, Handbook of Plasma Physics, 1983]. + ! For DCON eigenmode reconstruction set coil_flag=f, mode_flag=t, choose mode as needed, and keep reg_flag=f. / &GPEC_DIAGNOSE timeit=f ! Print timer splits for major subroutines From f4ccfb8935dad08eab11c3da549ab2aca5a8b292 Mon Sep 17 00:00:00 2001 From: satelite2517 Date: Tue, 19 May 2026 12:04:16 +0900 Subject: [PATCH 14/62] GPEC - MINOR - Update external perturbation flags in gpec.in (cherry picked from commit d8a5dff64d903bb39af9677f6e5c6ae1a0ec2b7c) --- docs/examples/DIIID_ideal_example/gpec.in | 31 ++++++++++------------- 1 file changed, 14 insertions(+), 17 deletions(-) diff --git a/docs/examples/DIIID_ideal_example/gpec.in b/docs/examples/DIIID_ideal_example/gpec.in index f1b422e23..99f9b9e12 100644 --- a/docs/examples/DIIID_ideal_example/gpec.in +++ b/docs/examples/DIIID_ideal_example/gpec.in @@ -11,7 +11,7 @@ tmag_in =0 ! True(1) if external perturbation has toroidal angle defined by jac_in. False(0) if machine angle. mthsurf =0 ! Number of poloidal angle gridpoints. Minimum of twice the Nyquist condition from DCON m limits is enforced. - coil_flag=f ! Calculate external perturbation from coils in coil.in + coil_flag=t ! Calculate external perturbation from coils in coil.in data_flag=f ! Apply perturbation from thrid party code output data_type="surfmn" ! Name of said code. Choose: surfmn,?? @@ -28,8 +28,8 @@ displacement_flag=f ! Perturbations are displacement (m). Default is field (T). fixed_boundary_flag=f ! Total perturbation = external perturbation - mode_flag = .T. ! Return only a single DCON eigenfunction defined by mode (ignores external pert.) - mode = 1 ! DCON eigen function index (1 is least stable) + mode_flag = .F. ! Return only a single DCON eigenfunction defined by mode (ignores external pert.) + mode = 0 ! DCON eigen function index (1 is least stable) filter_types = 'w' ! Isolate the filter_modes of energy (w), reluctance (r), permiability (p) or singular coupling (s) eigenvectors/singular-vectors filter_modes = 0 ! Number of modes isolated, negative values isolate backwards from the last mode / @@ -49,21 +49,21 @@ tmag_out=1 ! True(1) for magnetic toroidal angle outputs (affects singcoup and singfld, appends gpec_control) mlim_out=64 ! If positive, Fourier decomposed outputs will span -mlim_out<=m<=mlim_out. Default (<=0) outputs on internal m range. - resp_flag=f ! Output energy, reluctance, inductance, and permeability eigenvalues, eigenvectors, and matrices - filter_flag=f ! Outputs energy, reluctance, pereability, and (optionally) the singular-coupling eigenmodes on the control surface - singcoup_flag=f ! Calculate coupling of each m to resonant surfaces - singfld_flag=f ! Output of resonant surface quantities (flux,current,etc.) + resp_flag=t ! Output energy, reluctance, inductance, and permeability eigenvalues, eigenvectors, and matrices + filter_flag=t ! Outputs energy, reluctance, pereability, and (optionally) the singular-coupling eigenmodes on the control surface + singcoup_flag=t ! Calculate coupling of each m to resonant surfaces + singfld_flag=t ! Output of resonant surface quantities (flux,current,etc.) vsingfld_flag=f ! Output of vacuum resonant surface quantities - singthresh_flag=f ! Calculate Callen resonant field penetration threshold (requires kinetic profiles from pentrc.in) + singthresh_flag=t ! Calculate Callen resonant field penetration threshold (requires kinetic profiles from pentrc.in) pmodb_flag=f ! Outputs delta-B_Lagrangian - xbnormal_flag=f ! Outputs normal displacement and field in plasma + xbnormal_flag=t ! Outputs normal displacement and field in plasma vbnormal_flag=f ! Outputs vacuum normal displacement and field in plasma - xclebsch_flag=f ! Outputs clebsch coordinate displacement for PENT + xclebsch_flag=t ! Outputs clebsch coordinate displacement for PENT dw_flag=f ! Outputs self-consistent energy and torque profiles (when kin_flag=t from DCON) eqbrzphi_flag=f ! Outputs equilibrium field on regular (r,z) grid - brzphi_flag=f ! Outputs perturbed field on regular (r,z) grid + brzphi_flag=t ! Outputs perturbed field on regular (r,z) grid xrzphi_flag=f ! Outputs displacement on regular (r,z) grid vbrzphi_flag=f ! Outputs field on regular (r,z) grid due to total boundary surface current (not a real field) vvbrzphi_flag=f ! Outputs field on regular (r,z) grid due to exeternal perturbation surface current (not a real field) @@ -76,16 +76,13 @@ nz = 124 ! Number of vertical grid points in rzphi outputs fun_flag=t ! Write outputs to (r,z) in addition to default (psi,m) flux_flag=f ! Write outputs to (psi,theta) in addition to default (psi,m) - bin_flag=t ! Write binary outputs for use with xdraw - bin_2d_flag=t ! Write 2D binary outputs for use with xdraw + bin_flag=f ! Write binary outputs for use with xdraw + bin_2d_flag=f ! Write 2D binary outputs for use with xdraw out_ahg2msc=f ! Output deprecated ahg2msc.out files. This is used to communicate with vacuum, but is now done through memory. max_linesout=0 ! Maximum length of ascii data tables enforced by increasing radial step size (iff .gt. 0). verbose=t ! Print run log to terminal - - recon_flag=t - netcdf_flag=t / &GPEC_DIAGNOSE timeit=t ! Print timer splits for major subroutines radvar_flag=f ! Map various radial variables (rho,psi_tor) on psi_n grid -/ +/ \ No newline at end of file From 08a326b9c7b6a10cbc076443f35452f0384325cb Mon Sep 17 00:00:00 2001 From: satelite2517 Date: Tue, 19 May 2026 12:06:36 +0900 Subject: [PATCH 15/62] GPEC - FEATURE - Add configurable recon integration method (cherry picked from commit 7b8d4a254297fd849c651b0c211f3c2e759749fd) --- gpec/gpec.f | 10 ++- gpec/gpglobal.F | 2 +- gpec/gpout.f | 169 ++++++++++++++++++++++++++++++++++++------------ 3 files changed, 135 insertions(+), 46 deletions(-) diff --git a/gpec/gpec.f b/gpec/gpec.f index 5ff5ab9eb..a64a0e8e4 100644 --- a/gpec/gpec.f +++ b/gpec/gpec.f @@ -70,7 +70,7 @@ PROGRAM gpec_main $ xclebsch_flag,pbrzphi_flag,verbose,max_linesout,filter_flag, $ netcdf_flag,ascii_flag,singthresh_flag, $ singthresh_callen_flag,singthresh_slayer_flag, - $ singthresh_slayer_inpr,out_ahg2msc,recon_flag + $ singthresh_slayer_inpr,out_ahg2msc,recon_flag,recon_int NAMELIST/gpec_diagnose/singcurs_flag,xbcontra_flag, $ xbnobo_flag,d3_flag,div_flag,xbst_flag,jacfac_flag, $ pmodbmn_flag,rzphibx_flag,radvar_flag,eigen_flag,magpot_flag, @@ -195,6 +195,7 @@ PROGRAM gpec_main eigm_flag=.FALSE. mutual_test_flag=.FALSE. recon_flag=.FALSE. + recon_int="spline" majr=10.0 minr=1.0 @@ -225,6 +226,12 @@ PROGRAM gpec_main READ(in_unit,NML=gpec_output) READ(in_unit,NML=gpec_diagnose) CALL ascii_close(in_unit) + SELECT CASE(TRIM(recon_int)) + CASE("spline","trapezoid") + CASE DEFAULT + CALL gpec_stop("gpec_output recon_int must be spline or "// + $ "trapezoid") + END SELECT galsol%gal_flag=gal_flag IF(timeit) CALL gpec_timer(0) @@ -837,4 +844,3 @@ PROGRAM gpec_main CALL gpec_dealloc CALL gpec_stop("Normal termination.") END PROGRAM gpec_main - diff --git a/gpec/gpglobal.F b/gpec/gpglobal.F index 00ca516fb..b690bc51e 100644 --- a/gpec/gpglobal.F +++ b/gpec/gpglobal.F @@ -38,7 +38,7 @@ MODULE gpglobal_mod CHARACTER(2) :: sn,ss CHARACTER(10) :: date,time,zone - CHARACTER(16) :: jac_type,jac_in,jac_out,data_type + CHARACTER(16) :: jac_type,jac_in,jac_out,data_type,recon_int CHARACTER(128) :: ieqfile,idconfile,ivacuumfile,rdconfile,dcon_dir INTEGER, PARAMETER :: hmnum=128 diff --git a/gpec/gpout.f b/gpec/gpout.f index ebaf26619..04ea8e10b 100644 --- a/gpec/gpout.f +++ b/gpec/gpout.f @@ -6897,7 +6897,7 @@ SUBROUTINE gpout_recon(mode, xspmn) CHARACTER(128) :: cw_fun_file, cw_mn_file, cv_fun_file, cv_mn_file CHARACTER(128) :: cv2_fun_file, cv2_mn_file, int_file REAL(r8) :: dpsi_local - INTEGER :: istep + INTEGER :: istep, nint_pts, iint REAL(r8) :: psi_prev, psi_curr, epf_prev, epf_curr REAL(r8) :: epf_p_prev, epf_t_prev, epf_z_prev REAL(r8) :: epf_p_curr, epf_t_curr, epf_z_curr @@ -6907,6 +6907,11 @@ SUBROUTINE gpout_recon(mode, xspmn) $ dst3_prev, dst1_curr, dst2_curr, dst3_curr, $ dst_int_total_k_hr, dst1_total_hr, dst2_total_hr, $ dst3_total_hr, dw_raw_k_hr, dw_dcon_k_hr, dw_cum + REAL(r8), DIMENSION(:), ALLOCATABLE :: psi_int_pts, epf_vals, + $ epf_p_vals, epf_t_vals, epf_z_vals + COMPLEX(r8), DIMENSION(:), ALLOCATABLE :: dst_vals, dst1_vals, + $ dst2_vals, dst3_vals + TYPE(cspline_type) :: recon_epf_spl, recon_dst_spl c Diagnostic variables for C vector comparison INTEGER :: ipsi_mid, itheta_mid, ipert_diag, m1 @@ -7127,13 +7132,29 @@ SUBROUTINE gpout_recon(mode, xspmn) WRITE(u_int,'(a)') "c C2/mu0 = int J |C|^2 / mu0" WRITE(u_int,'(a)') "c Kxin2 = int J K |xi_n|^2" WRITE(u_int,'(a)') "c dW_gpec(K) = 0.5 * (C2/mu0 - Kxin2)" - dw_cum = CMPLX(0.0_r8, 0.0_r8, r8) - WRITE(u_int,'(15(es17.8e3))') psi_prev, epf_prev, - $ REAL(dst_prev), AIMAG(dst_prev), epf_int_total_hr, - $ REAL(dst_int_total_k_hr), AIMAG(dst_int_total_k_hr), - $ REAL(dw_cum), AIMAG(dw_cum), epf_p_prev, epf_t_prev, - $ epf_z_prev, REAL(dst1_prev), REAL(dst2_prev), - $ REAL(dst3_prev) + WRITE(u_int,'(a,a)') "c recon_int = ", TRIM(recon_int) + nint_pts = 1 + DO istep = 0, mstep-1 + psi_curr = psifac(istep+1) + IF (psi_curr < rzphi%xs(0)) CYCLE + IF (psi_curr > rzphi%xs(mpsi)) EXIT + nint_pts = nint_pts + 1 + ENDDO + ALLOCATE(psi_int_pts(nint_pts), epf_vals(nint_pts), + $ epf_p_vals(nint_pts), epf_t_vals(nint_pts), + $ epf_z_vals(nint_pts), dst_vals(nint_pts), + $ dst1_vals(nint_pts), dst2_vals(nint_pts), + $ dst3_vals(nint_pts)) + psi_int_pts(1) = psi_prev + epf_vals(1) = epf_prev + epf_p_vals(1) = epf_p_prev + epf_t_vals(1) = epf_t_prev + epf_z_vals(1) = epf_z_prev + dst_vals(1) = dst_prev + dst1_vals(1) = dst1_prev + dst2_vals(1) = dst2_prev + dst3_vals(1) = dst3_prev + iint = 1 DO istep = 0, mstep-1 psi_curr = psifac(istep+1) IF (psi_curr < rzphi%xs(0)) CYCLE @@ -7142,42 +7163,104 @@ SUBROUTINE gpout_recon(mode, xspmn) $ epf_t_curr, epf_z_curr) CALL gpeq_dst(psi_curr, dst_curr, dst1_curr, dst2_curr, $ dst3_curr) - dpsi_local = psi_curr - psi_prev - epf_int_total_hr = epf_int_total_hr + - $ (epf_prev + epf_curr) * dpsi_local / 2.0_r8 - epf_p_total_hr = epf_p_total_hr + - $ (epf_p_prev + epf_p_curr) * dpsi_local / 2.0_r8 - epf_t_total_hr = epf_t_total_hr + - $ (epf_t_prev + epf_t_curr) * dpsi_local / 2.0_r8 - epf_z_total_hr = epf_z_total_hr + - $ (epf_z_prev + epf_z_curr) * dpsi_local / 2.0_r8 - dst_int_total_k_hr = dst_int_total_k_hr + - $ (dst_prev + dst_curr) * dpsi_local / 2.0_r8 - dst1_total_hr = dst1_total_hr + - $ (dst1_prev + dst1_curr) * dpsi_local / 2.0_r8 - dst2_total_hr = dst2_total_hr + - $ (dst2_prev + dst2_curr) * dpsi_local / 2.0_r8 - dst3_total_hr = dst3_total_hr + - $ (dst3_prev + dst3_curr) * dpsi_local / 2.0_r8 - psi_prev = psi_curr - epf_prev = epf_curr - epf_p_prev = epf_p_curr - epf_t_prev = epf_t_curr - epf_z_prev = epf_z_curr - dst_prev = dst_curr - dst1_prev = dst1_curr - dst2_prev = dst2_curr - dst3_prev = dst3_curr - dw_cum = 0.5_r8 * - $ (CMPLX(epf_int_total_hr, 0.0_r8, r8) - - $ dst_int_total_k_hr) - WRITE(u_int,'(15(es17.8e3))') psi_curr, epf_curr, - $ REAL(dst_curr), AIMAG(dst_curr), epf_int_total_hr, - $ REAL(dst_int_total_k_hr), AIMAG(dst_int_total_k_hr), - $ REAL(dw_cum), AIMAG(dw_cum), epf_p_curr, epf_t_curr, - $ epf_z_curr, REAL(dst1_curr), REAL(dst2_curr), - $ REAL(dst3_curr) + iint = iint + 1 + psi_int_pts(iint) = psi_curr + epf_vals(iint) = epf_curr + epf_p_vals(iint) = epf_p_curr + epf_t_vals(iint) = epf_t_curr + epf_z_vals(iint) = epf_z_curr + dst_vals(iint) = dst_curr + dst1_vals(iint) = dst1_curr + dst2_vals(iint) = dst2_curr + dst3_vals(iint) = dst3_curr ENDDO + IF (TRIM(recon_int) == "spline" .AND. nint_pts > 1) THEN + CALL cspline_alloc(recon_epf_spl, nint_pts-1, 4) + CALL cspline_alloc(recon_dst_spl, nint_pts-1, 4) + recon_epf_spl%xs = psi_int_pts + recon_dst_spl%xs = psi_int_pts + recon_epf_spl%fs(:,1) = CMPLX(epf_vals, 0.0_r8, r8) + recon_epf_spl%fs(:,2) = CMPLX(epf_p_vals, 0.0_r8, r8) + recon_epf_spl%fs(:,3) = CMPLX(epf_t_vals, 0.0_r8, r8) + recon_epf_spl%fs(:,4) = CMPLX(epf_z_vals, 0.0_r8, r8) + recon_dst_spl%fs(:,1) = dst_vals + recon_dst_spl%fs(:,2) = dst1_vals + recon_dst_spl%fs(:,3) = dst2_vals + recon_dst_spl%fs(:,4) = dst3_vals + CALL cspline_fit(recon_epf_spl, "extrap") + CALL cspline_fit(recon_dst_spl, "extrap") + CALL cspline_int(recon_epf_spl) + CALL cspline_int(recon_dst_spl) + DO iint = 1, nint_pts + epf_int_total_hr = REAL(recon_epf_spl%fsi(iint-1,1)) + epf_p_total_hr = REAL(recon_epf_spl%fsi(iint-1,2)) + epf_t_total_hr = REAL(recon_epf_spl%fsi(iint-1,3)) + epf_z_total_hr = REAL(recon_epf_spl%fsi(iint-1,4)) + dst_int_total_k_hr = recon_dst_spl%fsi(iint-1,1) + dst1_total_hr = recon_dst_spl%fsi(iint-1,2) + dst2_total_hr = recon_dst_spl%fsi(iint-1,3) + dst3_total_hr = recon_dst_spl%fsi(iint-1,4) + dw_cum = 0.5_r8 * + $ (CMPLX(epf_int_total_hr, 0.0_r8, r8) - + $ dst_int_total_k_hr) + WRITE(u_int,'(15(es17.8e3))') psi_int_pts(iint), + $ epf_vals(iint), REAL(dst_vals(iint)), + $ AIMAG(dst_vals(iint)), epf_int_total_hr, + $ REAL(dst_int_total_k_hr), AIMAG(dst_int_total_k_hr), + $ REAL(dw_cum), AIMAG(dw_cum), epf_p_vals(iint), + $ epf_t_vals(iint), epf_z_vals(iint), + $ REAL(dst1_vals(iint)), REAL(dst2_vals(iint)), + $ REAL(dst3_vals(iint)) + ENDDO + CALL cspline_dealloc(recon_epf_spl) + CALL cspline_dealloc(recon_dst_spl) + ELSE + dw_cum = CMPLX(0.0_r8, 0.0_r8, r8) + WRITE(u_int,'(15(es17.8e3))') psi_int_pts(1), epf_vals(1), + $ REAL(dst_vals(1)), AIMAG(dst_vals(1)), epf_int_total_hr, + $ REAL(dst_int_total_k_hr), AIMAG(dst_int_total_k_hr), + $ REAL(dw_cum), AIMAG(dw_cum), epf_p_vals(1), epf_t_vals(1), + $ epf_z_vals(1), REAL(dst1_vals(1)), REAL(dst2_vals(1)), + $ REAL(dst3_vals(1)) + DO iint = 2, nint_pts + dpsi_local = psi_int_pts(iint) - psi_int_pts(iint-1) + epf_int_total_hr = epf_int_total_hr + + $ (epf_vals(iint-1) + epf_vals(iint)) * dpsi_local / 2.0_r8 + epf_p_total_hr = epf_p_total_hr + + $ (epf_p_vals(iint-1) + epf_p_vals(iint)) * dpsi_local + $ / 2.0_r8 + epf_t_total_hr = epf_t_total_hr + + $ (epf_t_vals(iint-1) + epf_t_vals(iint)) * dpsi_local + $ / 2.0_r8 + epf_z_total_hr = epf_z_total_hr + + $ (epf_z_vals(iint-1) + epf_z_vals(iint)) * dpsi_local + $ / 2.0_r8 + dst_int_total_k_hr = dst_int_total_k_hr + + $ (dst_vals(iint-1) + dst_vals(iint)) * dpsi_local / 2.0_r8 + dst1_total_hr = dst1_total_hr + + $ (dst1_vals(iint-1) + dst1_vals(iint)) * + $ dpsi_local / 2.0_r8 + dst2_total_hr = dst2_total_hr + + $ (dst2_vals(iint-1) + dst2_vals(iint)) * + $ dpsi_local / 2.0_r8 + dst3_total_hr = dst3_total_hr + + $ (dst3_vals(iint-1) + dst3_vals(iint)) * + $ dpsi_local / 2.0_r8 + dw_cum = 0.5_r8 * + $ (CMPLX(epf_int_total_hr, 0.0_r8, r8) - + $ dst_int_total_k_hr) + WRITE(u_int,'(15(es17.8e3))') psi_int_pts(iint), + $ epf_vals(iint), REAL(dst_vals(iint)), + $ AIMAG(dst_vals(iint)), epf_int_total_hr, + $ REAL(dst_int_total_k_hr), AIMAG(dst_int_total_k_hr), + $ REAL(dw_cum), AIMAG(dw_cum), epf_p_vals(iint), + $ epf_t_vals(iint), epf_z_vals(iint), + $ REAL(dst1_vals(iint)), REAL(dst2_vals(iint)), + $ REAL(dst3_vals(iint)) + ENDDO + ENDIF + DEALLOCATE(psi_int_pts, epf_vals, epf_p_vals, epf_t_vals, + $ epf_z_vals, dst_vals, dst1_vals, dst2_vals, dst3_vals) dw_raw_k_hr = 0.5_r8 * $ (CMPLX(epf_int_total_hr, 0.0_r8, r8) - dst_int_total_k_hr) dw_dcon_k_hr = dw_raw_k_hr * dcon_fac From 0101e98bbb7ce2b49f6d63aff3bd70ef1d4e7fc7 Mon Sep 17 00:00:00 2001 From: satelite2517 Date: Tue, 19 May 2026 12:06:43 +0900 Subject: [PATCH 16/62] GPEC - MINOR - Document recon integration option in input (cherry picked from commit a978489ae17e29317e064141f5f5c7455921f900) --- input/gpec.in | 1 + 1 file changed, 1 insertion(+) diff --git a/input/gpec.in b/input/gpec.in index d49015413..8de3a6ce5 100644 --- a/input/gpec.in +++ b/input/gpec.in @@ -86,6 +86,7 @@ verbose=t ! Print run log to terminal recon_flag=f ! Calculate each contribution of destabilizing term and effective perturbed field [Bernstein, Handbook of Plasma Physics, 1983]. + recon_int="spline" ! recon_flag radial integration on psifac grid. Options: "spline" or "trapezoid". ! For DCON eigenmode reconstruction set coil_flag=f, mode_flag=t, choose mode as needed, and keep reg_flag=f. / &GPEC_DIAGNOSE From a62982c9a7ec549875af53a2e7307b41fa2d4a75 Mon Sep 17 00:00:00 2001 From: satelite2517 Date: Tue, 19 May 2026 12:15:15 +0900 Subject: [PATCH 17/62] GPEC - MINOR - Fix recon ep summary for selected mode (cherry picked from commit 7f5e53da975d2a3f358a34ddf3a20bce5e473564) --- gpec/gpout.f | 20 ++++++++++++++------ 1 file changed, 14 insertions(+), 6 deletions(-) diff --git a/gpec/gpout.f b/gpec/gpout.f index 04ea8e10b..c5e69a240 100644 --- a/gpec/gpout.f +++ b/gpec/gpout.f @@ -6897,8 +6897,8 @@ SUBROUTINE gpout_recon(mode, xspmn) CHARACTER(128) :: cw_fun_file, cw_mn_file, cv_fun_file, cv_mn_file CHARACTER(128) :: cv2_fun_file, cv2_mn_file, int_file REAL(r8) :: dpsi_local - INTEGER :: istep, nint_pts, iint - REAL(r8) :: psi_prev, psi_curr, epf_prev, epf_curr + INTEGER :: istep, nint_pts, iint, ep_index + REAL(r8) :: psi_prev, psi_curr, epf_prev, epf_curr, ep_selected REAL(r8) :: epf_p_prev, epf_t_prev, epf_z_prev REAL(r8) :: epf_p_curr, epf_t_curr, epf_z_curr REAL(r8) :: epf_int_total_hr, epf_p_total_hr, @@ -7012,6 +7012,12 @@ SUBROUTINE gpout_recon(mode, xspmn) $ "c2_mu0_sum","k_xin2_c_re","k_xin2_c_im", $ "dw_c_re","dw_c_im","c2_psi","c2_theta","c2_zeta", $ "k1_xin2_re","k2_xin2_re","k3_xin2_re" + ep_index = 1 + IF (mode_flag) ep_index = mode + IF (ep_index < 1 .OR. ep_index > mpert) THEN + CALL gpec_stop("gpout_recon selected mode is out of range") + ENDIF + ep_selected = REAL(ep(ep_index)) c----------------------------------------------------------------------- c main loop over all psi levels. c compute gpeq reconstruction diagnostics at each psi. @@ -7305,8 +7311,9 @@ SUBROUTINE gpout_recon(mode, xspmn) $ REAL(dst2_total_hr), AIMAG(dst2_total_hr) WRITE(*,'(a,2es17.8e3)') " K3_xin2 = ", $ REAL(dst3_total_hr), AIMAG(dst3_total_hr) - WRITE(*,*) "GPEC ep(1):", REAL(ep(1)) - WRITE(*,*) "DCON plasma1-equivalent:", REAL(ep(1))*(mu0*2.0) / + WRITE(*,'(a,I8,a,es17.8e3)') "GPEC ep(", ep_index, "):", + $ ep_selected + WRITE(*,*) "DCON plasma1-equivalent:", ep_selected*(mu0*2.0) / $ psio**2 / (chi1*1e-3)**2 OPEN(UNIT=u_log, FILE="gpec.log", STATUS="UNKNOWN", @@ -7337,9 +7344,10 @@ SUBROUTINE gpout_recon(mode, xspmn) $ REAL(dst2_total_hr), AIMAG(dst2_total_hr) WRITE(u_log,'(a,2es17.8e3)') " K3_xin2 = ", $ REAL(dst3_total_hr), AIMAG(dst3_total_hr) - WRITE(u_log,'(a,es17.8e3)') " GPEC ep(1) = ", REAL(ep(1)) + WRITE(u_log,'(a,I8,a,es17.8e3)') " GPEC ep(", ep_index, + $ ") = ", ep_selected WRITE(u_log,'(a,es17.8e3)') " DCON plasma1-equivalent = ", - $ REAL(ep(1))*(mu0*2.0) / psio**2 / (chi1*1e-3)**2 + $ ep_selected*(mu0*2.0) / psio**2 / (chi1*1e-3)**2 WRITE(u_log,*) CLOSE(u_log) From 63ee5639be967bc4c69feda27003cc35d7827b51 Mon Sep 17 00:00:00 2001 From: satelite2517 Date: Tue, 19 May 2026 12:18:29 +0900 Subject: [PATCH 18/62] GPEC - MINOR - Remove recon completion banner (cherry picked from commit b08b3d46ae13fccd1c80063a543b371b35e432fe) --- gpec/gpout.f | 8 -------- 1 file changed, 8 deletions(-) diff --git a/gpec/gpout.f b/gpec/gpout.f index c5e69a240..c673e1175 100644 --- a/gpec/gpout.f +++ b/gpec/gpout.f @@ -7365,14 +7365,6 @@ SUBROUTINE gpout_recon(mode, xspmn) CALL ascii_close(ucv2_fun) CALL ascii_close(ucv2_mn) c----------------------------------------------------------------------- -c completion message. -c----------------------------------------------------------------------- - IF(verbose) WRITE(*,*) - $ "GPDIAG_RECON: Reconstruction diagnostics complete" - IF(verbose) WRITE(*,*)" C vectors computed and stored in"// - $ " cw*_mn(mpert, 0:mpsi)" - IF(verbose) WRITE(*,*)"__________________________________________" -c----------------------------------------------------------------------- c terminate. c----------------------------------------------------------------------- RETURN From cb85c360c9458d4ecf70bef8919a6b91556a45a3 Mon Sep 17 00:00:00 2001 From: satelite2517 Date: Tue, 19 May 2026 12:38:03 +0900 Subject: [PATCH 19/62] GPEC - MINOR - Align recon ep summary labels (cherry picked from commit 31e6c4709235832decd83fa2f2d03857a89900d5) --- gpec/gpout.f | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/gpec/gpout.f b/gpec/gpout.f index c673e1175..5fd540962 100644 --- a/gpec/gpout.f +++ b/gpec/gpout.f @@ -7311,10 +7311,10 @@ SUBROUTINE gpout_recon(mode, xspmn) $ REAL(dst2_total_hr), AIMAG(dst2_total_hr) WRITE(*,'(a,2es17.8e3)') " K3_xin2 = ", $ REAL(dst3_total_hr), AIMAG(dst3_total_hr) - WRITE(*,'(a,I8,a,es17.8e3)') "GPEC ep(", ep_index, "):", + WRITE(*,'(a,a,a,es17.8e3)') "GPEC ep(", TRIM(smode), "):", $ ep_selected - WRITE(*,*) "DCON plasma1-equivalent:", ep_selected*(mu0*2.0) / - $ psio**2 / (chi1*1e-3)**2 + WRITE(*,'(a,a,a,es17.8e3)') "DCON ep(", TRIM(smode), "):", + $ ep_selected*(mu0*2.0) / psio**2 / (chi1*1e-3)**2 OPEN(UNIT=u_log, FILE="gpec.log", STATUS="UNKNOWN", $ POSITION="APPEND") @@ -7344,10 +7344,10 @@ SUBROUTINE gpout_recon(mode, xspmn) $ REAL(dst2_total_hr), AIMAG(dst2_total_hr) WRITE(u_log,'(a,2es17.8e3)') " K3_xin2 = ", $ REAL(dst3_total_hr), AIMAG(dst3_total_hr) - WRITE(u_log,'(a,I8,a,es17.8e3)') " GPEC ep(", ep_index, + WRITE(u_log,'(a,a,a,es17.8e3)') " GPEC ep(", TRIM(smode), $ ") = ", ep_selected - WRITE(u_log,'(a,es17.8e3)') " DCON plasma1-equivalent = ", - $ ep_selected*(mu0*2.0) / psio**2 / (chi1*1e-3)**2 + WRITE(u_log,'(a,a,a,es17.8e3)') " DCON ep(", TRIM(smode), + $ ") = ", ep_selected*(mu0*2.0) / psio**2 / (chi1*1e-3)**2 WRITE(u_log,*) CLOSE(u_log) From a22f2afbc340adb55ff7fe7305652b998eb75762 Mon Sep 17 00:00:00 2001 From: satelite2517 Date: Tue, 19 May 2026 13:16:10 +0900 Subject: [PATCH 20/62] GPEC - MINOR - Document C verify identity in reconstruction note (cherry picked from commit 3137ed96abd5b7e8de3585a8dc49b4e81ab43953) --- docs/tex/recon/main.tex | 29 +++++++++++++++++++++++++++++ 1 file changed, 29 insertions(+) diff --git a/docs/tex/recon/main.tex b/docs/tex/recon/main.tex index 8e0b33309..fba9ab731 100644 --- a/docs/tex/recon/main.tex +++ b/docs/tex/recon/main.tex @@ -1316,6 +1316,35 @@ \subsection{Reconstruction v1} \end{aligned} \end{equation} +With this definition, the reconstructed $\vec C$ should satisfy the identity +\begin{equation} +(\nabla\times \vec C)\cdot \nabla \psi += +\nabla\cdot\left(\vec C\times \nabla \psi\right) +=0, +\end{equation} +which is the relation referred to in the code as the \texttt{C verify} +check; see also the discussion of the Bernstein energy-principle form in +\cite{RevModPhys.76.1071}. The verification target is therefore the vanishing of +$ (\nabla\times \vec C)\cdot \nabla \psi $, or equivalently +$ \nabla\cdot(\vec C\times \nabla \psi) $. In the code, this same quantity +is evaluated through its flux-coordinate form +\begin{equation} +(\nabla\times \vec C)\cdot \nabla \psi += +\frac{1}{\mathcal{J}} +\left( +\frac{\partial C_\zeta}{\partial \theta} +- +\frac{\partial C_\theta}{\partial \zeta} +\right). +\end{equation} +Here $C_\theta$ and $C_\zeta$ are the covariant components in +$\vec C = C_\psi \nabla\psi + C_\theta \nabla\theta + C_\zeta \nabla\zeta$. +Therefore the present verification tests whether the reconstructed covariant +components satisfy this cancellation to numerical roundoff on each +reconstructed flux surface. + For direct reconstruction on the $(\psi,\theta)$ grid, the energy density is closed by the metric contraction \begin{equation} |\vec C|^2 From 2107a5493929face5c7acd0808fd9a1417ca7072 Mon Sep 17 00:00:00 2001 From: satelite2517 Date: Tue, 19 May 2026 13:16:15 +0900 Subject: [PATCH 21/62] GPEC - FEATURE - Add optional C verify diagnostics for recon (cherry picked from commit 35edba064a672da0e570d5efa21d17360418d678) --- gpec/gpec.f | 7 +++++-- gpec/gpglobal.F | 3 ++- gpec/gpout.f | 50 +++++++++++++++++++++++++++++++++++++++++-------- 3 files changed, 49 insertions(+), 11 deletions(-) diff --git a/gpec/gpec.f b/gpec/gpec.f index a64a0e8e4..8b9149384 100644 --- a/gpec/gpec.f +++ b/gpec/gpec.f @@ -38,7 +38,8 @@ PROGRAM gpec_main $ singcurs_flag,m3d_flag,cas3d_flag,test_flag,nrzeq_flag, $ arzphifun_flag,xbrzphifun_flag,pmodbmn_flag,xclebsch_flag, $ filter_flag,gal_flag,delpsi_flag,recon_flag, - $ singthresh_callen_flag,singthresh_slayer_flag,singthresh_flag + $ singthresh_callen_flag,singthresh_slayer_flag, + $ singthresh_flag LOGICAL, DIMENSION(100) :: ss_flag COMPLEX(r8), DIMENSION(:), POINTER :: finmn,foutmn,xspmn, $ fxmn,fxfun @@ -70,7 +71,8 @@ PROGRAM gpec_main $ xclebsch_flag,pbrzphi_flag,verbose,max_linesout,filter_flag, $ netcdf_flag,ascii_flag,singthresh_flag, $ singthresh_callen_flag,singthresh_slayer_flag, - $ singthresh_slayer_inpr,out_ahg2msc,recon_flag,recon_int + $ singthresh_slayer_inpr,out_ahg2msc,recon_flag,recon_int, + $ cveri_flag NAMELIST/gpec_diagnose/singcurs_flag,xbcontra_flag, $ xbnobo_flag,d3_flag,div_flag,xbst_flag,jacfac_flag, $ pmodbmn_flag,rzphibx_flag,radvar_flag,eigen_flag,magpot_flag, @@ -196,6 +198,7 @@ PROGRAM gpec_main mutual_test_flag=.FALSE. recon_flag=.FALSE. recon_int="spline" + cveri_flag=.FALSE. majr=10.0 minr=1.0 diff --git a/gpec/gpglobal.F b/gpec/gpglobal.F index b690bc51e..e3de10209 100644 --- a/gpec/gpglobal.F +++ b/gpec/gpglobal.F @@ -18,7 +18,8 @@ MODULE gpglobal_mod $ fun_flag,flux_flag,vsbrzphi_flag,displacement_flag, $ chebyshev_flag,coil_flag,eigm_flag,bwp_pest_flag,verbose, $ debug_flag,timeit,kin_flag,con_flag,resp_induct_flag, - $ netcdf_flag,ascii_flag,wv_farwall_flag,mutual_test_flag + $ netcdf_flag,ascii_flag,wv_farwall_flag,mutual_test_flag, + $ cveri_flag INTEGER :: mr,mz,mpsi,mstep,mpert,mband,mtheta,mthvac,mthsurf, $ mfix,mhigh,mlow,msing,nfm2,nths,nths2,lmpert,lmlow,lmhigh, diff --git a/gpec/gpout.f b/gpec/gpout.f index 5fd540962..ff8d18edc 100644 --- a/gpec/gpout.f +++ b/gpec/gpout.f @@ -6903,6 +6903,8 @@ SUBROUTINE gpout_recon(mode, xspmn) REAL(r8) :: epf_p_curr, epf_t_curr, epf_z_curr REAL(r8) :: epf_int_total_hr, epf_p_total_hr, $ epf_t_total_hr, epf_z_total_hr, dcon_fac + REAL(r8) :: cveri_abs, cveri_max, cveri_rms, cveri_sumsq, + $ cveri_tol COMPLEX(r8) :: dst_prev, dst_curr, dst1_prev, dst2_prev, $ dst3_prev, dst1_curr, dst2_curr, dst3_curr, $ dst_int_total_k_hr, dst1_total_hr, dst2_total_hr, @@ -6912,6 +6914,8 @@ SUBROUTINE gpout_recon(mode, xspmn) COMPLEX(r8), DIMENSION(:), ALLOCATABLE :: dst_vals, dst1_vals, $ dst2_vals, dst3_vals TYPE(cspline_type) :: recon_epf_spl, recon_dst_spl + INTEGER :: cveri_count + CHARACTER(4) :: cveri_stat c Diagnostic variables for C vector comparison INTEGER :: ipsi_mid, itheta_mid, ipert_diag, m1 @@ -6967,7 +6971,9 @@ SUBROUTINE gpout_recon(mode, xspmn) OPEN(UNIT=ushear_fun, FILE=shear_fun_file, STATUS="UNKNOWN") OPEN(UNIT=ucurv, FILE=curv_file, STATUS="UNKNOWN") - OPEN(UNIT=ucveri, FILE=cveri_file, STATUS="UNKNOWN") + IF (cveri_flag) THEN + OPEN(UNIT=ucveri, FILE=cveri_file, STATUS="UNKNOWN") + ENDIF OPEN(UNIT=uk, FILE=k_file, STATUS="UNKNOWN") OPEN(UNIT=uk_sigma, FILE=k_sigma_file, STATUS="UNKNOWN") CALL ascii_open(ucw_fun, cw_fun_file, "UNKNOWN") @@ -6981,7 +6987,7 @@ SUBROUTINE gpout_recon(mode, xspmn) $ "psi","theta","r","z","shear_re","shear_im" WRITE(ucurv,'(6(1x,a16))') $ "psi","theta","r","z","curv_re","curv_im" - WRITE(ucveri,'(6(1x,a16))') + IF (cveri_flag) WRITE(ucveri,'(6(1x,a16))') $ "psi","theta","r","z","cveri_re","cveri_im" WRITE(uk,'(9(1x,a16))') $ "psi","theta","r","z","K_re","K_im", @@ -7018,6 +7024,11 @@ SUBROUTINE gpout_recon(mode, xspmn) CALL gpec_stop("gpout_recon selected mode is out of range") ENDIF ep_selected = REAL(ep(ep_index)) + cveri_max = 0.0_r8 + cveri_rms = 0.0_r8 + cveri_sumsq = 0.0_r8 + cveri_tol = 1.0e-10_r8 + cveri_count = 0 c----------------------------------------------------------------------- c main loop over all psi levels. c compute gpeq reconstruction diagnostics at each psi. @@ -7036,7 +7047,7 @@ SUBROUTINE gpout_recon(mode, xspmn) c Reconstruct detailed K diagnostics for output. CALL gpeq_K(psi, K_fun, K_term1, K_term2, K_term3, $ sigma_vals, jdotb_vals, shear_fun, curv_fun) - CALL gpeq_cveri(psi, cveri_fun) + IF (cveri_flag) CALL gpeq_cveri(psi, cveri_fun) c Store spatial values with coordinates. DO itheta = 0, mthsurf @@ -7052,9 +7063,15 @@ SUBROUTINE gpout_recon(mode, xspmn) WRITE(ucurv,'(6(es17.8e3))') psi, theta(itheta), $ rvals(itheta), zvals(itheta), REAL(curv_fun(itheta)), $ AIMAG(curv_fun(itheta)) - WRITE(ucveri,'(6(es17.8e3))') psi, theta(itheta), - $ rvals(itheta), zvals(itheta), REAL(cveri_fun(itheta)), - $ AIMAG(cveri_fun(itheta)) + IF (cveri_flag) WRITE(ucveri,'(6(es17.8e3))') psi, + $ theta(itheta), rvals(itheta), zvals(itheta), + $ REAL(cveri_fun(itheta)), AIMAG(cveri_fun(itheta)) + IF (cveri_flag) THEN + cveri_abs = ABS(cveri_fun(itheta)) + cveri_max = MAX(cveri_max, cveri_abs) + cveri_sumsq = cveri_sumsq + cveri_abs**2 + cveri_count = cveri_count + 1 + ENDIF WRITE(uk,'(9(es17.8e3))') psi, theta(itheta), $ rvals(itheta), zvals(itheta), REAL(K_fun(itheta)), $ AIMAG(K_fun(itheta)), K_term1(itheta), K_term2(itheta), @@ -7066,7 +7083,7 @@ SUBROUTINE gpout_recon(mode, xspmn) ENDDO WRITE(ushear_fun,*) WRITE(ucurv,*) - WRITE(ucveri,*) + IF (cveri_flag) WRITE(ucveri,*) WRITE(uk,*) WRITE(uk_sigma,*) @@ -7311,6 +7328,18 @@ SUBROUTINE gpout_recon(mode, xspmn) $ REAL(dst2_total_hr), AIMAG(dst2_total_hr) WRITE(*,'(a,2es17.8e3)') " K3_xin2 = ", $ REAL(dst3_total_hr), AIMAG(dst3_total_hr) + IF (cveri_flag) THEN + cveri_stat = "PASS" + IF (cveri_count > 0) THEN + cveri_rms = SQRT(cveri_sumsq / REAL(cveri_count, r8)) + ELSE + cveri_stat = "SKIP" + ENDIF + IF (cveri_max > cveri_tol) cveri_stat = "WARN" + WRITE(*,'(a,a,a,es17.8e3,a,es17.8e3,a,es17.8e3)') + $ "C verify Eq(99): ", TRIM(cveri_stat), " max=", + $ cveri_max, " rms=", cveri_rms, " tol=", cveri_tol + ENDIF WRITE(*,'(a,a,a,es17.8e3)') "GPEC ep(", TRIM(smode), "):", $ ep_selected WRITE(*,'(a,a,a,es17.8e3)') "DCON ep(", TRIM(smode), "):", @@ -7344,6 +7373,11 @@ SUBROUTINE gpout_recon(mode, xspmn) $ REAL(dst2_total_hr), AIMAG(dst2_total_hr) WRITE(u_log,'(a,2es17.8e3)') " K3_xin2 = ", $ REAL(dst3_total_hr), AIMAG(dst3_total_hr) + IF (cveri_flag) THEN + WRITE(u_log,'(a,a,a,es17.8e3,a,es17.8e3,a,es17.8e3)') + $ " C verify Eq(99): ", TRIM(cveri_stat), " max=", + $ cveri_max, " rms=", cveri_rms, " tol=", cveri_tol + ENDIF WRITE(u_log,'(a,a,a,es17.8e3)') " GPEC ep(", TRIM(smode), $ ") = ", ep_selected WRITE(u_log,'(a,a,a,es17.8e3)') " DCON ep(", TRIM(smode), @@ -7354,7 +7388,7 @@ SUBROUTINE gpout_recon(mode, xspmn) CALL gpeq_dealloc CLOSE(ushear_fun) CLOSE(ucurv) - CLOSE(ucveri) + IF (cveri_flag) CLOSE(ucveri) CLOSE(uk) CLOSE(uk_sigma) CLOSE(u_int) From bcbdd0a2b3800881847e1b5c03edccd7389f1098 Mon Sep 17 00:00:00 2001 From: satelite2517 Date: Tue, 19 May 2026 13:16:21 +0900 Subject: [PATCH 22/62] GPEC - MINOR - Document cveri_flag in input (cherry picked from commit d16bd071c15db714293b8c301da5b48d36971c58) --- input/gpec.in | 1 + 1 file changed, 1 insertion(+) diff --git a/input/gpec.in b/input/gpec.in index 8de3a6ce5..e13272fd1 100644 --- a/input/gpec.in +++ b/input/gpec.in @@ -86,6 +86,7 @@ verbose=t ! Print run log to terminal recon_flag=f ! Calculate each contribution of destabilizing term and effective perturbed field [Bernstein, Handbook of Plasma Physics, 1983]. + cveri_flag=f ! Under recon_flag, verify Eq. (99) and write gpec_recon_cveri_sol*.out. recon_int="spline" ! recon_flag radial integration on psifac grid. Options: "spline" or "trapezoid". ! For DCON eigenmode reconstruction set coil_flag=f, mode_flag=t, choose mode as needed, and keep reg_flag=f. / From c9937729cfae80699ada58b1ac9bdc4fe8dcb28c Mon Sep 17 00:00:00 2001 From: satelite2517 Date: Tue, 19 May 2026 13:29:01 +0900 Subject: [PATCH 23/62] GPEC - MINOR - Refine C verify output wording (cherry picked from commit 3ccce21a4dd283f26a1ee3eec6787e9b8efa8a0c) --- gpec/gpout.f | 8 ++++++-- input/gpec.in | 2 +- 2 files changed, 7 insertions(+), 3 deletions(-) diff --git a/gpec/gpout.f b/gpec/gpout.f index ff8d18edc..bd19dac8e 100644 --- a/gpec/gpout.f +++ b/gpec/gpout.f @@ -7047,6 +7047,8 @@ SUBROUTINE gpout_recon(mode, xspmn) c Reconstruct detailed K diagnostics for output. CALL gpeq_K(psi, K_fun, K_term1, K_term2, K_term3, $ sigma_vals, jdotb_vals, shear_fun, curv_fun) +c Verify (curl C).grad(psi)=0 using the flux-coordinate form +c (d_theta C_zeta - d_zeta C_theta) / J IF (cveri_flag) CALL gpeq_cveri(psi, cveri_fun) c Store spatial values with coordinates. @@ -7337,7 +7339,8 @@ SUBROUTINE gpout_recon(mode, xspmn) ENDIF IF (cveri_max > cveri_tol) cveri_stat = "WARN" WRITE(*,'(a,a,a,es17.8e3,a,es17.8e3,a,es17.8e3)') - $ "C verify Eq(99): ", TRIM(cveri_stat), " max=", + $ "C verify (curl C).grad(psi)=0: ", + $ TRIM(cveri_stat), " max=", $ cveri_max, " rms=", cveri_rms, " tol=", cveri_tol ENDIF WRITE(*,'(a,a,a,es17.8e3)') "GPEC ep(", TRIM(smode), "):", @@ -7375,7 +7378,8 @@ SUBROUTINE gpout_recon(mode, xspmn) $ REAL(dst3_total_hr), AIMAG(dst3_total_hr) IF (cveri_flag) THEN WRITE(u_log,'(a,a,a,es17.8e3,a,es17.8e3,a,es17.8e3)') - $ " C verify Eq(99): ", TRIM(cveri_stat), " max=", + $ " C verify (curl C).grad(psi)=0: ", + $ TRIM(cveri_stat), " max=", $ cveri_max, " rms=", cveri_rms, " tol=", cveri_tol ENDIF WRITE(u_log,'(a,a,a,es17.8e3)') " GPEC ep(", TRIM(smode), diff --git a/input/gpec.in b/input/gpec.in index e13272fd1..95dc1e8eb 100644 --- a/input/gpec.in +++ b/input/gpec.in @@ -86,7 +86,7 @@ verbose=t ! Print run log to terminal recon_flag=f ! Calculate each contribution of destabilizing term and effective perturbed field [Bernstein, Handbook of Plasma Physics, 1983]. - cveri_flag=f ! Under recon_flag, verify Eq. (99) and write gpec_recon_cveri_sol*.out. + cveri_flag=f ! Under recon_flag, verify (curl C).grad(psi)=0 and write gpec_recon_cveri_sol*.out. recon_int="spline" ! recon_flag radial integration on psifac grid. Options: "spline" or "trapezoid". ! For DCON eigenmode reconstruction set coil_flag=f, mode_flag=t, choose mode as needed, and keep reg_flag=f. / From 219a7522cd5e0f9e035311b93efc5a0e9a9eca2f Mon Sep 17 00:00:00 2001 From: satelite2517 Date: Tue, 19 May 2026 13:39:50 +0900 Subject: [PATCH 24/62] GPEC - MINOR - Refine recon summary formatting (cherry picked from commit cc1882ad3f11b2cd73a705c8186fb562fe0f6edd) --- gpec/gpout.f | 88 ++++++++++++++++++++++++++-------------------------- 1 file changed, 44 insertions(+), 44 deletions(-) diff --git a/gpec/gpout.f b/gpec/gpout.f index bd19dac8e..48e6fecf5 100644 --- a/gpec/gpout.f +++ b/gpec/gpout.f @@ -7307,15 +7307,6 @@ SUBROUTINE gpout_recon(mode, xspmn) WRITE(u_int,'(2(es17.8e3))') REAL(dw_dcon_k_hr), $ AIMAG(dw_dcon_k_hr) - WRITE(*,'(a)') "GPEC_RECON final psifac-grid dW terms:" - WRITE(*,'(a,es17.8e3)') " int_J_C2_over_mu0 = ", - $ epf_int_total_hr - WRITE(*,'(a,2es17.8e3)') " int_J_K_xin2 = ", - $ REAL(dst_int_total_k_hr), AIMAG(dst_int_total_k_hr) - WRITE(*,'(a,2es17.8e3)') " dW_gpec(K) = ", - $ REAL(dw_raw_k_hr), AIMAG(dw_raw_k_hr) - WRITE(*,'(a,2es17.8e3)') " dW_dcon(K) = ", - $ REAL(dw_dcon_k_hr), AIMAG(dw_dcon_k_hr) WRITE(*,'(a)') "GPEC_RECON C2 component totals:" WRITE(*,'(a,es17.8e3)') " C2_psi/mu0 = ", $ epf_p_total_hr @@ -7324,12 +7315,25 @@ SUBROUTINE gpout_recon(mode, xspmn) WRITE(*,'(a,es17.8e3)') " C2_zeta/mu0 = ", $ epf_z_total_hr WRITE(*,'(a)') "GPEC_RECON K component totals:" - WRITE(*,'(a,2es17.8e3)') " K1_xin2 = ", - $ REAL(dst1_total_hr), AIMAG(dst1_total_hr) - WRITE(*,'(a,2es17.8e3)') " K2_xin2 = ", - $ REAL(dst2_total_hr), AIMAG(dst2_total_hr) - WRITE(*,'(a,2es17.8e3)') " K3_xin2 = ", - $ REAL(dst3_total_hr), AIMAG(dst3_total_hr) + WRITE(*,'(a,es17.8e3)') " K1_xin2 = ", + $ REAL(dst1_total_hr) + WRITE(*,'(a,es17.8e3)') " K2_xin2 = ", + $ REAL(dst2_total_hr) + WRITE(*,'(a,es17.8e3)') " K3_xin2 = ", + $ REAL(dst3_total_hr) + WRITE(*,'(a)') "GPEC_RECON final psifac-grid dW terms:" + WRITE(*,'(a,es17.8e3)') " int_J_C2_over_mu0 = ", + $ epf_int_total_hr + WRITE(*,'(a,es17.8e3)') " int_J_K_xin2 = ", + $ REAL(dst_int_total_k_hr) + WRITE(*,'(a,es17.8e3)') " dW_p(recon) = ", + $ REAL(dw_raw_k_hr) + WRITE(*,'(a,es17.8e3)') " dW_p(recon-normalize)= ", + $ REAL(dw_dcon_k_hr) + WRITE(*,'(a,a,a,es17.8e3)') "GPEC ep(", TRIM(smode), "):", + $ ep_selected + WRITE(*,'(a,a,a,es17.8e3)') "DCON ep(", TRIM(smode), "):", + $ ep_selected*(mu0*2.0) / psio**2 / (chi1*1e-3)**2 IF (cveri_flag) THEN cveri_stat = "PASS" IF (cveri_count > 0) THEN @@ -7338,30 +7342,17 @@ SUBROUTINE gpout_recon(mode, xspmn) cveri_stat = "SKIP" ENDIF IF (cveri_max > cveri_tol) cveri_stat = "WARN" - WRITE(*,'(a,a,a,es17.8e3,a,es17.8e3,a,es17.8e3)') - $ "C verify (curl C).grad(psi)=0: ", - $ TRIM(cveri_stat), " max=", - $ cveri_max, " rms=", cveri_rms, " tol=", cveri_tol + WRITE(*,'(a,a)') "GPEC_RECON C verify: ", TRIM(cveri_stat) + WRITE(*,'(a,es17.8e3)') " max = ", cveri_max + WRITE(*,'(a,es17.8e3)') " rms = ", cveri_rms + WRITE(*,'(a,es17.8e3)') " tol = ", cveri_tol ENDIF - WRITE(*,'(a,a,a,es17.8e3)') "GPEC ep(", TRIM(smode), "):", - $ ep_selected - WRITE(*,'(a,a,a,es17.8e3)') "DCON ep(", TRIM(smode), "):", - $ ep_selected*(mu0*2.0) / psio**2 / (chi1*1e-3)**2 OPEN(UNIT=u_log, FILE="gpec.log", STATUS="UNKNOWN", $ POSITION="APPEND") WRITE(u_log,'(a)') "GPEC_RECON final results:" WRITE(u_log,'(a,I8)') " mode = ", mode WRITE(u_log,'(a,L1)') " reg_flag = ", reg_flag - WRITE(u_log,'(a)') " psifac-grid dW terms:" - WRITE(u_log,'(a,es17.8e3)') " int_J_C2_over_mu0 = ", - $ epf_int_total_hr - WRITE(u_log,'(a,2es17.8e3)') " int_J_K_xin2 = ", - $ REAL(dst_int_total_k_hr), AIMAG(dst_int_total_k_hr) - WRITE(u_log,'(a,2es17.8e3)') " dW_gpec(K) = ", - $ REAL(dw_raw_k_hr), AIMAG(dw_raw_k_hr) - WRITE(u_log,'(a,2es17.8e3)') " dW_dcon(K) = ", - $ REAL(dw_dcon_k_hr), AIMAG(dw_dcon_k_hr) WRITE(u_log,'(a)') " C2 component totals:" WRITE(u_log,'(a,es17.8e3)') " C2_psi/mu0 = ", $ epf_p_total_hr @@ -7370,22 +7361,31 @@ SUBROUTINE gpout_recon(mode, xspmn) WRITE(u_log,'(a,es17.8e3)') " C2_zeta/mu0 = ", $ epf_z_total_hr WRITE(u_log,'(a)') " K component totals:" - WRITE(u_log,'(a,2es17.8e3)') " K1_xin2 = ", - $ REAL(dst1_total_hr), AIMAG(dst1_total_hr) - WRITE(u_log,'(a,2es17.8e3)') " K2_xin2 = ", - $ REAL(dst2_total_hr), AIMAG(dst2_total_hr) - WRITE(u_log,'(a,2es17.8e3)') " K3_xin2 = ", - $ REAL(dst3_total_hr), AIMAG(dst3_total_hr) - IF (cveri_flag) THEN - WRITE(u_log,'(a,a,a,es17.8e3,a,es17.8e3,a,es17.8e3)') - $ " C verify (curl C).grad(psi)=0: ", - $ TRIM(cveri_stat), " max=", - $ cveri_max, " rms=", cveri_rms, " tol=", cveri_tol - ENDIF + WRITE(u_log,'(a,es17.8e3)') " K1_xin2 = ", + $ REAL(dst1_total_hr) + WRITE(u_log,'(a,es17.8e3)') " K2_xin2 = ", + $ REAL(dst2_total_hr) + WRITE(u_log,'(a,es17.8e3)') " K3_xin2 = ", + $ REAL(dst3_total_hr) + WRITE(u_log,'(a)') " psifac-grid dW terms:" + WRITE(u_log,'(a,es17.8e3)') " int_J_C2_over_mu0 = ", + $ epf_int_total_hr + WRITE(u_log,'(a,es17.8e3)') " int_J_K_xin2 = ", + $ REAL(dst_int_total_k_hr) + WRITE(u_log,'(a,es17.8e3)') " dW_p(recon) = ", + $ REAL(dw_raw_k_hr) + WRITE(u_log,'(a,es17.8e3)') " dW_p(recon-normalize)= ", + $ REAL(dw_dcon_k_hr) WRITE(u_log,'(a,a,a,es17.8e3)') " GPEC ep(", TRIM(smode), $ ") = ", ep_selected WRITE(u_log,'(a,a,a,es17.8e3)') " DCON ep(", TRIM(smode), $ ") = ", ep_selected*(mu0*2.0) / psio**2 / (chi1*1e-3)**2 + IF (cveri_flag) THEN + WRITE(u_log,'(a,a)') " C verify: ", TRIM(cveri_stat) + WRITE(u_log,'(a,es17.8e3)') " max = ", cveri_max + WRITE(u_log,'(a,es17.8e3)') " rms = ", cveri_rms + WRITE(u_log,'(a,es17.8e3)') " tol = ", cveri_tol + ENDIF WRITE(u_log,*) CLOSE(u_log) From 4afa45bb0fea4513b56f6baf54c19ccd3ab8534b Mon Sep 17 00:00:00 2001 From: satelite2517 Date: Tue, 19 May 2026 15:28:08 +0900 Subject: [PATCH 25/62] GPEC - MINOR - Add recon output control and reuse C verify state (cherry picked from commit 69c7f28c67e286e1a17dcac402120c2064ef71a1) --- gpec/gpec.f | 3 +- gpec/gpglobal.F | 2 +- gpec/gpout.f | 477 ++++++++++++++++++++++++++---------------------- 3 files changed, 258 insertions(+), 224 deletions(-) diff --git a/gpec/gpec.f b/gpec/gpec.f index 8b9149384..a62dd4a9c 100644 --- a/gpec/gpec.f +++ b/gpec/gpec.f @@ -72,7 +72,7 @@ PROGRAM gpec_main $ netcdf_flag,ascii_flag,singthresh_flag, $ singthresh_callen_flag,singthresh_slayer_flag, $ singthresh_slayer_inpr,out_ahg2msc,recon_flag,recon_int, - $ cveri_flag + $ cveri_flag,recon_out NAMELIST/gpec_diagnose/singcurs_flag,xbcontra_flag, $ xbnobo_flag,d3_flag,div_flag,xbst_flag,jacfac_flag, $ pmodbmn_flag,rzphibx_flag,radvar_flag,eigen_flag,magpot_flag, @@ -199,6 +199,7 @@ PROGRAM gpec_main recon_flag=.FALSE. recon_int="spline" cveri_flag=.FALSE. + recon_out=.TRUE. majr=10.0 minr=1.0 diff --git a/gpec/gpglobal.F b/gpec/gpglobal.F index e3de10209..0654dff1d 100644 --- a/gpec/gpglobal.F +++ b/gpec/gpglobal.F @@ -19,7 +19,7 @@ MODULE gpglobal_mod $ chebyshev_flag,coil_flag,eigm_flag,bwp_pest_flag,verbose, $ debug_flag,timeit,kin_flag,con_flag,resp_induct_flag, $ netcdf_flag,ascii_flag,wv_farwall_flag,mutual_test_flag, - $ cveri_flag + $ cveri_flag,recon_out INTEGER :: mr,mz,mpsi,mstep,mpert,mband,mtheta,mthvac,mthsurf, $ mfix,mhigh,mlow,msing,nfm2,nths,nths2,lmpert,lmlow,lmhigh, diff --git a/gpec/gpout.f b/gpec/gpout.f index 48e6fecf5..ec4763c17 100644 --- a/gpec/gpout.f +++ b/gpec/gpout.f @@ -36,6 +36,7 @@ c----------------------------------------------------------------------- MODULE gpout_mod USE netcdf + USE gpglobal_mod, ONLY : recon_out USE gpresp_mod USE gpvacuum_mod USE gpdiag_mod @@ -6933,12 +6934,14 @@ SUBROUTINE gpout_recon(mode, xspmn) IF(verbose) WRITE(*,*)"__________________________________________" c----------------------------------------------------------------------- -c allocate bicubes for shear, curvature, K (placeholder allocation). -c actual bicube population should be done at each psi in gpeq. +c allocate bicubes for shear, curvature, K only when the recon +c output tables are requested. c----------------------------------------------------------------------- - ALLOCATE(gpout_shear) - ALLOCATE(gpout_curvature) - ALLOCATE(gpout_k) + IF (recon_out) THEN + ALLOCATE(gpout_shear) + ALLOCATE(gpout_curvature) + ALLOCATE(gpout_k) + ENDIF WRITE(smode,'(I8)') mode smode = ADJUSTL(smode) @@ -6969,55 +6972,57 @@ SUBROUTINE gpout_recon(mode, xspmn) u_int = 92 u_log = 93 - OPEN(UNIT=ushear_fun, FILE=shear_fun_file, STATUS="UNKNOWN") - OPEN(UNIT=ucurv, FILE=curv_file, STATUS="UNKNOWN") - IF (cveri_flag) THEN - OPEN(UNIT=ucveri, FILE=cveri_file, STATUS="UNKNOWN") + IF (recon_out) THEN + OPEN(UNIT=ushear_fun, FILE=shear_fun_file, STATUS="UNKNOWN") + OPEN(UNIT=ucurv, FILE=curv_file, STATUS="UNKNOWN") + IF (cveri_flag) THEN + OPEN(UNIT=ucveri, FILE=cveri_file, STATUS="UNKNOWN") + ENDIF + OPEN(UNIT=uk, FILE=k_file, STATUS="UNKNOWN") + OPEN(UNIT=uk_sigma, FILE=k_sigma_file, STATUS="UNKNOWN") + CALL ascii_open(ucw_fun, cw_fun_file, "UNKNOWN") + CALL ascii_open(ucw_mn, cw_mn_file, "UNKNOWN") + CALL ascii_open(ucv_fun, cv_fun_file, "UNKNOWN") + CALL ascii_open(ucv_mn, cv_mn_file, "UNKNOWN") + CALL ascii_open(ucv2_fun, cv2_fun_file, "UNKNOWN") + CALL ascii_open(ucv2_mn, cv2_mn_file, "UNKNOWN") + OPEN(UNIT=u_int, FILE=int_file, STATUS="UNKNOWN") + WRITE(ushear_fun,'(6(1x,a16))') + $ "psi","theta","r","z","shear_re","shear_im" + WRITE(ucurv,'(6(1x,a16))') + $ "psi","theta","r","z","curv_re","curv_im" + IF (cveri_flag) WRITE(ucveri,'(6(1x,a16))') + $ "psi","theta","r","z","cveri_re","cveri_im" + WRITE(uk,'(9(1x,a16))') + $ "psi","theta","r","z","K_re","K_im", + $ "T1_re","T2_re","T3_re" + WRITE(uk_sigma,'(8(1x,a16))') + $ "psi","theta","r","z","sigma_re","jdotb_re", + $ "mu0_bsig2_re","mu0_sigjdotb" + WRITE(ucw_fun,'(10(1x,a16))') + $ "psi","theta","r","z","cwp_re","cwp_im", + $ "cwt_re","cwt_im","cwz_re","cwz_im" + WRITE(ucw_mn,'(8(1x,a16))') + $ "psi","m","cwp_re","cwp_im","cwt_re","cwt_im", + $ "cwz_re","cwz_im" + WRITE(ucv_fun,'(10(1x,a16))') + $ "psi","theta","r","z","cvp_re","cvp_im", + $ "cvt_re","cvt_im","cvz_re","cvz_im" + WRITE(ucv_mn,'(8(1x,a16))') + $ "psi","m","cvp_re","cvp_im","cvt_re","cvt_im", + $ "cvz_re","cvz_im" + WRITE(ucv2_fun,'(10(1x,a16))') + $ "psi","theta","r","z","cv2p_re","cv2p_im", + $ "cv2t_re","cv2t_im","cv2z_re","cv2z_im" + WRITE(ucv2_mn,'(8(1x,a16))') + $ "psi","m","cv2p_re","cv2p_im","cv2t_re","cv2t_im", + $ "cv2z_re","cv2z_im" + WRITE(u_int,'(15(1x,a16))') + $ "psi","c2_mu0","k_xin2_re","k_xin2_im", + $ "c2_mu0_sum","k_xin2_c_re","k_xin2_c_im", + $ "dw_c_re","dw_c_im","c2_psi","c2_theta","c2_zeta", + $ "k1_xin2_re","k2_xin2_re","k3_xin2_re" ENDIF - OPEN(UNIT=uk, FILE=k_file, STATUS="UNKNOWN") - OPEN(UNIT=uk_sigma, FILE=k_sigma_file, STATUS="UNKNOWN") - CALL ascii_open(ucw_fun, cw_fun_file, "UNKNOWN") - CALL ascii_open(ucw_mn, cw_mn_file, "UNKNOWN") - CALL ascii_open(ucv_fun, cv_fun_file, "UNKNOWN") - CALL ascii_open(ucv_mn, cv_mn_file, "UNKNOWN") - CALL ascii_open(ucv2_fun, cv2_fun_file, "UNKNOWN") - CALL ascii_open(ucv2_mn, cv2_mn_file, "UNKNOWN") - OPEN(UNIT=u_int, FILE=int_file, STATUS="UNKNOWN") - WRITE(ushear_fun,'(6(1x,a16))') - $ "psi","theta","r","z","shear_re","shear_im" - WRITE(ucurv,'(6(1x,a16))') - $ "psi","theta","r","z","curv_re","curv_im" - IF (cveri_flag) WRITE(ucveri,'(6(1x,a16))') - $ "psi","theta","r","z","cveri_re","cveri_im" - WRITE(uk,'(9(1x,a16))') - $ "psi","theta","r","z","K_re","K_im", - $ "T1_re","T2_re","T3_re" - WRITE(uk_sigma,'(8(1x,a16))') - $ "psi","theta","r","z","sigma_re","jdotb_re", - $ "mu0_bsig2_re","mu0_sigjdotb" - WRITE(ucw_fun,'(10(1x,a16))') - $ "psi","theta","r","z","cwp_re","cwp_im", - $ "cwt_re","cwt_im","cwz_re","cwz_im" - WRITE(ucw_mn,'(8(1x,a16))') - $ "psi","m","cwp_re","cwp_im","cwt_re","cwt_im", - $ "cwz_re","cwz_im" - WRITE(ucv_fun,'(10(1x,a16))') - $ "psi","theta","r","z","cvp_re","cvp_im", - $ "cvt_re","cvt_im","cvz_re","cvz_im" - WRITE(ucv_mn,'(8(1x,a16))') - $ "psi","m","cvp_re","cvp_im","cvt_re","cvt_im", - $ "cvz_re","cvz_im" - WRITE(ucv2_fun,'(10(1x,a16))') - $ "psi","theta","r","z","cv2p_re","cv2p_im", - $ "cv2t_re","cv2t_im","cv2z_re","cv2z_im" - WRITE(ucv2_mn,'(8(1x,a16))') - $ "psi","m","cv2p_re","cv2p_im","cv2t_re","cv2t_im", - $ "cv2z_re","cv2z_im" - WRITE(u_int,'(15(1x,a16))') - $ "psi","c2_mu0","k_xin2_re","k_xin2_im", - $ "c2_mu0_sum","k_xin2_c_re","k_xin2_c_im", - $ "dw_c_re","dw_c_im","c2_psi","c2_theta","c2_zeta", - $ "k1_xin2_re","k2_xin2_re","k3_xin2_re" ep_index = 1 IF (mode_flag) ep_index = mode IF (ep_index < 1 .OR. ep_index > mpert) THEN @@ -7041,98 +7046,117 @@ SUBROUTINE gpout_recon(mode, xspmn) IF (psi > psilim) EXIT c Compute the J|C|^2/mu0 state once so C fields below use -c the current psi. +c the current psi. This keeps the psi-local reconstruction path +c identical to the original logic. CALL gpeq_epf(psi, epf_int) -c Reconstruct detailed K diagnostics for output. +c Reconstruct detailed K diagnostics for output. Keep this on +c the original path so recon terminal totals remain unchanged. CALL gpeq_K(psi, K_fun, K_term1, K_term2, K_term3, $ sigma_vals, jdotb_vals, shear_fun, curv_fun) -c Verify (curl C).grad(psi)=0 using the flux-coordinate form -c (d_theta C_zeta - d_zeta C_theta) / J - IF (cveri_flag) CALL gpeq_cveri(psi, cveri_fun) - -c Store spatial values with coordinates. - DO itheta = 0, mthsurf - CALL bicube_eval(rzphi, psi, theta(itheta), 1) - rfac = SQRT(rzphi%f(1)) - eta = twopi*(theta(itheta) + rzphi%f(2)) - rvals(itheta) = ro + rfac*COS(eta) - zvals(itheta) = zo + rfac*SIN(eta) - - WRITE(ushear_fun,'(6(es17.8e3))') psi, theta(itheta), - $ rvals(itheta), zvals(itheta), REAL(shear_fun(itheta)), - $ AIMAG(shear_fun(itheta)) - WRITE(ucurv,'(6(es17.8e3))') psi, theta(itheta), - $ rvals(itheta), zvals(itheta), REAL(curv_fun(itheta)), - $ AIMAG(curv_fun(itheta)) - IF (cveri_flag) WRITE(ucveri,'(6(es17.8e3))') psi, - $ theta(itheta), rvals(itheta), zvals(itheta), - $ REAL(cveri_fun(itheta)), AIMAG(cveri_fun(itheta)) - IF (cveri_flag) THEN +c Verify (curl C).grad(psi)=0 using the same psi-local C state +c already prepared by gpeq_epf. This avoids rebuilding the +c full equilibrium/C reconstruction a second time at each psi. + IF (cveri_flag) THEN + DO ipert = 1, mpert + curv_mn(ipert) = twopi * ifac * mfac(ipert) + $ * cvz_mn(ipert) + term_mn(ipert) = curv_mn(ipert) + + $ twopi * ifac * nn * cvt_mn(ipert) + ENDDO + CALL iscdftb(mfac, mpert, cveri_fun, mthsurf, term_mn) + DO itheta = 0, mthsurf + CALL bicube_eval(rzphi, psi, theta(itheta), 0) + jac = rzphi%f(4) + cveri_fun(itheta) = cveri_fun(itheta) / jac cveri_abs = ABS(cveri_fun(itheta)) cveri_max = MAX(cveri_max, cveri_abs) cveri_sumsq = cveri_sumsq + cveri_abs**2 cveri_count = cveri_count + 1 - ENDIF - WRITE(uk,'(9(es17.8e3))') psi, theta(itheta), - $ rvals(itheta), zvals(itheta), REAL(K_fun(itheta)), - $ AIMAG(K_fun(itheta)), K_term1(itheta), K_term2(itheta), - $ K_term3(itheta) - WRITE(uk_sigma,'(8(es17.8e3))') psi, theta(itheta), - $ rvals(itheta), zvals(itheta), sigma_vals(itheta), - $ jdotb_vals(itheta), K_term2(itheta), - $ mu0 * sigma_vals(itheta) * jdotb_vals(itheta) - ENDDO - WRITE(ushear_fun,*) - WRITE(ucurv,*) - IF (cveri_flag) WRITE(ucveri,*) - WRITE(uk,*) - WRITE(uk_sigma,*) + ENDDO + ENDIF + + IF (recon_out) THEN +c Store spatial values with coordinates only when recon file +c output is requested. + DO itheta = 0, mthsurf + CALL bicube_eval(rzphi, psi, theta(itheta), 1) + rfac = SQRT(rzphi%f(1)) + eta = twopi*(theta(itheta) + rzphi%f(2)) + rvals(itheta) = ro + rfac*COS(eta) + zvals(itheta) = zo + rfac*SIN(eta) + + WRITE(ushear_fun,'(6(es17.8e3))') psi, theta(itheta), + $ rvals(itheta), zvals(itheta), + $ REAL(shear_fun(itheta)), AIMAG(shear_fun(itheta)) + WRITE(ucurv,'(6(es17.8e3))') psi, theta(itheta), + $ rvals(itheta), zvals(itheta), + $ REAL(curv_fun(itheta)), + $ AIMAG(curv_fun(itheta)) + IF (cveri_flag) WRITE(ucveri,'(6(es17.8e3))') psi, + $ theta(itheta), rvals(itheta), zvals(itheta), + $ REAL(cveri_fun(itheta)), AIMAG(cveri_fun(itheta)) + WRITE(uk,'(9(es17.8e3))') psi, theta(itheta), + $ rvals(itheta), zvals(itheta), REAL(K_fun(itheta)), + $ AIMAG(K_fun(itheta)), K_term1(itheta), + $ K_term2(itheta), K_term3(itheta) + WRITE(uk_sigma,'(8(es17.8e3))') psi, theta(itheta), + $ rvals(itheta), zvals(itheta), sigma_vals(itheta), + $ jdotb_vals(itheta), K_term2(itheta), + $ mu0 * sigma_vals(itheta) * jdotb_vals(itheta) + ENDDO + WRITE(ushear_fun,*) + WRITE(ucurv,*) + IF (cveri_flag) WRITE(ucveri,*) + WRITE(uk,*) + WRITE(uk_sigma,*) -c Reconstruct C fields from the already computed C state. - CALL iscdftb(mfac, mpert, cw_fun(:,1), mthsurf, cwp_mn) - CALL iscdftb(mfac, mpert, cw_fun(:,2), mthsurf, cwt_mn) - CALL iscdftb(mfac, mpert, cw_fun(:,3), mthsurf, cwz_mn) - CALL iscdftb(mfac, mpert, cv_fun(:,1), mthsurf, cvp_mn) - CALL iscdftb(mfac, mpert, cv_fun(:,2), mthsurf, cvt_mn) - CALL iscdftb(mfac, mpert, cv_fun(:,3), mthsurf, cvz_mn) - CALL iscdftb(mfac, mpert, cv2_fun(:,1), mthsurf, c2vp_mn) - CALL iscdftb(mfac, mpert, cv2_fun(:,2), mthsurf, c2vt_mn) - CALL iscdftb(mfac, mpert, cv2_fun(:,3), mthsurf, c2vz_mn) - DO itheta = 0, mthsurf - WRITE(ucw_fun,'(10(es17.8e3))') psi, theta(itheta), - $ rvals(itheta), zvals(itheta), REAL(cw_fun(itheta,1)), - $ AIMAG(cw_fun(itheta,1)), REAL(cw_fun(itheta,2)), - $ AIMAG(cw_fun(itheta,2)), REAL(cw_fun(itheta,3)), - $ AIMAG(cw_fun(itheta,3)) - WRITE(ucv_fun,'(10(es17.8e3))') psi, theta(itheta), - $ rvals(itheta), zvals(itheta), REAL(cv_fun(itheta,1)), - $ AIMAG(cv_fun(itheta,1)), REAL(cv_fun(itheta,2)), - $ AIMAG(cv_fun(itheta,2)), REAL(cv_fun(itheta,3)), - $ AIMAG(cv_fun(itheta,3)) - WRITE(ucv2_fun,'(10(es17.8e3))') psi, theta(itheta), - $ rvals(itheta), zvals(itheta), - $ REAL(cv2_fun(itheta,1)), AIMAG(cv2_fun(itheta,1)), - $ REAL(cv2_fun(itheta,2)), AIMAG(cv2_fun(itheta,2)), - $ REAL(cv2_fun(itheta,3)), AIMAG(cv2_fun(itheta,3)) - ENDDO - DO ipert = 1, mpert - WRITE(ucw_mn,'(1x,es17.8e3,1x,I8,6(es17.8e3))') psi, - $ mfac(ipert), cwp_mn(ipert), cwt_mn(ipert), - $ cwz_mn(ipert) - WRITE(ucv_mn,'(1x,es17.8e3,1x,I8,6(es17.8e3))') psi, - $ mfac(ipert), cvp_mn(ipert), cvt_mn(ipert), - $ cvz_mn(ipert) - WRITE(ucv2_mn,'(1x,es17.8e3,1x,I8,6(es17.8e3))') psi, - $ mfac(ipert), c2vp_mn(ipert), c2vt_mn(ipert), - $ c2vz_mn(ipert) - ENDDO - WRITE(ucw_fun,*) - WRITE(ucw_mn,*) - WRITE(ucv_fun,*) - WRITE(ucv_mn,*) - WRITE(ucv2_fun,*) - WRITE(ucv2_mn,*) +c Reconstruct C fields from the already computed C state only +c for recon output tables. + CALL iscdftb(mfac, mpert, cw_fun(:,1), mthsurf, cwp_mn) + CALL iscdftb(mfac, mpert, cw_fun(:,2), mthsurf, cwt_mn) + CALL iscdftb(mfac, mpert, cw_fun(:,3), mthsurf, cwz_mn) + CALL iscdftb(mfac, mpert, cv_fun(:,1), mthsurf, cvp_mn) + CALL iscdftb(mfac, mpert, cv_fun(:,2), mthsurf, cvt_mn) + CALL iscdftb(mfac, mpert, cv_fun(:,3), mthsurf, cvz_mn) + CALL iscdftb(mfac, mpert, cv2_fun(:,1), mthsurf, c2vp_mn) + CALL iscdftb(mfac, mpert, cv2_fun(:,2), mthsurf, c2vt_mn) + CALL iscdftb(mfac, mpert, cv2_fun(:,3), mthsurf, c2vz_mn) + DO itheta = 0, mthsurf + WRITE(ucw_fun,'(10(es17.8e3))') psi, theta(itheta), + $ rvals(itheta), zvals(itheta), + $ REAL(cw_fun(itheta,1)), AIMAG(cw_fun(itheta,1)), + $ REAL(cw_fun(itheta,2)), AIMAG(cw_fun(itheta,2)), + $ REAL(cw_fun(itheta,3)), AIMAG(cw_fun(itheta,3)) + WRITE(ucv_fun,'(10(es17.8e3))') psi, theta(itheta), + $ rvals(itheta), zvals(itheta), + $ REAL(cv_fun(itheta,1)), AIMAG(cv_fun(itheta,1)), + $ REAL(cv_fun(itheta,2)), AIMAG(cv_fun(itheta,2)), + $ REAL(cv_fun(itheta,3)), AIMAG(cv_fun(itheta,3)) + WRITE(ucv2_fun,'(10(es17.8e3))') psi, theta(itheta), + $ rvals(itheta), zvals(itheta), + $ REAL(cv2_fun(itheta,1)), AIMAG(cv2_fun(itheta,1)), + $ REAL(cv2_fun(itheta,2)), AIMAG(cv2_fun(itheta,2)), + $ REAL(cv2_fun(itheta,3)), AIMAG(cv2_fun(itheta,3)) + ENDDO + DO ipert = 1, mpert + WRITE(ucw_mn,'(1x,es17.8e3,1x,I8,6(es17.8e3))') psi, + $ mfac(ipert), cwp_mn(ipert), cwt_mn(ipert), + $ cwz_mn(ipert) + WRITE(ucv_mn,'(1x,es17.8e3,1x,I8,6(es17.8e3))') psi, + $ mfac(ipert), cvp_mn(ipert), cvt_mn(ipert), + $ cvz_mn(ipert) + WRITE(ucv2_mn,'(1x,es17.8e3,1x,I8,6(es17.8e3))') psi, + $ mfac(ipert), c2vp_mn(ipert), c2vt_mn(ipert), + $ c2vz_mn(ipert) + ENDDO + WRITE(ucw_fun,*) + WRITE(ucw_mn,*) + WRITE(ucv_fun,*) + WRITE(ucv_mn,*) + WRITE(ucv2_fun,*) + WRITE(ucv2_mn,*) + ENDIF ENDDO c----------------------------------------------------------------------- @@ -7153,11 +7177,13 @@ SUBROUTINE gpout_recon(mode, xspmn) $ epf_z_prev) CALL gpeq_dst(psi_prev, dst_prev, dst1_prev, dst2_prev, $ dst3_prev) - WRITE(u_int,'(a)') "c psifac-grid integration results" - WRITE(u_int,'(a)') "c C2/mu0 = int J |C|^2 / mu0" - WRITE(u_int,'(a)') "c Kxin2 = int J K |xi_n|^2" - WRITE(u_int,'(a)') "c dW_gpec(K) = 0.5 * (C2/mu0 - Kxin2)" - WRITE(u_int,'(a,a)') "c recon_int = ", TRIM(recon_int) + IF (recon_out) THEN + WRITE(u_int,'(a)') "c psifac-grid integration results" + WRITE(u_int,'(a)') "c C2/mu0 = int J |C|^2 / mu0" + WRITE(u_int,'(a)') "c Kxin2 = int J K |xi_n|^2" + WRITE(u_int,'(a)') "c dW_gpec(K) = 0.5 * (C2/mu0 - Kxin2)" + WRITE(u_int,'(a,a)') "c recon_int = ", TRIM(recon_int) + ENDIF nint_pts = 1 DO istep = 0, mstep-1 psi_curr = psifac(istep+1) @@ -7228,12 +7254,12 @@ SUBROUTINE gpout_recon(mode, xspmn) dw_cum = 0.5_r8 * $ (CMPLX(epf_int_total_hr, 0.0_r8, r8) - $ dst_int_total_k_hr) - WRITE(u_int,'(15(es17.8e3))') psi_int_pts(iint), - $ epf_vals(iint), REAL(dst_vals(iint)), - $ AIMAG(dst_vals(iint)), epf_int_total_hr, - $ REAL(dst_int_total_k_hr), AIMAG(dst_int_total_k_hr), - $ REAL(dw_cum), AIMAG(dw_cum), epf_p_vals(iint), - $ epf_t_vals(iint), epf_z_vals(iint), + IF (recon_out) WRITE(u_int,'(15(es17.8e3))') + $ psi_int_pts(iint), epf_vals(iint), + $ REAL(dst_vals(iint)), AIMAG(dst_vals(iint)), + $ epf_int_total_hr, REAL(dst_int_total_k_hr), + $ AIMAG(dst_int_total_k_hr), REAL(dw_cum), AIMAG(dw_cum), + $ epf_p_vals(iint), epf_t_vals(iint), epf_z_vals(iint), $ REAL(dst1_vals(iint)), REAL(dst2_vals(iint)), $ REAL(dst3_vals(iint)) ENDDO @@ -7241,8 +7267,9 @@ SUBROUTINE gpout_recon(mode, xspmn) CALL cspline_dealloc(recon_dst_spl) ELSE dw_cum = CMPLX(0.0_r8, 0.0_r8, r8) - WRITE(u_int,'(15(es17.8e3))') psi_int_pts(1), epf_vals(1), - $ REAL(dst_vals(1)), AIMAG(dst_vals(1)), epf_int_total_hr, + IF (recon_out) WRITE(u_int,'(15(es17.8e3))') + $ psi_int_pts(1), epf_vals(1), REAL(dst_vals(1)), + $ AIMAG(dst_vals(1)), epf_int_total_hr, $ REAL(dst_int_total_k_hr), AIMAG(dst_int_total_k_hr), $ REAL(dw_cum), AIMAG(dw_cum), epf_p_vals(1), epf_t_vals(1), $ epf_z_vals(1), REAL(dst1_vals(1)), REAL(dst2_vals(1)), @@ -7274,12 +7301,12 @@ SUBROUTINE gpout_recon(mode, xspmn) dw_cum = 0.5_r8 * $ (CMPLX(epf_int_total_hr, 0.0_r8, r8) - $ dst_int_total_k_hr) - WRITE(u_int,'(15(es17.8e3))') psi_int_pts(iint), - $ epf_vals(iint), REAL(dst_vals(iint)), - $ AIMAG(dst_vals(iint)), epf_int_total_hr, - $ REAL(dst_int_total_k_hr), AIMAG(dst_int_total_k_hr), - $ REAL(dw_cum), AIMAG(dw_cum), epf_p_vals(iint), - $ epf_t_vals(iint), epf_z_vals(iint), + IF (recon_out) WRITE(u_int,'(15(es17.8e3))') + $ psi_int_pts(iint), epf_vals(iint), + $ REAL(dst_vals(iint)), AIMAG(dst_vals(iint)), + $ epf_int_total_hr, REAL(dst_int_total_k_hr), + $ AIMAG(dst_int_total_k_hr), REAL(dw_cum), AIMAG(dw_cum), + $ epf_p_vals(iint), epf_t_vals(iint), epf_z_vals(iint), $ REAL(dst1_vals(iint)), REAL(dst2_vals(iint)), $ REAL(dst3_vals(iint)) ENDDO @@ -7290,22 +7317,24 @@ SUBROUTINE gpout_recon(mode, xspmn) $ (CMPLX(epf_int_total_hr, 0.0_r8, r8) - dst_int_total_k_hr) dw_dcon_k_hr = dw_raw_k_hr * dcon_fac - WRITE(u_int,*) - WRITE(u_int,'(a)') "c Final psifac-grid integration results:" - WRITE(u_int,'(3(es17.8e3))') epf_int_total_hr, - $ REAL(dst_int_total_k_hr), AIMAG(dst_int_total_k_hr) - WRITE(u_int,'(a)') "c Final C2 component totals:" - WRITE(u_int,'(3(es17.8e3))') epf_p_total_hr, - $ epf_t_total_hr, epf_z_total_hr - WRITE(u_int,'(a)') "c Final K component totals:" - WRITE(u_int,'(3(es17.8e3))') REAL(dst1_total_hr), - $ REAL(dst2_total_hr), REAL(dst3_total_hr) - WRITE(u_int,'(a)') "c dW_gpec(K)" - WRITE(u_int,'(2(es17.8e3))') REAL(dw_raw_k_hr), - $ AIMAG(dw_raw_k_hr) - WRITE(u_int,'(a)') "c dW_dcon(K), normalized from dW_gpec(K)" - WRITE(u_int,'(2(es17.8e3))') REAL(dw_dcon_k_hr), - $ AIMAG(dw_dcon_k_hr) + IF (recon_out) THEN + WRITE(u_int,*) + WRITE(u_int,'(a)') "c Final psifac-grid integration results:" + WRITE(u_int,'(3(es17.8e3))') epf_int_total_hr, + $ REAL(dst_int_total_k_hr), AIMAG(dst_int_total_k_hr) + WRITE(u_int,'(a)') "c Final C2 component totals:" + WRITE(u_int,'(3(es17.8e3))') epf_p_total_hr, + $ epf_t_total_hr, epf_z_total_hr + WRITE(u_int,'(a)') "c Final K component totals:" + WRITE(u_int,'(3(es17.8e3))') REAL(dst1_total_hr), + $ REAL(dst2_total_hr), REAL(dst3_total_hr) + WRITE(u_int,'(a)') "c dW_gpec(K)" + WRITE(u_int,'(2(es17.8e3))') REAL(dw_raw_k_hr), + $ AIMAG(dw_raw_k_hr) + WRITE(u_int,'(a)') "c dW_dcon(K), normalized from dW_gpec(K)" + WRITE(u_int,'(2(es17.8e3))') REAL(dw_dcon_k_hr), + $ AIMAG(dw_dcon_k_hr) + ENDIF WRITE(*,'(a)') "GPEC_RECON C2 component totals:" WRITE(*,'(a,es17.8e3)') " C2_psi/mu0 = ", @@ -7348,60 +7377,64 @@ SUBROUTINE gpout_recon(mode, xspmn) WRITE(*,'(a,es17.8e3)') " tol = ", cveri_tol ENDIF - OPEN(UNIT=u_log, FILE="gpec.log", STATUS="UNKNOWN", - $ POSITION="APPEND") - WRITE(u_log,'(a)') "GPEC_RECON final results:" - WRITE(u_log,'(a,I8)') " mode = ", mode - WRITE(u_log,'(a,L1)') " reg_flag = ", reg_flag - WRITE(u_log,'(a)') " C2 component totals:" - WRITE(u_log,'(a,es17.8e3)') " C2_psi/mu0 = ", - $ epf_p_total_hr - WRITE(u_log,'(a,es17.8e3)') " C2_theta/mu0 = ", - $ epf_t_total_hr - WRITE(u_log,'(a,es17.8e3)') " C2_zeta/mu0 = ", - $ epf_z_total_hr - WRITE(u_log,'(a)') " K component totals:" - WRITE(u_log,'(a,es17.8e3)') " K1_xin2 = ", - $ REAL(dst1_total_hr) - WRITE(u_log,'(a,es17.8e3)') " K2_xin2 = ", - $ REAL(dst2_total_hr) - WRITE(u_log,'(a,es17.8e3)') " K3_xin2 = ", - $ REAL(dst3_total_hr) - WRITE(u_log,'(a)') " psifac-grid dW terms:" - WRITE(u_log,'(a,es17.8e3)') " int_J_C2_over_mu0 = ", - $ epf_int_total_hr - WRITE(u_log,'(a,es17.8e3)') " int_J_K_xin2 = ", - $ REAL(dst_int_total_k_hr) - WRITE(u_log,'(a,es17.8e3)') " dW_p(recon) = ", - $ REAL(dw_raw_k_hr) - WRITE(u_log,'(a,es17.8e3)') " dW_p(recon-normalize)= ", - $ REAL(dw_dcon_k_hr) - WRITE(u_log,'(a,a,a,es17.8e3)') " GPEC ep(", TRIM(smode), - $ ") = ", ep_selected - WRITE(u_log,'(a,a,a,es17.8e3)') " DCON ep(", TRIM(smode), - $ ") = ", ep_selected*(mu0*2.0) / psio**2 / (chi1*1e-3)**2 - IF (cveri_flag) THEN - WRITE(u_log,'(a,a)') " C verify: ", TRIM(cveri_stat) - WRITE(u_log,'(a,es17.8e3)') " max = ", cveri_max - WRITE(u_log,'(a,es17.8e3)') " rms = ", cveri_rms - WRITE(u_log,'(a,es17.8e3)') " tol = ", cveri_tol + IF (recon_out) THEN + OPEN(UNIT=u_log, FILE="gpec.log", STATUS="UNKNOWN", + $ POSITION="APPEND") + WRITE(u_log,'(a)') "GPEC_RECON final results:" + WRITE(u_log,'(a,I8)') " mode = ", mode + WRITE(u_log,'(a,L1)') " reg_flag = ", reg_flag + WRITE(u_log,'(a)') " C2 component totals:" + WRITE(u_log,'(a,es17.8e3)') " C2_psi/mu0 = ", + $ epf_p_total_hr + WRITE(u_log,'(a,es17.8e3)') " C2_theta/mu0 = ", + $ epf_t_total_hr + WRITE(u_log,'(a,es17.8e3)') " C2_zeta/mu0 = ", + $ epf_z_total_hr + WRITE(u_log,'(a)') " K component totals:" + WRITE(u_log,'(a,es17.8e3)') " K1_xin2 = ", + $ REAL(dst1_total_hr) + WRITE(u_log,'(a,es17.8e3)') " K2_xin2 = ", + $ REAL(dst2_total_hr) + WRITE(u_log,'(a,es17.8e3)') " K3_xin2 = ", + $ REAL(dst3_total_hr) + WRITE(u_log,'(a)') " psifac-grid dW terms:" + WRITE(u_log,'(a,es17.8e3)') " int_J_C2_over_mu0 = ", + $ epf_int_total_hr + WRITE(u_log,'(a,es17.8e3)') " int_J_K_xin2 = ", + $ REAL(dst_int_total_k_hr) + WRITE(u_log,'(a,es17.8e3)') " dW_p(recon) = ", + $ REAL(dw_raw_k_hr) + WRITE(u_log,'(a,es17.8e3)') " dW_p(recon-normalize)= ", + $ REAL(dw_dcon_k_hr) + WRITE(u_log,'(a,a,a,es17.8e3)') " GPEC ep(", TRIM(smode), + $ ") = ", ep_selected + WRITE(u_log,'(a,a,a,es17.8e3)') " DCON ep(", TRIM(smode), + $ ") = ", ep_selected*(mu0*2.0) / psio**2 / (chi1*1e-3)**2 + IF (cveri_flag) THEN + WRITE(u_log,'(a,a)') " C verify: ", TRIM(cveri_stat) + WRITE(u_log,'(a,es17.8e3)') " max = ", cveri_max + WRITE(u_log,'(a,es17.8e3)') " rms = ", cveri_rms + WRITE(u_log,'(a,es17.8e3)') " tol = ", cveri_tol + ENDIF + WRITE(u_log,*) + CLOSE(u_log) ENDIF - WRITE(u_log,*) - CLOSE(u_log) CALL gpeq_dealloc - CLOSE(ushear_fun) - CLOSE(ucurv) - IF (cveri_flag) CLOSE(ucveri) - CLOSE(uk) - CLOSE(uk_sigma) - CLOSE(u_int) - CALL ascii_close(ucw_fun) - CALL ascii_close(ucw_mn) - CALL ascii_close(ucv_fun) - CALL ascii_close(ucv_mn) - CALL ascii_close(ucv2_fun) - CALL ascii_close(ucv2_mn) + IF (recon_out) THEN + CLOSE(ushear_fun) + CLOSE(ucurv) + IF (cveri_flag) CLOSE(ucveri) + CLOSE(uk) + CLOSE(uk_sigma) + CLOSE(u_int) + CALL ascii_close(ucw_fun) + CALL ascii_close(ucw_mn) + CALL ascii_close(ucv_fun) + CALL ascii_close(ucv_mn) + CALL ascii_close(ucv2_fun) + CALL ascii_close(ucv2_mn) + ENDIF c----------------------------------------------------------------------- c terminate. c----------------------------------------------------------------------- From 648e6c3bef911e44f182c4986b61b425b32d7273 Mon Sep 17 00:00:00 2001 From: satelite2517 Date: Tue, 19 May 2026 15:28:23 +0900 Subject: [PATCH 26/62] GPEC - MINOR - Document recon_out input control (cherry picked from commit 6d2a766c38e6b3d1e1cb23cd2819cac0d42fd930) --- input/gpec.in | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/input/gpec.in b/input/gpec.in index 95dc1e8eb..cbae4a0a3 100644 --- a/input/gpec.in +++ b/input/gpec.in @@ -86,7 +86,8 @@ verbose=t ! Print run log to terminal recon_flag=f ! Calculate each contribution of destabilizing term and effective perturbed field [Bernstein, Handbook of Plasma Physics, 1983]. - cveri_flag=f ! Under recon_flag, verify (curl C).grad(psi)=0 and write gpec_recon_cveri_sol*.out. + cveri_flag=f ! Under recon_flag, verify (curl C).grad(psi-)=0 and write gpec_recon_cveri_sol*.out. + recon_out=t ! Under recon_flag, write recon diagnostic files and gpec.log entries. If false, keep terminal summary only. recon_int="spline" ! recon_flag radial integration on psifac grid. Options: "spline" or "trapezoid". ! For DCON eigenmode reconstruction set coil_flag=f, mode_flag=t, choose mode as needed, and keep reg_flag=f. / From d87ff4bc08fd320d5d32108bff96fa6225e8e9c6 Mon Sep 17 00:00:00 2001 From: satelite2517 Date: Tue, 26 May 2026 12:55:26 +0900 Subject: [PATCH 27/62] GPEC - RECON2 - 2026-05-22 add recon_flag2 entrypoint (cherry picked from commit a031559a51896a6db0fb7464d3b24bdd2996be81) --- gpec/gpec.f | 6 +++++- gpec/gpglobal.F | 2 +- 2 files changed, 6 insertions(+), 2 deletions(-) diff --git a/gpec/gpec.f b/gpec/gpec.f index a62dd4a9c..ac7a8670a 100644 --- a/gpec/gpec.f +++ b/gpec/gpec.f @@ -72,7 +72,7 @@ PROGRAM gpec_main $ netcdf_flag,ascii_flag,singthresh_flag, $ singthresh_callen_flag,singthresh_slayer_flag, $ singthresh_slayer_inpr,out_ahg2msc,recon_flag,recon_int, - $ cveri_flag,recon_out + $ cveri_flag,recon_out,recon_flag2 NAMELIST/gpec_diagnose/singcurs_flag,xbcontra_flag, $ xbnobo_flag,d3_flag,div_flag,xbst_flag,jacfac_flag, $ pmodbmn_flag,rzphibx_flag,radvar_flag,eigen_flag,magpot_flag, @@ -197,6 +197,7 @@ PROGRAM gpec_main eigm_flag=.FALSE. mutual_test_flag=.FALSE. recon_flag=.FALSE. + recon_flag2=.FALSE. recon_int="spline" cveri_flag=.FALSE. recon_out=.TRUE. @@ -692,6 +693,9 @@ PROGRAM gpec_main IF (recon_flag) THEN CALL gpout_recon(mode,xspmn) ENDIF + IF (recon_flag2) THEN + CALL gpout_recon2(mode,xspmn) + ENDIF c----------------------------------------------------------------------- c diagnose. c----------------------------------------------------------------------- diff --git a/gpec/gpglobal.F b/gpec/gpglobal.F index 0654dff1d..8a22772f4 100644 --- a/gpec/gpglobal.F +++ b/gpec/gpglobal.F @@ -19,7 +19,7 @@ MODULE gpglobal_mod $ chebyshev_flag,coil_flag,eigm_flag,bwp_pest_flag,verbose, $ debug_flag,timeit,kin_flag,con_flag,resp_induct_flag, $ netcdf_flag,ascii_flag,wv_farwall_flag,mutual_test_flag, - $ cveri_flag,recon_out + $ cveri_flag,recon_out,recon_flag2 INTEGER :: mr,mz,mpsi,mstep,mpert,mband,mtheta,mthvac,mthsurf, $ mfix,mhigh,mlow,msing,nfm2,nths,nths2,lmpert,lmlow,lmhigh, From 72bce24d8cad3c3045cc27c034820a3fd2da3685 Mon Sep 17 00:00:00 2001 From: satelite2517 Date: Tue, 26 May 2026 12:55:32 +0900 Subject: [PATCH 28/62] GPEC - RECON2 - 2026-05-25 add first-form energy kernel (cherry picked from commit bc56df6f208282225b2c8407b5435744f91c81a6) --- gpec/gpeq.f | 134 ++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 134 insertions(+) diff --git a/gpec/gpeq.f b/gpec/gpeq.f index b11f65105..775daeb9f 100644 --- a/gpec/gpeq.f +++ b/gpec/gpeq.f @@ -928,6 +928,140 @@ SUBROUTINE gpeq_cveri(psi, cveri_fun) RETURN END SUBROUTINE gpeq_cveri c----------------------------------------------------------------------- +c subprogram 9d. gpeq_firstform. +c evaluate the first-form plasma energy density components on one +c flux surface with gamma term omitted: +c +c |Q|^2 / mu0 +c j . (Q x xi*) / mu0 +c (div xi)* (xi . grad p) +c +c Here xi.grad p is evaluated directly as p'(psi) xi^psi, and +c div xi is evaluated directly from the Jacobian-weighted +c contravariant displacement: +c +c div xi = 1/J [ d(J xi^psi)/dpsi +c + d(J xi^theta)/dtheta +c + d(J xi^zeta)/dzeta ]. +c----------------------------------------------------------------------- + SUBROUTINE gpeq_firstform(psi, q2_int, jqx_int, pdiv_int, + $ total_int, q2_fun, jqx_fun, pdiv_fun, total_fun) +c----------------------------------------------------------------------- +c declaration. +c----------------------------------------------------------------------- + REAL(r8), INTENT(IN) :: psi + REAL(r8), INTENT(OUT) :: q2_int + COMPLEX(r8), INTENT(OUT) :: jqx_int, pdiv_int, total_int + COMPLEX(r8), DIMENSION(0:mthsurf), OPTIONAL, INTENT(OUT) :: + $ q2_fun, jqx_fun, pdiv_fun, total_fun + + INTEGER :: itheta + REAL(r8) :: f1raw, p1 + REAL(r8) :: q2_density + REAL(r8) :: mu0jtheta, mu0jzeta + COMPLEX(r8) :: jqx_density, total_density, pdiv_density + COMPLEX(r8) :: det_term, divxi_density, xigradp_density + COMPLEX(r8), DIMENSION(0:mthsurf) :: xsp_fun, xmp1_fun + COMPLEX(r8), DIMENSION(0:mthsurf) :: xwp_fun, xmt_fun, xmz_fun + COMPLEX(r8), DIMENSION(0:mthsurf) :: bwp_fun, bmt_fun, bmz_fun + COMPLEX(r8), DIMENSION(0:mthsurf) :: bvp_fun, bvt_fun, bvz_fun + TYPE(cspline_type) :: divspl + + IF(debug_flag) PRINT *, "Entering gpeq_firstform" +c----------------------------------------------------------------------- +c prepare psi-local perturbed equilibrium quantities. +c----------------------------------------------------------------------- + CALL gpeq_sol(psi) + CALL gpeq_contra(psi) + CALL gpeq_cova(psi) + + CALL spline_eval(sq, psi, 1) + f1raw = sq%f1(1) + p1 = sq%f1(2) / mu0 + + CALL iscdftb(mfac, mpert, xsp_fun, mthsurf, xsp_mn) + CALL iscdftb(mfac, mpert, xmp1_fun, mthsurf, xmp1_mn) + CALL iscdftb(mfac, mpert, xwp_fun, mthsurf, xwp_mn) + CALL iscdftb(mfac, mpert, xmt_fun, mthsurf, xmt_mn) + CALL iscdftb(mfac, mpert, xmz_fun, mthsurf, xmz_mn) + CALL iscdftb(mfac, mpert, bwp_fun, mthsurf, bwp_mn) + CALL iscdftb(mfac, mpert, bmt_fun, mthsurf, bmt_mn) + CALL iscdftb(mfac, mpert, bmz_fun, mthsurf, bmz_mn) + CALL iscdftb(mfac, mpert, bvp_fun, mthsurf, bvp_mn) + CALL iscdftb(mfac, mpert, bvt_fun, mthsurf, bvt_mn) + CALL iscdftb(mfac, mpert, bvz_fun, mthsurf, bvz_mn) + + CALL cspline_alloc(divspl, mthsurf, 2) + divspl%xs = theta + DO itheta = 0, mthsurf + divspl%fs(itheta,1) = xmt_fun(itheta) + divspl%fs(itheta,2) = xmz_fun(itheta) + ENDDO + CALL cspline_fit(divspl, "periodic") + + q2_int = 0.0_r8 + jqx_int = CMPLX(0.0_r8, 0.0_r8, r8) + pdiv_int = CMPLX(0.0_r8, 0.0_r8, r8) + total_int = CMPLX(0.0_r8, 0.0_r8, r8) + + DO itheta = 0, mthsurf + CALL bicube_eval(rzphi, psi, theta(itheta), 1) + CALL cspline_eval(divspl, theta(itheta), 1) + jac = rzphi%f(4) + jac1 = rzphi%fx(4) + +c pointwise contravariant current components: mu0 j^theta, +c mu0 j^zeta. These match the definitions already used in gpeq_c. + mu0jtheta = -f1raw / jac + mu0jzeta = -mu0 * p1 / chi1 - sq%f(4) * f1raw / jac + + q2_density = REAL(CONJG(bwp_fun(itheta)) * bvp_fun(itheta) + + $ CONJG(bmt_fun(itheta)) * bvt_fun(itheta) + + $ CONJG(bmz_fun(itheta)) * bvz_fun(itheta), r8) + $ / (mu0 * jac) + + det_term = -mu0jtheta * + $ (bwp_fun(itheta) * CONJG(xmz_fun(itheta)) - + $ bmz_fun(itheta) * CONJG(xwp_fun(itheta))) + + $ mu0jzeta * + $ (bwp_fun(itheta) * CONJG(xmt_fun(itheta)) - + $ bmt_fun(itheta) * CONJG(xwp_fun(itheta))) + jqx_density = det_term / (mu0 * jac) + + divxi_density = xmp1_fun(itheta) + + $ (jac1 / jac) * xsp_fun(itheta) + + $ divspl%f1(1) / jac - + $ (twopi * ifac * nn) * divspl%f(2) / jac + xigradp_density = p1 * xsp_fun(itheta) + pdiv_density = CONJG(divxi_density) * xigradp_density + total_density = CMPLX(q2_density, 0.0_r8, r8) - + $ jqx_density + pdiv_density + + IF (PRESENT(q2_fun)) q2_fun(itheta) = + $ CMPLX(q2_density, 0.0_r8, r8) + IF (PRESENT(jqx_fun)) jqx_fun(itheta) = jqx_density + IF (PRESENT(pdiv_fun)) pdiv_fun(itheta) = pdiv_density + IF (PRESENT(total_fun)) total_fun(itheta) = total_density + + IF (itheta < mthsurf) THEN + q2_int = q2_int + q2_density * jac / REAL(mthsurf, r8) + jqx_int = jqx_int + jqx_density * jac / REAL(mthsurf, r8) + pdiv_int = pdiv_int + pdiv_density * jac / + $ REAL(mthsurf, r8) + total_int = total_int + total_density * jac / + $ REAL(mthsurf, r8) + ENDIF + ENDDO + + CALL cspline_dealloc(divspl) + + IF(debug_flag) PRINT *, "->Leaving gpeq_firstform" +c----------------------------------------------------------------------- +c terminate. +c----------------------------------------------------------------------- + RETURN + END SUBROUTINE gpeq_firstform +c----------------------------------------------------------------------- c subprogram 9b. gpeq_epf. c compute the flux-surface integral of the first EPF kernel, c From a33f708c8de34b87580edaf9144049b75403d952 Mon Sep 17 00:00:00 2001 From: satelite2517 Date: Tue, 26 May 2026 12:55:40 +0900 Subject: [PATCH 29/62] GPEC - RECON2 - 2026-05-25 add first-form recon output (cherry picked from commit 98155120d31efb480585f50004b9ab74306d89e9) --- gpec/gpout.f | 237 +++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 237 insertions(+) diff --git a/gpec/gpout.f b/gpec/gpout.f index ec4763c17..4881f5849 100644 --- a/gpec/gpout.f +++ b/gpec/gpout.f @@ -27,6 +27,7 @@ c 19. gpout_init_netcdf c 20. gpout_close_netcdf c 21. gpout_recon +c 22. gpout_recon2 c----------------------------------------------------------------------- c subprogram 0. gpout_mod. c module declarations. @@ -7440,5 +7441,241 @@ SUBROUTINE gpout_recon(mode, xspmn) c----------------------------------------------------------------------- RETURN END SUBROUTINE gpout_recon +c----------------------------------------------------------------------- +c subprogram 22. gpout_recon2 +c first-form plasma energy diagnostic based on +c +c |Q|^2 - j.(Q x xi*) + mu0 (div xi)* (xi.grad p) +c +c with the gamma p |div xi|^2 term intentionally omitted. +c The pressure-divergence contribution is evaluated directly from +c div xi and xi.grad p rather than closed as a Bernstein residual. +c----------------------------------------------------------------------- + SUBROUTINE gpout_recon2(mode, xspmn) +c----------------------------------------------------------------------- +c declaration. +c----------------------------------------------------------------------- + INTEGER, INTENT(IN) :: mode + COMPLEX(r8), DIMENSION(:), INTENT(IN) :: xspmn + + INTEGER :: ipsi, itheta, usurf, u_int, u_log + INTEGER :: istep, nint_pts, iint + REAL(r8) :: psi, eta, rfac, dpsi_local, q2_hr + REAL(r8), DIMENSION(0:mthsurf) :: rvals, zvals + COMPLEX(r8) :: jqx_hr, pdiv_hr, total_hr + COMPLEX(r8) :: jqx_cum, pdiv_cum, total_cum, dw_raw_hr, + $ dw_dcon_hr + COMPLEX(r8), DIMENSION(0:mthsurf) :: q2_fun, jqx_fun, pdiv_fun, + $ total_fun + CHARACTER(8) :: smode + CHARACTER(128) :: surf_file, int_file + REAL(r8) :: dcon_fac + REAL(r8), DIMENSION(:), ALLOCATABLE :: psi_int_pts, q2_vals_r + COMPLEX(r8), DIMENSION(:), ALLOCATABLE :: q2_vals, jqx_vals, + $ pdiv_vals, total_vals + TYPE(cspline_type) :: recon2_spl + + IF(verbose) WRITE(*,*)"" + IF(verbose) WRITE(*,*)"GPOUT_RECON2: Starting first-form"// + $ " diagnostics" + IF(verbose) WRITE(*,*)"__________________________________________" + + WRITE(smode,'(I8)') mode + smode = ADJUSTL(smode) + surf_file = "gpec_recon2_terms_sol"//TRIM(smode)//".out" + int_file = "gpec_recon2_integration_sol"//TRIM(smode)//".out" + usurf = 94 + u_int = 95 + u_log = 96 + + IF (recon_out) THEN + OPEN(UNIT=usurf, FILE=surf_file, STATUS="UNKNOWN") + OPEN(UNIT=u_int, FILE=int_file, STATUS="UNKNOWN") + WRITE(usurf,'(12(1x,a16))') + $ "psi","theta","r","z","q2_re","q2_im","jqx_re", + $ "jqx_im","pdiv_re","pdiv_im","total_re","total_im" + WRITE(u_int,'(10(1x,a16))') + $ "psi","q2_re","q2_im","jqx_re","jqx_im","pdiv_re", + $ "pdiv_im","total_re","total_im","dw_re" + ENDIF + + CALL idcon_build(mode, xspmn) + CALL gpeq_alloc + + DO ipsi = 0, mpsi + psi = rzphi%xs(ipsi) + IF (psi > psilim) EXIT + CALL gpeq_firstform(psi, q2_hr, jqx_hr, pdiv_hr, total_hr, + $ q2_fun, jqx_fun, pdiv_fun, total_fun) + + IF (recon_out) THEN + DO itheta = 0, mthsurf + CALL bicube_eval(rzphi, psi, theta(itheta), 1) + rfac = SQRT(rzphi%f(1)) + eta = twopi*(theta(itheta) + rzphi%f(2)) + rvals(itheta) = ro + rfac*COS(eta) + zvals(itheta) = zo + rfac*SIN(eta) + WRITE(usurf,'(12(es17.8e3))') psi, theta(itheta), + $ rvals(itheta), zvals(itheta), REAL(q2_fun(itheta)), + $ AIMAG(q2_fun(itheta)), REAL(jqx_fun(itheta)), + $ AIMAG(jqx_fun(itheta)), REAL(pdiv_fun(itheta)), + $ AIMAG(pdiv_fun(itheta)), REAL(total_fun(itheta)), + $ AIMAG(total_fun(itheta)) + ENDDO + WRITE(usurf,*) + ENDIF + ENDDO + + dcon_fac = (mu0*2.0_r8) / psio**2 / (chi1*1.0e-3_r8)**2 + q2_hr = 0.0_r8 + jqx_hr = CMPLX(0.0_r8, 0.0_r8, r8) + pdiv_hr = CMPLX(0.0_r8, 0.0_r8, r8) + total_hr = CMPLX(0.0_r8, 0.0_r8, r8) + + nint_pts = 0 + DO istep = 0, mstep + IF (psifac(istep) < rzphi%xs(0)) CYCLE + IF (psifac(istep) > rzphi%xs(mpsi)) EXIT + nint_pts = nint_pts + 1 + ENDDO + ALLOCATE(psi_int_pts(nint_pts), q2_vals_r(nint_pts), + $ q2_vals(nint_pts), jqx_vals(nint_pts), pdiv_vals(nint_pts), + $ total_vals(nint_pts)) + iint = 0 + DO istep = 0, mstep + psi = psifac(istep) + IF (psi < rzphi%xs(0)) CYCLE + IF (psi > rzphi%xs(mpsi)) EXIT + CALL gpeq_firstform(psi, q2_hr, jqx_hr, pdiv_hr, total_hr, + $ q2_fun, jqx_fun, pdiv_fun, total_fun) + iint = iint + 1 + psi_int_pts(iint) = psi + q2_vals_r(iint) = q2_hr + q2_vals(iint) = CMPLX(q2_hr, 0.0_r8, r8) + jqx_vals(iint) = jqx_hr + pdiv_vals(iint) = pdiv_hr + total_vals(iint) = total_hr + ENDDO + + IF (recon_out) THEN + WRITE(u_int,'(a)') "c first-form plasma-energy terms" + WRITE(u_int,'(a)') "c total = q2 - jqx + pdiv" + WRITE(u_int,'(a)') "c pdiv term is computed directly" + WRITE(u_int,'(a,a)') "c recon_int = ", TRIM(recon_int) + ENDIF + + IF (TRIM(recon_int) == "spline" .AND. nint_pts > 1) THEN + CALL cspline_alloc(recon2_spl, nint_pts-1, 4) + recon2_spl%xs = psi_int_pts + recon2_spl%fs(:,1) = q2_vals + recon2_spl%fs(:,2) = jqx_vals + recon2_spl%fs(:,3) = pdiv_vals + recon2_spl%fs(:,4) = total_vals + CALL cspline_fit(recon2_spl, "extrap") + CALL cspline_int(recon2_spl) + DO iint = 1, nint_pts + q2_hr = REAL(recon2_spl%fsi(iint-1,1), r8) + jqx_hr = recon2_spl%fsi(iint-1,2) + pdiv_hr = recon2_spl%fsi(iint-1,3) + total_hr = recon2_spl%fsi(iint-1,4) + dw_raw_hr = 0.5_r8 * total_hr + IF (recon_out) WRITE(u_int,'(10(es17.8e3))') + $ psi_int_pts(iint), q2_vals_r(iint), 0.0_r8, + $ REAL(jqx_vals(iint)), AIMAG(jqx_vals(iint)), + $ REAL(pdiv_vals(iint)), AIMAG(pdiv_vals(iint)), + $ REAL(total_vals(iint)), AIMAG(total_vals(iint)), + $ REAL(dw_raw_hr) + ENDDO + CALL cspline_dealloc(recon2_spl) + ELSE + q2_hr = 0.0_r8 + jqx_hr = CMPLX(0.0_r8, 0.0_r8, r8) + pdiv_hr = CMPLX(0.0_r8, 0.0_r8, r8) + total_hr = CMPLX(0.0_r8, 0.0_r8, r8) + DO iint = 1, nint_pts + IF (iint > 1) THEN + dpsi_local = psi_int_pts(iint) - psi_int_pts(iint-1) + q2_hr = q2_hr + (q2_vals_r(iint-1) + q2_vals_r(iint)) * + $ dpsi_local / 2.0_r8 + jqx_hr = jqx_hr + (jqx_vals(iint-1) + jqx_vals(iint)) * + $ dpsi_local / 2.0_r8 + pdiv_hr = pdiv_hr + (pdiv_vals(iint-1) + + $ pdiv_vals(iint)) * dpsi_local / 2.0_r8 + total_hr = total_hr + (total_vals(iint-1) + + $ total_vals(iint)) * dpsi_local / 2.0_r8 + ENDIF + dw_raw_hr = 0.5_r8 * total_hr + IF (recon_out) WRITE(u_int,'(10(es17.8e3))') + $ psi_int_pts(iint), q2_vals_r(iint), 0.0_r8, + $ REAL(jqx_vals(iint)), AIMAG(jqx_vals(iint)), + $ REAL(pdiv_vals(iint)), AIMAG(pdiv_vals(iint)), + $ REAL(total_vals(iint)), AIMAG(total_vals(iint)), + $ REAL(dw_raw_hr) + ENDDO + ENDIF + + dw_raw_hr = 0.5_r8 * total_hr + dw_dcon_hr = dw_raw_hr * dcon_fac + + IF (recon_out) THEN + WRITE(u_int,*) + WRITE(u_int,'(a)') "c Final first-form totals:" + WRITE(u_int,'(2(es17.8e3))') q2_hr, 0.0_r8 + WRITE(u_int,'(2(es17.8e3))') REAL(jqx_hr), AIMAG(jqx_hr) + WRITE(u_int,'(2(es17.8e3))') REAL(pdiv_hr), AIMAG(pdiv_hr) + WRITE(u_int,'(2(es17.8e3))') REAL(total_hr), AIMAG(total_hr) + WRITE(u_int,'(a)') "c dW_p(recon2)" + WRITE(u_int,'(2(es17.8e3))') REAL(dw_raw_hr), AIMAG(dw_raw_hr) + WRITE(u_int,'(a)') "c dW_p(recon2-normalize)" + WRITE(u_int,'(2(es17.8e3))') REAL(dw_dcon_hr), + $ AIMAG(dw_dcon_hr) + ENDIF + + WRITE(*,'(a)') "GPEC_RECON2 final first-form totals:" + WRITE(*,'(a,es17.8e3)') " int_J_Q2_over_mu0 = ", q2_hr + WRITE(*,'(a,2es17.8e3)') " int_J_jQxixi_over_mu0= ", + $ REAL(jqx_hr), AIMAG(jqx_hr) + WRITE(*,'(a,2es17.8e3)') " int_J_pdiv_term = ", + $ REAL(pdiv_hr), AIMAG(pdiv_hr) + WRITE(*,'(a,2es17.8e3)') " int_J_total = ", + $ REAL(total_hr), AIMAG(total_hr) + WRITE(*,'(a,es17.8e3)') " dW_p(recon2) = ", + $ REAL(dw_raw_hr) + WRITE(*,'(a,es17.8e3)') " dW_p(recon2-normalize)= ", + $ REAL(dw_dcon_hr) + + IF (recon_out) THEN + OPEN(UNIT=u_log, FILE="gpec.log", STATUS="UNKNOWN", + $ POSITION="APPEND") + WRITE(u_log,'(a)') "GPEC_RECON2 final results:" + WRITE(u_log,'(a,I8)') " mode = ", mode + WRITE(u_log,'(a,L1)') " reg_flag = ", reg_flag + WRITE(u_log,'(a,es17.8e3)') " int_J_Q2_over_mu0 = ", q2_hr + WRITE(u_log,'(a,2es17.8e3)') " int_J_jQxixi_over_mu0= ", + $ REAL(jqx_hr), AIMAG(jqx_hr) + WRITE(u_log,'(a,2es17.8e3)') " int_J_pdiv_term = ", + $ REAL(pdiv_hr), AIMAG(pdiv_hr) + WRITE(u_log,'(a,2es17.8e3)') " int_J_total = ", + $ REAL(total_hr), AIMAG(total_hr) + WRITE(u_log,'(a,es17.8e3)') " dW_p(recon2) = ", + $ REAL(dw_raw_hr) + WRITE(u_log,'(a,es17.8e3)') " dW_p(recon2-normalize)= ", + $ REAL(dw_dcon_hr) + WRITE(u_log,*) + CLOSE(u_log) + ENDIF + + DEALLOCATE(psi_int_pts, q2_vals_r, q2_vals, jqx_vals, pdiv_vals, + $ total_vals) + CALL gpeq_dealloc + IF (recon_out) THEN + CLOSE(usurf) + CLOSE(u_int) + ENDIF +c----------------------------------------------------------------------- +c terminate. +c----------------------------------------------------------------------- + RETURN + END SUBROUTINE gpout_recon2 END MODULE gpout_mod From bebefe5217a2dec5ea10f809c6ed5331a177596b Mon Sep 17 00:00:00 2001 From: satelite2517 Date: Wed, 27 May 2026 11:37:11 +0900 Subject: [PATCH 30/62] GPEC - RECON2 - add template input flag (cherry picked from commit 8d4348d9e2d84204a02aeecc72225566d4fc459a) --- input/gpec.in | 1 + 1 file changed, 1 insertion(+) diff --git a/input/gpec.in b/input/gpec.in index cbae4a0a3..0e4019a50 100644 --- a/input/gpec.in +++ b/input/gpec.in @@ -86,6 +86,7 @@ verbose=t ! Print run log to terminal recon_flag=f ! Calculate each contribution of destabilizing term and effective perturbed field [Bernstein, Handbook of Plasma Physics, 1983]. + recon_flag2=f ! Calculate the first-form plasma energy terms from Eq. (36) with the gamma|div xi|^2 term omitted. cveri_flag=f ! Under recon_flag, verify (curl C).grad(psi-)=0 and write gpec_recon_cveri_sol*.out. recon_out=t ! Under recon_flag, write recon diagnostic files and gpec.log entries. If false, keep terminal summary only. recon_int="spline" ! recon_flag radial integration on psifac grid. Options: "spline" or "trapezoid". From f9e6acfcb0a69cb06c97d4da763f5ffc47683f2b Mon Sep 17 00:00:00 2001 From: satelite2517 Date: Wed, 27 May 2026 14:23:41 +0900 Subject: [PATCH 31/62] GPEC - WIP add recon xi input flags (cherry picked from commit 5450935ac6ddab8c840bc13d41cfd2ff684dece7) --- gpec/gpec.f | 5 ++++- gpec/gpglobal.F | 6 ++++-- input/gpec.in | 3 +++ 3 files changed, 11 insertions(+), 3 deletions(-) diff --git a/gpec/gpec.f b/gpec/gpec.f index ac7a8670a..4d0f904d3 100644 --- a/gpec/gpec.f +++ b/gpec/gpec.f @@ -72,7 +72,7 @@ PROGRAM gpec_main $ netcdf_flag,ascii_flag,singthresh_flag, $ singthresh_callen_flag,singthresh_slayer_flag, $ singthresh_slayer_inpr,out_ahg2msc,recon_flag,recon_int, - $ cveri_flag,recon_out,recon_flag2 + $ cveri_flag,recon_out,recon_flag2,xi_flag,xifile NAMELIST/gpec_diagnose/singcurs_flag,xbcontra_flag, $ xbnobo_flag,d3_flag,div_flag,xbst_flag,jacfac_flag, $ pmodbmn_flag,rzphibx_flag,radvar_flag,eigen_flag,magpot_flag, @@ -91,6 +91,7 @@ PROGRAM gpec_main dcon_dir="" ieqfile="psi_in.bin" idconfile="euler.bin" + xifile="" ivacuumfile="DEPRECATED" rdconfile="globalsol.bin" power_flag=.TRUE. @@ -198,6 +199,7 @@ PROGRAM gpec_main mutual_test_flag=.FALSE. recon_flag=.FALSE. recon_flag2=.FALSE. + xi_flag=.FALSE. recon_int="spline" cveri_flag=.FALSE. recon_out=.TRUE. @@ -309,6 +311,7 @@ PROGRAM gpec_main CALL setahgdir(dcon_dir) idconfile = TRIM(dcon_dir)//"/"//TRIM(idconfile) ieqfile = TRIM(dcon_dir)//"/"//TRIM(ieqfile) + IF (xifile /= "") xifile = TRIM(dcon_dir)//"/"//TRIM(xifile) ivacuumfile = TRIM(dcon_dir)//"/"//TRIM(ivacuumfile) rdconfile = TRIM(dcon_dir)//"/"//TRIM(rdconfile) ENDIF diff --git a/gpec/gpglobal.F b/gpec/gpglobal.F index 8a22772f4..0d7366aa2 100644 --- a/gpec/gpglobal.F +++ b/gpec/gpglobal.F @@ -19,7 +19,8 @@ MODULE gpglobal_mod $ chebyshev_flag,coil_flag,eigm_flag,bwp_pest_flag,verbose, $ debug_flag,timeit,kin_flag,con_flag,resp_induct_flag, $ netcdf_flag,ascii_flag,wv_farwall_flag,mutual_test_flag, - $ cveri_flag,recon_out,recon_flag2 + $ cveri_flag,recon_out,recon_flag2, + $ xi_flag INTEGER :: mr,mz,mpsi,mstep,mpert,mband,mtheta,mthvac,mthsurf, $ mfix,mhigh,mlow,msing,nfm2,nths,nths2,lmpert,lmlow,lmhigh, @@ -40,7 +41,8 @@ MODULE gpglobal_mod CHARACTER(2) :: sn,ss CHARACTER(10) :: date,time,zone CHARACTER(16) :: jac_type,jac_in,jac_out,data_type,recon_int - CHARACTER(128) :: ieqfile,idconfile,ivacuumfile,rdconfile,dcon_dir + CHARACTER(128) :: ieqfile,idconfile,ivacuumfile,rdconfile + CHARACTER(128) :: dcon_dir,xifile INTEGER, PARAMETER :: hmnum=128 REAL(r8), PARAMETER :: gauss=0.0001 diff --git a/input/gpec.in b/input/gpec.in index 0e4019a50..e0c82d28f 100644 --- a/input/gpec.in +++ b/input/gpec.in @@ -85,8 +85,11 @@ out_ahg2msc=f ! Output deprecated ahg2msc.out files. This is used to communicate with vacuum, but is now done through memory. verbose=t ! Print run log to terminal + recon_flag=f ! Calculate each contribution of destabilizing term and effective perturbed field [Bernstein, Handbook of Plasma Physics, 1983]. recon_flag2=f ! Calculate the first-form plasma energy terms from Eq. (36) with the gamma|div xi|^2 term omitted. + xi_flag=f ! Under recon workflows, reserve an external xi source file instead of using the default perturbation source. + xifile="" ! Optional external xi file path used when xi_flag is true.(file format should be same with euler.bin) cveri_flag=f ! Under recon_flag, verify (curl C).grad(psi-)=0 and write gpec_recon_cveri_sol*.out. recon_out=t ! Under recon_flag, write recon diagnostic files and gpec.log entries. If false, keep terminal summary only. recon_int="spline" ! recon_flag radial integration on psifac grid. Options: "spline" or "trapezoid". From fdf3afdf4851c425976ff5c4b65186df038a7422 Mon Sep 17 00:00:00 2001 From: satelite2517 Date: Wed, 27 May 2026 17:19:26 +0900 Subject: [PATCH 32/62] DOCS - Remove DIIID ideal example Python scripts from repo (cherry picked from commit 99834407b9992070b76d01db17fe8950f31e8333) --- .../DIIID_ideal_example/compare_corrected.py | 37 --- .../DIIID_ideal_example/compare_correction.py | 42 --- .../DIIID_ideal_example/compare_with_Q.py | 48 --- .../DIIID_ideal_example/gpec_netcdf_viewer.py | 83 ----- docs/examples/DIIID_ideal_example/plot_K.py | 120 ------- .../plot_c2_reconstruction.py | 181 ---------- .../DIIID_ideal_example/plot_curvature.py | 134 -------- .../DIIID_ideal_example/plot_cvfun.py | 199 ----------- .../examples/DIIID_ideal_example/plot_cvmn.py | 216 ------------ .../plot_reconstruction.py | 311 ------------------ .../DIIID_ideal_example/plot_shear.py | 132 -------- .../DIIID_ideal_example/plot_xbrzphi.py | 114 ------- 12 files changed, 1617 deletions(-) delete mode 100644 docs/examples/DIIID_ideal_example/compare_corrected.py delete mode 100644 docs/examples/DIIID_ideal_example/compare_correction.py delete mode 100644 docs/examples/DIIID_ideal_example/compare_with_Q.py delete mode 100644 docs/examples/DIIID_ideal_example/gpec_netcdf_viewer.py delete mode 100644 docs/examples/DIIID_ideal_example/plot_K.py delete mode 100644 docs/examples/DIIID_ideal_example/plot_c2_reconstruction.py delete mode 100644 docs/examples/DIIID_ideal_example/plot_curvature.py delete mode 100644 docs/examples/DIIID_ideal_example/plot_cvfun.py delete mode 100644 docs/examples/DIIID_ideal_example/plot_cvmn.py delete mode 100644 docs/examples/DIIID_ideal_example/plot_reconstruction.py delete mode 100644 docs/examples/DIIID_ideal_example/plot_shear.py delete mode 100644 docs/examples/DIIID_ideal_example/plot_xbrzphi.py diff --git a/docs/examples/DIIID_ideal_example/compare_corrected.py b/docs/examples/DIIID_ideal_example/compare_corrected.py deleted file mode 100644 index 86157ba05..000000000 --- a/docs/examples/DIIID_ideal_example/compare_corrected.py +++ /dev/null @@ -1,37 +0,0 @@ -#!/usr/bin/env python3 -import numpy as np - -# Load both methods -phys_data = np.loadtxt("gpec_recon_Ccontra_physics_sol1.out") -metric_data = np.loadtxt("gpec_recon_Ccontra_metric_sol1.out") - -print("=" * 80) -print("Sample comparison at different flux surfaces (theta=0)") -print("=" * 80) - -# Get unique psi values -psi_values = phys_data[:, 0] -unique_psi = np.unique(psi_values) - -for i in [0, len(unique_psi)//4, len(unique_psi)//2, 3*len(unique_psi)//4, -1]: - psi_val = unique_psi[i] - idx_phys = np.where((phys_data[:, 0] == psi_val) & (phys_data[:, 1] == 0))[0] - idx_metric = np.where((metric_data[:, 0] == psi_val) & (metric_data[:, 1] == 0))[0] - - if len(idx_phys) > 0 and len(idx_metric) > 0: - phys_row = phys_data[idx_phys[0]] - metric_row = metric_data[idx_metric[0]] - - c1p = phys_row[4] + 1j*phys_row[5] - c2p = phys_row[6] + 1j*phys_row[7] - c3p = phys_row[8] + 1j*phys_row[9] - - c1m = metric_row[4] + 1j*metric_row[5] - c2m = metric_row[6] + 1j*metric_row[7] - c3m = metric_row[8] + 1j*metric_row[9] - - print(f"\nψ = {psi_val:.6e}:") - print(f" Physics: C1={abs(c1p):.3e}, C2={abs(c2p):.3e}, C3={abs(c3p):.3e}") - print(f" Metric: C1={abs(c1m):.3e}, C2={abs(c2m):.3e}, C3={abs(c3m):.3e}") - if abs(c1m) > 1e-15: - print(f" Ratio C2_phy/C1_met = {abs(c2p)/abs(c1m):.4f}") diff --git a/docs/examples/DIIID_ideal_example/compare_correction.py b/docs/examples/DIIID_ideal_example/compare_correction.py deleted file mode 100644 index 4db179456..000000000 --- a/docs/examples/DIIID_ideal_example/compare_correction.py +++ /dev/null @@ -1,42 +0,0 @@ -#!/usr/bin/env python3 -import numpy as np - -# Load physics method -phys_data = np.loadtxt("gpec_recon_Ccontra_physics_sol1.out") -phys_c1 = phys_data[:, 4] + 1j * phys_data[:, 5] -phys_c2 = phys_data[:, 6] + 1j * phys_data[:, 7] -phys_c3 = phys_data[:, 8] + 1j * phys_data[:, 9] - -# Load metric method -metric_data = np.loadtxt("gpec_recon_Ccontra_metric_sol1.out") -metric_c1 = metric_data[:, 4] + 1j * metric_data[:, 5] -metric_c2 = metric_data[:, 6] + 1j * metric_data[:, 7] -metric_c3 = metric_data[:, 8] + 1j * metric_data[:, 9] - -print("=" * 70) -print("CORRECTION: sq.f1(2) and f1(3) already contain μ₀ and 2π respectively") -print("=" * 70) -print("\nUnderneath first flux surface (ψ = psi_low):") -print("\nPhysics Method Results:") -print(f" C1_physics = {phys_c1[0]:.6e}") -print(f" C2_physics = {phys_c2[0]:.6e}") -print(f" C3_physics = {phys_c3[0]:.6e}") - -print("\nMetric Method Results:") -print(f" C1_metric = {metric_c1[0]:.6e}") -print(f" C2_metric = {metric_c2[0]:.6e}") -print(f" C3_metric = {metric_c3[0]:.6e}") - -print("\n" + "=" * 70) -print("COMPARISON (Ratio of Physics / Metric):") -print("=" * 70) -c1_ratio = abs(phys_c1[0]) / abs(metric_c1[0]) -c2_ratio = abs(phys_c2[0]) / abs(metric_c2[0]) -c3_ratio = abs(phys_c3[0]) / abs(metric_c3[0]) - -print(f" C1_physics / C1_metric = {c1_ratio:.6f}") -print(f" C2_physics / C2_metric = {c2_ratio:.6f}") -print(f" C3_physics / C3_metric = {c3_ratio:.6f}") - -print(f"\n 2π ≈ {2 * 3.14159:.6f}") -print(f"\n✓ Physics method should now ≈ Metric method (within numerical error)") diff --git a/docs/examples/DIIID_ideal_example/compare_with_Q.py b/docs/examples/DIIID_ideal_example/compare_with_Q.py deleted file mode 100644 index b1c1f259e..000000000 --- a/docs/examples/DIIID_ideal_example/compare_with_Q.py +++ /dev/null @@ -1,48 +0,0 @@ -#!/usr/bin/env python3 -import numpy as np - -# Load files -Q_data = np.loadtxt("gpec_recon_Qvec_sol1.out") -Ccov_data = np.loadtxt("gpec_recon_Ccov_sol1.out") -Cphy_data = np.loadtxt("gpec_recon_Ccontra_physics_sol1.out") -Cmet_data = np.loadtxt("gpec_recon_Ccontra_metric_sol1.out") - -print("=" * 100) -print("Q VECTOR vs C VECTOR COMPARISON AT FIRST POINT (psi=1e-4, theta=0)") -print("=" * 100) - -# First row (theta=0) -Q_row = Q_data[0] -Ccov_row = Ccov_data[0] -Cphy_row = Cphy_data[0] -Cmet_row = Cmet_data[0] - -print("\nQ VECTOR (from gpeq_epf):") -print(f" Q_psi = {Q_row[4]:.6e} + {Q_row[5]:.6e}i") -print(f" Q_theta = {Q_row[6]:.6e} + {Q_row[7]:.6e}i") - -print("\nC COVARIANT (before adding j×ξ term):") -print(f" C_psi = {Ccov_row[4]:.6e} + {Ccov_row[5]:.6e}i") -print(f" C_theta = {Ccov_row[6]:.6e} + {Ccov_row[7]:.6e}i") - -print("\nC CONTRAVARIANT (Physics Method = Q + j×ξ):") -print(f" C1_phy = {Cphy_row[4]:.6e} + {Cphy_row[5]:.6e}i") -print(f" C2_phy = {Cphy_row[6]:.6e} + {Cphy_row[7]:.6e}i") -print(f" C3_phy = {Cphy_row[8]:.6e} + {Cphy_row[9]:.6e}i") - -print("\nC CONTRAVARIANT (Metric Method = g_ij * C_j):") -print(f" C1_met = {Cmet_row[4]:.6e} + {Cmet_row[5]:.6e}i") -print(f" C2_met = {Cmet_row[6]:.6e} + {Cmet_row[7]:.6e}i") -print(f" C3_met = {Cmet_row[8]:.6e} + {Cmet_row[9]:.6e}i") - -print("\n" + "=" * 100) -print("KEY OBSERVATION:") -print("=" * 100) -Q_theta = Q_row[6] + 1j*Q_row[7] -C2_phy = Cphy_row[6] + 1j*Cphy_row[7] - -print(f"Q_theta = {Q_theta}") -print(f"C2_physics = {C2_phy}") -print(f"C2 == Q_theta? {np.abs(C2_phy - Q_theta) < 1e-10}") -print("\n👉 C2_physics이 Q_theta와 같거나 거의 같은가?") -print(" 만약 그렇다면, j×ξ term이 거의 0이라는 뜻!") diff --git a/docs/examples/DIIID_ideal_example/gpec_netcdf_viewer.py b/docs/examples/DIIID_ideal_example/gpec_netcdf_viewer.py deleted file mode 100644 index 64cced7ee..000000000 --- a/docs/examples/DIIID_ideal_example/gpec_netcdf_viewer.py +++ /dev/null @@ -1,83 +0,0 @@ -import numpy as np -import matplotlib.pyplot as plt -import xarray as xr -from pathlib import Path - -class GPECNetCDFViewer: - """GPEC NetCDF File Viewer and Plotter""" - - def __init__(self, filepath): - self.filepath = Path(filepath) - self.ds = None - self.load_file() - - def load_file(self): - try: - self.ds = xr.open_dataset(self.filepath) - print(f"✓ Loaded: {self.filepath.name}") - except Exception as e: - print(f"✗ Error: {e}") - - def plot_bkappaxi_perp(self): - """Plot Bkappaxi_perp in Fourier space""" - if 'Bkappaxi_perp' not in self.ds: - print("✗ 'Bkappaxi_perp' not found") - return - - data = self.ds['Bkappaxi_perp'].values - real_part = data[:, :, 0] - imag_part = data[:, :, 1] - - fig, axes = plt.subplots(1, 2, figsize=(14, 5)) - fig.suptitle('Bkappaxi_perp: Curvature Component (Fourier Space)', - fontsize=14, fontweight='bold') - - im1 = axes[0].contourf(real_part, levels=20, cmap='RdBu_r') - axes[0].set_title('Real Part') - plt.colorbar(im1, ax=axes[0]) - - im2 = axes[1].contourf(imag_part, levels=20, cmap='RdBu_r') - axes[1].set_title('Imaginary Part') - plt.colorbar(im2, ax=axes[1]) - - plt.tight_layout() - return fig - - def plot_bkappaxi_perp_fun(self): - """Plot Bkappaxi_perp_fun in function space""" - if 'Bkappaxi_perp_fun' not in self.ds: - print("✗ 'Bkappaxi_perp_fun' not found") - return - - data = self.ds['Bkappaxi_perp_fun'].values - real_part = data[:, :, 0] - imag_part = data[:, :, 1] - - fig, axes = plt.subplots(1, 2, figsize=(14, 5)) - fig.suptitle('Bkappaxi_perp_fun: Curvature Component (Function Space)', - fontsize=14, fontweight='bold') - - im1 = axes[0].contourf(real_part, levels=20, cmap='RdBu_r') - axes[0].set_title('Real Part') - plt.colorbar(im1, ax=axes[0]) - - im2 = axes[1].contourf(imag_part, levels=20, cmap='RdBu_r') - axes[1].set_title('Imaginary Part') - plt.colorbar(im2, ax=axes[1]) - - plt.tight_layout() - return fig - -# Use the viewer -if __name__ == "__main__": - filepath = "gpec_output_n1.nc" # 실제 파일명으로 변경 - viewer = GPECNetCDFViewer(filepath) - - if viewer.ds is not None: - fig1 = viewer.plot_bkappaxi_perp() - plt.savefig('bkappaxi_perp_fourier.png', dpi=150, bbox_inches='tight') - - fig2 = viewer.plot_bkappaxi_perp_fun() - plt.savefig('bkappaxi_perp_function.png', dpi=150, bbox_inches='tight') - - plt.show() diff --git a/docs/examples/DIIID_ideal_example/plot_K.py b/docs/examples/DIIID_ideal_example/plot_K.py deleted file mode 100644 index 39e046aed..000000000 --- a/docs/examples/DIIID_ideal_example/plot_K.py +++ /dev/null @@ -1,120 +0,0 @@ -#!/usr/bin/env python3 -""" -Plot K diagnostics on the r-z plane. - -Running this script produces two figures: -1. gpec_recon_k_sol1.png -2. gpec_recon_k-term_sol1.png -""" - -import glob -import os -import re -import sys - -import matplotlib.pyplot as plt -import numpy as np -from matplotlib.colors import TwoSlopeNorm - - -def find_required_file(pattern): - """Find a reconstruction output file by wildcard pattern.""" - matches = sorted(glob.glob(pattern)) - if not matches: - print(f"Error: Could not find {pattern}") - sys.exit(1) - return matches[0] - - -def extract_suffix(path): - """Extract the solution suffix such as sol1 from the filename.""" - name = os.path.basename(path) - match = re.search(r"(sol\d+)\.out$", name) - if not match: - print(f"Error: Could not extract solution suffix from {name}") - sys.exit(1) - return match.group(1) - - -def make_norm(values): - """Build a diverging normalization centered at zero.""" - vmin_temp, vmax_temp = np.percentile(values, [2, 98]) - vmax = max(abs(vmin_temp), abs(vmax_temp)) - return TwoSlopeNorm(vmin=-vmax, vcenter=0.0, vmax=vmax) - - -def style_axis(ax, title): - """Apply common axis styling.""" - ax.set_xlabel("R (m)", fontsize=11) - ax.set_ylabel("Z (m)", fontsize=11) - ax.set_title(title, fontsize=12, fontweight="bold") - ax.grid(True, alpha=0.3) - ax.set_aspect("equal") - - -def scatter_panel(ax, r, z, values, title, cbar_label): - """Create a single scatter panel with symmetric color scaling.""" - scatter = ax.scatter( - r, - z, - c=values, - cmap="RdBu_r", - s=20, - alpha=0.6, - norm=make_norm(values), - ) - style_axis(ax, title) - cbar = plt.colorbar(scatter, ax=ax) - cbar.set_label(cbar_label, fontsize=10) - - -def main(): - """Main plotting routine.""" - print("=" * 70) - print("GPEC K Diagnostic Plotter") - print("=" * 70) - - k_file = find_required_file("gpec_recon_k_sol*.out") - suffix = extract_suffix(k_file) - - print(f"Reading K data from: {k_file}") - - k_data = np.loadtxt(k_file, skiprows=1) - - r = k_data[:, 2] - z = k_data[:, 3] - - k_total = k_data[:, 4] - t1 = k_data[:, 6] - t2 = k_data[:, 7] - t3 = k_data[:, 8] - - # Figure 1: total K - fig_k, ax_k = plt.subplots(figsize=(7, 8)) - scatter_panel(ax_k, r, z, k_total, "K (Total)", "K") - plt.tight_layout() - k_png = f"gpec_recon_k_{suffix}.png" - fig_k.savefig(k_png, dpi=150, bbox_inches="tight") - - # Figure 2: three terms in one row - fig_terms, axes = plt.subplots(1, 3, figsize=(18, 5.5)) - term_specs = [ - (t1, r"Term1: $|\nabla\psi_{\mathrm{dcon}}|^2 \sigma S_{\mathrm{dcon}}$", "T1"), - (t2, r"Term2: $B^2 \sigma^2$", "T2"), - (t3, r"Term3: $2 P' \kappa^\psi$", "T3"), - ] - - for ax, (values, title, label) in zip(axes, term_specs): - scatter_panel(ax, r, z, values, title, label) - - plt.tight_layout() - terms_png = f"gpec_recon_k-term_{suffix}.png" - fig_terms.savefig(terms_png, dpi=150, bbox_inches="tight") - - print("Saved:") - print(f" {k_png}") - print(f" {terms_png}") - - -if __name__ == "__main__": - main() diff --git a/docs/examples/DIIID_ideal_example/plot_c2_reconstruction.py b/docs/examples/DIIID_ideal_example/plot_c2_reconstruction.py deleted file mode 100644 index c67c74ae3..000000000 --- a/docs/examples/DIIID_ideal_example/plot_c2_reconstruction.py +++ /dev/null @@ -1,181 +0,0 @@ -#!/usr/bin/env python3 -""" -Plot C² reconstruction diagnostics in r-z plane. - -For each C² output file, creates a PNG with real and imaginary parts -displayed as scatter plots in the r-z grid. -Color scheme: red (positive) - white (0) - blue (negative) - -Usage: - python plot_c2_reconstruction.py -""" - -import numpy as np -import matplotlib.pyplot as plt -import matplotlib.colors as mcolors -from matplotlib.colors import LinearSegmentedColormap -import glob -import os -import sys - - -def create_rwb_colormap(n_bins=256): - """ - Create a red-white-blue colormap. - - Parameters: - ----------- - n_bins : int - Number of bins in the colormap - - Returns: - -------- - cmap : LinearSegmentedColormap - Red-white-blue colormap (white at center for value 0) - """ - colors_list = ['red', 'white', 'blue'] - cmap = LinearSegmentedColormap.from_list('rwb', colors_list, N=n_bins) - return cmap - - -def plot_c2_reconstruction(filepath): - """ - Plot C² reconstruction in r-z plane. - - Creates a PNG with real and imaginary parts as subplots. - Each point is colored according to its C² value using red-white-blue - colormap where white represents zero. - - Parameters: - ----------- - filepath : str - Path to the C² output file - - Returns: - -------- - output_file : str - Path to the generated PNG file - """ - - try: - # Read the file - skip header line - data = np.loadtxt(filepath, skiprows=1) - - if data.size == 0: - print(f"Warning: {filepath} is empty") - return None - - # Handle case where file has only one data point - if data.ndim == 1: - data = data.reshape(1, -1) - - # Extract columns: psi, theta, r, z, C2_re, C2_im - psi = data[:, 0] - theta = data[:, 1] - r = data[:, 2] - z = data[:, 3] - c2_re = data[:, 4] - c2_im = data[:, 5] - - # Create red-white-blue colormap - cmap = create_rwb_colormap(256) - - # Calculate max absolute values for symmetric normalization - vmax_re = np.max(np.abs(c2_re)) - vmax_im = np.max(np.abs(c2_im)) - - # Use CenteredNorm with white at 0 - if vmax_re > 0: - norm_re = mcolors.CenteredNorm(vcenter=0, halfrange=vmax_re) - else: - norm_re = mcolors.Normalize(vmin=-1, vmax=1) - - if vmax_im > 0: - norm_im = mcolors.CenteredNorm(vcenter=0, halfrange=vmax_im) - else: - norm_im = mcolors.Normalize(vmin=-1, vmax=1) - - # Create figure with 2 subplots (real and imaginary) - fig, axes = plt.subplots(1, 2, figsize=(15, 6)) - - # Extract quantity name from filename - # e.g., gpec_recon_C2_cw_sol1.out -> C2_cw - basename = os.path.basename(filepath) - quantity = basename.replace('gpec_recon_', '').replace('.out', '').rsplit('_sol', 1)[0] - - # Plot real part - scatter_re = axes[0].scatter(r, z, c=c2_re, cmap=cmap, norm=norm_re, - s=30, alpha=0.8) - axes[0].set_xlabel('R (m)', fontsize=12, fontweight='bold') - axes[0].set_ylabel('Z (m)', fontsize=12, fontweight='bold') - axes[0].set_title(f'{quantity} - Real Part', fontsize=13, fontweight='bold') - axes[0].grid(True, alpha=0.3, linestyle='--') - axes[0].set_aspect('equal', adjustable='box') - - cbar_re = plt.colorbar(scatter_re, ax=axes[0], label='Value') - cbar_re.set_label(f'{quantity} (Re)', fontsize=11, fontweight='bold') - - # Plot imaginary part - scatter_im = axes[1].scatter(r, z, c=c2_im, cmap=cmap, norm=norm_im, - s=30, alpha=0.8) - axes[1].set_xlabel('R (m)', fontsize=12, fontweight='bold') - axes[1].set_ylabel('Z (m)', fontsize=12, fontweight='bold') - axes[1].set_title(f'{quantity} - Imaginary Part', fontsize=13, fontweight='bold') - axes[1].grid(True, alpha=0.3, linestyle='--') - axes[1].set_aspect('equal', adjustable='box') - - cbar_im = plt.colorbar(scatter_im, ax=axes[1], label='Value') - cbar_im.set_label(f'{quantity} (Im)', fontsize=11, fontweight='bold') - - # Add main title with statistics - num_points = len(r) - n_psi = len(np.unique(psi)) - fig.suptitle(f'{quantity} Reconstruction\n(n_psi={n_psi}, n_theta={num_points//n_psi if n_psi > 0 else 0})', - fontsize=14, fontweight='bold', y=1.00) - - plt.tight_layout() - - # Save as PNG - output_file = filepath.replace('.out', '.png') - plt.savefig(output_file, dpi=150, bbox_inches='tight') - print(f"✓ Saved: {output_file}") - plt.close() - - return output_file - - except Exception as e: - print(f"✗ Error processing {filepath}: {e}") - import traceback - traceback.print_exc() - return None - - -def main(): - """ - Main function: find and plot all C² output files. - """ - - # Find all C² output files - c2_files = sorted(glob.glob('gpec_recon_C2_*.out')) - - if not c2_files: - print("No C² output files found (gpec_recon_C2_*.out)") - print(f"Current directory: {os.getcwd()}") - return - - print(f"Found {len(c2_files)} C² output file(s)") - print("-" * 60) - - successful = 0 - for filepath in c2_files: - print(f"Processing: {filepath}") - output_file = plot_c2_reconstruction(filepath) - if output_file: - successful += 1 - - print("-" * 60) - print(f"Completed: {successful}/{len(c2_files)} files processed successfully") - - -if __name__ == '__main__': - main() diff --git a/docs/examples/DIIID_ideal_example/plot_curvature.py b/docs/examples/DIIID_ideal_example/plot_curvature.py deleted file mode 100644 index 3ddf2902a..000000000 --- a/docs/examples/DIIID_ideal_example/plot_curvature.py +++ /dev/null @@ -1,134 +0,0 @@ -#!/usr/bin/env python3 -""" -Plot curvature diagnostic quantities from GPEC reconstruction output. - -Reads spatial domain data: -- gpec_recon_curvature_sol*.out: Spatial domain (r-z plane) - -Produces single r-z plane plot with curvature values colored. -""" - -import glob -import sys - -import matplotlib.pyplot as plt -import numpy as np -from matplotlib.colors import TwoSlopeNorm -from scipy.interpolate import griddata - - -def find_curvature_file(): - """Find curvature output file with wildcard matching.""" - curv_files = glob.glob("gpec_recon_curvature_sol*.out") - - if not curv_files: - print("Error: Could not find gpec_recon_curvature_sol*.out file") - sys.exit(1) - - return curv_files[0] - - -def read_curvature_data(): - """Read spatial curvature data from output file.""" - curv_file = find_curvature_file() - - print(f"Reading spatial data from: {curv_file}") - curv = np.loadtxt(curv_file, skiprows=1) - - psi = curv[:, 0] - theta = curv[:, 1] - r = curv[:, 2] - z = curv[:, 3] - curv_re = curv[:, 4] - curv_im = curv[:, 5] - - return psi, theta, r, z, curv_re, curv_im - - -def main(): - """Main plotting routine.""" - print("=" * 70) - print("GPEC Curvature Diagnostic Plotter (r-z plane only)") - print("=" * 70) - - psi, theta, r, z, curv_re, curv_im = read_curvature_data() - - unique_psi = np.unique(psi) - - print(f"Spatial grid: {len(unique_psi)} psi levels") - print(f"Total grid points: {len(r)}") - print( - f"Curvature range: min={np.min(curv_re):.4e}, max={np.max(curv_re):.4e}, " - f"imag_max={np.max(np.abs(curv_im)):.4e}" - ) - - fig, ax = plt.subplots(figsize=(10, 8)) - - # Use the same compression used by the shear plot so sign structure is visible. - curv_re_asinh = np.arcsinh(curv_re) - - r_min, r_max = np.min(r), np.max(r) - z_min, z_max = np.min(z), np.max(z) - - grid_r = np.linspace(r_min, r_max, 150) - grid_z = np.linspace(z_min, z_max, 150) - grid_r_mesh, grid_z_mesh = np.meshgrid(grid_r, grid_z) - - points = np.c_[r, z] - grid_curv = griddata( - points, curv_re_asinh, (grid_r_mesh, grid_z_mesh), - method="cubic", fill_value=np.nan - ) - - vmin, vmax = np.nanmin(grid_curv), np.nanmax(grid_curv) - norm = TwoSlopeNorm(vmin=vmin, vcenter=0, vmax=vmax) - - ax.contourf( - grid_r_mesh, grid_z_mesh, grid_curv, levels=30, - cmap="RdBu_r", norm=norm - ) - - scatter = ax.scatter( - r, z, c=curv_re_asinh, cmap="RdBu_r", - norm=norm, s=15, alpha=0.6, edgecolors="none" - ) - - ax.contour( - grid_r_mesh, grid_z_mesh, grid_curv, levels=[0], - colors="black", linewidths=2 - ) - - ax.set_xlabel("R", fontsize=22, fontweight="bold") - ax.set_ylabel("Z", fontsize=22, fontweight="bold") - ax.set_title("Curvature (spatial) - r-z plane", fontsize=24, - fontweight="bold") - ax.set_aspect("equal", adjustable="box") - ax.grid(True, alpha=0.3, linestyle="--") - ax.tick_params(labelsize=16) - - r_ticks = np.linspace(r_min, r_max, 6) - ax.set_xticks(r_ticks) - ax.set_xticklabels([f"{rv:.3f}" for rv in r_ticks], fontsize=14) - - z_ticks = np.linspace(z_min, z_max, 6) - ax.set_yticks(z_ticks) - ax.set_yticklabels([f"{zv:.3f}" for zv in z_ticks], fontsize=14) - - cbar = plt.colorbar(scatter, ax=ax) - cbar.set_label("asinh(Curvature)", fontsize=18, fontweight="bold") - cbar.ax.tick_params(labelsize=14) - - cbar_ticks = np.linspace(vmin, vmax, 7) - cbar.set_ticks(cbar_ticks) - cbar.set_ticklabels([f"{val:.1e}" for val in cbar_ticks], fontsize=12) - - plt.tight_layout() - - output_file = "gpec_recon_curvature_rz.png" - print(f"\nSaving plot to: {output_file}") - plt.savefig(output_file, dpi=150, bbox_inches="tight") - print("Plot complete!") - - -if __name__ == "__main__": - main() diff --git a/docs/examples/DIIID_ideal_example/plot_cvfun.py b/docs/examples/DIIID_ideal_example/plot_cvfun.py deleted file mode 100644 index cbd948967..000000000 --- a/docs/examples/DIIID_ideal_example/plot_cvfun.py +++ /dev/null @@ -1,199 +0,0 @@ -#!/usr/bin/env python -""" -Plot cvfun vs cv2fun on the R-Z plane and report fun-space errors. - -Outputs: - - gpec_recon_cvfun_solX.png - - gpec_recon_cv2fun_solX.png - - gpec_recon_cvdiff_solX.png -""" - -import glob -import os -import re -import sys - -import matplotlib.pyplot as plt -import numpy as np -from matplotlib.colors import TwoSlopeNorm - - -def find_required_file(pattern): - matches = sorted(glob.glob(pattern)) - if not matches: - print(f"Error: Could not find {pattern}") - sys.exit(1) - return matches[0] - - -def extract_suffix(path): - name = os.path.basename(path) - match = re.search(r"(sol\d+)\.out$", name) - if not match: - print(f"Error: Could not extract solution suffix from {name}") - sys.exit(1) - return match.group(1) - - -def load_data(path): - data = np.loadtxt(path, skiprows=1) - if data.ndim == 1: - data = data[np.newaxis, :] - return data - - -def make_diverging_norm(values): - vmin_temp, vmax_temp = np.percentile(values, [2, 98]) - vmax = max(abs(vmin_temp), abs(vmax_temp), 1.0e-14) - return TwoSlopeNorm(vmin=-vmax, vcenter=0.0, vmax=vmax) - - -def scatter_component(ax, r, z, values, title, cbar_label): - scatter = ax.scatter( - r, - z, - c=values, - s=10, - cmap="RdBu_r", - alpha=0.75, - edgecolors="none", - norm=make_diverging_norm(values), - ) - ax.set_title(title, fontsize=11, fontweight="bold") - ax.set_xlabel("R (m)", fontsize=10) - ax.set_ylabel("Z (m)", fontsize=10) - ax.set_aspect("equal") - ax.grid(True, alpha=0.25) - cbar = plt.colorbar(scatter, ax=ax, fraction=0.046, pad=0.02) - cbar.set_label(cbar_label, fontsize=9) - return scatter - - -def make_six_panel_figure(r, z, values_by_comp, figure_title, output): - fig, axes = plt.subplots(3, 2, figsize=(13, 15)) - panel_order = [ - ("p_re", r"$C_\psi$ Re", "Re"), - ("p_im", r"$C_\psi$ Im", "Im"), - ("t_re", r"$C_\theta$ Re", "Re"), - ("t_im", r"$C_\theta$ Im", "Im"), - ("z_re", r"$C_\zeta$ Re", "Re"), - ("z_im", r"$C_\zeta$ Im", "Im"), - ] - for ax, (key, title, label) in zip(axes.ravel(), panel_order): - scatter_component( - ax, - r, - z, - values_by_comp[key], - f"{figure_title} {title}", - label, - ) - fig.suptitle(figure_title, fontsize=15, fontweight="bold") - fig.tight_layout(rect=[0, 0, 1, 0.95]) - fig.savefig(output, dpi=160, bbox_inches="tight") - plt.close(fig) - - -def symmetric_relative_l2(lhs, rhs): - denom = np.linalg.norm(lhs) + np.linalg.norm(rhs) - if denom == 0.0: - return 0.0 - return 2.0 * np.linalg.norm(lhs - rhs) / denom - - -def component_arrays(data): - return { - "p_re": data[:, 4], - "p_im": data[:, 5], - "t_re": data[:, 6], - "t_im": data[:, 7], - "z_re": data[:, 8], - "z_im": data[:, 9], - } - - -def main(): - cv_file = find_required_file("gpec_recon_cvfun_sol*.out") - cv2_file = find_required_file("gpec_recon_cv2fun_sol*.out") - suffix = extract_suffix(cv_file) - - print(f"Reading {os.path.basename(cv_file)}") - print(f"Reading {os.path.basename(cv2_file)}") - - cv_data = load_data(cv_file) - cv2_data = load_data(cv2_file) - - if cv_data.shape != cv2_data.shape or not np.allclose( - cv_data[:, :4], cv2_data[:, :4] - ): - print("Error: cvfun and cv2fun grids do not match.") - sys.exit(1) - - r = cv_data[:, 2] - z = cv_data[:, 3] - cv = component_arrays(cv_data) - cv2 = component_arrays(cv2_data) - panel_keys = ["p_re", "p_im", "t_re", "t_im", "z_re", "z_im"] - comp_labels = [("p", r"$C_\psi$"), ("t", r"$C_\theta$"), ("z", r"$C_\zeta$")] - - direct_values = {} - metric_values = {} - diff_values = {} - - print("") - print("Fun-space error summary:") - - for comp, latex_name in comp_labels: - for part in ["re", "im"]: - key = f"{comp}_{part}" - direct = cv[key] - metric = cv2[key] - diff = direct - metric - direct_values[key] = direct - metric_values[key] = metric - diff_values[key] = diff - - rel_l2 = symmetric_relative_l2(direct, metric) - peak = np.max(np.maximum(np.abs(direct), np.abs(metric))) - mask = np.maximum(np.abs(direct), np.abs(metric)) > 0.05 * peak - masked_rel_l2 = symmetric_relative_l2(direct[mask], metric[mask]) - abs_energy_frac = np.sum(diff[mask] ** 2) / max(np.sum(diff**2), 1.0e-30) - idx = np.argmax(np.abs(diff)) - - print( - f" cv{comp}_{part}: rel_L2 = {100*rel_l2:6.3f}%" - f" rel_L2(>5% peak) = {100*masked_rel_l2:6.3f}%" - f" mismatch energy in >5% peak region = {100*abs_energy_frac:6.2f}%" - ) - print( - f" max |Δ| = {abs(diff[idx]):.6e}" - f" at psi={cv_data[idx,0]:.6f}, theta={cv_data[idx,1]:.6f}," - f" R={cv_data[idx,2]:.6f}, Z={cv_data[idx,3]:.6f}" - ) - print( - f" direct = {direct[idx]:.6e}, metric = {metric[idx]:.6e}" - ) - - cv_png = f"gpec_recon_cvfun_{suffix}.png" - cv2_png = f"gpec_recon_cv2fun_{suffix}.png" - diff_png = f"gpec_recon_cvdiff_{suffix}.png" - - make_six_panel_figure( - r, z, direct_values, "Direct cvfun components", cv_png - ) - make_six_panel_figure( - r, z, metric_values, "Metric cv2fun components", cv2_png - ) - make_six_panel_figure( - r, z, diff_values, "Difference components (direct - metric)", diff_png - ) - - print("") - print("Saved:") - print(f" {cv_png}") - print(f" {cv2_png}") - print(f" {diff_png}") - - -if __name__ == "__main__": - main() diff --git a/docs/examples/DIIID_ideal_example/plot_cvmn.py b/docs/examples/DIIID_ideal_example/plot_cvmn.py deleted file mode 100644 index f68d962d1..000000000 --- a/docs/examples/DIIID_ideal_example/plot_cvmn.py +++ /dev/null @@ -1,216 +0,0 @@ -#!/usr/bin/env python -""" -Plot reconstructed covariant C components in Fourier space. - -This script reads: - - gpec_recon_cvmn_sol*.out - - gpec_recon_cv2mn_sol*.out - -and writes: - - gpec_recon_cvmn.png - - gpec_recon_cv2mn.png - -Each PNG contains 6 subplots: - cvp_re, cvp_im, cvt_re, cvt_im, cvz_re, cvz_im -with psi on the x-axis and one line per m value. -""" - -import glob -import os -import sys - -import matplotlib.pyplot as plt -import numpy as np - - -def find_required_file(pattern): - matches = sorted(glob.glob(pattern)) - if not matches: - print(f"Error: Could not find {pattern}") - sys.exit(1) - return matches[0] - - -def load_mn_data(path): - data = np.loadtxt(path, skiprows=1) - if data.ndim == 1: - data = data[np.newaxis, :] - return data - - -def build_series(data): - psi_vals = np.unique(data[:, 0]) - m_vals = np.unique(data[:, 1].astype(int)) - series = {} - for m in m_vals: - mask = data[:, 1].astype(int) == m - block = data[mask] - order = np.argsort(block[:, 0]) - series[m] = block[order] - return psi_vals, m_vals, series - - -def style_axis(ax, title): - ax.set_title(title, fontsize=11, fontweight="bold") - ax.set_xlabel("psi", fontsize=10) - ax.grid(True, alpha=0.25, color="0.75", linewidth=0.6) - ax.set_facecolor("#fbfbfb") - - -def plot_family(data, titles, png_name, figure_title): - _, m_vals, series = build_series(data) - cmap = plt.colormaps["nipy_spectral"] - linestyles = ["-", "--", "-.", ":"] - - fig, axes = plt.subplots(3, 2, figsize=(14, 12), sharex=True) - axes = axes.ravel() - - for idx, ax in enumerate(axes): - col = idx + 2 - for i, m in enumerate(m_vals): - block = series[m] - color = cmap((i + 0.5) / max(len(m_vals), 1)) - ax.plot( - block[:, 0], - block[:, col], - color=color, - linewidth=1.6 if i % 5 else 2.1, - linestyle=linestyles[i % len(linestyles)], - alpha=0.95, - ) - style_axis(ax, titles[idx]) - - axes[0].set_ylabel("value", fontsize=10) - axes[1].set_ylabel("value", fontsize=10) - axes[2].set_ylabel("value", fontsize=10) - axes[3].set_ylabel("value", fontsize=10) - axes[4].set_ylabel("value", fontsize=10) - axes[5].set_ylabel("value", fontsize=10) - - # Add a compact colorbar-like legend using m-index colors. - sm = plt.cm.ScalarMappable( - cmap=cmap, norm=plt.Normalize(vmin=m_vals.min(), vmax=m_vals.max()) - ) - sm.set_array([]) - cbar = fig.colorbar(sm, ax=axes.tolist(), fraction=0.02, pad=0.02) - cbar.set_label("m", fontsize=10) - - fig.suptitle(figure_title, fontsize=14, fontweight="bold") - fig.tight_layout(rect=[0, 0, 0.96, 0.97]) - fig.savefig(png_name, dpi=160, bbox_inches="tight") - plt.close(fig) - - -def sort_rows(data): - return data[np.lexsort((data[:, 1], data[:, 0]))] - - -def symmetric_relative_l2(lhs, rhs): - denom = np.linalg.norm(lhs) + np.linalg.norm(rhs) - if denom == 0.0: - return 0.0 - return 2.0 * np.linalg.norm(lhs - rhs) / denom - - -def max_pointwise_relative(lhs, rhs): - scale = np.maximum(np.maximum(np.abs(lhs), np.abs(rhs)), 1.0e-14) - return np.max(np.abs(lhs - rhs) / scale) - - -def compare_families(cvmn_data, cv2mn_data): - lhs = sort_rows(cvmn_data) - rhs = sort_rows(cv2mn_data) - - if lhs.shape != rhs.shape: - raise ValueError( - f"Shape mismatch: cvmn {lhs.shape} vs cv2mn {rhs.shape}" - ) - - if not np.allclose(lhs[:, :2], rhs[:, :2], atol=0.0, rtol=0.0): - raise ValueError("psi/m grids do not match between cvmn and cv2mn.") - - labels = ["p", "t", "z"] - results = [] - all_lhs = [] - all_rhs = [] - - for i, label in enumerate(labels): - col = 2 + 2 * i - lhs_comp = lhs[:, col] + 1j * lhs[:, col + 1] - rhs_comp = rhs[:, col] + 1j * rhs[:, col + 1] - all_lhs.append(lhs_comp) - all_rhs.append(rhs_comp) - results.append( - ( - label, - symmetric_relative_l2(lhs_comp, rhs_comp), - max_pointwise_relative(lhs_comp, rhs_comp), - ) - ) - - all_lhs = np.concatenate(all_lhs) - all_rhs = np.concatenate(all_rhs) - overall = ( - symmetric_relative_l2(all_lhs, all_rhs), - max_pointwise_relative(all_lhs, all_rhs), - ) - return results, overall - - -def main(): - cvmn_file = find_required_file("gpec_recon_cvmn_sol*.out") - cv2mn_file = find_required_file("gpec_recon_cv2mn_sol*.out") - - print(f"Reading {os.path.basename(cvmn_file)}") - print(f"Reading {os.path.basename(cv2mn_file)}") - - cvmn_data = load_mn_data(cvmn_file) - cv2mn_data = load_mn_data(cv2mn_file) - component_results, overall = compare_families(cvmn_data, cv2mn_data) - - plot_family( - cvmn_data, - [ - "cvp_re", - "cvp_im", - "cvt_re", - "cvt_im", - "cvz_re", - "cvz_im", - ], - "gpec_recon_cvmn.png", - "Covariant C from direct route (mn)", - ) - - plot_family( - cv2mn_data, - [ - "cv2p_re", - "cv2p_im", - "cv2t_re", - "cv2t_im", - "cv2z_re", - "cv2z_im", - ], - "gpec_recon_cv2mn.png", - "Covariant C from metric route (mn)", - ) - - print("Saved:") - print(" gpec_recon_cvmn.png") - print(" gpec_recon_cv2mn.png") - print("") - print("Symmetric relative error between cvmn and cv2mn:") - for label, rel_l2, rel_max in component_results: - print( - f" cv{label}: rel_L2 = {100.0 * rel_l2:8.3f}%" - f" max_pointwise = {100.0 * rel_max:8.3f}%" - ) - print( - f" overall: rel_L2 = {100.0 * overall[0]:8.3f}%" - f" max_pointwise = {100.0 * overall[1]:8.3f}%" - ) - - -if __name__ == "__main__": - main() diff --git a/docs/examples/DIIID_ideal_example/plot_reconstruction.py b/docs/examples/DIIID_ideal_example/plot_reconstruction.py deleted file mode 100644 index 9f5ad08cd..000000000 --- a/docs/examples/DIIID_ideal_example/plot_reconstruction.py +++ /dev/null @@ -1,311 +0,0 @@ -#!/usr/bin/env python3 -""" -Plot reconstruction diagnostics in r-z plane. - -For each reconstruction output file, creates a PNG with real and imaginary parts -displayed as scatter plots in the r-z grid. -Color scheme: red (positive) - white (0) - blue (negative) - -Handles different file formats: -- Scalar real-only (5 columns): 1 subplot -- Scalar complex (6 columns): 2 subplots -- 2-component vectors (8 columns): 2 subplots -- 3-component vectors (10 columns): 3 subplots - -Usage: - python plot_reconstruction.py -""" - -import numpy as np -import matplotlib.pyplot as plt -import matplotlib.colors as mcolors -from matplotlib.colors import LinearSegmentedColormap -import glob -import os - - -def create_rwb_colormap(n_bins=256): - """ - Create a red-white-blue colormap where white is centered at 0. - - Parameters: - ----------- - n_bins : int - Number of bins in the colormap - - Returns: - -------- - cmap : LinearSegmentedColormap - Red-white-blue colormap - """ - colors_list = ['red', 'white', 'blue'] - cmap = LinearSegmentedColormap.from_list('rwb', colors_list, N=n_bins) - return cmap - - -def get_component_names(filepath, n_components): - """ - Extract component names from file based on filename and number of components. - - Parameters: - ----------- - filepath : str - Path to the output file - n_components : int - Number of components (1, 2, or 3) - - Returns: - -------- - names : list - List of component names - """ - basename = os.path.basename(filepath) - quantity = basename.replace('gpec_recon_', '').replace('.out', '').rsplit('_sol', 1)[0] - - if n_components == 1: - return [quantity] - elif n_components == 2: - # For 2D vectors (like C_psi, C_theta) - if 'Ccov' in basename: - return ['ψ component (C_psi)', 'θ component (C_theta)'] - elif 'Qv' in basename: - return ['ψ component (Qv_psi)', 'θ component (Qv_theta)'] - elif 'Qw' in basename: - return ['ψ component (Qw_psi)', 'θ component (Qw_theta)'] - else: - return ['Component 1', 'Component 2'] - elif n_components == 3: - # For 3D vectors (like C1, C2, C3 or Psi, Theta, Zeta) - if 'Ccov' in basename: - return ['ψ component', 'θ component', 'ζ component'] - elif 'Qv' in basename: - return ['ψ component', 'θ component', 'ζ component'] - elif 'Qw' in basename: - return ['ψ component', 'θ component', 'ζ component'] - elif 'Ccontra' in basename: - return ['C¹ component', 'C² component', 'C³ component'] - else: - return [f'Component {i+1}' for i in range(n_components)] - else: - return [f'Component {i+1}' for i in range(n_components)] - - -def plot_reconstruction(filepath): - """ - Plot reconstruction data in r-z plane. - - Creates PNG files with real and imaginary parts as subplots. - - Parameters: - ----------- - filepath : str - Path to the reconstruction output file - - Returns: - -------- - output_files : list - List of generated PNG file paths - """ - - try: - # Read the file with error handling for inconsistent columns - with open(filepath, 'r') as f: - lines = f.readlines() - - # Skip header and filter out incomplete lines (blank lines, comment lines) - data_lines = [] - for line in lines[1:]: # Skip header - line = line.strip() - if not line or line.startswith('#'): # Skip blank lines - continue - # Count columns: split and filter empty strings - cols = [x for x in line.split() if x] - # Only keep lines with full column count. - # Supported formats: - # 5 cols = psi theta r z scalar_re - # 6 cols = psi theta r z scalar_re scalar_im - # 8 cols = psi theta r z vec2_re/im - # 10 cols = psi theta r z vec3_re/im - if len(cols) in [5, 6, 8, 10]: - data_lines.append(line) - - if not data_lines: - print(f"Warning: {filepath} has no valid data lines") - return [] - - # Convert to array - data_str = '\n'.join(data_lines) - from io import StringIO - data = np.loadtxt(StringIO(data_str)) - - if data.size == 0: - print(f"Warning: {filepath} is empty") - return [] - - # Handle case where file has only one data point - if data.ndim == 1: - data = data.reshape(1, -1) - - # Extract columns - psi = data[:, 0] - theta = data[:, 1] - r = data[:, 2] - z = data[:, 3] - - n_cols = data.shape[1] - scalar_real_only = (n_cols == 5) - - if scalar_real_only: - n_components = 1 - quantities = [{'re': data[:, 4], 'im': None}] - else: - n_data_cols = n_cols - 4 # Subtract psi, theta, r, z - n_components = n_data_cols // 2 # Each component has (re, im) - - # Extract quantities - quantities = [] - for i in range(n_components): - re_col = 4 + i * 2 - im_col = 4 + i * 2 + 1 - quantities.append({ - 're': data[:, re_col], - 'im': data[:, im_col] - }) - - # Get quantity name and component names - basename = os.path.basename(filepath) - quantity = basename.replace('gpec_recon_', '').replace('.out', '').rsplit('_sol', 1)[0] - comp_names = get_component_names(filepath, n_components) - - # Create red-white-blue colormap - cmap = create_rwb_colormap(256) - - if scalar_real_only: - fig, ax = plt.subplots(1, 1, figsize=(8, 7)) - axes = np.array([[ax]]) - else: - # Create figure with subplots (n_components rows x 2 columns for re/im) - n_rows = n_components - fig, axes = plt.subplots(n_rows, 2, figsize=(15, 6*n_rows)) - - # Handle single row case (axes not 2D) - if n_rows == 1: - axes = axes.reshape(1, -1) - - output_files = [] - - # Plot each component - for i, (comp_data, comp_name) in enumerate(zip(quantities, comp_names)): - c2_re = comp_data['re'] - c2_im = comp_data['im'] - - # Calculate max absolute values for symmetric normalization - vmax_re = np.max(np.abs(c2_re)) - if c2_im is not None: - vmax_im = np.max(np.abs(c2_im)) - - # Use CenteredNorm with white at 0 - if vmax_re > 0: - norm_re = mcolors.CenteredNorm(vcenter=0, halfrange=vmax_re) - else: - norm_re = mcolors.Normalize(vmin=-1, vmax=1) - - # Plot real part - scatter_re = axes[i, 0].scatter( - r, z, c=c2_re, cmap=cmap, norm=norm_re, s=30, alpha=0.8 - ) - axes[i, 0].set_xlabel('R (m)', fontsize=11, fontweight='bold') - axes[i, 0].set_ylabel('Z (m)', fontsize=11, fontweight='bold') - real_title = f'{quantity} - {comp_name}' if scalar_real_only \ - else f'{quantity} - {comp_name} (Real)' - axes[i, 0].set_title(real_title, fontsize=12, fontweight='bold') - axes[i, 0].grid(True, alpha=0.3, linestyle='--') - axes[i, 0].set_aspect('equal', adjustable='box') - - cbar_re = plt.colorbar(scatter_re, ax=axes[i, 0]) - cbar_re.set_label('Value', fontsize=10, fontweight='bold') - - if c2_im is not None: - if vmax_im > 0: - norm_im = mcolors.CenteredNorm(vcenter=0, halfrange=vmax_im) - else: - norm_im = mcolors.Normalize(vmin=-1, vmax=1) - - scatter_im = axes[i, 1].scatter( - r, z, c=c2_im, cmap=cmap, norm=norm_im, s=30, alpha=0.8 - ) - axes[i, 1].set_xlabel('R (m)', fontsize=11, fontweight='bold') - axes[i, 1].set_ylabel('Z (m)', fontsize=11, fontweight='bold') - axes[i, 1].set_title( - f'{quantity} - {comp_name} (Imaginary)', - fontsize=12, - fontweight='bold' - ) - axes[i, 1].grid(True, alpha=0.3, linestyle='--') - axes[i, 1].set_aspect('equal', adjustable='box') - - cbar_im = plt.colorbar(scatter_im, ax=axes[i, 1]) - cbar_im.set_label('Value', fontsize=10, fontweight='bold') - - # Add main title with statistics - num_points = len(r) - n_psi = len(np.unique(psi)) - n_theta = num_points // n_psi if n_psi > 0 else 0 - - fig.suptitle(f'{quantity} Reconstruction (n_psi={n_psi}, n_theta={n_theta})', - fontsize=14, fontweight='bold', y=0.995) - - plt.tight_layout() - - # Save as PNG - output_file = filepath.replace('.out', '.png') - plt.savefig(output_file, dpi=150, bbox_inches='tight') - print(f"✓ Saved: {output_file}") - plt.close() - - output_files.append(output_file) - return output_files - - except Exception as e: - print(f"✗ Error processing {filepath}: {e}") - import traceback - traceback.print_exc() - return [] - - -def main(): - """ - Main function: find and plot all reconstruction output files. - """ - - # Find all reconstruction output files (excluding C2 which already has its own script) - recon_files = sorted(glob.glob('gpec_recon_*.out')) - - # Filter out C2 files (they have their own dedicated script) - recon_files = [f for f in recon_files if 'C2_' not in f] - - if not recon_files: - print("No reconstruction output files found") - print(f"Current directory: {os.getcwd()}") - return - - print(f"Found {len(recon_files)} reconstruction output file(s)") - print("-" * 70) - - successful = 0 - total_files = 0 - - for filepath in recon_files: - print(f"Processing: {filepath}") - output_files = plot_reconstruction(filepath) - if output_files: - successful += 1 - total_files += len(output_files) - - print("-" * 70) - print(f"Completed: {successful}/{len(recon_files)} files processed successfully") - print(f"Generated {total_files} PNG file(s)") - - -if __name__ == '__main__': - main() diff --git a/docs/examples/DIIID_ideal_example/plot_shear.py b/docs/examples/DIIID_ideal_example/plot_shear.py deleted file mode 100644 index 22bc94ca0..000000000 --- a/docs/examples/DIIID_ideal_example/plot_shear.py +++ /dev/null @@ -1,132 +0,0 @@ -#!/usr/bin/env python3 -""" -Plot shear diagnostic quantities from GPEC reconstruction output. - -Reads spatial domain data: -- gpec_recon_shear_fun_sol*.out: Spatial domain (r-z plane) - -Produces single r-z plane plot with shear values colored. -""" - -import numpy as np -import matplotlib.pyplot as plt -from matplotlib.colors import TwoSlopeNorm -from scipy.interpolate import griddata -import sys -import glob - -def find_shear_fun_file(): - """Find shear_fun output file with wildcard matching.""" - fun_files = glob.glob('gpec_recon_shear_fun_sol*.out') - - if not fun_files: - print("Error: Could not find gpec_recon_shear_fun_sol*.out file") - sys.exit(1) - - return fun_files[0] - -def read_shear_fun_data(): - """Read spatial shear data from output file.""" - fun_file = find_shear_fun_file() - - print(f"Reading spatial data from: {fun_file}") - shear_fun = np.loadtxt(fun_file, skiprows=1) - - # Parse spatial data - psi_fun = shear_fun[:, 0] - theta_fun = shear_fun[:, 1] - r_fun = shear_fun[:, 2] - z_fun = shear_fun[:, 3] - shear_re_fun = shear_fun[:, 4] - shear_im_fun = shear_fun[:, 5] - - return psi_fun, theta_fun, r_fun, z_fun, shear_re_fun, shear_im_fun - -def main(): - """Main plotting routine.""" - print("=" * 70) - print("GPEC Shear Diagnostic Plotter (r-z plane only)") - print("=" * 70) - - # Read data - psi_fun, theta_fun, r_fun, z_fun, shear_re_fun, shear_im_fun = read_shear_fun_data() - - # Get unique values - unique_psi_fun = np.unique(psi_fun) - - print(f"Spatial grid: {len(unique_psi_fun)} psi levels") - print(f"Total grid points: {len(r_fun)}") - - # Create figure with single r-z plane plot - fig, ax = plt.subplots(figsize=(10, 8)) - - # Apply asinh transformation to shear - shear_re_fun_asinh = np.arcsinh(shear_re_fun) - - # Create grid for interpolation - r_min, r_max = np.min(r_fun), np.max(r_fun) - z_min, z_max = np.min(z_fun), np.max(z_fun) - - grid_r = np.linspace(r_min, r_max, 150) - grid_z = np.linspace(z_min, z_max, 150) - grid_r_mesh, grid_z_mesh = np.meshgrid(grid_r, grid_z) - - # Interpolate shear values onto grid - points = np.c_[r_fun, z_fun] - grid_shear = griddata(points, shear_re_fun_asinh, (grid_r_mesh, grid_z_mesh), - method='cubic', fill_value=np.nan) - - # Normalize with 0 at white - vmin, vmax = np.nanmin(grid_shear), np.nanmax(grid_shear) - norm = TwoSlopeNorm(vmin=vmin, vcenter=0, vmax=vmax) - - # Plot shear as filled contours with scatter points - contourf = ax.contourf(grid_r_mesh, grid_z_mesh, grid_shear, levels=30, - cmap='RdBu_r', norm=norm) - - # Overlay scatter plot for actual data points - scatter = ax.scatter(r_fun, z_fun, c=shear_re_fun_asinh, cmap='RdBu_r', - norm=norm, s=15, alpha=0.6, edgecolors='none') - - # Draw contour at shear=0 in black - contour_zero = ax.contour(grid_r_mesh, grid_z_mesh, grid_shear, - levels=[0], colors='black', linewidths=2) - - ax.set_xlabel('R', fontsize=22, fontweight='bold') - ax.set_ylabel('Z', fontsize=22, fontweight='bold') - ax.set_title('Shear (spatial) - r-z plane', fontsize=24, fontweight='bold') - ax.set_aspect('equal', adjustable='box') - ax.grid(True, alpha=0.3, linestyle='--') - ax.tick_params(labelsize=16) - - # Set r-axis ticks - r_ticks = np.linspace(r_min, r_max, 6) - ax.set_xticks(r_ticks) - ax.set_xticklabels([f'{r:.3f}' for r in r_ticks], fontsize=14) - - # Set z-axis ticks - z_ticks = np.linspace(z_min, z_max, 6) - ax.set_yticks(z_ticks) - ax.set_yticklabels([f'{z:.3f}' for z in z_ticks], fontsize=14) - - # Colorbar - cbar = plt.colorbar(scatter, ax=ax) - cbar.set_label('asinh(Shear)', fontsize=18, fontweight='bold') - cbar.ax.tick_params(labelsize=14) - - # Set colorbar ticks to span negative and positive values - cbar_ticks = np.linspace(vmin, vmax, 7) - cbar.set_ticks(cbar_ticks) - cbar.set_ticklabels([f'{val:.1e}' for val in cbar_ticks], fontsize=12) - - # Adjust layout and save - plt.tight_layout() - - output_file = 'gpec_recon_shear_rz.png' - print(f"\nSaving plot to: {output_file}") - plt.savefig(output_file, dpi=150, bbox_inches='tight') - print("Plot complete!") - - -if __name__ == '__main__': - main() diff --git a/docs/examples/DIIID_ideal_example/plot_xbrzphi.py b/docs/examples/DIIID_ideal_example/plot_xbrzphi.py deleted file mode 100644 index 0d09ba3f0..000000000 --- a/docs/examples/DIIID_ideal_example/plot_xbrzphi.py +++ /dev/null @@ -1,114 +0,0 @@ -import numpy as np -import matplotlib.pyplot as plt -import pandas as pd - -def load_gpec_xbrzphi(filepath): - """ - Load GPEC XBRZPHI output file - Returns: pandas DataFrame with all columns - """ - # Skip header lines (first 6 lines contain metadata) - df = pd.read_csv(filepath, sep=r'\s+', skiprows=6) - return df - -def plot_gpec_displacement_rzplane(filepath, figsize=(18, 12)): - """ - Plot 6 R-Z plane subplots for displacement components (xr, xz, xp) - Shows real and imaginary parts - 6 panels total - """ - df = load_gpec_xbrzphi(filepath) - - # Displacement components - real and imaginary - components = [ - ('real(xr) - Radial Displacement (Real)', df['real(xr)']), - ('imag(xr) - Radial Displacement (Imag)', df['imag(xr)']), - ('real(xz) - Vertical Displacement (Real)', df['real(xz)']), - ('imag(xz) - Vertical Displacement (Imag)', df['imag(xz)']), - ('real(xp) - Toroidal Displacement (Real)', df['real(xp)']), - ('imag(xp) - Toroidal Displacement (Imag)', df['imag(xp)']) - ] - - fig, axes = plt.subplots(2, 3, figsize=figsize) - fig.suptitle('GPEC XBRZPHI: Displacement Components in R-Z Plane (n=1)', - fontsize=16, fontweight='bold') - - axes_flat = axes.flatten() - - for idx, (title, values) in enumerate(components): - ax = axes_flat[idx] - - # Create scatter plot colored by value - scatter = ax.scatter(df['r'], df['z'], c=values, s=50, - cmap='RdBu_r', alpha=0.8, edgecolors='none') - - # Add colorbar - cbar = plt.colorbar(scatter, ax=ax) - cbar.set_label('Value', fontsize=10) - - ax.set_xlabel('R (Major Radius)', fontsize=11) - ax.set_ylabel('Z (Vertical Position)', fontsize=11) - ax.set_title(title, fontsize=12, fontweight='bold') - ax.grid(True, alpha=0.3, linestyle='--') - - plt.tight_layout() - return fig, df - -def plot_gpec_magnetic_field_rzplane(filepath, figsize=(18, 12)): - """ - Plot 6 R-Z plane subplots for magnetic field components (br, bz, bp) - Shows real and imaginary parts - 6 panels total - """ - df = load_gpec_xbrzphi(filepath) - - # Magnetic field components - real and imaginary - components = [ - ('real(br) - Radial Magnetic Field (Real)', df['real(br)']), - ('imag(br) - Radial Magnetic Field (Imag)', df['imag(br)']), - ('real(bz) - Vertical Magnetic Field (Real)', df['real(bz)']), - ('imag(bz) - Vertical Magnetic Field (Imag)', df['imag(bz)']), - ('real(bp) - Toroidal Magnetic Field (Real)', df['real(bp)']), - ('imag(bp) - Toroidal Magnetic Field (Imag)', df['imag(bp)']) - ] - - fig, axes = plt.subplots(2, 3, figsize=figsize) - fig.suptitle('GPEC XBRZPHI: Magnetic Field Components in R-Z Plane (n=1)', - fontsize=16, fontweight='bold') - - axes_flat = axes.flatten() - - for idx, (title, values) in enumerate(components): - ax = axes_flat[idx] - - # Create scatter plot colored by value - scatter = ax.scatter(df['r'], df['z'], c=values, s=50, - cmap='RdBu_r', alpha=0.8, edgecolors='none') - - # Add colorbar - cbar = plt.colorbar(scatter, ax=ax) - cbar.set_label('Value', fontsize=10) - - ax.set_xlabel('R (Major Radius)', fontsize=11) - ax.set_ylabel('Z (Vertical Position)', fontsize=11) - ax.set_title(title, fontsize=12, fontweight='bold') - ax.grid(True, alpha=0.3, linestyle='--') - - plt.tight_layout() - return fig, df - -# Usage -if __name__ == "__main__": - filepath = './gpec_xbrzphi_fun_n1.out' - - # Plot 1: Displacement components (x) - 6 panels - fig1, df = plot_gpec_displacement_rzplane(filepath) - output_path_1 = './gpec_xbrzphi_displacement_6panels.png' - fig1.savefig(output_path_1, dpi=150, bbox_inches='tight') - print(f"Saved: {output_path_1}") - - # Plot 2: Magnetic field components (b) - 6 panels - fig2, df = plot_gpec_magnetic_field_rzplane(filepath) - output_path_2 = './gpec_xbrzphi_magnetic_6panels.png' - fig2.savefig(output_path_2, dpi=150, bbox_inches='tight') - print(f"Saved: {output_path_2}") - - # plt.show() \ No newline at end of file From ce7c7d4504dc057d8a188210b91af627ebdd1afd Mon Sep 17 00:00:00 2001 From: satelite2517 Date: Tue, 2 Jun 2026 15:04:07 +0900 Subject: [PATCH 33/62] GPEC - RECON3 - add |C|^2 Bernstein decomposition diagnostic Add recon_flag3 path computing the |C|^2 decomposition of delta-W_p: - gpeq_recon3: A=|Q|^2/mu0, B=2Re(V*.Q)/mu0 (V computed directly from the equilibrium current, not via C-Q), Cpar=K2 xi_n^2, Iperp term, plus optional per-theta surf_extra(0:mthsurf,22) field pack. - gpout_recon3: 30-column surface output (gated by recon_out) and a C-free dW_p = 1/2(A+B+Iperp-dst1-dst3) via gpeq_dst (dst2 cancels). - Unify recon1/2/3 terminal+log output (dW_p, dW_p-normalize, GPEC ep, DCON ep); fix recon1 DCON ep normalization to use dcon_fac. Co-Authored-By: Claude Opus 4.8 (cherry picked from commit 3f1f64b652777ffd23437a8da130b64fcf86ecda) --- gpec/gpec.f | 6 +- gpec/gpeq.f | 249 ++++++++++++++++++++++++++++++++++++- gpec/gpglobal.F | 2 +- gpec/gpout.f | 318 +++++++++++++++++++++++++++++++++++++++++++++++- 4 files changed, 568 insertions(+), 7 deletions(-) diff --git a/gpec/gpec.f b/gpec/gpec.f index 4d0f904d3..b8b015363 100644 --- a/gpec/gpec.f +++ b/gpec/gpec.f @@ -72,7 +72,7 @@ PROGRAM gpec_main $ netcdf_flag,ascii_flag,singthresh_flag, $ singthresh_callen_flag,singthresh_slayer_flag, $ singthresh_slayer_inpr,out_ahg2msc,recon_flag,recon_int, - $ cveri_flag,recon_out,recon_flag2,xi_flag,xifile + $ cveri_flag,recon_out,recon_flag2,recon_flag3,xi_flag,xifile NAMELIST/gpec_diagnose/singcurs_flag,xbcontra_flag, $ xbnobo_flag,d3_flag,div_flag,xbst_flag,jacfac_flag, $ pmodbmn_flag,rzphibx_flag,radvar_flag,eigen_flag,magpot_flag, @@ -199,6 +199,7 @@ PROGRAM gpec_main mutual_test_flag=.FALSE. recon_flag=.FALSE. recon_flag2=.FALSE. + recon_flag3=.FALSE. xi_flag=.FALSE. recon_int="spline" cveri_flag=.FALSE. @@ -699,6 +700,9 @@ PROGRAM gpec_main IF (recon_flag2) THEN CALL gpout_recon2(mode,xspmn) ENDIF + IF (recon_flag3) THEN + CALL gpout_recon3(mode,xspmn) + ENDIF c----------------------------------------------------------------------- c diagnose. c----------------------------------------------------------------------- diff --git a/gpec/gpeq.f b/gpec/gpeq.f index 775daeb9f..414bd30a6 100644 --- a/gpec/gpeq.f +++ b/gpec/gpeq.f @@ -19,6 +19,7 @@ c 11. gpeq_shear (reconstruction: magnetic shear) c 12. gpeq_curvature (reconstruction: curvature) c 13. gpeq_K (reconstruction: Bernstein K quantity) +c 13b. gpeq_recon3 (reconstruction: |C|^2 decomposition) c 14. gpeq_fcoords c 15. gpeq_fcoordsout c 16. gpeq_bcoords @@ -1480,8 +1481,254 @@ SUBROUTINE gpeq_K(psi, K_fun, K_term1, K_term2, K_term3, c----------------------------------------------------------------------- RETURN END SUBROUTINE gpeq_K +c----------------------------------------------------------------------- +c subprogram 13b. gpeq_recon3. +c Bernstein-form |C|^2 decomposition for recon3 diagnostic. +c Vector identity: C = Q + V with V = xi_n * mu0 * j x n_hat. +c |C|^2 = |Q|^2 + 2 Re(V*.Q) + |V|^2 +c j is purely tangent to flux surface (j.n=0), so +c |V|^2 = mu0^2 xi_n^2 |j|^2 = mu0^2 xi_n^2 (sigma^2 B^2 +c + p'^2 |grad psi|^2 / B^2). +c Returns the surface integrals (theta only, jac measure): +c A_int = int |Q|^2 / mu0 * J dtheta / mthsurf +c B_int = int 2 Re(V*.Q) / mu0 * J dtheta / mthsurf +c directly via V = C - Q (covariant pairing) +c Cpar_int = int mu0 sigma^2 B^2 xi_n^2 * J dtheta / mthsurf +c (= K_2 xi_n^2 integral; matches gpeq_dst's dst2) +c Iperp_int= int mu0 p'^2 |grad psi|^2 xi_n^2 / B^2 * +c J dtheta / mthsurf +c epf_int = int |C|^2 / mu0 * J dtheta / mthsurf +c Identity check: epf_int = A_int + B_int + Cpar_int + Iperp_int +c should hold within numerical roundoff. +c----------------------------------------------------------------------- + SUBROUTINE gpeq_recon3(psi, A_int, B_int, Iperp_int, Cpar_int, + $ epf_int, A_fun, B_fun, Iperp_fun, Cpar_fun, surf_extra) + REAL(r8), INTENT(IN) :: psi + REAL(r8), INTENT(OUT) :: A_int, B_int, Iperp_int, Cpar_int, + $ epf_int + REAL(r8), DIMENSION(0:mthsurf), OPTIONAL, INTENT(OUT) :: + $ A_fun, B_fun, Iperp_fun, Cpar_fun +c surf_extra: packed per-theta fields for R-Z heatmaps (recon_out). +c columns: 1 VdotQ_re, 2 VdotQ_im, 3 Bcur_den, 4 Bpre_den, +c 5/6 Qp_re/im, 7/8 Qt_re/im, 9/10 Qz_re/im, +c 11/12 Vt_re/im, 13/14 Vz_re/im, 15 jpar, 16 jperp, +c 17/18 xin_re/im, 19 delpsi, 20 Bmod, +c 21 dst1_den (K1 xin2), 22 dst3_den (K3 xin2). + REAL(r8), DIMENSION(0:mthsurf,22), OPTIONAL, INTENT(OUT) :: + $ surf_extra + + INTEGER :: itheta + REAL(r8) :: f1raw, p1_local + REAL(r8) :: A_density, B_density, Iperp_density, Cpar_density, + $ epf_density + REAL(r8) :: delpsi_val, bsq_val, sigma_local, jdotb_val + REAL(r8) :: jwt, jwz, bth, bze, g22, g33, g23, r_val + REAL(r8) :: xin2, mu0jwt, mu0jwz + REAL(r8) :: mu0jpar_t, mu0jpar_z, mu0jper_t, mu0jper_z + REAL(r8) :: jsq_val, jpar_val, bmod_val + COMPLEX(r8) :: jvt_loc, jvz_loc, vdotq_loc + COMPLEX(r8) :: jvt_cur, jvz_cur, jvt_pre, jvz_pre + COMPLEX(r8), DIMENSION(0:mthsurf) :: kfun_loc + REAL(r8), DIMENSION(0:mthsurf) :: kt1_loc, kt2_loc, kt3_loc + COMPLEX(r8), DIMENSION(0:mthsurf) :: bwp_fun, bmt_fun, bmz_fun + COMPLEX(r8), DIMENSION(0:mthsurf) :: bvp_fun, bvt_fun, bvz_fun + COMPLEX(r8), DIMENSION(0:mthsurf) :: cwp_fun, cwt_fun, cwz_fun + COMPLEX(r8), DIMENSION(0:mthsurf) :: cvp_fun, cvt_fun, cvz_fun + COMPLEX(r8), DIMENSION(0:mthsurf) :: xno_fun, xwp_fun + + IF(debug_flag) PRINT *, "Entering gpeq_recon3" +c----------------------------------------------------------------------- +c prepare psi-local perturbed equilibrium and C, Q. +c----------------------------------------------------------------------- + CALL gpeq_sol(psi) + CALL gpeq_contra(psi) + CALL gpeq_cova(psi) + CALL gpeq_normal(psi) + CALL gpeq_c(psi, 0) + + CALL spline_eval(sq, psi, 1) + f1raw = sq%f1(1) + p1_local = sq%f1(2) / mu0 + chi1 = psio * twopi + + CALL iscdftb(mfac, mpert, xno_fun, mthsurf, xno_mn) + CALL iscdftb(mfac, mpert, bwp_fun, mthsurf, bwp_mn) + CALL iscdftb(mfac, mpert, bmt_fun, mthsurf, bmt_mn) + CALL iscdftb(mfac, mpert, bmz_fun, mthsurf, bmz_mn) + CALL iscdftb(mfac, mpert, bvp_fun, mthsurf, bvp_mn) + CALL iscdftb(mfac, mpert, bvt_fun, mthsurf, bvt_mn) + CALL iscdftb(mfac, mpert, bvz_fun, mthsurf, bvz_mn) + CALL iscdftb(mfac, mpert, cwp_fun, mthsurf, cwp_mn) + CALL iscdftb(mfac, mpert, cwt_fun, mthsurf, cwt_mn) + CALL iscdftb(mfac, mpert, cwz_fun, mthsurf, cwz_mn) + CALL iscdftb(mfac, mpert, cvp_fun, mthsurf, cvp_mn) + CALL iscdftb(mfac, mpert, cvt_fun, mthsurf, cvt_mn) + CALL iscdftb(mfac, mpert, cvz_fun, mthsurf, cvz_mn) + CALL iscdftb(mfac, mpert, xwp_fun, mthsurf, xwp_mn) + +c K term breakdown (K1 shear, K3 curvature) for dst1/dst3 densities; +c only needed for the R-Z heatmap output. + IF (PRESENT(surf_extra)) THEN + CALL gpeq_K(psi, kfun_loc, kt1_loc, kt2_loc, kt3_loc) + ENDIF + + A_int = 0.0_r8 + B_int = 0.0_r8 + Iperp_int = 0.0_r8 + Cpar_int = 0.0_r8 + epf_int = 0.0_r8 +c----------------------------------------------------------------------- +c accumulate densities in theta with jac measure. +c----------------------------------------------------------------------- + DO itheta = 0, mthsurf + CALL bicube_eval(rzphi, psi, theta(itheta), 1) + CALL bicube_eval(eqfun, psi, theta(itheta), 0) + jac = rzphi%f(4) + rfac = SQRT(rzphi%f(1)) + eta = twopi*(theta(itheta) + rzphi%f(2)) + r_val = ro + rfac*COS(eta) + bsq_val = eqfun%f(1)**2 + +c |grad psi| + w(1,1)=(1+rzphi%fy(2))*twopi**2*rfac*r_val/jac + w(1,2)=-rzphi%fy(1)*pi*r_val/(rfac*jac) + delpsi_val=SQRT(w(1,1)**2+w(1,2)**2) + +c currents and B (idcon_metric convention, same as gpeq_K). + jwt = -f1raw/(jac*mu0) + jwz = sq%f(4)*jwt - p1_local/chi1 + bth = chi1 / jac + bze = sq%f(4) * chi1 / jac + + v(2,1) = rzphi%fy(1)/(2*rfac) + v(2,2) = (1+rzphi%fy(2))*twopi*rfac + v(2,3) = rzphi%fy(3)*r_val + v(3,3) = twopi*r_val + g22 = (v(2,1)**2 + v(2,2)**2 + v(2,3)**2) + g33 = (v(3,3)**2) + g23 = (v(2,3)*v(3,3)) + + jdotb_val = g22*bth*jwt + g33*bze*jwz + + $ g23*(bth*jwz + bze*jwt) + sigma_local = jdotb_val / bsq_val + + xin2 = REAL(CONJG(xno_fun(itheta))*xno_fun(itheta), r8) + +c |Q|^2 / mu0 density (matches gpeq_firstform q2_density) + A_density = REAL(CONJG(bwp_fun(itheta)) * bvp_fun(itheta) + + $ CONJG(bmt_fun(itheta)) * bvt_fun(itheta) + + $ CONJG(bmz_fun(itheta)) * bvz_fun(itheta), r8) + $ / (mu0 * jac) + +c |C|^2 / mu0 density (matches gpeq_epf integrand) + epf_density = REAL( + $ CONJG(cwp_fun(itheta)) * cvp_fun(itheta) + + $ CONJG(cwt_fun(itheta)) * cvt_fun(itheta) + + $ CONJG(cwz_fun(itheta)) * cvz_fun(itheta), r8) + $ / (mu0 * jac) + +c B density = 2 Re(V*.Q) / mu0, with V = xi_n (mu0 j x n_hat) +c computed DIRECTLY from the equilibrium current, NOT from C - Q. +c These are the same C^i - Q^i terms derived in main.tex (Sec. 5, +c the C component box): J V^psi = 0, and with xwp_fun = J xi^psi, +c J V^theta = xwp/(|grad psi|^2 J) (mu0 j^theta g23 + mu0 j^zeta g33) +c J V^zeta = -xwp/(|grad psi|^2 J) (mu0 j^theta g22 + mu0 j^zeta g23). +c mu0 j^i = mu0 * (physical j^i); jwt,jwz already hold physical j^i. + mu0jwt = mu0 * jwt + mu0jwz = mu0 * jwz + jvt_loc = xwp_fun(itheta) / (delpsi_val**2 * jac) * + $ (mu0jwt * g23 + mu0jwz * g33) + jvz_loc = -xwp_fun(itheta) / (delpsi_val**2 * jac) * + $ (mu0jwt * g22 + mu0jwz * g23) +c V is contravariant (J V^i); pair with covariant Q_i (bvt,bvz). + B_density = 2.0_r8 * REAL( + $ CONJG(jvt_loc) * bvt_fun(itheta) + + $ CONJG(jvz_loc) * bvz_fun(itheta), r8) / (mu0 * jac) + +c K_2 xi_n^2 density (parallel current; should match dst2) + Cpar_density = mu0 * sigma_local**2 * bsq_val * xin2 + +c I_perp density (perpendicular Pfirsch-Schlueter current^2) + Iperp_density = mu0 * p1_local**2 * delpsi_val**2 * + $ xin2 / bsq_val + +c Extra per-theta fields for R-Z heatmaps (only if requested). + IF (PRESENT(surf_extra)) THEN + bmod_val = SQRT(bsq_val) +c V*.Q (complex); B_density = 2 Re(vdotq_loc)/mu0. + vdotq_loc = (CONJG(jvt_loc) * bvt_fun(itheta) + + $ CONJG(jvz_loc) * bvz_fun(itheta)) / jac +c Split V = V_par + V_perp via j = j_par + j_perp. +c Parallel current: mu0 j_par^i = mu0 sigma B^i (B^t=bth,B^z=bze). + mu0jpar_t = mu0 * sigma_local * bth + mu0jpar_z = mu0 * sigma_local * bze + mu0jper_t = mu0jwt - mu0jpar_t + mu0jper_z = mu0jwz - mu0jpar_z + jvt_cur = xwp_fun(itheta) / (delpsi_val**2 * jac) * + $ (mu0jpar_t * g23 + mu0jpar_z * g33) + jvz_cur = -xwp_fun(itheta) / (delpsi_val**2 * jac) * + $ (mu0jpar_t * g22 + mu0jpar_z * g23) + jvt_pre = jvt_loc - jvt_cur + jvz_pre = jvz_loc - jvz_cur +c j_par = sigma B; |j_perp|^2 = |j|^2 - j_par^2 (j physical). + jpar_val = sigma_local * bmod_val + jsq_val = g22 * jwt**2 + g33 * jwz**2 + + $ 2.0_r8 * g23 * jwt * jwz + surf_extra(itheta,1) = REAL(vdotq_loc, r8) + surf_extra(itheta,2) = AIMAG(vdotq_loc) + surf_extra(itheta,3) = 2.0_r8 * REAL( + $ CONJG(jvt_cur) * bvt_fun(itheta) + + $ CONJG(jvz_cur) * bvz_fun(itheta), r8) / (mu0 * jac) + surf_extra(itheta,4) = 2.0_r8 * REAL( + $ CONJG(jvt_pre) * bvt_fun(itheta) + + $ CONJG(jvz_pre) * bvz_fun(itheta), r8) / (mu0 * jac) + surf_extra(itheta,5) = REAL(bvp_fun(itheta), r8) + surf_extra(itheta,6) = AIMAG(bvp_fun(itheta)) + surf_extra(itheta,7) = REAL(bvt_fun(itheta), r8) + surf_extra(itheta,8) = AIMAG(bvt_fun(itheta)) + surf_extra(itheta,9) = REAL(bvz_fun(itheta), r8) + surf_extra(itheta,10) = AIMAG(bvz_fun(itheta)) + surf_extra(itheta,11) = REAL(jvt_loc, r8) + surf_extra(itheta,12) = AIMAG(jvt_loc) + surf_extra(itheta,13) = REAL(jvz_loc, r8) + surf_extra(itheta,14) = AIMAG(jvz_loc) + surf_extra(itheta,15) = jpar_val + surf_extra(itheta,16) = SQRT(MAX(0.0_r8, + $ jsq_val - jpar_val**2)) + surf_extra(itheta,17) = REAL(xno_fun(itheta), r8) + surf_extra(itheta,18) = AIMAG(xno_fun(itheta)) + surf_extra(itheta,19) = delpsi_val + surf_extra(itheta,20) = bmod_val +c dst1 = K1 xin2 (shear), dst3 = K3 xin2 (curvature). + surf_extra(itheta,21) = kt1_loc(itheta) * xin2 + surf_extra(itheta,22) = kt3_loc(itheta) * xin2 + ENDIF + + IF (PRESENT(A_fun)) A_fun(itheta) = A_density + IF (PRESENT(B_fun)) B_fun(itheta) = B_density + IF (PRESENT(Iperp_fun)) Iperp_fun(itheta) = Iperp_density + IF (PRESENT(Cpar_fun)) Cpar_fun(itheta) = Cpar_density + + IF (itheta < mthsurf) THEN + A_int = A_int + A_density * jac / REAL(mthsurf, r8) + B_int = B_int + B_density * jac / REAL(mthsurf, r8) + epf_int = epf_int + epf_density * jac / REAL(mthsurf, r8) + Cpar_int = Cpar_int + Cpar_density * jac / + $ REAL(mthsurf, r8) + Iperp_int = Iperp_int + Iperp_density * jac / + $ REAL(mthsurf, r8) + ENDIF + ENDDO + + IF(debug_flag) PRINT *, "->Leaving gpeq_recon3" +c----------------------------------------------------------------------- +c terminate. +c----------------------------------------------------------------------- + RETURN + END SUBROUTINE gpeq_recon3 +c----------------------------------------------------------------------- c subprogram 14. gpeq_fcoords. -c transform coordinates to dcon coordinates. +c transform coordinates to dcon coordinates. c----------------------------------------------------------------------- SUBROUTINE gpeq_fcoords(psi,ftnmn,amf,amp,ri,bpi,bi,rci,ti,ji) c----------------------------------------------------------------------- diff --git a/gpec/gpglobal.F b/gpec/gpglobal.F index 0d7366aa2..9c21a82a3 100644 --- a/gpec/gpglobal.F +++ b/gpec/gpglobal.F @@ -19,7 +19,7 @@ MODULE gpglobal_mod $ chebyshev_flag,coil_flag,eigm_flag,bwp_pest_flag,verbose, $ debug_flag,timeit,kin_flag,con_flag,resp_induct_flag, $ netcdf_flag,ascii_flag,wv_farwall_flag,mutual_test_flag, - $ cveri_flag,recon_out,recon_flag2, + $ cveri_flag,recon_out,recon_flag2,recon_flag3, $ xi_flag INTEGER :: mr,mz,mpsi,mstep,mpert,mband,mtheta,mthvac,mthsurf, diff --git a/gpec/gpout.f b/gpec/gpout.f index 4881f5849..eb61d5c58 100644 --- a/gpec/gpout.f +++ b/gpec/gpout.f @@ -28,6 +28,7 @@ c 20. gpout_close_netcdf c 21. gpout_recon c 22. gpout_recon2 +c 23. gpout_recon3 c----------------------------------------------------------------------- c subprogram 0. gpout_mod. c module declarations. @@ -7360,10 +7361,10 @@ SUBROUTINE gpout_recon(mode, xspmn) $ REAL(dw_raw_k_hr) WRITE(*,'(a,es17.8e3)') " dW_p(recon-normalize)= ", $ REAL(dw_dcon_k_hr) - WRITE(*,'(a,a,a,es17.8e3)') "GPEC ep(", TRIM(smode), "):", + WRITE(*,'(a,a,a,es17.8e3)') " GPEC ep(", TRIM(smode), ") = ", $ ep_selected - WRITE(*,'(a,a,a,es17.8e3)') "DCON ep(", TRIM(smode), "):", - $ ep_selected*(mu0*2.0) / psio**2 / (chi1*1e-3)**2 + WRITE(*,'(a,a,a,es17.8e3)') " DCON ep(", TRIM(smode), ") = ", + $ ep_selected*dcon_fac IF (cveri_flag) THEN cveri_stat = "PASS" IF (cveri_count > 0) THEN @@ -7410,7 +7411,7 @@ SUBROUTINE gpout_recon(mode, xspmn) WRITE(u_log,'(a,a,a,es17.8e3)') " GPEC ep(", TRIM(smode), $ ") = ", ep_selected WRITE(u_log,'(a,a,a,es17.8e3)') " DCON ep(", TRIM(smode), - $ ") = ", ep_selected*(mu0*2.0) / psio**2 / (chi1*1e-3)**2 + $ ") = ", ep_selected*dcon_fac IF (cveri_flag) THEN WRITE(u_log,'(a,a)') " C verify: ", TRIM(cveri_stat) WRITE(u_log,'(a,es17.8e3)') " max = ", cveri_max @@ -7470,6 +7471,8 @@ SUBROUTINE gpout_recon2(mode, xspmn) CHARACTER(8) :: smode CHARACTER(128) :: surf_file, int_file REAL(r8) :: dcon_fac + INTEGER :: ep_index + REAL(r8) :: ep_selected, ep_dcon REAL(r8), DIMENSION(:), ALLOCATABLE :: psi_int_pts, q2_vals_r COMPLEX(r8), DIMENSION(:), ALLOCATABLE :: q2_vals, jqx_vals, $ pdiv_vals, total_vals @@ -7527,6 +7530,13 @@ SUBROUTINE gpout_recon2(mode, xspmn) ENDDO dcon_fac = (mu0*2.0_r8) / psio**2 / (chi1*1.0e-3_r8)**2 + ep_index = 1 + IF (mode_flag) ep_index = mode + IF (ep_index < 1 .OR. ep_index > mpert) THEN + CALL gpec_stop("gpout_recon2 selected mode is out of range") + ENDIF + ep_selected = REAL(ep(ep_index)) + ep_dcon = ep_selected * dcon_fac q2_hr = 0.0_r8 jqx_hr = CMPLX(0.0_r8, 0.0_r8, r8) pdiv_hr = CMPLX(0.0_r8, 0.0_r8, r8) @@ -7643,6 +7653,10 @@ SUBROUTINE gpout_recon2(mode, xspmn) $ REAL(dw_raw_hr) WRITE(*,'(a,es17.8e3)') " dW_p(recon2-normalize)= ", $ REAL(dw_dcon_hr) + WRITE(*,'(a,a,a,es17.8e3)') " GPEC ep(", TRIM(smode), ") = ", + $ ep_selected + WRITE(*,'(a,a,a,es17.8e3)') " DCON ep(", TRIM(smode), ") = ", + $ ep_dcon IF (recon_out) THEN OPEN(UNIT=u_log, FILE="gpec.log", STATUS="UNKNOWN", @@ -7661,6 +7675,10 @@ SUBROUTINE gpout_recon2(mode, xspmn) $ REAL(dw_raw_hr) WRITE(u_log,'(a,es17.8e3)') " dW_p(recon2-normalize)= ", $ REAL(dw_dcon_hr) + WRITE(u_log,'(a,a,a,es17.8e3)') " GPEC ep(", TRIM(smode), + $ ") = ", ep_selected + WRITE(u_log,'(a,a,a,es17.8e3)') " DCON ep(", TRIM(smode), + $ ") = ", ep_dcon WRITE(u_log,*) CLOSE(u_log) ENDIF @@ -7677,5 +7695,297 @@ SUBROUTINE gpout_recon2(mode, xspmn) c----------------------------------------------------------------------- RETURN END SUBROUTINE gpout_recon2 +c----------------------------------------------------------------------- +c subprogram 23. gpout_recon3 +c Bernstein |C|^2 decomposition diagnostic. +c |C|^2 = |Q|^2 + 2 Re(V*.Q) + |V|^2 with V = xi_n mu0 j x n_hat. +c j is tangent to the flux surface (j.n=0) so +c |V|^2 = mu0^2 xi_n^2 |j|^2 = mu0^2 xi_n^2 (sigma^2 B^2 +c + p'^2 |grad psi|^2 / B^2). +c This routine writes ABS decomposition pieces: +c A = int J |Q|^2 / mu0 (perturbed B energy) +c Cpar = int J mu0 sigma^2 B^2 xi_n^2 (parallel current^2) +c Iperp = int J mu0 p'^2 |grad psi|^2 xi_n^2 / B^2 (perp current^2) +c epf = int J |C|^2 / mu0 (already in recon1) +c and derives B = epf - A - Cpar - Iperp. +c Diagnostic: Cpar should equal dst2 (K_2 xi_n^2) from recon1 +c pointwise and integrated, since both express mu0 sigma^2 B^2 xi_n^2. +c----------------------------------------------------------------------- + SUBROUTINE gpout_recon3(mode, xspmn) +c----------------------------------------------------------------------- +c declaration. +c----------------------------------------------------------------------- + INTEGER, INTENT(IN) :: mode + COMPLEX(r8), DIMENSION(:), INTENT(IN) :: xspmn + + INTEGER :: ipsi, itheta, usurf, u_int, u_log + INTEGER :: istep, nint_pts, iint + REAL(r8) :: psi, dpsi_local + REAL(r8) :: A_hr, B_hr, Iperp_hr, Cpar_hr, epf_hr + REAL(r8) :: A_total, B_total, Iperp_total, Cpar_total, epf_total + REAL(r8) :: dst1_total, dst3_total + REAL(r8) :: identity_residual + REAL(r8) :: dw_raw3, dw_dcon3, ep_selected, ep_dcon + INTEGER :: ep_index + COMPLEX(r8) :: dst_int_c, dst1_c, dst2_c, dst3_c + REAL(r8), DIMENSION(0:mthsurf) :: rvals, zvals + REAL(r8), DIMENSION(0:mthsurf) :: A_fun, B_fun, Iperp_fun + REAL(r8), DIMENSION(0:mthsurf) :: Cpar_fun + REAL(r8), DIMENSION(0:mthsurf,22) :: surf_extra + INTEGER :: kcol + CHARACTER(8) :: smode + CHARACTER(128) :: surf_file, int_file + REAL(r8) :: dcon_fac + REAL(r8), DIMENSION(:), ALLOCATABLE :: psi_int_pts + REAL(r8), DIMENSION(:), ALLOCATABLE :: A_vals, B_vals, + $ Iperp_vals, Cpar_vals, epf_vals, dst1_vals, dst3_vals + TYPE(cspline_type) :: recon3_spl + + IF(verbose) WRITE(*,*)"" + IF(verbose) WRITE(*,*)"GPOUT_RECON3: Bernstein |C|^2 decomp" + IF(verbose) WRITE(*,*)"__________________________________________" + + WRITE(smode,'(I8)') mode + smode = ADJUSTL(smode) + surf_file = "gpec_recon3_terms_sol"//TRIM(smode)//".out" + int_file = "gpec_recon3_integration_sol"//TRIM(smode)//".out" + usurf = 97 + u_int = 98 + u_log = 99 + + IF (recon_out) THEN + OPEN(UNIT=usurf, FILE=surf_file, STATUS="UNKNOWN") + OPEN(UNIT=u_int, FILE=int_file, STATUS="UNKNOWN") + WRITE(usurf,'(30(1x,a16))') + $ "psi","theta","r","z","A_den","B_den","Iperp_den", + $ "Cpar_den","VdotQ_re","VdotQ_im","Bcur_den","Bpre_den", + $ "Qp_re","Qp_im","Qt_re","Qt_im","Qz_re","Qz_im", + $ "Vt_re","Vt_im","Vz_re","Vz_im","jpar","jperp", + $ "xin_re","xin_im","delpsi","Bmod","dst1_den","dst3_den" + WRITE(u_int,'(12(1x,a16))') + $ "psi","A","B","Iperp","Cpar","epf","A_cum","B_cum", + $ "Iperp_cum","Cpar_cum","epf_cum","identity_res" + ENDIF + + CALL idcon_build(mode, xspmn) + CALL gpeq_alloc + + DO ipsi = 0, mpsi + psi = rzphi%xs(ipsi) + IF (psi > psilim) EXIT + CALL gpeq_recon3(psi, A_hr, B_hr, Iperp_hr, Cpar_hr, epf_hr, + $ A_fun, B_fun, Iperp_fun, Cpar_fun, surf_extra) + IF (recon_out) THEN + DO itheta = 0, mthsurf + CALL bicube_eval(rzphi, psi, theta(itheta), 1) + rfac = SQRT(rzphi%f(1)) + eta = twopi*(theta(itheta) + rzphi%f(2)) + rvals(itheta) = ro + rfac*COS(eta) + zvals(itheta) = zo + rfac*SIN(eta) + WRITE(usurf,'(30(es17.8e3))') psi, theta(itheta), + $ rvals(itheta), zvals(itheta), A_fun(itheta), + $ B_fun(itheta), Iperp_fun(itheta), Cpar_fun(itheta), + $ (surf_extra(itheta,kcol), kcol=1,22) + ENDDO + WRITE(usurf,*) + ENDIF + ENDDO + + dcon_fac = (mu0*2.0_r8) / psio**2 / (chi1*1.0e-3_r8)**2 + + nint_pts = 0 + DO istep = 0, mstep + IF (psifac(istep) < rzphi%xs(0)) CYCLE + IF (psifac(istep) > rzphi%xs(mpsi)) EXIT + nint_pts = nint_pts + 1 + ENDDO + ALLOCATE(psi_int_pts(nint_pts), A_vals(nint_pts), + $ B_vals(nint_pts), Iperp_vals(nint_pts), Cpar_vals(nint_pts), + $ epf_vals(nint_pts), dst1_vals(nint_pts), dst3_vals(nint_pts)) + iint = 0 + DO istep = 0, mstep + psi = psifac(istep) + IF (psi < rzphi%xs(0)) CYCLE + IF (psi > rzphi%xs(mpsi)) EXIT + CALL gpeq_recon3(psi, A_hr, B_hr, Iperp_hr, Cpar_hr, epf_hr) +c dst1 (=K1 xi_n^2) and dst3 (=K3 xi_n^2) for the C-free dW form +c 2 dW_p = A + B + Iperp - dst1 - dst3 (dst2 = Cpar cancels). + CALL gpeq_dst(psi, dst_int_c, dst1_c, dst2_c, dst3_c) + iint = iint + 1 + psi_int_pts(iint) = psi + A_vals(iint) = A_hr + B_vals(iint) = B_hr + Iperp_vals(iint) = Iperp_hr + Cpar_vals(iint) = Cpar_hr + epf_vals(iint) = epf_hr + dst1_vals(iint) = REAL(dst1_c, r8) + dst3_vals(iint) = REAL(dst3_c, r8) + ENDDO + + IF (recon_out) THEN + WRITE(u_int,'(a)') "c Bernstein |C|^2 decomposition (direct)" + WRITE(u_int,'(a)') "c identity: epf = A + B + Cpar + Iperp" + WRITE(u_int,'(a)') "c identity_res = epf - A - B - Cpar"// + $ " - Iperp (should be near zero)" + WRITE(u_int,'(a)') "c Cpar should equal dst2 from recon1" + WRITE(u_int,'(a,a)') "c recon_int = ", TRIM(recon_int) + ENDIF + + A_total = 0.0_r8 + B_total = 0.0_r8 + Iperp_total = 0.0_r8 + Cpar_total = 0.0_r8 + epf_total = 0.0_r8 + dst1_total = 0.0_r8 + dst3_total = 0.0_r8 + + IF (TRIM(recon_int) == "spline" .AND. nint_pts > 1) THEN + CALL cspline_alloc(recon3_spl, nint_pts-1, 7) + recon3_spl%xs = psi_int_pts + recon3_spl%fs(:,1) = CMPLX(A_vals, 0.0_r8, r8) + recon3_spl%fs(:,2) = CMPLX(B_vals, 0.0_r8, r8) + recon3_spl%fs(:,3) = CMPLX(Iperp_vals, 0.0_r8, r8) + recon3_spl%fs(:,4) = CMPLX(Cpar_vals, 0.0_r8, r8) + recon3_spl%fs(:,5) = CMPLX(epf_vals, 0.0_r8, r8) + recon3_spl%fs(:,6) = CMPLX(dst1_vals, 0.0_r8, r8) + recon3_spl%fs(:,7) = CMPLX(dst3_vals, 0.0_r8, r8) + CALL cspline_fit(recon3_spl, "extrap") + CALL cspline_int(recon3_spl) + DO iint = 1, nint_pts + A_total = REAL(recon3_spl%fsi(iint-1,1), r8) + B_total = REAL(recon3_spl%fsi(iint-1,2), r8) + Iperp_total = REAL(recon3_spl%fsi(iint-1,3), r8) + Cpar_total = REAL(recon3_spl%fsi(iint-1,4), r8) + epf_total = REAL(recon3_spl%fsi(iint-1,5), r8) + dst1_total = REAL(recon3_spl%fsi(iint-1,6), r8) + dst3_total = REAL(recon3_spl%fsi(iint-1,7), r8) + identity_residual = epf_total - A_total - B_total - + $ Cpar_total - Iperp_total + IF (recon_out) WRITE(u_int,'(12(es17.8e3))') + $ psi_int_pts(iint), A_vals(iint), B_vals(iint), + $ Iperp_vals(iint), Cpar_vals(iint), epf_vals(iint), + $ A_total, B_total, Iperp_total, Cpar_total, epf_total, + $ identity_residual + ENDDO + CALL cspline_dealloc(recon3_spl) + ELSE + DO iint = 1, nint_pts + IF (iint > 1) THEN + dpsi_local = psi_int_pts(iint) - psi_int_pts(iint-1) + A_total = A_total + (A_vals(iint-1)+A_vals(iint)) * + $ dpsi_local / 2.0_r8 + B_total = B_total + (B_vals(iint-1)+B_vals(iint)) * + $ dpsi_local / 2.0_r8 + Iperp_total = Iperp_total + (Iperp_vals(iint-1) + + $ Iperp_vals(iint)) * dpsi_local / 2.0_r8 + Cpar_total = Cpar_total + (Cpar_vals(iint-1) + + $ Cpar_vals(iint)) * dpsi_local / 2.0_r8 + epf_total = epf_total + (epf_vals(iint-1) + + $ epf_vals(iint)) * dpsi_local / 2.0_r8 + dst1_total = dst1_total + (dst1_vals(iint-1) + + $ dst1_vals(iint)) * dpsi_local / 2.0_r8 + dst3_total = dst3_total + (dst3_vals(iint-1) + + $ dst3_vals(iint)) * dpsi_local / 2.0_r8 + ENDIF + identity_residual = epf_total - A_total - B_total - + $ Cpar_total - Iperp_total + IF (recon_out) WRITE(u_int,'(12(es17.8e3))') + $ psi_int_pts(iint), A_vals(iint), B_vals(iint), + $ Iperp_vals(iint), Cpar_vals(iint), epf_vals(iint), + $ A_total, B_total, Iperp_total, Cpar_total, epf_total, + $ identity_residual + ENDDO + ENDIF + + identity_residual = epf_total - A_total - B_total - Cpar_total + $ - Iperp_total + +c C-free reconstructed dW_p: 2 dW = A + B + Iperp - dst1 - dst3 +c (the parallel-current piece dst2 = Cpar cancels identically). + dw_raw3 = 0.5_r8 * (A_total + B_total + Iperp_total + $ - dst1_total - dst3_total) + dw_dcon3 = dw_raw3 * dcon_fac + ep_index = 1 + IF (mode_flag) ep_index = mode + IF (ep_index < 1 .OR. ep_index > mpert) THEN + CALL gpec_stop("gpout_recon3 selected mode is out of range") + ENDIF + ep_selected = REAL(ep(ep_index)) + ep_dcon = ep_selected * dcon_fac + + IF (recon_out) THEN + WRITE(u_int,*) + WRITE(u_int,'(a)') "c Final |C|^2 decomposition totals:" + WRITE(u_int,'(a)') "c A_total = int J |Q|^2 / mu0" + WRITE(u_int,'(a)') "c B_total = int J 2 Re(V*.Q) / mu0" + WRITE(u_int,'(a)') "c Cpar_total = int J mu0 sigma^2 B^2"// + $ " xi_n^2" + WRITE(u_int,'(a)') "c Iperp_total= int J mu0 p'^2 |gp|^2"// + $ " xi_n^2 / B^2" + WRITE(u_int,'(a)') "c epf_total = int J |C|^2 / mu0" + WRITE(u_int,'(a)') "c identity_res = epf - (A+B+Cpar+Iperp)" + WRITE(u_int,'(es17.8e3)') A_total + WRITE(u_int,'(es17.8e3)') B_total + WRITE(u_int,'(es17.8e3)') Cpar_total + WRITE(u_int,'(es17.8e3)') Iperp_total + WRITE(u_int,'(es17.8e3)') epf_total + WRITE(u_int,'(es17.8e3)') identity_residual + ENDIF + + WRITE(*,'(a)') "GPEC_RECON3 |C|^2 decomposition totals:" + WRITE(*,'(a,es17.8e3)') " A_total = ", A_total + WRITE(*,'(a,es17.8e3)') " B_total = ", B_total + WRITE(*,'(a,es17.8e3)') " Cpar_total = ", Cpar_total + WRITE(*,'(a,es17.8e3)') " Iperp_total = ", Iperp_total + WRITE(*,'(a,es17.8e3)') " epf_total = ", epf_total + WRITE(*,'(a,es17.8e3)') " identity_res = ", identity_residual + WRITE(*,'(a)') " (identity_res should be ~ 0; Cpar = dst2.)" + WRITE(*,'(a,es17.8e3)') " dW_p(recon3) = ", dw_raw3 + WRITE(*,'(a,es17.8e3)') " dW_p(recon3-normalize)= ", dw_dcon3 + WRITE(*,'(a,a,a,es17.8e3)') " GPEC ep(", TRIM(smode), ") = ", + $ ep_selected + WRITE(*,'(a,a,a,es17.8e3)') " DCON ep(", TRIM(smode), ") = ", + $ ep_dcon + + IF (recon_out) THEN + OPEN(UNIT=u_log, FILE="gpec.log", STATUS="UNKNOWN", + $ POSITION="APPEND") + WRITE(u_log,'(a)') "GPEC_RECON3 final results:" + WRITE(u_log,'(a,I8)') " mode = ", mode + WRITE(u_log,'(a,L1)') " reg_flag = ", reg_flag + WRITE(u_log,'(a)') " Bernstein |C|^2 decomposition:" + WRITE(u_log,'(a,es17.8e3)') " A_total = ", A_total + WRITE(u_log,'(a,es17.8e3)') " B_total = ", B_total + WRITE(u_log,'(a,es17.8e3)') " Cpar_total = ", Cpar_total + WRITE(u_log,'(a,es17.8e3)') " Iperp_total = ", Iperp_total + WRITE(u_log,'(a,es17.8e3)') " epf_total = ", epf_total + WRITE(u_log,'(a,es17.8e3)') " identity_res = ", + $ identity_residual + WRITE(u_log,'(a)') " (identity_res should be ~0;"// + $ " Cpar should match dst2 from recon1.)" + WRITE(u_log,'(a,es17.8e3)') " dW_p(recon3) = ", + $ dw_raw3 + WRITE(u_log,'(a,es17.8e3)') " dW_p(recon3-normalize)= ", + $ dw_dcon3 + WRITE(u_log,'(a,a,a,es17.8e3)') " GPEC ep(", TRIM(smode), + $ ") = ", ep_selected + WRITE(u_log,'(a,a,a,es17.8e3)') " DCON ep(", TRIM(smode), + $ ") = ", ep_dcon + WRITE(u_log,*) + CLOSE(u_log) + ENDIF + + DEALLOCATE(psi_int_pts, A_vals, B_vals, Iperp_vals, Cpar_vals, + $ epf_vals, dst1_vals, dst3_vals) + CALL gpeq_dealloc + IF (recon_out) THEN + CLOSE(usurf) + CLOSE(u_int) + ENDIF +c----------------------------------------------------------------------- +c terminate. +c----------------------------------------------------------------------- + RETURN + END SUBROUTINE gpout_recon3 END MODULE gpout_mod From daeabf6d4943a3966e7533219c2a1b478807f66a Mon Sep 17 00:00:00 2001 From: satelite2517 Date: Fri, 5 Jun 2026 14:24:16 +0900 Subject: [PATCH 34/62] GPEC - RECON1 - add per-(psi,theta) terms R-Z output Add gpec_recon_terms_solX.out (per-point C-form energy densities: c2_den, c2_psi/theta/zeta_den, dst1/2/3_den) from gpout_recon, the recon1 analog of recon3_terms for 2 dW_p = C2/mu0 - dst1 - dst2 - dst3. gpeq_epf / gpeq_dst gain optional per-theta density out-args; their theta loops now run 0..mthsurf with an itheta (cherry picked from commit f80b993fa3724ced30d1714f087f51a7dbe6cd1c) --- gpec/gpeq.f | 67 ++++++++++++++++++++++++++++++++++++---------------- gpec/gpout.f | 28 +++++++++++++++++++--- 2 files changed, 71 insertions(+), 24 deletions(-) diff --git a/gpec/gpeq.f b/gpec/gpeq.f index 414bd30a6..5d3481147 100644 --- a/gpec/gpeq.f +++ b/gpec/gpeq.f @@ -1070,18 +1070,23 @@ END SUBROUTINE gpeq_firstform c c and return the theta/zeta integrated value for one psi. c----------------------------------------------------------------------- - SUBROUTINE gpeq_epf(psi, epf_int, epf_p, epf_t, epf_z) + SUBROUTINE gpeq_epf(psi, epf_int, epf_p, epf_t, epf_z, + $ epf_den_fun, epf_p_fun, epf_t_fun, epf_z_fun) c----------------------------------------------------------------------- c declaration. c----------------------------------------------------------------------- REAL(r8), INTENT(IN) :: psi REAL(r8), INTENT(OUT) :: epf_int REAL(r8), OPTIONAL, INTENT(OUT) :: epf_p, epf_t, epf_z +c optional per-theta C^2/mu0 densities for R-Z heatmaps. Same +c convention as gpeq_recon3 epf_density: integral = sum den*jac/mth. + REAL(r8), DIMENSION(0:mthsurf), OPTIONAL, INTENT(OUT) :: + $ epf_den_fun, epf_p_fun, epf_t_fun, epf_z_fun INTEGER :: itheta COMPLEX(r8), DIMENSION(0:mthsurf) :: cwp_fun, cwt_fun, cwz_fun COMPLEX(r8), DIMENSION(0:mthsurf) :: cvp_fun, cvt_fun, cvz_fun REAL(r8) :: epf_psi_int, epf_theta_int, epf_zeta_int - REAL(r8) :: epf_fac + REAL(r8) :: dpsi_d, dthe_d, dzet_d IF(debug_flag) PRINT *, "Entering gpeq_epf" c----------------------------------------------------------------------- @@ -1104,16 +1109,26 @@ SUBROUTINE gpeq_epf(psi, epf_int, epf_p, epf_t, epf_z) epf_psi_int = 0.0_r8 epf_theta_int = 0.0_r8 epf_zeta_int = 0.0_r8 - DO itheta = 0, mthsurf-1 + DO itheta = 0, mthsurf CALL bicube_eval(rzphi, psi, theta(itheta), 0) jac = rzphi%f(4) - epf_fac = jac / (mu0 * REAL(mthsurf, r8)) - epf_psi_int = epf_psi_int + epf_fac * - $ REAL(CONJG(cwp_fun(itheta)/jac) * cvp_fun(itheta), r8) - epf_theta_int = epf_theta_int + epf_fac * - $ REAL(CONJG(cwt_fun(itheta)/jac) * cvt_fun(itheta), r8) - epf_zeta_int = epf_zeta_int + epf_fac * - $ REAL(CONJG(cwz_fun(itheta)/jac) * cvz_fun(itheta), r8) +c per-theta densities (Re(conjg(cw_i) cv_i)/(mu0 jac)). + dpsi_d = REAL(CONJG(cwp_fun(itheta)) * cvp_fun(itheta), r8) + $ / (mu0 * jac) + dthe_d = REAL(CONJG(cwt_fun(itheta)) * cvt_fun(itheta), r8) + $ / (mu0 * jac) + dzet_d = REAL(CONJG(cwz_fun(itheta)) * cvz_fun(itheta), r8) + $ / (mu0 * jac) + IF (PRESENT(epf_p_fun)) epf_p_fun(itheta) = dpsi_d + IF (PRESENT(epf_t_fun)) epf_t_fun(itheta) = dthe_d + IF (PRESENT(epf_z_fun)) epf_z_fun(itheta) = dzet_d + IF (PRESENT(epf_den_fun)) epf_den_fun(itheta) = + $ dpsi_d + dthe_d + dzet_d + IF (itheta < mthsurf) THEN + epf_psi_int = epf_psi_int + dpsi_d*jac/REAL(mthsurf, r8) + epf_theta_int = epf_theta_int + dthe_d*jac/REAL(mthsurf, r8) + epf_zeta_int = epf_zeta_int + dzet_d*jac/REAL(mthsurf, r8) + ENDIF ENDDO epf_int = epf_psi_int + epf_theta_int + epf_zeta_int IF (PRESENT(epf_p)) epf_p = epf_psi_int @@ -1134,14 +1149,19 @@ END SUBROUTINE gpeq_epf c c and return the theta/zeta integrated value for one psi. c----------------------------------------------------------------------- - SUBROUTINE gpeq_dst(psi, dst_int, dst_t1, dst_t2, dst_t3) + SUBROUTINE gpeq_dst(psi, dst_int, dst_t1, dst_t2, dst_t3, + $ dst1_den_fun, dst2_den_fun, dst3_den_fun) REAL(r8), INTENT(IN) :: psi COMPLEX(r8), INTENT(OUT) :: dst_int COMPLEX(r8), OPTIONAL, INTENT(OUT) :: dst_t1, dst_t2, dst_t3 +c optional per-theta K_i xi_n^2 densities for R-Z heatmaps. Same +c convention as gpeq_recon3: integral = sum den*jac/mthsurf. + REAL(r8), DIMENSION(0:mthsurf), OPTIONAL, INTENT(OUT) :: + $ dst1_den_fun, dst2_den_fun, dst3_den_fun INTEGER :: itheta COMPLEX(r8), DIMENSION(0:mthsurf) :: K_fun, xno_fun REAL(r8), DIMENSION(0:mthsurf) :: K_term1, K_term2, K_term3 - REAL(r8) :: xin2_fac + REAL(r8) :: xin2_fac, xin2_loc, d1, d2, d3 COMPLEX(r8) :: dst1_int, dst2_int, dst3_int c----------------------------------------------------------------------- @@ -1157,17 +1177,22 @@ SUBROUTINE gpeq_dst(psi, dst_int, dst_t1, dst_t2, dst_t3) dst1_int = CMPLX(0.0_r8, 0.0_r8, r8) dst2_int = CMPLX(0.0_r8, 0.0_r8, r8) dst3_int = CMPLX(0.0_r8, 0.0_r8, r8) - DO itheta = 0, mthsurf-1 + DO itheta = 0, mthsurf CALL bicube_eval(rzphi, psi, theta(itheta), 0) jac = rzphi%f(4) - xin2_fac = jac * ABS(xno_fun(itheta))**2 / - $ REAL(mthsurf, r8) - dst1_int = dst1_int + CMPLX(K_term1(itheta) * xin2_fac, - $ 0.0_r8, r8) - dst2_int = dst2_int + CMPLX(K_term2(itheta) * xin2_fac, - $ 0.0_r8, r8) - dst3_int = dst3_int + CMPLX(K_term3(itheta) * xin2_fac, - $ 0.0_r8, r8) + xin2_loc = ABS(xno_fun(itheta))**2 + d1 = K_term1(itheta) * xin2_loc + d2 = K_term2(itheta) * xin2_loc + d3 = K_term3(itheta) * xin2_loc + IF (PRESENT(dst1_den_fun)) dst1_den_fun(itheta) = d1 + IF (PRESENT(dst2_den_fun)) dst2_den_fun(itheta) = d2 + IF (PRESENT(dst3_den_fun)) dst3_den_fun(itheta) = d3 + IF (itheta < mthsurf) THEN + xin2_fac = jac / REAL(mthsurf, r8) + dst1_int = dst1_int + CMPLX(d1 * xin2_fac, 0.0_r8, r8) + dst2_int = dst2_int + CMPLX(d2 * xin2_fac, 0.0_r8, r8) + dst3_int = dst3_int + CMPLX(d3 * xin2_fac, 0.0_r8, r8) + ENDIF ENDDO dst_int = dst1_int + dst2_int + dst3_int IF (PRESENT(dst_t1)) dst_t1 = dst1_int diff --git a/gpec/gpout.f b/gpec/gpout.f index eb61d5c58..272c1570c 100644 --- a/gpec/gpout.f +++ b/gpec/gpout.f @@ -6882,7 +6882,10 @@ SUBROUTINE gpout_recon(mode, xspmn) INTEGER :: ipsi, itheta, ipert, ushear_fun, ucurv, uk, ucveri, $ uk_sigma, ucw_fun, ucw_mn, ucv_fun, ucv_mn, ucv2_fun, - $ ucv2_mn, u_int, u_log + $ ucv2_mn, u_int, u_log, u_terms + REAL(r8), DIMENSION(0:mthsurf) :: epf_den_fun, epf_p_fun, + $ epf_t_fun, epf_z_fun, dst1_den_fun, dst2_den_fun, + $ dst3_den_fun REAL(r8) :: psi, eta, rfac REAL(r8), DIMENSION(0:mthsurf) :: rvals, zvals REAL(r8) :: epf_int, epf_p_int, epf_t_int, epf_z_int @@ -6898,7 +6901,7 @@ SUBROUTINE gpout_recon(mode, xspmn) CHARACTER(128) :: shear_fun_file, curv_file, cveri_file CHARACTER(128) :: k_file, k_sigma_file CHARACTER(128) :: cw_fun_file, cw_mn_file, cv_fun_file, cv_mn_file - CHARACTER(128) :: cv2_fun_file, cv2_mn_file, int_file + CHARACTER(128) :: cv2_fun_file, cv2_mn_file, int_file, terms_file REAL(r8) :: dpsi_local INTEGER :: istep, nint_pts, iint, ep_index REAL(r8) :: psi_prev, psi_curr, epf_prev, epf_curr, ep_selected @@ -6959,6 +6962,7 @@ SUBROUTINE gpout_recon(mode, xspmn) cv2_fun_file = "gpec_recon_cv2fun_sol"//TRIM(smode)//".out" cv2_mn_file = "gpec_recon_cv2mn_sol"//TRIM(smode)//".out" int_file = "gpec_recon_integration_sol"//TRIM(smode)//".out" + terms_file = "gpec_recon_terms_sol"//TRIM(smode)//".out" ushear_fun = 82 ucurv = 72 @@ -6973,6 +6977,7 @@ SUBROUTINE gpout_recon(mode, xspmn) ucv2_mn = 91 u_int = 92 u_log = 93 + u_terms = 94 IF (recon_out) THEN OPEN(UNIT=ushear_fun, FILE=shear_fun_file, STATUS="UNKNOWN") @@ -6989,6 +6994,7 @@ SUBROUTINE gpout_recon(mode, xspmn) CALL ascii_open(ucv2_fun, cv2_fun_file, "UNKNOWN") CALL ascii_open(ucv2_mn, cv2_mn_file, "UNKNOWN") OPEN(UNIT=u_int, FILE=int_file, STATUS="UNKNOWN") + OPEN(UNIT=u_terms, FILE=terms_file, STATUS="UNKNOWN") WRITE(ushear_fun,'(6(1x,a16))') $ "psi","theta","r","z","shear_re","shear_im" WRITE(ucurv,'(6(1x,a16))') @@ -7024,6 +7030,10 @@ SUBROUTINE gpout_recon(mode, xspmn) $ "c2_mu0_sum","k_xin2_c_re","k_xin2_c_im", $ "dw_c_re","dw_c_im","c2_psi","c2_theta","c2_zeta", $ "k1_xin2_re","k2_xin2_re","k3_xin2_re" + WRITE(u_terms,'(11(1x,a16))') + $ "psi","theta","r","z","c2_den","c2_psi_den", + $ "c2_theta_den","c2_zeta_den","dst1_den","dst2_den", + $ "dst3_den" ENDIF ep_index = 1 IF (mode_flag) ep_index = mode @@ -7050,7 +7060,9 @@ SUBROUTINE gpout_recon(mode, xspmn) c Compute the J|C|^2/mu0 state once so C fields below use c the current psi. This keeps the psi-local reconstruction path c identical to the original logic. - CALL gpeq_epf(psi, epf_int) + CALL gpeq_epf(psi, epf_int, epf_den_fun=epf_den_fun, + $ epf_p_fun=epf_p_fun, epf_t_fun=epf_t_fun, + $ epf_z_fun=epf_z_fun) c Reconstruct detailed K diagnostics for output. Keep this on c the original path so recon terminal totals remain unchanged. @@ -7081,6 +7093,9 @@ SUBROUTINE gpout_recon(mode, xspmn) IF (recon_out) THEN c Store spatial values with coordinates only when recon file c output is requested. +c K_i xi_n^2 per-theta densities for the recon terms file. + CALL gpeq_dst(psi, dst_int, dst1_den_fun=dst1_den_fun, + $ dst2_den_fun=dst2_den_fun, dst3_den_fun=dst3_den_fun) DO itheta = 0, mthsurf CALL bicube_eval(rzphi, psi, theta(itheta), 1) rfac = SQRT(rzphi%f(1)) @@ -7088,6 +7103,11 @@ SUBROUTINE gpout_recon(mode, xspmn) rvals(itheta) = ro + rfac*COS(eta) zvals(itheta) = zo + rfac*SIN(eta) + WRITE(u_terms,'(11(es17.8e3))') psi, theta(itheta), + $ rvals(itheta), zvals(itheta), epf_den_fun(itheta), + $ epf_p_fun(itheta), epf_t_fun(itheta), + $ epf_z_fun(itheta), dst1_den_fun(itheta), + $ dst2_den_fun(itheta), dst3_den_fun(itheta) WRITE(ushear_fun,'(6(es17.8e3))') psi, theta(itheta), $ rvals(itheta), zvals(itheta), $ REAL(shear_fun(itheta)), AIMAG(shear_fun(itheta)) @@ -7107,6 +7127,7 @@ SUBROUTINE gpout_recon(mode, xspmn) $ jdotb_vals(itheta), K_term2(itheta), $ mu0 * sigma_vals(itheta) * jdotb_vals(itheta) ENDDO + WRITE(u_terms,*) WRITE(ushear_fun,*) WRITE(ucurv,*) IF (cveri_flag) WRITE(ucveri,*) @@ -7430,6 +7451,7 @@ SUBROUTINE gpout_recon(mode, xspmn) CLOSE(uk) CLOSE(uk_sigma) CLOSE(u_int) + CLOSE(u_terms) CALL ascii_close(ucw_fun) CALL ascii_close(ucw_mn) CALL ascii_close(ucv_fun) From 8a40f7eb9cf52f4f6f4b92375d65e25a92649171 Mon Sep 17 00:00:00 2001 From: satelite2517 Date: Tue, 16 Jun 2026 12:21:01 +0900 Subject: [PATCH 35/62] DOCS - recon: C effective-field figure + Eulerian/Lagrangian derivation main.tex section 4.1: add "Verification: C as an effective field" passage (proof that (curl C).grad psi = 0; Eulerian vs Lagrangian frames; effective current j_eff = curl C / mu0 by analogy with Ampere's law) and Figure 1 (C_eulerian_lagrangian_n1.png, force-added since *.png is gitignored). Also reframe the V-component block as the correction term, drop section 6.1 (dcon_fac moved to the section-6 intro), and rename sections 4.1/4.2. Co-Authored-By: Claude Opus 4.8 (cherry picked from commit 73aaf92eaefe12f2462d8f80b206e32f3ee469ea) --- docs/tex/recon/C_eulerian_lagrangian_n1.png | Bin 0 -> 337616 bytes docs/tex/recon/main.tex | 1599 ++++++++++++++++--- 2 files changed, 1355 insertions(+), 244 deletions(-) create mode 100644 docs/tex/recon/C_eulerian_lagrangian_n1.png diff --git a/docs/tex/recon/C_eulerian_lagrangian_n1.png b/docs/tex/recon/C_eulerian_lagrangian_n1.png new file mode 100644 index 0000000000000000000000000000000000000000..df7d728e6ddab40a9a5d79f897430a010cd340ff GIT binary patch literal 337616 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

f-Kp3%>4xO4F39PJ}xLO#bY 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

XJUA7DOzjyv&P_u^-PIJqbZlcY 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 z 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 z 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

T3b(nQtc<5$^H7-ycH+D@wadN_tJm^3*W9 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 literal 0 HcmV?d00001 diff --git a/docs/tex/recon/main.tex b/docs/tex/recon/main.tex index fba9ab731..3a8a79b9b 100644 --- a/docs/tex/recon/main.tex +++ b/docs/tex/recon/main.tex @@ -6,13 +6,15 @@ \usepackage{geometry} \geometry{margin=1in} \usepackage{graphicx} +\usepackage{float} \usepackage{amsmath, amssymb} \usepackage{hyperref} \usepackage{cancel} \usepackage{color} \usepackage{pdflscape} +\numberwithin{equation}{section} -\title{DCON $recon flag$ document} +\title{DCON \texttt{recon\_flag} document} \author{Sunjae Lee} \date{\today} @@ -43,10 +45,7 @@ \section{Definition of covariant and contravariant basis} \end{equation} \begin{equation} - \begin{aligned} - \vec{v}_i &= v_{ij}\hat{e}_j, \qquad & - % g_{ij} &\equiv \color{red}\mathcal{J}\,\vec{v}_i \cdot \vec{v}_j = \mathcal{J}\,v_{ik}v_{kj} - \end{aligned} + \vec{v}_i = v_{ij}\hat{e}_j. \end{equation} @@ -61,7 +60,7 @@ \section{Definition of covariant and contravariant basis} \begin{equation} \begin{aligned} v_{21} &= \vec{v}_2 \cdot \hat{e}_1 = \frac{1}{2r\mathcal{J}}\frac{\partial r^2}{\partial \theta}, \\[6pt] -v_{22} &= \vec{v}_2 \cdot \hat{e}_2 = \frac{2\pi r}{\mathcal{J}}\frac{\partial \eta}{\partial \theta}, \\[6pt] +v_{22} &= \vec{v}_2 \cdot \hat{e}_2 = \frac{2\pi r}{\mathcal{J}}\left(1+\frac{\partial \eta}{\partial \theta}\right), \\[6pt] v_{23} &= \vec{v}_2 \cdot \hat{e}_3 = \frac{R}{\mathcal{J}}\frac{\partial \phi}{\partial \theta}, \\[6pt] \end{aligned} \end{equation} @@ -75,7 +74,7 @@ \section{Definition of covariant and contravariant basis} \end{equation} -\subsection{Contravariant basis} +\subsection{Gradient basis $(\vec w_i=\nabla q^i)$} \begin{equation} \begin{aligned} \vec{w}_1 &= \vec{\nabla}\psi, & @@ -105,7 +104,7 @@ \subsection{Contravariant basis} &= \vec\nabla\psi \cdot \hat e_1 = \mathcal{J}\,\Big[\,(\vec\nabla\zeta \times \vec\nabla\psi)\times(\vec\nabla\psi \times \vec\nabla\theta)\,\Big]\!\cdot\hat e_1 = \mathcal{J}\,(v_{22}v_{33}-v_{23}v_{32}) - = \frac{4\pi^{2} r R}{\mathcal{J}}\frac{\partial \eta}{\partial \theta}, \\[6pt] + = \frac{4\pi^{2} r R}{\mathcal{J}}\left(1+\frac{\partial \eta}{\partial \theta}\right), \\[6pt] w_{12} &= \vec\nabla\psi \cdot \hat e_2 = \mathcal{J}\,\Big[\,(\vec\nabla\zeta \times \vec\nabla\psi)\times(\vec\nabla\psi \times \vec\nabla\theta)\,\Big]\!\cdot\hat e_2 @@ -147,7 +146,7 @@ \subsection{Contravariant basis} = \mathcal{J}\,(v_{12}v_{23}-v_{13}v_{22}) = \frac{2\pi r R}{\mathcal{J}}\!\left( \frac{\partial \eta}{\partial \psi}\frac{\partial \phi}{\partial \theta} - - \frac{\partial \phi}{\partial \psi}\frac{\partial \eta}{\partial \theta} + - \frac{\partial \phi}{\partial \psi}\left(1+\frac{\partial \eta}{\partial \theta}\right) \right), \\[6pt] w_{32} &= \vec\nabla\zeta \cdot \hat e_2 @@ -216,24 +215,6 @@ \section{Coordinate system} {\chi}_{\mathrm{dcon}} = \color{black}\chi'_{\mathrm{dcon}} \psi_{\mathrm{dcon}}. \] -\begin{align} -\nabla \cdot \left( \frac{1}{R^2} \nabla \psi \right) -&= \nabla \cdot \left(\frac{1}{R^2}\, \frac{\chi\prime_{dcon}}{2\pi} \nabla\, \psi_{dcon} \right)\\ -&= \frac{1}{{2\pi}} \nabla \cdot \left(\frac{1}{R^2}\, \chi\prime_{dcon} \nabla\, \psi_{dcon} \right) \\ -&= \frac{1}{{2\pi}} \nabla \cdot \left(\frac{1}{R^2}\, \nabla \chi_{dcon} \right) \\ -&= \mathbf{J} \cdot \nabla \phi\\ -&= - \left( p'_{chance} + \frac{1}{R^2} g g' \right) -\end{align} - -\begin{equation} - R^2 \nabla \cdot \left( \frac{1}{R^2} \nabla \chi_{dcon} \right) - = - 2\pi \left(R^2 p'_{chance} + g g' \right), - \qquad - p'_{dcon} \equiv \frac{dp}{d\psi_{dcon}} - = \frac{\chi'_{dcon}}{2\pi}\,p'_{chance}. -\end{equation} - - \subsection{Derivation of Eq.~(29) in GPEC note} @@ -259,21 +240,31 @@ \subsection{Derivation of Eq.~(29) in GPEC note} \qquad B^\zeta \equiv \vec{B}\cdot \vec{w}_3 = \frac{q\,\chi'}{\mathcal{J}}, \\[4pt] \vec{B} \times \vec{w}_1 -&= \frac{1}{\mathcal{J}}\Big( B^\zeta\,\vec{v}_2 - B^\theta\,\vec{v}_3 \Big) -= \frac{1}{\mathcal{J}}\left(\frac{q\,\chi'}{\mathcal{J}}\,\vec{v}_2 - \frac{\chi'}{\mathcal{J}}\,\vec{v}_3\right) \\ -&= \frac{\chi'}{\mathcal{J}^{2}}\Big( q\,\vec{v}_2 - \vec{v}_3 \Big), +&= \vec{B}\times\nabla\psi += \chi'\big(g^{\psi\zeta}-q\,g^{\psi\theta}\big)\,\nabla\psi ++ q\,\chi'\,g^{\psi\psi}\,\nabla\theta +- \chi'\,g^{\psi\psi}\,\nabla\zeta \\ +&= \chi'\big(g^{\psi\zeta}-q\,g^{\psi\theta}\big)\,\vec{w}_1 ++ q\,\chi'\,g^{\psi\psi}\,\vec{w}_2 +- \chi'\,g^{\psi\psi}\,\vec{w}_3, \end{aligned} \end{equation} \begin{equation} (\vec{B} \times \vec{w}_1)^\psi = 0, \qquad -(\vec{B} \times \vec{w}_1)^\theta = \frac{q\,\chi'}{\mathcal{J}^{2}}, \qquad -(\vec{B} \times \vec{w}_1)^\zeta = -\,\frac{\chi'}{\mathcal{J}^{2}}. +(\vec{B} \times \vec{w}_1)^\theta = \frac{\chi'\,(g_{23}+q\,g_{33})}{\mathcal{J}^{2}}, \qquad +(\vec{B} \times \vec{w}_1)^\zeta = -\,\frac{\chi'\,(g_{22}+q\,g_{23})}{\mathcal{J}^{2}}, \end{equation} +where $g_{ij}=\mathcal J^2(\vec v_i\cdot\vec v_j)$ is the true covariant +metric. The important distinction is that $\mathbf B\times\nabla\psi$ is most +naturally written first in the gradient basis $\{\vec w_i\}$ and only then, if +needed, converted to contravariant components in the $\{\vec v_i\}$ basis. \subsection{Metric Tensor and Index Operations} -Throughout this section we adopt the following conventions for expanding $\vec{B}$: +Throughout this section we distinguish carefully between the true tangent basis +$\vec e_i=\partial\vec r/\partial q^i=\mathcal J\vec v_i$ and the dual gradient +basis $\vec e^{\,i}=\vec w_i=\nabla q^i$. The vector $\vec B$ is expanded as \begin{equation} \vec{B} = \mathcal{J}\,B^j\,\vec{v}_j = B^j\,\vec{e}_j \qquad\text{(contravariant expansion)}, @@ -282,8 +273,15 @@ \subsection{Metric Tensor and Index Operations} \vec{B} = B_j\,\vec{w}_j = B_j\,\vec{e}^j \qquad\text{(covariant expansion)}, \end{equation} -where the contravariant components satisfy $B^i = \vec{B}\cdot\vec{w}_i$ and the covariant components satisfy $B_i = \vec{B}\cdot\vec{e}_i$. -These are consistent because $\vec{B}\cdot\vec{w}_i = \mathcal{J}B^j\vec{v}_j\cdot\vec{w}_i = \mathcal{J}B^j\,\delta_{ji}/\mathcal{J} = B^i$. +where the contravariant components satisfy +$B^i = \vec{B}\cdot\vec{w}_i$ and the covariant components satisfy +$B_i = \vec{B}\cdot\vec{e}_i$. These definitions are consistent because +\begin{equation} +\vec{B}\cdot\vec{w}_i += \mathcal{J} B^j \vec{v}_j\cdot\vec{w}_i += \mathcal{J} B^j \frac{\delta_{ji}}{\mathcal J} += B^i. +\end{equation} \subsubsection{Lowering Operator ($B^j \to B_i$)} To transform contravariant components $B^j$ into covariant components $B_i$, we use the true covariant tangent basis $\vec{e}_i = \mathcal{J}\vec{v}_i$. @@ -362,32 +360,33 @@ \subsection{Derivation of Eq. (35) in gpec note} \section{Energy principle\cite{RevModPhys.76.1071}\cite{Park2009Ideal}} \begin{align} \delta W_p &= \frac{1}{2\mu_0} \int d\tau_p -\Big\{ |\mathbf{Q}|^2 - \mathbf{j} \cdot \, \mathbf{Q} \times \boldsymbol{\xi}^* -+ \mu_0 \gamma p |\nabla \cdot \boldsymbol{\xi}|^2 -+ \mu_0 (\nabla \cdot \boldsymbol{\xi})^* \boldsymbol{\xi} \cdot \nabla p \Big\} \\ +\Big\{ |\mathbf{Q}|^2 - \mu_0\,\mathbf{j} \cdot \, \mathbf{Q} \times \boldsymbol{\xi}^* ++ \mu_0 \gamma p |\nabla \cdot \boldsymbol{\xi}|^2 ++ \mu_0 (\nabla \cdot \boldsymbol{\xi})^* \boldsymbol{\xi} \cdot \nabla p \Big\} \label{eq:ep_first}\\ &= \frac{1}{2\mu_0} \int d\tau_p \Big\{ |\mathbf{Q}_\perp|^2 -+ \frac{1}{B^2} |\mathbf{Q} \cdot \mathbf{B} - \boldsymbol{\xi} \cdot \nabla p|^2 -+ \sigma\, \mathbf{B} \times \boldsymbol{\xi}^* \cdot \mathbf{Q} -+ \mu_0 \gamma p |\nabla \cdot \boldsymbol{\xi}|^2 -- 2 \boldsymbol{\xi} \cdot \nabla p\, \boldsymbol{\xi}^* \cdot \boldsymbol{\kappa} -\Big\} \\ ++ \frac{1}{B^2} |\mathbf{Q} \cdot \mathbf{B} - \mu_0\,\boldsymbol{\xi} \cdot \nabla p|^2 ++ \mu_0\,\sigma\, \mathbf{B} \times \boldsymbol{\xi}^* \cdot \mathbf{Q} ++ \mu_0 \gamma p |\nabla \cdot \boldsymbol{\xi}|^2 +- 2 \mu_0\,\boldsymbol{\xi} \cdot \nabla p\, \boldsymbol{\xi}^* \cdot \boldsymbol{\kappa} +\Big\} \label{eq:ep_intuitive}\\ &= \frac{1}{2\mu_0} \int d\tau_p \Big\{ |\mathbf{Q} + \xi_n (\mu_0\mathbf{j} \times \mathbf{n})|^2 + \mu_0 \gamma p |\nabla \cdot \boldsymbol{\xi}|^2 -- 2\,\mu_0\mathbf{j} \times \mathbf{n} \cdot (\mathbf{B} \cdot \nabla \mathbf{n})\, \xi_n^2 -\Big\}\\ +- 2\,\mu_0\mathbf{j} \times \mathbf{n} \cdot (\mathbf{B} \cdot \nabla \mathbf{n})\, |\xi_n|^2 +\Big\}\label{eq:ep_bernstein}\\ &= \frac{1}{2\mu_0} \int d\tau_p \Big\{ |\mathbf{Q} + \xi_n (\mu_0 \mathbf{j} \times \mathbf{n})|^2 + \mu_0 \gamma p |\nabla \cdot \boldsymbol{\xi}|^2 -- \mu_0 K\, \xi_n^2 -\Big\} +- \mu_0 K\, |\xi_n|^2 +\Big\}\label{eq:ep_bernsteinK} \end{align} -The derivation of (35) could be found in \cite{RevModPhys.76.1071} and the original derivation of (36) is in \cite{Bernstein1983}. -The K term in (37) is defined in \cite{chance1992mhd}. +The derivation of \eqref{eq:ep_intuitive} can be found in \cite{RevModPhys.76.1071} and the original derivation of \eqref{eq:ep_bernstein} is in \cite{Bernstein1983}. +The $K$ term in \eqref{eq:ep_bernsteinK} is defined in \cite{chance1992mhd}. \subsection{Transformation of $\delta W_F$ into the Bernstein form (modified SI/DCON units)} +\label{sec:bernstein_transform} We follow the derivation of \cite{Bernstein1983}, while keeping the present SI/DCON conventions. Throughout this subsection, we employ the following definitions: @@ -415,7 +414,15 @@ \subsection{Transformation of $\delta W_F$ into the Bernstein form (modified SI/ \right\}. \end{equation} -Since $\mathbf{B}$, $\nabla p$, and $\nabla\times\mathbf{B}$ are mutually orthogonal (satisfying $\mathbf{B}\cdot\nabla p = (\nabla\times\mathbf{B})\cdot\nabla p = \mathbf{B}\cdot(\nabla\times\mathbf{B})=0$), they form an orthogonal basis. We thus introduce +The vectors $\mathbf{B}$, $\nabla p$, and $\nabla\times\mathbf{B}$ form a local +basis away from degenerate points where \(p'=0\) or where \(\mathbf B\) and +\(\nabla\times\mathbf B\) become linearly dependent. Here $\nabla p$ is +orthogonal to both $\mathbf B$ and $\nabla\times\mathbf B$ (since +$\mathbf{B}\cdot\nabla p = (\nabla\times\mathbf{B})\cdot\nabla p = 0$, i.e. +$\mathbf B$ and $\mathbf j$ lie in the flux surface), while $\mathbf B$ and +$\nabla\times\mathbf B$ are independent but not orthogonal +($\mathbf{B}\cdot(\nabla\times\mathbf{B})=\mu_0 j_\parallel B\neq0$). We thus +introduce \begin{equation} \boldsymbol{\xi} = @@ -455,13 +462,16 @@ \subsection{Transformation of $\delta W_F$ into the Bernstein form (modified SI/ Substituting $\boldsymbol{\xi} = a\,\nabla p + b\,\nabla\times\mathbf B + c\,\mathbf B$: \begin{align} -\nabla\cdot\boldsymbol{\xi} &= a\nabla^2 p, \quad \boldsymbol{\xi}\cdot\nabla p = a(\nabla p)^2. +\nabla\cdot\boldsymbol{\xi} &= \nabla\cdot(a\nabla p)+\nabla\cdot(b\nabla\times\mathbf B+c\mathbf B), \quad \boldsymbol{\xi}\cdot\nabla p = a(\nabla p)^2. \end{align} By the product rule: \begin{equation} -a(\nabla p)^2\nabla\cdot(b\nabla\times\mathbf B+c\mathbf B) = \nabla\cdot\Bigl[a(\nabla p)^2(b\nabla\times\mathbf B+c\mathbf B)\Bigr] - (b\nabla\times\mathbf B+c\mathbf B)\cdot\nabla\bigl[a(\nabla p)^2\bigr]. +a(\nabla p)^2\nabla\cdot(b\nabla\times\mathbf B+c\mathbf B) = +\nabla\cdot\Bigl[a(\nabla p)^2(b\nabla\times\mathbf B+c\mathbf B)\Bigr] +- (b\nabla\times\mathbf B+c\mathbf B)\cdot\nabla\bigl[a(\nabla p)^2\bigr]. \end{equation} -On flux surfaces the divergence vanishes, giving +After integration over a volume bounded by flux surfaces, the divergence term +has no surface contribution, giving \begin{align} a(\nabla p)^2\nabla\cdot\bigl(b\nabla\times\mathbf B+c\mathbf B\bigr) &= @@ -487,7 +497,7 @@ \subsection{Transformation of $\delta W_F$ into the Bernstein form (modified SI/ \Bigr\}. \end{align} -Using $\mu_0\nabla p = (\nabla\times\mathbf B)\times\mathbf B$ and $\hat{\mathbf n}\cdot\mathbf B=0$, the three terms (L485--489) combine to: +Using $\mu_0\nabla p = (\nabla\times\mathbf B)\times\mathbf B$ and $\hat{\mathbf n}\cdot\mathbf B=0$, the last three scalar terms combine to: \begin{align} &-a^2\Bigl|(\nabla\times\mathbf B)\times\nabla p\Bigr|^2 +a(\nabla\times\mathbf B)\times\nabla p\cdot\nabla\times(a\,\mathbf B\times\nabla p) +\mu_0 a(\nabla p)^2\nabla\cdot(a\nabla p) \nonumber\\ &= a^2(\nabla p)^2 \Bigl[-|\nabla\times\mathbf B|^2 +(\nabla\times\mathbf B)\times\hat{\mathbf n}\cdot\Bigl((\hat{\mathbf n}\cdot\nabla)\mathbf B-(\mathbf B\cdot\nabla)\hat{\mathbf n}\Bigr)\Bigr]. @@ -689,7 +699,7 @@ \subsection{Derivation of $K$ with explicit $\mu_0$} \begin{equation} S \equiv -\frac{\mathbf B\times\nabla\psi}{|\nabla\psi|^2}\cdot\nabla\times\left(\frac{\mathbf B\times\nabla\psi}{|\nabla\psi|^2}\right), \end{equation} -which is equivalent to $S = -\frac{1}{|\nabla\psi|^2}(\mathbf B\times\nabla\psi)\cdot\nabla\times(\mathbf B\times\nabla\psi)$ by the product rule for curl. +which is equivalent to $S = -\frac{1}{|\nabla\psi|^4}(\mathbf B\times\nabla\psi)\cdot\nabla\times(\mathbf B\times\nabla\psi)$ by the product rule for curl. Thus \begin{equation} \boxed{K_{\parallel} = \mu_0\sigma^2B^2 + \sigma|\nabla\psi|^2 S}. @@ -896,6 +906,11 @@ \subsubsection{Shear parameter $S$ in DCON} + \frac{q\,g^{\psi\theta}-g^{\psi\zeta}}{g^{\psi\psi}}. \end{equation} +The \(q'\theta\) piece is a gauge term coming from +\(\alpha=q(\psi)\theta-\zeta\); it is not itself periodic in \(\theta\). In the +following expressions only its derivative, \(\partial_\theta(q'\theta)=q'\), +enters the physical scalar \(S_\psi\), while integrations by parts must be +applied only to the resulting periodic combinations. For an axisymmetric tokamak equilibrium, all equilibrium scalars and metric elements are independent of $\zeta$, hence $\partial\Gamma_\alpha/\partial\zeta=0$. Using @@ -957,9 +972,9 @@ \subsubsection{Shear parameter $S$ in DCON} \noindent\textbf{Relation to the GPEC note.} If one instead uses the flux label \begin{equation} -\lambda = \frac{\chi}{2\pi} = \frac{\chi'}{2\pi}\psi, +\lambda = \frac{\chi(\psi)}{2\pi}, \end{equation} -then +then \(\nabla\lambda=(\chi'/2\pi)\nabla\psi\) on each flux surface and \begin{equation} S_{\lambda} = @@ -991,12 +1006,15 @@ \subsubsection{Normal displacement $\xi_\psi$} \equiv \boldsymbol{\xi}\cdot\nabla\psi = -\xi^\psi, +\xi^\psi_{\rm tang}, \qquad \hat{\mathbf n} = \frac{\nabla\psi}{|\nabla\psi|}. \end{equation} +Here \(\xi^\psi_{\rm tang}\) denotes the contravariant component in the true +tangent basis \(\vec e_i=\partial\vec r/\partial q^i\). It should not be +confused with a covariant component in the gradient basis. Therefore, \begin{equation} \boxed{ @@ -1235,10 +1253,12 @@ \section{Reconstruction of energy principle variables in DCON} \end{aligned} \end{equation} -\subsection{Reconstruction v1} +\subsection{Reconstruction v1: real-space reconstruction on the $(\psi,\theta)$ grid} \begin{align} -\xi_\psi = \sum_{m}^{} \sum_{n}^{} v_{m,n}(\psi) \cdot \exp 2\pi i(m\theta -n\zeta) \\ -\xi_s = \sum_{m}^{} \sum_{n}^{} u_{m,n}(\psi) \cdot \exp 2\pi i(m\theta -n\zeta) +\xi_\psi = \sum_{m}^{} \sum_{n}^{} v_{m,n}(\psi) \cdot +\exp\!\bigl[2\pi i(m\theta -n\zeta)\bigr] \\ +\xi_s = \sum_{m}^{} \sum_{n}^{} u_{m,n}(\psi) \cdot +\exp\!\bigl[2\pi i(m\theta -n\zeta)\bigr] \end{align} Here $\xi_\psi\equiv\vec\xi\cdot\nabla\psi$ is the normal displacement amplitude used by DCON, and $\xi_s$ is the surface displacement variable. \begin{align} @@ -1247,12 +1267,12 @@ \subsection{Reconstruction v1} \end{align} \begin{equation} -Q^{\psi} = \frac{\chi^\prime}{\mathcal{J}} (\frac{\partial}{\partial \theta} + q \frac{\partial}{\partial \zeta} )\xi_\psi = \frac{\chi^\prime}{\mathcal{J}} \sum_{m}^{} \sum_{n}^{} v_{m,n}(\psi) \cdot \exp 2 \pi i(m\theta -n\zeta)\cdot 2 \pi i (m-nq) +Q^{\psi} = \frac{\chi^\prime}{\mathcal{J}} (\frac{\partial}{\partial \theta} + q \frac{\partial}{\partial \zeta} )\xi_\psi = \frac{\chi^\prime}{\mathcal{J}} \sum_{m}^{} \sum_{n}^{} v_{m,n}(\psi) \cdot \exp\!\bigl[2 \pi i(m\theta -n\zeta)\bigr]\cdot 2 \pi i (m-nq) \end{equation} \begin{align} Q^{\theta} &= - \frac{1}{\mathcal{J}} \frac{\partial}{\partial \psi}(\chi ^ \prime \xi_\psi) + \frac{1}{\mathcal{J}} \frac{\partial \xi_s}{\partial \zeta} \\ -&= - \frac{1}{\mathcal{J}} \sum_{m}^{} \sum_{n}^{} \left(\chi ^ \prime \frac{\partial}{\partial \psi}(v_{m,n}(\psi)) + \chi^{\prime\prime}v_{m,n}(\psi) + 2\pi i n u_{m,n}(\psi) \right) \cdot \exp 2\pi i(m\theta -n\zeta) +&= - \frac{1}{\mathcal{J}} \sum_{m}^{} \sum_{n}^{} \left(\chi ^ \prime \frac{\partial}{\partial \psi}(v_{m,n}(\psi)) + \chi^{\prime\prime}v_{m,n}(\psi) + 2\pi i n u_{m,n}(\psi) \right) \cdot \exp\!\bigl[2\pi i(m\theta -n\zeta)\bigr] \end{align} \begin{align} @@ -1266,25 +1286,6 @@ \subsection{Reconstruction v1} \exp\!\bigl(2 \pi i(m\theta - n\zeta)\bigr). \end{align} -\paragraph{Implementation note on \texttt{reg\_flag}.} -The formulas above are the unregularized Bernstein reconstruction. In -\texttt{gpeq\_sol} and \texttt{gpeq\_c}, the code may instead use modified -tangential quantities when \texttt{reg\_flag=.true.}. The modification replaces -the radial derivative and surface variable entering the tangential upper -components by -\begin{equation} -x_{\psi}' \longrightarrow x_{\psi}'\, -\frac{(m-nq)^2}{(m-nq)^2+\texttt{reg\_spot}^2}, -\qquad -x_s \longrightarrow x_s^{\mathrm{mod}}, -\end{equation} -and then forms \texttt{bmt\_mn} and \texttt{bmz\_mn} from these modified -quantities. Therefore, if \texttt{reg\_flag=.false.}, \texttt{bmt\_mn=bwt\_mn} -and \texttt{bmz\_mn=bwz\_mn}, so the code follows the expressions above. If -\texttt{reg\_flag=.true.}, the v1 diagnostic is a regularized reconstruction -near rational surfaces \(m-nq=0\), not the strictly unregularized Bernstein -formula. - Then the current vector can be reconstructed by the Grad-Shafranov equation: \begin{align} \mu_0 \vec{j} &= \mathcal{J} (\mu_0 j^{\psi} \nabla \theta \times \nabla \zeta + \mu_0 j^{\theta} \nabla \zeta \times \nabla \psi + \mu_0 j^{\zeta} \nabla \psi \times \nabla \theta) \\ @@ -1316,34 +1317,27 @@ \subsection{Reconstruction v1} \end{aligned} \end{equation} -With this definition, the reconstructed $\vec C$ should satisfy the identity -\begin{equation} -(\nabla\times \vec C)\cdot \nabla \psi -= -\nabla\cdot\left(\vec C\times \nabla \psi\right) -=0, -\end{equation} -which is the relation referred to in the code as the \texttt{C verify} -check; see also the discussion of the Bernstein energy-principle form in -\cite{RevModPhys.76.1071}. The verification target is therefore the vanishing of -$ (\nabla\times \vec C)\cdot \nabla \psi $, or equivalently -$ \nabla\cdot(\vec C\times \nabla \psi) $. In the code, this same quantity -is evaluated through its flux-coordinate form +The correction term that turns the bare perturbed field $\vec Q$ into the effective field +$\vec C$, namely $\vec V\equiv\vec C-\vec Q=(\vec\xi\cdot\hat n)(\mu_0\vec j\times\hat n)$, has +contravariant and covariant components ($\vec V=V_i\nabla x^i$): \begin{equation} -(\nabla\times \vec C)\cdot \nabla \psi -= -\frac{1}{\mathcal{J}} -\left( -\frac{\partial C_\zeta}{\partial \theta} -- -\frac{\partial C_\theta}{\partial \zeta} -\right). +\begin{aligned} +V^\psi &= 0 +&\qquad +V_\psi &= \frac{\mathcal{J}\xi_\psi}{|\nabla\psi|^2} +\bigl[ \mu_0 j^\theta (\nabla\psi\cdot\nabla\zeta) +- \mu_0 j^\zeta (\nabla\psi\cdot\nabla\theta) \bigr] \\ +V^\theta &= \frac{\xi_\psi}{|\nabla\psi|^2 \mathcal{J}} +(\mu_0j^\theta g_{23} + \mu_0j^\zeta g_{33}) +&\qquad +V_\theta &= \mathcal{J}\xi_\psi\,\mu_0 j^\zeta \\ +V^\zeta &= -\frac{\xi_\psi}{|\nabla\psi|^2 \mathcal{J}} +(\mu_0j^\theta g_{22} + \mu_0j^\zeta g_{23}) +&\qquad +V_\zeta &= -\mathcal{J}\xi_\psi\,\mu_0 j^\theta +\end{aligned} +\label{eq:Vcomp} \end{equation} -Here $C_\theta$ and $C_\zeta$ are the covariant components in -$\vec C = C_\psi \nabla\psi + C_\theta \nabla\theta + C_\zeta \nabla\zeta$. -Therefore the present verification tests whether the reconstructed covariant -components satisfy this cancellation to numerical roundoff on each -reconstructed flux surface. For direct reconstruction on the $(\psi,\theta)$ grid, the energy density is closed by the metric contraction \begin{equation} @@ -1374,7 +1368,87 @@ \subsection{Reconstruction v1} \end{aligned} \end{equation} -\subsection{Reconstruction $\boldsymbol{v2}$ : Matrix representation of $\delta W$} +\begin{figure}[t] + \centering + \includegraphics[width=0.62\linewidth]{C_eulerian_lagrangian_n1.png} + \caption{Effective field $\vec C$ on two flux surfaces ($\psi=0.45,\,0.82$) in the + (a)~Eulerian and (b)~Lagrangian frames: equilibrium current $\vec j$ (blue) and its + apparent normal component (red). DIII-D \#147131 at $2300$~ms; $n=1$, displacement + exaggerated.} + \label{fig:C_frame} +\end{figure} + +\paragraph{Verification: $\vec C$ as an effective field and the $\nabla\times\vec C$ check.} +The reconstruction is closed by a self-consistency test of the condition +$(\nabla\times\vec C)\cdot\nabla\psi=0$, which holds on every flux surface and admits both a +variational and a physical reading. \emph{Variationally}, it is the Euler--Lagrange +equation obtained when the surface displacement $\xi_s$ is eliminated by minimizing +$\delta W$ at fixed $\xi_\psi$: because $\xi_s$ enters the energy only through +$\nabla\xi_s\times\nabla\psi$ in $|\vec C|^2$---the compressional term +$\gamma p\,|\nabla\cdot\vec\xi|^2$ being carried by a separate (parallel) displacement +component---the stationarity condition is $\nabla\cdot(\vec C\times\nabla\psi)=0$, i.e.\ +$(\nabla\times\vec C)\cdot\nabla\psi=0$. + +\emph{Physically}, in analogy with Amp\`ere's law the curl of $\vec C$ defines an effective +perturbed current, +\begin{equation} +\nabla\times\vec B=\mu_0\vec j +\quad\Longrightarrow\quad +\vec j_{\mathrm{eff}}\equiv\frac{\nabla\times\vec C}{\mu_0}, +\end{equation} +so the reconstruction condition states exactly that this effective current is tangent to the +flux surface, $(\nabla\times\vec C)\cdot\nabla\psi=0\Leftrightarrow\vec j_{\mathrm{eff}}\cdot\nabla\psi=0$. In the equilibrium the current +lies in flux surfaces, $\vec j\cdot\nabla\psi=0$. Under an ideal-MHD displacement the flux +is frozen into the fluid, so each surface is convected to the perturbed label +$\Psi=\psi-\vec\xi\cdot\nabla\psi$; followed along this displaced surface (the Lagrangian +description) the perturbed current keeps no component through it. Referred instead to the +unperturbed normal $\hat n=\nabla\psi/|\nabla\psi|$ at a fixed point---the Eulerian +description natural to DCON's fixed control surface---the convected equilibrium current +acquires an \emph{apparent} normal component; with $\vec Q=\delta\vec B$, +\begin{equation} +\frac{1}{\mu_0}(\nabla\times\vec Q)\cdot\nabla\psi +=\nabla\cdot\!\big[(\vec\xi\cdot\nabla\psi)\,\vec j\big] +=-\,\nabla\psi\cdot\nabla\times\!\big[\xi_n(\vec j\times\hat n)\big]\neq0, +\end{equation} +where the middle equality uses $\nabla\cdot(a\vec j)=\vec j\cdot\nabla a$ (as +$\nabla\cdot\vec j=0$), and the last uses $\nabla\psi\cdot\nabla\times\vec G=\nabla\cdot(\vec G\times\nabla\psi)$ +(valid since $\nabla\times\nabla\psi=0$) together with $\nabla\psi=|\nabla\psi|\hat n$ and the +triple product $(\vec j\times\hat n)\times\hat n=(\vec j\cdot\hat n)\hat n-\vec j=-\vec j$ +(because $\vec j\cdot\hat n=0$), giving +$\nabla\cdot[(\vec\xi\cdot\nabla\psi)\vec j]=-\nabla\psi\cdot\nabla\times[\xi_n(\vec j\times\hat n)]$. +This apparent normal component is an artifact of measuring a displaced surface against its +original normal. The cross term +$\xi_n(\mu_0\vec j\times\hat n)$ in the definition of $\vec C$ is exactly this convective +(Lagrangian$\leftrightarrow$Eulerian) contribution and cancels it, +\begin{equation} +(\nabla\times\vec C)\cdot\nabla\psi +=(\nabla\times\vec Q)\cdot\nabla\psi ++\mu_0\,\nabla\psi\cdot\nabla\times\!\big[\xi_n(\vec j\times\hat n)\big]=0. +\end{equation} +Hence $\vec C$ is an \emph{effective perturbed magnetic field}---the Eulerian field +$\vec Q$ corrected onto the displaced surface, not the perturbed flux $\Psi$ itself---whose +curl is the genuine surface current (Fig.~\ref{fig:C_frame}); where $\vec j=0$ (e.g.\ outside the plasma) the +correction drops and $\vec C=\vec Q$. (See Boozer~\cite{RevModPhys.76.1071}; +Park~\cite{Park2009Ideal}, \S2.2.) + +The code's \texttt{C verify} check tests this condition on the reconstructed components +through its flux-coordinate form +\begin{equation} +(\nabla\times \vec C)\cdot \nabla \psi += +\frac{1}{\mathcal{J}} +\left( +\frac{\partial C_\zeta}{\partial \theta} +- +\frac{\partial C_\theta}{\partial \zeta} +\right), +\end{equation} +with $C_\theta,C_\zeta$ the covariant components of +$\vec C=C_\psi\nabla\psi+C_\theta\nabla\theta+C_\zeta\nabla\zeta$; it thus verifies that the +reconstructed components satisfy this cancellation to numerical roundoff on each flux +surface. + +\subsection{Reconstruction v2: radial matrix representation of $\delta W$} In this part, we show that the reconstructed Bernstein form can be written in the same radial matrix structure as the DCON/Newcomb formulation. \begin{equation} \boxed{\;\vec v_i\cdot\vec v_j=\frac{g_{ij}}{\mathcal{J}^2}\;} @@ -1528,9 +1602,10 @@ \subsection{Reconstruction $\boldsymbol{v2}$ : Matrix representation of $\delta \noindent Define \begin{equation} -\mathbf Q_0\equiv \mathbf X+\mathbf Y+\mathbf Z+\mathbf U, +\mathbf Q \equiv \mathbf X+\mathbf Y+\mathbf Z+\mathbf U, \qquad -\vec C=\mathbf Q_0+\mathbf V . +\vec C=\mathbf Q+\mathbf V . +\label{eq:CeqQplusV} \end{equation} Then the Bernstein part of the energy is \begin{equation} @@ -1539,15 +1614,15 @@ \subsection{Reconstruction $\boldsymbol{v2}$ : Matrix representation of $\delta &= \int d\psi d\theta d\zeta\,\mathcal J \Big[ -|\mathbf Q_0|^2 -+\mathbf Q_0^*\cdot\mathbf V+\mathbf V^*\cdot\mathbf Q_0 \\ +|\mathbf Q|^2 ++\mathbf Q^*\cdot\mathbf V+\mathbf V^*\cdot\mathbf Q \\ &\qquad +|\mathbf V|^2 -\mu_0K\frac{|\xi_\psi|^2}{|\nabla\psi|^2} \Big]. \end{aligned} \end{equation} -Using \(e_m\equiv e^{2\pi i(m\theta-n\zeta)}\), the four $\mathbf Q_0$ pieces are +Using \(e_m\equiv e^{2\pi i(m\theta-n\zeta)}\), the four $\mathbf Q$ pieces are \begin{equation} \begin{aligned} \mathbf X @@ -1583,31 +1658,7 @@ \subsection{Reconstruction $\boldsymbol{v2}$ : Matrix representation of $\delta & \Xi_\psi^\dagger\Xi_\psi & \mathbf H . \end{array} \end{equation} -Concretely, every entry is obtained by expanding the product in Fourier modes and using -\begin{equation} -\int_0^1 d\theta\, -\mathcal J\,e^{2\pi i(m'-m)\theta} -(\vec v_i\cdot\vec v_j) -= -(G_{ij})_{mm'}. -\end{equation} -Equivalently, if -\begin{equation} -\mathbf P=\sum_m p_m e_m P_m^i\vec v_i, -\qquad -\mathbf R=\sum_{m'} r_{m'} e_{m'} R_{m'}^j\vec v_j, -\end{equation} -then -\begin{equation} -\boxed{ -\int_0^1 d\theta\,\mathcal J\,\mathbf P^*\cdot\mathbf R -= -\sum_{m,m'}p_m^* -\left[ -\sum_{i,j} (P_m^i)^*(G_{ij})_{mm'}R_{m'}^j -\right]r_{m'} . -} -\end{equation} + This is the actual route from the real-space Bernstein expression to the radial matrix form. The factors \(m\) and \(m-nq\) are then written as the diagonal matrices \(\mathbf M\) and \(\mathbf Q\). For instance, \begin{equation} @@ -1640,8 +1691,8 @@ \subsection{Reconstruction $\boldsymbol{v2}$ : Matrix representation of $\delta \begin{equation} \begin{aligned} 2\mu_0\delta W_{\mathrm{term1}} & = \int d\psi d\theta d\zeta \mathcal{J} [|\vec{C}|^2]\\ -&= \int d\psi d\theta d\zeta \mathcal{J}\{ |\mathbf Q_0|^2+ -\left[\mathbf Q_0\cdot\mathbf V^* + \mathbf V \cdot \mathbf Q_0^* +&= \int d\psi d\theta d\zeta \mathcal{J}\{ |\mathbf Q|^2+ +\left[\mathbf Q\cdot\mathbf V^* + \mathbf V \cdot \mathbf Q^* \right]+|\mathbf V|^2\} . \end{aligned} \end{equation} @@ -1734,7 +1785,7 @@ \subsection{Reconstruction $\boldsymbol{v2}$ : Matrix representation of $\delta } \end{equation} -\paragraph{Blocks from \(\mathbf Q_0^*\cdot\mathbf Q_0\)} +\paragraph{Blocks from \(\mathbf Q^*\cdot\mathbf Q\)} Applying the projection rule above to the products that do not contain \(\mathbf V\) gives the following blocks: \begin{equation} @@ -2539,99 +2590,21 @@ \subsection{Reconstruction $\boldsymbol{v2}$ : Matrix representation of $\delta \medskip \noindent\rule{\linewidth}{0.4pt} -\paragraph{The scalar current--pressure block.} -The reduction to a radial matrix is automatic once the integrand is a -bilinear form in the Fourier amplitudes -\((\Xi_s,\Xi_\psi,\Xi_\psi')\). What is not automatic is the equality between -the expanded Bernstein \(\mathbf V\)-sector and the compact DCON -current--pressure block. Using the energy-principle transformation proved in -the previous section, the required sesquilinear identity is -\begin{equation} -\mathcal J -\left[ -\mathbf Q_0^*\!\cdot\mathbf V+\mathbf V^*\!\cdot\mathbf Q_0 -+|\mathbf V|^2 --\mu_0K\frac{|\xi_\psi|^2}{|\nabla\psi|^2} -\right] -\equiv -\mathcal I_{\mathrm{cp}}, -\end{equation} -up to the periodic surface-divergence terms that integrate to zero. Therefore -the compact DCON matrices follow from the equivalent DCON current--pressure -density below. A term-by-term reduction of the separate Bernstein pieces is -not sufficient. +\paragraph{Closed form of the $\mathbf V$-sector ($\mathbf H_4$).} -The separate pure-\(\Xi_\psi\) terms -\(\mathbf Y^*\cdot\mathbf V+\mathbf V^*\cdot\mathbf Y\), -\(\mathbf U^*\cdot\mathbf V+\mathbf V^*\cdot\mathbf U\), -\(|\mathbf V|^2\), and -\(-\mu_0K|\xi_\psi|^2/|\nabla\psi|^2\) -are intermediate Bernstein pieces. For a closed derivation of their sum, use the DCON current--pressure density +The four pure-$\Xi_\psi$ contributions assemble into \begin{equation} -\begin{aligned} -\mathcal I_{\mathrm{cp}} -&= -\xi_\psi\,\mathbf J\cdot\nabla\xi_s --\xi_s\,\mathbf J\cdot\nabla\xi_\psi -+\left[J_\theta(q\chi')'-J_\zeta\chi''\right]|\xi_\psi|^2 -+\frac{P'}{\mathcal J}\left(\mathcal J|\xi_\psi|^2\right)' , -\end{aligned} +\boxed{\;\mathbf H_4=\mathbf H_{YV}+\mathbf H_{UV}+\mathbf H_V+\mathbf H_K\;,} \end{equation} -where \(\mathbf J=\nabla\times\mathbf B=\mu_0\mathbf j\) and \(P'=\mu_0p'\). The first two terms give the already derived \(\mathbf C_3\). The remaining two terms determine \(\mathbf E_3\) and \(\mathbf H_4\): +equal, term by term, to the $\mathbf V$-sector of the Bernstein form +\eqref{eq:ep_bernsteinK} without invoking any equilibrium identity. The +Grad--Shafranov equation reduces it to the compact block \begin{equation} -\begin{aligned} -\mathcal J\left[J_\theta(q\chi')'-J_\zeta\chi''\right]|\xi_\psi|^2 -&= -|\xi_\psi|^2 -\left[ --2\pi f'q'\chi' -+\mu_0p'\mathcal J\frac{\chi''}{\chi'} -\right],\\ -\mu_0p'\left(\mathcal J|\xi_\psi|^2\right)' -&= -\mu_0p'\mathcal J' -|\xi_\psi|^2 -+\mu_0p'\mathcal J -\left(\xi_\psi^{\prime *}\xi_\psi+\xi_\psi^*\xi_\psi'\right). -\end{aligned} -\end{equation} -Therefore -\begin{equation} -\boxed{ -\begin{aligned} -\mathbf Z^*\!\cdot\mathbf V+\mathbf V^*\!\cdot\mathbf Z -&\leadsto -\Xi_\psi^{\prime\dagger}\mathbf E_3\Xi_\psi -+\Xi_\psi^\dagger\mathbf E_3^\dagger\Xi_\psi',\\ -\mathbf E_3&=\mu_0p'\mathbf J, -\end{aligned} -} -\end{equation} -and -\begin{equation} -\boxed{ -\begin{aligned} -(\mathbf Y^*\cdot\mathbf V+\mathbf V^*\cdot\mathbf Y) -+ -(\mathbf U^*\cdot\mathbf V+\mathbf V^*\cdot\mathbf U) -+ -|\mathbf V|^2 -- -\mu_0\frac{K}{|\nabla\psi|^2}|\xi_\psi|^2 -&\leadsto\; -\Xi_\psi^\dagger \mathbf H_4 \Xi_\psi, \\ -\qquad -\mathbf H_4 -&= -\mu_0p' -\left( -\frac{\chi''}{\chi'}\mathbf J+\mathbf J' -\right) -- -2\pi f'q'\chi' \mathbf I. -\end{aligned} -} +\boxed{\; +\mathbf H_4=\mu_0p'\left(\frac{\chi''}{\chi'}\mathbf J+\mathbf J'\right) +-2\pi f'q'\chi'\,\mathbf I\;,} \end{equation} +as proved in Appendix~\ref{app:h4}. The complete term-to-matrix assignment is therefore \begin{equation} @@ -2671,37 +2644,43 @@ \subsection{Reconstruction $\boldsymbol{v2}$ : Matrix representation of $\delta \end{aligned} } \end{equation} -Subject to the same boundary and reduced-compressional assumptions stated -above, this is the DCON-normalized version of the matrix structure in -Eq.~(35) of \texttt{dcon.tex}. Thus the Bernstein form and the original DCON -current--pressure form lead to the same radial matrix functional; the -$\mathbf V$-dependent pieces are intermediate cancellation/recombination -terms, not extra physics. +Subject to the boundary and reduced-compressional assumptions stated above, +this is the DCON-normalized version of the matrix structure in Eq.~(35) of +\texttt{dcon.tex}: the Bernstein form and the original DCON current--pressure +form yield the same radial matrix functional, the $\mathbf V$-dependent pieces +being purely intermediate recombination terms. \section{Variable Naming Convention and Mathematical Symbols} +\label{sec:naming} -This section summarizes the implementation of C and Q vectors with proper tensor transformations between contravariant and covariant representations. +This section summarizes the code implementation of the $\vec C$ and $\vec Q$ vectors and the tensor transformations between their contravariant and covariant representations. \subsection{Fundamental Transformation Laws} -The C and Q vectors are defined in two complementary basis systems: +The C and Q vectors are defined using a dual gradient basis and a tangent basis: -\textbf{Contravariant basis:} $\vec{w}_i \equiv \nabla \psi, \nabla \theta, \nabla \zeta$ \\ -\textbf{Covariant basis:} $\vec{v}_i \equiv \nabla \theta \times \nabla \zeta, \nabla \zeta \times \nabla \psi, \nabla \psi \times \nabla \theta$ +\textbf{Gradient basis (covariant one-forms):} +$\vec{w}_i \equiv \nabla \psi, \nabla \theta, \nabla \zeta$ \\ +\textbf{Jacobian-scaled tangent basis:} +$\vec{v}_i \equiv \nabla \theta \times \nabla \zeta, \nabla \zeta \times \nabla \psi, \nabla \psi \times \nabla \theta$, +so that the true tangent basis is \(\vec e_i=\mathcal J\vec v_i\). \begin{equation} \boxed{ \begin{aligned} \text{Contravariant} \quad &Q^i = \frac{b^i}{\mathcal{J}} \\ \text{Covariant} \quad &Q_i = g_{ij} Q^j = g_{ij} \frac{b^j}{\mathcal{J}} \\ -\text{Physics method} \quad &C_i = Q_i + ((\mu_0 \mathbf{j} \times \hat{n})\cdot (\xi \cdot \hat{n}))_i +\text{Physics method} \quad &C_i = Q_i + \left[\xi_n(\mu_0 \mathbf{j} \times \hat{n})\right]_i \end{aligned} } \end{equation} -where $\mathcal{J}$ is the Jacobian, $g_{ij}$ is the metric tensor at MODE index 0. +where $\mathcal{J}$ is the Jacobian, \(g_{ij}\) is the true covariant tangent +metric, \(\xi_n=\boldsymbol\xi\cdot\hat n\), and \(b^i\equiv\mathcal J Q^i\) +denotes the Jacobian-weighted contravariant arrays stored by the code +(\texttt{bwp}, \texttt{bwt}, \texttt{bwz}). \subsection{Code Variable Mapping Table} -\subsubsection*{C Vector - Contravariant (w-basis, $C^i$)} +\subsubsection*{C Vector - Contravariant components in the tangent basis ($C^i$)} \begin{table}[h!] \centering \begin{tabular}{|l|l|} @@ -2715,7 +2694,7 @@ \subsubsection*{C Vector - Contravariant (w-basis, $C^i$)} \end{tabular} \end{table} -\subsubsection*{C Vector - Covariant (v-basis, $C_i$)} +\subsubsection*{C Vector - Covariant components in the gradient basis ($C_i$)} \begin{table}[h!] \centering \begin{tabular}{|l|l|} @@ -2746,6 +2725,1138 @@ \subsubsection*{Input Variables and Parameters} \end{tabular} \end{table} +\section{Log-output quantities and their exact integrands} +\label{sec:logmap} + +This section gives the precise mathematical definition of every scalar +printed to the terminal and to \texttt{gpec.log} by the three reconstruction +diagnostics. The three blocks correspond to the input flags +\texttt{recon\_flag} (\texttt{GPEC\_RECON}, driver \texttt{gpout\_recon}), +\texttt{recon\_flag2} (\texttt{GPEC\_RECON2}, driver \texttt{gpout\_recon2} +$\to$ \texttt{gpeq\_firstform}), and \texttt{recon\_flag3} +(\texttt{GPEC\_RECON3}, driver \texttt{gpout\_recon3} $\to$ +\texttt{gpeq\_recon3}). + +The DCON normalization factor that converts the GPEC energy to the +DCON-normalized $\delta W$, used in the normalized outputs below, is +\begin{equation} +\texttt{dcon\_fac} +=\frac{2\mu_0}{\psi_o^{2}\,(10^{-3}\chi')^{2}}, +\qquad +\chi'=2\pi\psi_o . +\end{equation} + +\subsection{\texttt{GPEC\_RECON} (\texttt{recon\_flag})} + +This route reconstructs the closed Bernstein form \eqref{eq:ep_bernsteinK}, +\begin{equation} +\delta W_p=\frac{1}{2\mu_0}\int d\tau_p +\Big\{\,|\vec C|^2 ++\mu_0\gamma p\,|\nabla\!\cdot\!\vec\xi|^2 +-\mu_0 K\,|\xi_n|^2\,\Big\}, +\qquad +\vec C\equiv\vec Q+\xi_n\,(\mu_0\vec j\times\hat n), +\label{eq:dWp_recon1} +\end{equation} +For the reduced diagnostic used here the positive compressional norm +\(\gamma p\,|\nabla\!\cdot\!\vec\xi|^2\) is omitted; this is a reconstruction +assumption, not a general ideal-MHD identity. The reconstructed energy is then +\(\delta W_p=\tfrac{1}{2\mu_0}\int(|\vec C|^2-\mu_0K|\xi_n|^2)\,d\tau_p\). +Here the symbols are +\begin{itemize} +\item $\vec Q=\nabla\times(\vec\xi\times\vec B)$ is the perturbed field; +\item $\xi_n\equiv\vec\xi\cdot\hat n$ is the normal displacement, $\hat + n=\nabla\psi/|\nabla\psi|$ (code \texttt{xno\_mn}); +\item $\vec C=\vec Q+\xi_n(\mu_0\vec j\times\hat n)$ is the cross vector, + whose squared norm is closed by the metric contraction + $|\vec C|^2=g_{ij}C^{i*}C^{j}=C_i^*C^i$ (routine \texttt{gpeq\_epf}); +\item $K=K_1+K_2+K_3$ is the destabilizing curvature kernel (routine + \texttt{gpeq\_K}) integrated against $|\xi_n|^2$ (routine + \texttt{gpeq\_dst}). +\end{itemize} +The printed scalars are the radial/poloidal integrals of these pieces: + +\begin{align} +\texttt{C2\_psi/mu0} +&=\int\! d\psi\,\frac{1}{\mu_0}\oint + \mathrm{Re}\!\big[(C^\psi)^*\,C_\psi\big]\,\mathcal J\,d\theta,\\ +\texttt{C2\_theta/mu0} +&=\int\! d\psi\,\frac{1}{\mu_0}\oint + \mathrm{Re}\!\big[(C^\theta)^*\,C_\theta\big]\,\mathcal J\,d\theta,\\ +\texttt{C2\_zeta/mu0} +&=\int\! d\psi\,\frac{1}{\mu_0}\oint + \mathrm{Re}\!\big[(C^\zeta)^*\,C_\zeta\big]\,\mathcal J\,d\theta,\\ +\texttt{int\_J\_C2\_over\_mu0} +&=\texttt{C2\_psi/mu0}+\texttt{C2\_theta/mu0}+\texttt{C2\_zeta/mu0} + =\int\! d\psi\,\frac{1}{\mu_0}\oint |\vec C|^2\,\mathcal J\,d\theta. +\end{align} +The curvature ($K$) pieces, with +$K_1=|\nabla\psi|^2\,\sigma\,S$ (shear $S$), +$K_2=\mu_0 B^2\sigma^2$ (parallel current), and +$K_3=2p'\kappa_\psi$ (curvature projection +\(\kappa_\psi=\boldsymbol\kappa\cdot\nabla\psi\)), give +\begin{align} +\texttt{Ki\_xin2} +&=\int\! d\psi\oint K_i\,|\xi_n|^2\,\mathcal J\,d\theta, +\qquad i=1,2,3,\\ +\texttt{int\_J\_K\_xin2} +&=\sum_{i=1}^{3}\texttt{Ki\_xin2} + =\int\! d\psi\oint K\,|\xi_n|^2\,\mathcal J\,d\theta. +\end{align} +The reconstructed potential energy and its DCON-normalized value are +\begin{align} +\texttt{dW\_p(recon)} +&=\tfrac12\bigl(\texttt{int\_J\_C2\_over\_mu0}-\texttt{int\_J\_K\_xin2}\bigr) + =\tfrac12\!\int\!\Big[\tfrac{|\vec C|^2}{\mu_0}-K|\xi_n|^2\Big] + \mathcal J\,d\psi\,d\theta,\\ +\texttt{dW\_p(recon-normalize)} +&=\texttt{dcon\_fac}\times\texttt{dW\_p(recon)} . +\end{align} +The \texttt{C verify} block reports $\max$/$\mathrm{rms}$ of +$(\nabla\times\vec C)\cdot\nabla\psi=\tfrac1{\mathcal J} +(\partial_\theta C_\zeta-\partial_\zeta C_\theta)$, which must vanish to +\texttt{tol}. + +\subsection{\texttt{GPEC\_RECON2} (\texttt{recon\_flag2})} + +This route reconstructs the original ``first form'' of $\delta W_p$, Eq.~\eqref{eq:ep_first}, +\begin{equation} +\delta W_p=\frac{1}{2\mu_0}\int d\tau_p +\Big\{\,|\vec Q|^2 +-\mu_0\,\vec j\cdot\vec Q\times\vec\xi^{*} ++\mu_0\gamma p\,|\nabla\!\cdot\!\vec\xi|^2 ++\mu_0(\nabla\!\cdot\!\vec\xi)^{*}\,\vec\xi\cdot\nabla p\,\Big\}, +\label{eq:dWp_recon2} +\end{equation} +The reduced diagnostic omits only the positive +\(\gamma p|\nabla\!\cdot\!\vec\xi|^2\) norm; the pressure--compression coupling +term is retained. The three retained groups map one-to-one onto the printed +scalars, with +\begin{itemize} +\item $|\vec Q|^2$ $\to$ \texttt{int\_J\_Q2\_over\_mu0}; +\item the current cross term $-\vec j\cdot\vec Q\times\vec\xi^{*}$ $\to$ + \texttt{int\_J\_jQxixi\_over\_mu0} (evaluated as a determinant of the + Jacobian-weighted contravariant $Q$ and $\xi$ components against + $\mu_0 j^\theta,\mu_0 j^\zeta$); +\item the pressure--compression term + $(\nabla\!\cdot\!\vec\xi)^{*}\,\vec\xi\cdot\nabla p$ $\to$ + \texttt{int\_J\_pdiv\_term}. +\end{itemize} +The route (routine \texttt{gpeq\_firstform}) evaluates these groups pointwise +in $\theta$ and integrates in $\psi$. Writing +$\tilde Q^i\equiv\mathcal JQ^i$ and $\tilde\xi^i\equiv\mathcal J\xi^i$ for the +Jacobian-weighted contravariant components, +\begin{align} +\texttt{int\_J\_Q2\_over\_mu0} +&=\int\! d\psi\,\frac{1}{\mu_0}\oint + \mathrm{Re}\!\big[Q_\psi^*Q^\psi+Q_\theta^*Q^\theta+Q_\zeta^*Q^\zeta\big] + \mathcal J\,d\theta + =\int\! d\psi\,\frac{1}{\mu_0}\oint|\vec Q|^2\,\mathcal J\,d\theta,\\ +\texttt{int\_J\_jQxixi\_over\_mu0} +&=\int\! d\psi\,\frac{1}{\mu_0}\oint\frac{1}{\mathcal J} + \Big[-\mu_0 j^\theta\bigl(\tilde Q^\psi\,\tilde\xi^{\zeta*}-\tilde Q^\zeta\,\tilde\xi^{\psi*}\bigr) + +\mu_0 j^\zeta\bigl(\tilde Q^\psi\,\tilde\xi^{\theta*}-\tilde Q^\theta\,\tilde\xi^{\psi*}\bigr) + \Big]\mathcal J\,d\theta + =\int\! d\psi\oint \vec j\cdot(\vec Q\times\vec\xi^{\,*})\,\mathcal J\,d\theta,\\ +\texttt{int\_J\_pdiv\_term} +&=\int\! d\psi\oint + (\nabla\!\cdot\!\vec\xi)^{*}\,p'\,\xi^{\psi}\, + \mathcal J\,d\theta,\\ +\texttt{int\_J\_total} +&=\texttt{int\_J\_Q2\_over\_mu0} + -\texttt{int\_J\_jQxixi\_over\_mu0} + +\texttt{int\_J\_pdiv\_term}. +\end{align} +Here $\tilde Q^i=\mathcal JQ^i$ and $\tilde\xi^i=\mathcal J\xi^i$ are the +Jacobian-weighted \emph{contravariant} components (code variables +\texttt{bwp\_fun}, \texttt{bmt\_fun}, \texttt{bmz\_fun} and +\texttt{xwp\_fun}, \texttt{xmt\_fun}, \texttt{xmz\_fun}), and +$\nabla\!\cdot\!\vec\xi$ is the compressional density assembled in +\texttt{divxi\_density}. The reconstructed energy is +\begin{equation} +\texttt{dW\_p(recon2)}=\tfrac12\,\texttt{int\_J\_total}, +\qquad +\texttt{dW\_p(recon2-normalize)}=\texttt{dcon\_fac}\times\texttt{dW\_p(recon2)} . +\end{equation} +Each line is printed as a complex pair (real, imaginary); the imaginary part +is a roundoff diagnostic and should vanish. + +\subsection{\texttt{GPEC\_RECON3} (\texttt{recon\_flag3})} + +This route keeps the same closed form as recon1, Eq.~\eqref{eq:dWp_recon1}, +but expands the cross-energy density $|\vec C|^2$ term by term using +$\vec C=\vec Q+\vec V$, Eq.~\eqref{eq:CeqQplusV}, +\begin{equation} +|\vec C|^2=|\vec Q|^2+2\,\mathrm{Re}\bigl(\vec V^{*}\!\cdot\vec Q\bigr) ++|\vec V|^2 . +\label{eq:Cdecomp} +\end{equation} +Crucially, $\vec V$ is evaluated \emph{directly} from its explicit components +in Eq.~\eqref{eq:Vcomp} (equilibrium current, metric, and $\xi_\psi$), not as +$\vec C-\vec Q$, so the $B$ term below does not depend on the reconstructed +$\vec C$. Using that $\vec j$ is tangent to the flux surface ($\vec +j\cdot\hat n=0$), the last piece separates into a parallel-current and a +perpendicular (Pfirsch--Schl\"uter) contribution, +\begin{equation} +|\vec V|^2=\mu_0^2\,|\xi_n|^2\Bigl(\sigma^2B^2 ++\frac{p'^2|\nabla\psi|^2}{B^2}\Bigr). +\end{equation} +The five printed scalars are the $\psi,\theta$ integrals of the four density +pieces of Eq.~\eqref{eq:Cdecomp} plus the full $|\vec C|^2$: +\begin{align} +\texttt{A\_total} +&=\int\! d\psi\,\frac{1}{\mu_0}\oint|\vec Q|^2\,\mathcal J\,d\theta + \;\;(=\texttt{int\_J\_Q2\_over\_mu0}\ \text{of recon2}),\\ +\texttt{B\_total} +&=\int\! d\psi\,\frac{2}{\mu_0}\oint + \mathrm{Re}\!\big[V_i^{*}\,Q^{i}\big]\,\mathcal J\,d\theta + \;\;\bigl(=\tfrac{2}{\mu_0}\!\int\!\mathrm{Re}(\vec V^{*}\!\cdot\vec Q)\bigr),\\ +\texttt{Cpar\_total} +&=\int\! d\psi\oint \mu_0\,\sigma^2 B^2\,|\xi_n|^2\,\mathcal J\,d\theta + \;\;(=\texttt{K2\_xin2}\ \text{of recon1}=dst_2),\\ +\texttt{Iperp\_total} +&=\int\! d\psi\oint \frac{\mu_0\,(p')^2\,|\nabla\psi|^2}{B^2}\,|\xi_n|^2\, + \mathcal J\,d\theta,\\ +\texttt{epf\_total} +&=\int\! d\psi\,\frac{1}{\mu_0}\oint|\vec C|^2\,\mathcal J\,d\theta + \;\;(=\texttt{int\_J\_C2\_over\_mu0}\ \text{of recon1}). +\end{align} +The closure of the decomposition is reported as +\begin{equation} +\texttt{identity\_res} +=\texttt{epf\_total} +-\bigl(\texttt{A\_total}+\texttt{B\_total} + +\texttt{Cpar\_total}+\texttt{Iperp\_total}\bigr), +\end{equation} +which must vanish to roundoff since +$|\vec C|^2=|\vec Q|^2+2\,\mathrm{Re}(\vec V^{*}\!\cdot\vec Q)+|\vec V|^2$. + +\subsubsection{Combined $\delta W_p$ and the $K_2$ cancellation} +\label{sec:recon3_combined} + +The recon3 outputs $(A,B,I_\perp)$ can be combined with the recon1 +destabilizing pieces $\mathrm{dst}_1,\mathrm{dst}_3$ to write $\delta W_p$ in a +form in which the parallel-current contribution cancels identically. Start +from the recon1 form, Eq.~\eqref{eq:dWp_recon1}, +\begin{equation} +\delta W_p=\frac12\Bigl[\int\mathcal J\,\frac{|\vec C|^2}{\mu_0}\, +-\int\mathcal J\,K\,|\xi_n|^2\Bigr]. +\end{equation} +The recon3 decomposition of the stabilizing density reads +\begin{equation} +\int\mathcal J\,\frac{|\vec C|^2}{\mu_0} +=A+B+C_\parallel+C_\perp, +\qquad +C_\parallel=\mathrm{dst}_2\ (=K_2|\xi_n|^2\ \text{integral}),\quad +C_\perp=I_\perp, +\end{equation} +while the curvature kernel splits as +$\int\mathcal J\,K\,|\xi_n|^2=\mathrm{dst}_1+\mathrm{dst}_2+\mathrm{dst}_3$. +Substituting, +\begin{equation} +2\,\delta W_p +=(A+B+\mathrm{dst}_2+I_\perp) +-(\mathrm{dst}_1+\mathrm{dst}_2+\mathrm{dst}_3). +\end{equation} +The term $\mathrm{dst}_2$ ($=K_2|\xi_n|^2$, the parallel-current$^2$ piece) +enters $|\vec C|^2$ and $K$ with \emph{opposite} sign and cancels exactly, +leaving +\begin{equation} +\boxed{\;2\,\delta W_p=A+B+I_\perp-\mathrm{dst}_1-\mathrm{dst}_3\;.} +\label{eq:dWp_combined} +\end{equation} +Written out term by term, +\begin{equation} +\delta W_p +=\frac12\!\int\!\mathcal J\,d\psi\,d\theta\, +\Bigl[ +\underbrace{\tfrac{|\vec Q|^2}{\mu_0}}_{A_{\text{density}}} +\;+\; +\underbrace{\tfrac{2\,\mathrm{Re}(\vec V^{*}\!\cdot\vec Q)}{\mu_0}}_{B_{\text{density}}} +\;+\; +\underbrace{\tfrac{\mu_0\,p'^2\,|\nabla\psi|^2}{B^2}\,|\xi_n|^2}_{I_{\perp,\text{density}}} +\;-\; +\underbrace{|\nabla\psi|^2\,\sigma S\,|\xi_n|^2}_{K_1|\xi_n|^2\,(\mathrm{dst}_1)} +\;-\; +\underbrace{2p'\kappa_\psi\,|\xi_n|^2}_{K_3|\xi_n|^2\,(\mathrm{dst}_3)} +\Bigr], +\end{equation} +with $\vec V=\xi_n\,\mu_0\,\vec j\times\hat n$ and +$\sigma=\vec j\cdot\vec B/B^2$. In the DIII-D example +($n=1$, \texttt{gpec.log}) this gives +$2\,\delta W_p=0.81768+(-0.99951)+0.04056-(-0.03096)-0.12767=-0.23798$, +i.e. $\delta W_p=-0.11899$, matching \texttt{dW\_p(recon)} to roundoff. + +\paragraph{Physical role of each term.} +\begin{itemize} +\item $+A$ (sign $+$, stabilizing): magnetic energy of the perturbed field + $\vec Q$ itself (field-line bending). +\item $+B$ (sign-indefinite): cross-coupling of $\vec Q$ with the equilibrium + current, $2\,\mathrm{Re}(\vec V^{*}\!\cdot\vec Q)$ --- acts as a kink + driver or suppressor depending on phase. +\item $+I_\perp$ (sign $+$): Pfirsch--Schl\"uter perpendicular-current$^2$ + contribution $\propto p'^2|\nabla\psi|^2|\xi_n|^2/B^2$, positive definite. +\item $-\mathrm{dst}_1$ (sign-indefinite): shear--current coupling + $|\nabla\psi|^2\sigma S\,|\xi_n|^2$; stabilizing or destabilizing with the + sign of $K_1$. +\item $-\mathrm{dst}_3$ (sign-indefinite): pressure--curvature term + $2p'\kappa_\psi\,|\xi_n|^2$; a ballooning drive when $p'\kappa_\psi<0$. +\end{itemize} + +\paragraph{Meaning of the vanishing $K_2$.} +The cancellation does \emph{not} mean the parallel current $j_\parallel^2$ is +absent from $\delta W$. The same quantity $C_\parallel=K_2|\xi_n|^2$ enters the +stabilizing $|\vec C|^2$ and the destabilizing $K$ with opposite sign, so the +explicit $j_\parallel^2$ piece cancels in the energy balance. The residual +effect of $j_\parallel$ survives only indirectly --- through the shear term +$K_1$ (its dependence on $\sigma S$) and through the cross term $B$. + +\subsection{Cross-checks between the three routes} + +The identities below are exact and are confirmed at roundoff in the DIII-D +example ($n=1$, \texttt{gpec.log}): +\begin{align} +\texttt{recon3:A\_total} &= \texttt{recon2:int\_J\_Q2\_over\_mu0} + &&(0.817676),\\ +\texttt{recon3:Cpar\_total} &= \texttt{recon1:K2\_xin2} + = \texttt{gpeq\_dst}:dst_2 &&(1.082617),\\ +\texttt{recon3:epf\_total} &= \texttt{recon1:int\_J\_C2\_over\_mu0} + &&(0.941346),\\ +\texttt{recon1:dW\_p} &\approx \texttt{recon2:dW\_p} + &&(-0.1190\ \text{vs}\ -0.1198). +\end{align} + + +\clearpage +\appendix + +\section{Full reduction of the $\mathbf H_4$ ($\mathbf V$-sector) block}\label{app:h4} + +This appendix proves the $\mathbf H_4$ ($\mathbf V$-sector) identity quoted in +the main text at two levels: (i)~the equilibrium-free Bernstein form +$\mathbf H_4=\mathbf H_{YV}+\mathbf H_{UV}+\mathbf H_V+\mathbf H_K$, equal term by +term to \eqref{eq:ep_bernsteinK}; and (ii)~its collapse to the compact block +$\mathbf H_4=\mu_0p'\!\left(\tfrac{\chi''}{\chi'}\mathbf J+\mathbf J'\right)-2\pi +f'q'\chi'\,\mathbf I$, whose only equilibrium input is the Grad--Shafranov +equation. The steps that invoke an equilibrium relation (force balance, the +magnetic-surface condition $\mathbf B\cdot\nabla\psi=0$, Grad--Shafranov) are +noted where they occur. + +\subsection{Setup: the $\mathbf V$-sector pieces and the single geometric rule} + +We work in DCON straight-field-line flux coordinates $(\psi,\theta,\zeta)$, all +normalized to $[0,1]$, with $e_m\equiv e^{2\pi i(m\theta-n\zeta)}$ and the +Jacobian-scaled basis $\vec v_i=\vec e_i/\mathcal J$, so that +$\vec v_i\cdot\vec v_j=g_{ij}/\mathcal J^2$. We start from +\begin{equation} +\mathbf Q \equiv \mathbf X+\mathbf Y+\mathbf Z+\mathbf U, +\qquad +\vec C = \mathbf Q+\mathbf V, +\end{equation} +so that $|\vec C|^2$ contains $5$ diagonal and $10$ cross products, plus the +scalar Bernstein term $-\mu_0K|\xi_\psi|^2/|\nabla\psi|^2$. +The field pieces are +\begin{equation} +\begin{aligned} +\mathbf X &= -2\pi i\sum_m u_m e_m\,(n\vec v_2+m\vec v_3), +& +\mathbf Y &= 2\pi i\chi'\sum_m (m-nq)v_m e_m\,\vec v_1,\\ +\mathbf Z &= -\chi'\sum_m v_m' e_m\,(\vec v_2+q\vec v_3), +& +\mathbf U &= -\sum_m v_m e_m\left[\chi''\vec v_2+(q\chi')'\vec v_3\right],\\ +\mathbf V &= \frac{\xi_\psi}{|\nabla\psi|^2}\left(\mathcal A_2\vec v_2-\mathcal A_3\vec v_3\right), +\end{aligned} +\end{equation} +with +\begin{equation} +\mathcal A_2 \equiv \mu_0j^\theta g_{23}+\mu_0j^\zeta g_{33}, +\qquad +\mathcal A_3 \equiv \mu_0j^\theta g_{22}+\mu_0j^\zeta g_{23}. +\end{equation} +All dot products are reduced with the single geometric rule +\begin{equation} +\vec v_i\cdot\vec v_j=\frac{g_{ij}}{\mathcal J^2}, +\qquad +e_m^*e_{m'}=e^{2\pi i(m'-m)\theta}. +\end{equation} + +Throughout, the only current data are the DCON contravariant current densities +\begin{equation} +\mu_0 j^\theta=-\frac{2\pi f'}{\mathcal J}, +\qquad +\mu_0 j^\zeta=-\frac{\mu_0p'}{\chi'}-\frac{2\pi f'q}{\mathcal J}, +\label{eq:app_dconcurrents} +\end{equation} +and the equilibrium is a magnetic surface, $\mathbf B\cdot\nabla\psi=0$, so that +$\mathbf B=\chi'\,(q\,\nabla\psi\times\nabla\theta-\nabla\psi\times\nabla\zeta)$ +lies in the surface and $\mu_0\mathbf j\cdot\mathbf B=\mu_0\sigma B^2$ with +$\sigma\equiv\mathbf j\cdot\mathbf B/B^2$. Because the perturbation carries a +single toroidal mode number $n$, +$|\xi_\psi|^2=\sum_{m,m'}v_m^*v_{m'}\,e^{2\pi i(m'-m)\theta}$ is independent of +$\zeta$; this is used in Sec.~\ref{app:assembly}. + +\subsection{The five diagonal and ten cross products} + +Every $|\mathbf C|^2$ product is reduced with +$\vec v_i\cdot\vec v_j=g_{ij}/\mathcal J^2$ and the cofactor identity +$g_{22}g_{33}-g_{23}^2=\mathcal J^2|\nabla\psi|^2$. Only the +$\mathbf V$-touching products +($\mathbf X^*\!\cdot\mathbf V,\ \mathbf Y^*\!\cdot\mathbf V,\ +\mathbf Z^*\!\cdot\mathbf V,\ \mathbf U^*\!\cdot\mathbf V,\ |\mathbf V|^2$) and the +scalar $-\mu_0K$ term enter $\mathbf H_4$; the remaining diagonals and cross +products are listed for completeness and feed the blocks +$\mathbf A,\mathbf B,\mathbf C,\mathbf D,\mathbf E,\mathbf H_{1\text{--}3}$ of the +main text. + +\medskip\noindent\emph{Diagonal products.} + +\begin{equation} +|\mathbf X|^2 += +\frac{(2\pi)^2}{\mathcal J^2} +\sum_{m,m'} u_m^* u_{m'}\,e^{2\pi i(m'-m)\theta} +\left[ +n^2 g_{22}+n(m+m')g_{23}+m m' g_{33} +\right], +\end{equation} + +\begin{equation} +|\mathbf Y|^2 += +\frac{(2\pi\chi')^2}{\mathcal J^2} +\sum_{m,m'} (m-nq)(m'-nq)\,v_m^* v_{m'}\,e^{2\pi i(m'-m)\theta}\, +g_{11}, +\end{equation} + +\begin{equation} +|\mathbf Z|^2 += +\frac{\chi'^2}{\mathcal J^2} +\sum_{m,m'} v_m^{\prime *} v_{m'}'\,e^{2\pi i(m'-m)\theta} +\left[ +g_{22}+2q\,g_{23}+q^2 g_{33} +\right], +\end{equation} + +\begin{equation} +|\mathbf U|^2 += +\frac{1}{\mathcal J^2} +\sum_{m,m'} v_m^* v_{m'}\,e^{2\pi i(m'-m)\theta} +\left[ +\chi''^2 g_{22}+2\chi''(q\chi')' g_{23}+(q\chi')'^2 g_{33} +\right], +\end{equation} + +\begin{equation} +\begin{aligned} +|\mathbf V|^2 +&= +\frac{|\xi_\psi|^2}{|\nabla\psi|^2} +\left[ +\mu_0^2 g_{22}(j^\theta)^2 ++2\mu_0^2 g_{23}\,j^\theta j^\zeta ++\mu_0^2 g_{33}(j^\zeta)^2 +\right] \\ +&= +|\xi_\psi|^2 +\left[ +\frac{\mu_0^2\sigma(\mathbf j\cdot\mathbf B)}{|\nabla\psi|^2} ++\frac{(\mu_0p')^2}{B^2} +\right]. +\end{aligned} +\end{equation} + +The second equality for $|\mathbf V|^2$ is \emph{not} a generic metric identity: +it uses the magnetic-surface condition and force balance. Writing the bracket +as +$\mu_0^2[g_{22}(j^\theta)^2+2g_{23}j^\theta j^\zeta+g_{33}(j^\zeta)^2] +=|\mu_0\mathbf j\times\nabla\psi|^2/|\nabla\psi|^2$ and using +$\mathbf B\cdot\nabla\psi=0$ (so $|\mathbf B\times\nabla\psi|^2=B^2|\nabla\psi|^2$ +and $\mu_0\mathbf j\cdot\mathbf B=\mu_0\sigma B^2$), +\begin{equation} +\frac{|\mu_0\mathbf j\times\nabla\psi|^2}{|\nabla\psi|^2} +-\left[\frac{\mu_0\sigma(\mu_0\mathbf j\cdot\mathbf B)}{|\nabla\psi|^2} ++\frac{(\mu_0p')^2}{B^2}\right] +\;\propto\; +\chi'^2\,(q\,\mu_0 j^\theta-\mu_0 j^\zeta)^2-(\mu_0p')^2 . +\end{equation} +Inserting the DCON currents~\eqref{eq:app_dconcurrents}, the +$2\pi f'q/\mathcal J$ pieces cancel and +$\chi'(q\,\mu_0 j^\theta-\mu_0 j^\zeta)=\mu_0p'$, so the residual vanishes +identically: the parallel ($f'$) current supplies the +$\mu_0\sigma(\mu_0\mathbf j\cdot\mathbf B)$ term and the in-surface pressure +current supplies $|\nabla\psi|^2(\mu_0p')^2/B^2$. + +\medskip\noindent\emph{Cross products.} + +\begin{equation} +\mathbf X^*\!\cdot\mathbf Z += +-\frac{2\pi i\chi'}{\mathcal J^2} +\sum_{m,m'} u_m^* v_{m'}'\,e^{2\pi i(m'-m)\theta} +\left[ +n(g_{22}+q g_{23})+m(g_{23}+q g_{33}) +\right], +\end{equation} + +\begin{equation} +\mathbf X^*\!\cdot\mathbf Y += +-\frac{(2\pi)^2\chi'}{\mathcal J^2} +\sum_{m,m'} (m'-nq)\,u_m^* v_{m'}\,e^{2\pi i(m'-m)\theta} +\left[ +n\,g_{12}+m\,g_{31} +\right], +\end{equation} + +\begin{equation} +\begin{aligned} +\mathbf X^*\!\cdot\mathbf U +&= +-\frac{2\pi i}{\mathcal J^2} +\sum_{m,m'} u_m^* v_{m'}\,e^{2\pi i(m'-m)\theta} \\ +&\qquad\times +\left[ +\chi''(n g_{22}+m g_{23})+(q\chi')'(n g_{23}+m g_{33}) +\right], +\end{aligned} +\end{equation} + +\begin{equation} +\begin{aligned} +\mathbf X^*\!\cdot\mathbf V +&= +-2\pi i +\sum_{m,m'} u_m^* v_{m'}\,e^{2\pi i(m'-m)\theta}\, +\mu_0\!\left(m j^\theta-n j^\zeta\right) \\ +&= +-2\pi i +\sum_{m,m'} u_m^* v_{m'}\,e^{2\pi i(m'-m)\theta} +\left[ +-\frac{2\pi f'}{\mathcal J}(m-nq)+n\frac{\mu_0p'}{\chi'} +\right], +\end{aligned} +\end{equation} + +The collapse of $\mathbf X^*\!\cdot\mathbf V$ to a two-component current form uses +the cofactor identity: with $\mathcal A_2,\mathcal A_3$ as above, +\begin{equation} +n(\mathcal A_2 g_{22}-\mathcal A_3 g_{23})+m(\mathcal A_2 g_{23}-\mathcal A_3 g_{33}) +=(g_{22}g_{33}-g_{23}^2)\,(n\,\mu_0 j^\zeta-m\,\mu_0 j^\theta), +\end{equation} +since the $\mu_0 j^\theta$ terms drop from the $n$-bracket and the +$\mu_0 j^\zeta$ terms from the $m$-bracket; dividing by +$|\nabla\psi|^2\mathcal J^2$ and using +$g_{22}g_{33}-g_{23}^2=\mathcal J^2|\nabla\psi|^2$ gives +$-(m\,\mu_0 j^\theta-n\,\mu_0 j^\zeta)$. + +\begin{equation} +\mathbf Y^*\!\cdot\mathbf Z += +\frac{2\pi i\chi'^2}{\mathcal J^2} +\sum_{m,m'} (m-nq)\,v_m^* v_{m'}'\,e^{2\pi i(m'-m)\theta} +\left[ +g_{12}+q\,g_{31} +\right], +\end{equation} + +\begin{equation} +\mathbf Y^*\!\cdot\mathbf U += +\frac{2\pi i\chi'}{\mathcal J^2} +\sum_{m,m'} (m-nq)\,v_m^* v_{m'}\,e^{2\pi i(m'-m)\theta} +\left[ +\chi''\,g_{12}+(q\chi')'\,g_{31} +\right], +\end{equation} + +\begin{equation} +\mathbf Z^*\!\cdot\mathbf U += +\frac{\chi'}{\mathcal J^2} +\sum_{m,m'} v_m^{\prime *} v_{m'}\,e^{2\pi i(m'-m)\theta} +\left[ +\chi''(g_{22}+q g_{23})+(q\chi')'(g_{23}+q g_{33}) +\right], +\end{equation} + +\begin{equation} +\mathbf Z^*\!\cdot\mathbf V += +\mu_0p'\,\xi_\psi^{\prime *}\xi_\psi +\qquad(\text{pointwise, after } g_{22}g_{33}-g_{23}^2=\mathcal J^2|\nabla\psi|^2), +\end{equation} + +For $\mathbf Z^*\!\cdot\mathbf V$ the same cofactor cancellation gives, before +inserting currents, +$\mathbf Z^*\!\cdot\mathbf V=\chi'\,\xi_\psi^{\prime *}\xi_\psi\, +(q\,\mu_0 j^\theta-\mu_0 j^\zeta)$; inserting~\eqref{eq:app_dconcurrents}, +$q\,\mu_0 j^\theta-\mu_0 j^\zeta +=-\tfrac{2\pi f'q}{\mathcal J}+\tfrac{\mu_0p'}{\chi'}+\tfrac{2\pi f'q}{\mathcal J} +=\tfrac{\mu_0p'}{\chi'}$ (the $2\pi f'q/\mathcal J$ terms cancel), so +$\mathbf Z^*\!\cdot\mathbf V=\mu_0p'\,\xi_\psi^{\prime *}\xi_\psi$. + +\begin{equation} +\mathbf U^*\!\cdot\mathbf V += +|\xi_\psi|^2 +\left[ +\mu_0p'\frac{\chi''}{\chi'}-\frac{2\pi f'q'\chi'}{\mathcal J} +\right] +\qquad(\text{pointwise}), +\end{equation} + +For $\mathbf U^*\!\cdot\mathbf V$ the cofactor cancellation leaves the pointwise +coefficient $|\xi_\psi|^2[-\chi''\mu_0 j^\zeta+(q\chi')'\mu_0 j^\theta]$; +inserting~\eqref{eq:app_dconcurrents} and expanding $(q\chi')'=q'\chi'+q\chi''$, +the $\pm2\pi f'q\chi''/\mathcal J$ cross terms cancel, leaving +$|\xi_\psi|^2[\mu_0p'\tfrac{\chi''}{\chi'}-\tfrac{2\pi f'q'\chi'}{\mathcal J}]$. + +\begin{equation} +\begin{aligned} +\mathcal J\,(\mathbf Y^*\!\cdot\mathbf V+\mathbf V^*\!\cdot\mathbf Y) +&= +\chi'\,\mathcal F +\left\{ +\left[(\partial_\theta+q\partial_\zeta)\xi_\psi^*\right]\xi_\psi ++\xi_\psi^*\left[(\partial_\theta+q\partial_\zeta)\xi_\psi\right] +\right\}, \\ +\mathcal F +&\equiv +\mathcal J\, +\frac{(\mu_0 j^\theta)(\nabla\zeta\cdot\nabla\psi)-(\mu_0 j^\zeta)(\nabla\theta\cdot\nabla\psi)}{|\nabla\psi|^2}. +\end{aligned} +\end{equation} + +\medskip\noindent\emph{Scalar Bernstein term.} + +\begin{equation} +-\mu_0\,\mathcal J\,K\frac{|\xi_\psi|^2}{|\nabla\psi|^2} += +|\xi_\psi|^2 +\left[ +-\mathcal J\mu_0\sigma S_\psi +-\mathcal J\frac{\mu_0^2\sigma^2B^2}{|\nabla\psi|^2} +-2\mu_0p'\mathcal J\frac{\kappa_\psi}{|\nabla\psi|^2} +\right]. +\end{equation} + +\subsection{Assembly of the $\mathbf V$-sector and the $\theta$-integration by parts} +\label{app:assembly} + +The four $\mathbf V$-touching contributions combine, under a common +$\mathcal J$ weight and before any equilibrium input, as + +\begin{equation} +\begin{aligned} +&\int d\theta\,d\zeta\;\mathcal J +\left[ +(\mathbf Y^*\!\cdot\mathbf V+\mathbf V^*\!\cdot\mathbf Y) ++(\mathbf U^*\!\cdot\mathbf V+\mathbf V^*\!\cdot\mathbf U) ++|\mathbf V|^2 +-\mu_0K\frac{|\xi_\psi|^2}{|\nabla\psi|^2} +\right]\\ +&=\int d\theta\,d\zeta\, +\bigg[ +\underbrace{\chi'\,\mathcal F\,\partial_\theta|\xi_\psi|^2}_{\mathbf Y^*\mathbf V+\text{c.c.}} ++|\xi_\psi|^2\Big( +\underbrace{2\mu_0p'\mathcal J\tfrac{\chi''}{\chi'}-4\pi f'q'\chi'}_{\mathbf U^*\mathbf V+\text{c.c.}} ++\underbrace{\mathcal J\tfrac{\mu_0^2\sigma(\mathbf j\cdot\mathbf B)}{|\nabla\psi|^2} ++\mathcal J\tfrac{(\mu_0p')^2}{B^2}}_{|\mathbf V|^2}\\ +&\hspace{5em} +\underbrace{ +-\,\mathcal J\mu_0\sigma S_\psi +-\mathcal J\tfrac{\mu_0^2\sigma^2B^2}{|\nabla\psi|^2} +-2\mu_0p'\mathcal J\tfrac{\kappa_\psi}{|\nabla\psi|^2}}_{-\mu_0K|\xi_\psi|^2/|\nabla\psi|^2} +\Big) +\bigg], +\quad +\mathcal F\equiv +\mathcal J\frac{\mu_0 j^\theta(\nabla\zeta\cdot\nabla\psi)-\mu_0 j^\zeta(\nabla\theta\cdot\nabla\psi)}{|\nabla\psi|^2}. +\end{aligned} +\end{equation} + +Only $\partial_\theta|\xi_\psi|^2$ appears (not the full +$(\partial_\theta+q\partial_\zeta)|\xi_\psi|^2$ that +$\mathbf Y^*\!\cdot\mathbf V+\text{c.c.}$ produces) because $|\xi_\psi|^2$ is +$\zeta$-independent for a single-$n$ perturbation, so +$\partial_\zeta|\xi_\psi|^2=0$ pointwise and the $q\,\partial_\zeta$ piece drops +identically. + +Only $\mathbf Y^*\!\cdot\mathbf V$ carries a $\theta$ derivative. Integrating +it by parts (the boundary term vanishes because $\chi'$ is a flux function and +$\mathcal F,|\xi_\psi|^2$ are $\theta$-periodic), its $|\xi_\psi|^2$ +coefficient becomes $-\chi'\,\partial_\theta\mathcal F$: +\begin{equation} +\int d\theta\,\chi'\mathcal F\,\partial_\theta|\xi_\psi|^2 +=-\int d\theta\;|\xi_\psi|^2\,\chi'\,\partial_\theta\mathcal F, +\qquad +-\chi'\,\partial_\theta\mathcal F +=-\frac{2\pi f'}{\chi'}\mathcal J S_\psi ++2\pi f'q'\chi' +-\mu_0p'\,\partial_\theta\!\left(\mathcal J\frac{\nabla\psi\cdot\nabla\theta}{|\nabla\psi|^2}\right), +\end{equation} + +A $\theta$ derivative cannot generate $q'=dq/d\psi$; the explicit +$+2\pi f'q'\chi'$ above only compensates the $q'$ introduced by rewriting part +of $-\chi'\partial_\theta\mathcal F$ through +$S_\psi=\tfrac{\chi'^2}{\mathcal J}[q'+\partial_\theta(\cdots)]$, so the net +$q'$ content of $-\chi'\partial_\theta\mathcal F$ is zero. As written, the +$+2\pi f'q'\chi'$ pairs below with the $-4\pi f'q'\chi'$ of +$\mathbf U^*\!\cdot\mathbf V$ to give $-2\pi f'q'\chi'\,\mathbf I$. + +Three immediate cancellations follow: + +\begin{equation} +-\frac{2\pi f'}{\chi'}\mathcal J S_\psi-\mathcal J\mu_0\sigma S_\psi +=-\mathcal J S_\psi\!\left(\frac{2\pi f'}{\chi'}+\mu_0\sigma\right), +\quad +\frac{\mu_0^2\sigma(\mathbf j\cdot\mathbf B)-\mu_0^2\sigma^2B^2}{|\nabla\psi|^2}=0, +\quad +2\pi f'q'\chi'-4\pi f'q'\chi'=-2\pi f'q'\chi', +\end{equation} +and substituting the DCON shear and curvature +\begin{equation} +S_\psi=\frac{\chi'^2}{\mathcal J}\left[q'+\partial_\theta\!\left(\frac{q \nabla\psi\cdot\nabla\theta-\nabla\psi\cdot\nabla\zeta}{|\nabla\psi|^2}\right)\right], +\qquad +\kappa_\psi=\frac{|\nabla\psi|^2}{B^2}\left[\mu_0 p'+\tfrac12\partial_\psi B^2+\tfrac12\partial_\theta B^2\frac{\nabla\psi\cdot\nabla\theta}{|\nabla\psi|^2}\right] +\end{equation} +(so that $\mathcal J$ cancels in $-\mathcal J S_\psi$ and the two $(\mu_0p')^2/B^2$ pieces combine), the whole sector becomes the single fully expanded identity +\begin{equation} +\begin{aligned} +&\int d\theta\,d\zeta\;\mathcal J +\left[ +(\mathbf Y^*\!\cdot\mathbf V+\mathbf V^*\!\cdot\mathbf Y) ++(\mathbf U^*\!\cdot\mathbf V+\mathbf V^*\!\cdot\mathbf U) ++|\mathbf V|^2 +-\mu_0K\frac{|\xi_\psi|^2}{|\nabla\psi|^2} +\right]\\ +&=\int d\theta\,d\zeta\;|\xi_\psi|^2 +\bigg[ +-2\pi f'q'\chi' ++2\mu_0p'\mathcal J\frac{\chi''}{\chi'} +-\mu_0p'\,\partial_\theta\!\left(\mathcal J\frac{\nabla\psi\cdot\nabla\theta}{|\nabla\psi|^2}\right) +-\mathcal J\frac{(\mu_0p')^2}{B^2}\\ +&\hspace{4em} +-\frac{\mu_0p'\mathcal J}{B^2}\partial_\psi B^2 +-\frac{\mu_0p'\mathcal J}{B^2}\partial_\theta B^2\frac{\nabla\psi\cdot\nabla\theta}{|\nabla\psi|^2} +-\chi'^2\!\left(\frac{2\pi f'}{\chi'}+\mu_0\sigma\right)\! +\left[q'+\partial_\theta\!\left(\frac{q \nabla\psi\cdot\nabla\theta-\nabla\psi\cdot\nabla\zeta}{|\nabla\psi|^2}\right)\right] +\bigg]. +\end{aligned} +\label{eq:H4_expanded} +\end{equation} + +Up to \eqref{eq:H4_expanded} no equilibrium input beyond the DCON currents has +been used. The first two terms give $-2\pi f'q'\chi'\mathbf I$ and +$\mu_0p'(\chi''/\chi')\mathbf J$; it remains to show, for arbitrary Fourier +amplitudes $\{v_m\}$, that the rest closes, +\begin{equation} +\begin{aligned} +&\int d\theta\,d\zeta\;|\xi_\psi|^2 +\bigg[ +-\chi'^2\!\left(\frac{2\pi f'}{\chi'}+\mu_0\sigma\right)\! +\left[q'+\partial_\theta\!\left(\frac{q \nabla\psi\cdot\nabla\theta-\nabla\psi\cdot\nabla\zeta}{|\nabla\psi|^2}\right)\right] +-\mu_0p'\,\partial_\theta\!\left(\mathcal J\frac{\nabla\psi\cdot\nabla\theta}{|\nabla\psi|^2}\right)\\ +&\hspace{4em} +-\mathcal J\frac{(\mu_0p')^2}{B^2} +-\frac{\mu_0p'\mathcal J}{B^2}\partial_\psi B^2 +-\frac{\mu_0p'\mathcal J}{B^2}\partial_\theta B^2\frac{\nabla\psi\cdot\nabla\theta}{|\nabla\psi|^2} +\bigg]\\ +&=\int d\theta\,d\zeta\;|\xi_\psi|^2 +\bigg[ +-2\pi f'q'\chi' +-\mu_0\sigma\chi'^2 q' +-2\pi f'\chi'\,\partial_\theta\!\left(\frac{q \nabla\psi\cdot\nabla\theta-\nabla\psi\cdot\nabla\zeta}{|\nabla\psi|^2}\right)\\ +&\hspace{4em} +-\mu_0\sigma\chi'^2\,\partial_\theta\!\left(\frac{q \nabla\psi\cdot\nabla\theta-\nabla\psi\cdot\nabla\zeta}{|\nabla\psi|^2}\right) +-\mu_0p'\,\partial_\theta\!\left(\mathcal J\frac{\nabla\psi\cdot\nabla\theta}{|\nabla\psi|^2}\right) +-\mathcal J\frac{(\mu_0p')^2}{B^2}\\ +&\hspace{4em} +-\frac{\mu_0p'\mathcal J}{B^2}\partial_\psi B^2 +-\frac{\mu_0p'\mathcal J}{B^2}\partial_\theta B^2\frac{\nabla\psi\cdot\nabla\theta}{|\nabla\psi|^2} +\bigg]. +\end{aligned} +\end{equation} + +\subsection{The $\sigma$ identity: collapse of the parallel-current coefficient} +\label{app:sigma} + +The remaining bracket closes because of a single physical identity: the +shear/parallel-current coefficient $\tfrac{2\pi f'}{\chi'}+\mu_0\sigma$ is not +zero but a pure pressure--geometry quantity. Write +$\sigma=\mathbf j\cdot\mathbf B/B^2$ in current components, using +$\mathbf B=\chi'\,(q\,\nabla\psi\times\nabla\theta-\nabla\psi\times\nabla\zeta)$ and +$\mathbf j=\mathcal J\,(j^\theta\,\nabla\zeta\times\nabla\psi+j^\zeta\,\nabla\psi\times\nabla\theta)$: +\begin{equation} +\begin{aligned} +\mu_0\mathbf j\cdot\mathbf B +&=\mathcal J\chi'\big[\mu_0 j^\theta\,(\nabla\zeta\times\nabla\psi)+\mu_0 j^\zeta\,(\nabla\psi\times\nabla\theta)\big] +\cdot(q\,\nabla\psi\times\nabla\theta-\nabla\psi\times\nabla\zeta),\\ +B^2&=\chi'^2\,|q\,\nabla\psi\times\nabla\theta-\nabla\psi\times\nabla\zeta|^2. +\end{aligned} +\end{equation} +Inserting the DCON contravariant currents +$\mu_0 j^\theta=-\dfrac{2\pi f'}{\mathcal J}$, +$\mu_0 j^\zeta=-\dfrac{\mu_0p'}{\chi'}-\dfrac{2\pi f'q}{\mathcal J}$ +and using $\nabla\zeta\times\nabla\psi=-\nabla\psi\times\nabla\zeta$ to group the $f'$ terms, +\begin{equation} +\begin{aligned} +\mu_0\mathbf j\cdot\mathbf B +&=\mathcal J\chi'\left[-\frac{2\pi f'}{\mathcal J}(q\,\nabla\psi\times\nabla\theta-\nabla\psi\times\nabla\zeta)-\frac{\mu_0p'}{\chi'}(\nabla\psi\times\nabla\theta)\right]\\ +&\qquad\cdot(q\,\nabla\psi\times\nabla\theta-\nabla\psi\times\nabla\zeta)\\ +&=-2\pi f'\chi'\,|q\,\nabla\psi\times\nabla\theta-\nabla\psi\times\nabla\zeta|^2 +-\mu_0p'\mathcal J\,(\nabla\psi\times\nabla\theta)\cdot(q\,\nabla\psi\times\nabla\theta-\nabla\psi\times\nabla\zeta). +\end{aligned} +\end{equation} +Dividing by $B^2$, +\begin{equation} +\mu_0\sigma=-\frac{2\pi f'}{\chi'}-\frac{\mu_0p'\mathcal J\,(\nabla\psi\times\nabla\theta)\cdot(q\,\nabla\psi\times\nabla\theta-\nabla\psi\times\nabla\zeta)}{B^2}, +\end{equation} +so the parallel-current coefficient collapses to a pure-$p'$ form, +\begin{equation} +\frac{2\pi f'}{\chi'}+\mu_0\sigma +=-\frac{\mu_0p'\mathcal J\,(\nabla\psi\times\nabla\theta)\cdot(q\,\nabla\psi\times\nabla\theta-\nabla\psi\times\nabla\zeta)}{B^2}. +\end{equation} +Applying the cross-product identity +$(\mathbf A\times\mathbf B)\cdot(\mathbf C\times\mathbf D)=(\mathbf A\cdot\mathbf C)(\mathbf B\cdot\mathbf D)-(\mathbf A\cdot\mathbf D)(\mathbf B\cdot\mathbf C)$ +to the two cross-product factors, +\begin{equation} +\begin{aligned} +|q\,\nabla\psi\times\nabla\theta-\nabla\psi\times\nabla\zeta|^2 +&=(\nabla\psi\cdot\nabla\psi)(q^2\nabla\theta\cdot\nabla\theta-2q\,\nabla\theta\cdot\nabla\zeta+\nabla\zeta\cdot\nabla\zeta) +-(q\,\nabla\psi\cdot\nabla\theta-\nabla\psi\cdot\nabla\zeta)^2,\\ +(\nabla\psi\times\nabla\theta)\cdot(q\,\nabla\psi\times\nabla\theta-\nabla\psi\times\nabla\zeta) +&=(\nabla\psi\cdot\nabla\psi)(q\,\nabla\theta\cdot\nabla\theta-\nabla\theta\cdot\nabla\zeta) +-(\nabla\psi\cdot\nabla\theta)(q\,\nabla\psi\cdot\nabla\theta-\nabla\psi\cdot\nabla\zeta). +\end{aligned} +\end{equation} +The first is $B^2/\chi'^2$; the second turns the collapse into the pure-$p'$, dot-product form +\begin{equation} +\frac{2\pi f'}{\chi'}+\mu_0\sigma +=-\frac{\mu_0p'\mathcal J}{B^2} +\big[(\nabla\psi\cdot\nabla\psi)(q\,\nabla\theta\cdot\nabla\theta-\nabla\theta\cdot\nabla\zeta) +-(\nabla\psi\cdot\nabla\theta)(q\,\nabla\psi\cdot\nabla\theta-\nabla\psi\cdot\nabla\zeta)\big]. +\end{equation} +Write the local shorthands +$\mathcal D\equiv(\nabla\psi\cdot\nabla\psi)(q\,\nabla\theta\cdot\nabla\theta-\nabla\theta\cdot\nabla\zeta) +-(\nabla\psi\cdot\nabla\theta)(q\,\nabla\psi\cdot\nabla\theta-\nabla\psi\cdot\nabla\zeta)$ +and +$G_s\equiv\dfrac{q\,\nabla\psi\cdot\nabla\theta-\nabla\psi\cdot\nabla\zeta}{|\nabla\psi|^2}$. +Inserting $\mu_0\sigma=-\tfrac{2\pi f'}{\chi'}-\tfrac{\mu_0 p'\mathcal J\,\mathcal D}{B^2}$ into the two $-\mu_0\sigma\chi'^2(\cdots)$ pieces of the distributed form, each $f'$ part \emph{exactly} cancels the existing $-2\pi f'\chi'(\cdots)$ partner: +\begin{equation} +\begin{aligned} +\cancel{-\,2\pi f'q'\chi'}\;-\,\mu_0\sigma\chi'^2 q' +&=\cancel{-\,2\pi f'q'\chi'}\;\cancel{+\,2\pi f'q'\chi'}\;+\;\frac{\mu_0p'\chi'^2\mathcal J\,q'\,\mathcal D}{B^2},\\ +\cancel{-\,2\pi f'\chi'\,\partial_\theta G_s}\;-\,\mu_0\sigma\chi'^2\,\partial_\theta G_s +&=\cancel{-\,2\pi f'\chi'\,\partial_\theta G_s}\;\cancel{+\,2\pi f'\chi'\,\partial_\theta G_s}\;+\;\frac{\mu_0p'\chi'^2\mathcal J\,\mathcal D}{B^2}\,\partial_\theta G_s. +\end{aligned} +\end{equation} +The crossed-out $f'$ pairs vanish identically, so the entire $\mathbf V$-sector +residual reduces to pure $\mu_0p'$ pieces; the surviving geometric +$\theta$-derivatives are closed by the Grad--Shafranov identity of +Sec.~\ref{app:master}. + +\subsection{Master identity, cofactor form, and the Grad--Shafranov closure} +\label{app:master} + +The closure is most transparent pointwise in $\theta$. + +\paragraph{Four weights and target.} +Write the sector as $\int d\theta\,\mathcal W\,|\xi_\psi|^2$ with +$\mathcal W=W_{UV}+W_V+W_K+W_{YV}$ ($\mathbf Y^*\!\cdot\mathbf V$ already +integrated by parts), abbreviating $g^{\psi\psi}=|\nabla\psi|^2$: +\begin{align} +W_{UV}&=2\mu_0p'\tfrac{\chi''}{\chi'}\mathcal J-4\pi f'q'\chi', +\label{eq:WUV}\\ +W_{V}&=\mathcal J\tfrac{\mu_0^2\sigma(\mathbf j\cdot\mathbf B)}{g^{\psi\psi}} + +\mathcal J\tfrac{(\mu_0p')^2}{B^2}, +\label{eq:WV}\\ +W_{K}&=-\mathcal J\mu_0\sigma S_\psi + -\mathcal J\tfrac{\mu_0^2\sigma^2B^2}{g^{\psi\psi}} + -\tfrac{2\mu_0p'\mathcal J\kappa_\psi}{g^{\psi\psi}}, +\label{eq:WK}\\ +W_{YV}&=-\tfrac{2\pi f'}{\chi'}\mathcal J S_\psi+2\pi f'q'\chi' + -\mu_0p'\,\partial_\theta\!\big(\mathcal J\tfrac{g^{\psi\theta}}{g^{\psi\psi}}\big). +\label{eq:WYV} +\end{align} +Target +$\;W_\star=\mu_0p'\tfrac{\chi''}{\chi'}\mathcal J+\mu_0p'\mathcal J'-2\pi f'q'\chi'$, +i.e.\ $\mathbf H_4=\mu_0p'(\tfrac{\chi''}{\chi'}\mathbf J+\mathbf J')-2\pi f'q'\chi'\mathbf I$. + +\paragraph{Step 1 — parallel current ($\mu_0\mathbf j\cdot\mathbf B=\mu_0\sigma B^2$).} +The first term of \eqref{eq:WV} and the second of \eqref{eq:WK} cancel pointwise: +\begin{equation} +\mathcal J\tfrac{\mu_0^2\sigma(\mathbf j\cdot\mathbf B)}{g^{\psi\psi}} +-\mathcal J\tfrac{\mu_0^2\sigma^2B^2}{g^{\psi\psi}}=0 +\;\Longrightarrow\; +W_V+W_K=\mathcal J\tfrac{(\mu_0p')^2}{B^2} +-\mathcal J\mu_0\sigma S_\psi +-\tfrac{2\mu_0p'\mathcal J\kappa_\psi}{g^{\psi\psi}}. +\label{eq:step1} +\end{equation} + +\paragraph{Step 2 — $\sigma$ identity +$\;\mu_0\sigma=-\tfrac{2\pi f'}{\chi'}-\tfrac{\mu_0p'\mathcal J\,\mathcal D}{B^2}$.} +The shear term of \eqref{eq:step1} splits: +\begin{equation} +-\mathcal J\mu_0\sigma S_\psi +=\underbrace{\tfrac{2\pi f'}{\chi'}\mathcal J S_\psi}_{\text{cancels \eqref{eq:WYV}}} ++\tfrac{\mu_0p'\mathcal J^2\mathcal D}{B^2}\,S_\psi . +\label{eq:step2} +\end{equation} + +\paragraph{Step 3 — sum $\mathcal W=\eqref{eq:WUV}+\eqref{eq:step1}+\eqref{eq:WYV}$.} +The $\tfrac{2\pi f'}{\chi'}\mathcal J S_\psi$ pair cancels and +$-4\pi f'q'\chi'+2\pi f'q'\chi'=-2\pi f'q'\chi'$, leaving +\begin{equation} +\mathcal W=-2\pi f'q'\chi' ++2\mu_0p'\tfrac{\chi''}{\chi'}\mathcal J ++\mathcal J\tfrac{(\mu_0p')^2}{B^2} +-\tfrac{2\mu_0p'\mathcal J\kappa_\psi}{g^{\psi\psi}} +-\mu_0p'\,\partial_\theta\!\big(\mathcal J\tfrac{g^{\psi\theta}}{g^{\psi\psi}}\big) ++\tfrac{\mu_0p'\mathcal J^2\mathcal D}{B^2}\,S_\psi . +\label{eq:step3} +\end{equation} + +\paragraph{Step 4 — $\mathcal W=W_\star$, divide by $\mu_0p'$ (master identity).} +Subtracting $W_\star$ (the $-2\pi f'q'\chi'$ and one $\mu_0p'\tfrac{\chi''}{\chi'}\mathcal J$ match): +\begin{equation} +\boxed{\; +\mathcal J\frac{\chi''}{\chi'} ++\frac{\mathcal J\,\mu_0p'}{B^2} +-\frac{2\mathcal J\,\kappa_\psi}{g^{\psi\psi}} +-\partial_\theta\!\Big(\mathcal J\frac{g^{\psi\theta}}{g^{\psi\psi}}\Big) ++\frac{\mathcal J^2\mathcal D}{B^2}\,S_\psi +=\mathcal J' \;} +\label{eq:master} +\end{equation} +with the inputs +\begin{equation} +\mathcal D +\equiv g^{\psi\psi}(q\,g^{\theta\theta}-g^{\theta\zeta}) +-g^{\psi\theta}(q\,g^{\psi\theta}-g^{\psi\zeta}), +\qquad +S_\psi=\frac{\chi'^2}{\mathcal J}\Big[q'+\partial_\theta G_s\Big], +\qquad +G_s\equiv\frac{q\,g^{\psi\theta}-g^{\psi\zeta}}{g^{\psi\psi}} . +\label{eq:DSdef} +\end{equation} + +\paragraph{Cofactor form of $\mathcal D$ ($g^{ij}=(g_{ij})^{-1}$, $\det g_{ij}=\mathcal J^2$).} +The minors are +$g^{\psi\psi}g^{\theta\theta}-(g^{\psi\theta})^2=g_{\zeta\zeta}/\mathcal J^2$, +$\;g^{\psi\psi}g^{\theta\zeta}-g^{\psi\theta}g^{\psi\zeta}=-g_{\theta\zeta}/\mathcal J^2$, hence +\begin{equation} +\boxed{\; +\mathcal D=\frac{q\,g_{\zeta\zeta}+g_{\theta\zeta}}{\mathcal J^2} +=\frac{\partial_q G_\alpha}{2\mathcal J^2}, +\qquad +\frac{\chi'^2\mathcal D}{B^2} +=\frac{q\,g_{\zeta\zeta}+g_{\theta\zeta}}{G_\alpha}, +\;} +\qquad +G_\alpha\equiv g_{\theta\theta}+2q\,g_{\theta\zeta}+q^2g_{\zeta\zeta}=\frac{\mathcal J^2B^2}{\chi'^2}. +\label{eq:cofactor} +\end{equation} + +\paragraph{Step 5 — insert $\kappa_\psi$ and $S_\psi$ into \eqref{eq:master}.} +With +$\kappa_\psi=\tfrac{g^{\psi\psi}}{B^2}\big[\mu_0p' ++\tfrac12\partial_\psi B^2+\tfrac12\partial_\theta B^2\,\tfrac{g^{\psi\theta}}{g^{\psi\psi}}\big]$, +\begin{equation} +-\frac{2\mathcal J\kappa_\psi}{g^{\psi\psi}} +=-\frac{2\mathcal J\mu_0p'}{B^2} + -\frac{\mathcal J\,\partial_\psi B^2}{B^2} + -\frac{\mathcal J\,g^{\psi\theta}\,\partial_\theta B^2}{g^{\psi\psi}B^2}, +\qquad +\frac{\mathcal J^2\mathcal D}{B^2}\,S_\psi +=\mathcal J\,\frac{q\,g_{\zeta\zeta}+g_{\theta\zeta}}{G_\alpha}\,\big(q'+\partial_\theta G_s\big). +\label{eq:step5a} +\end{equation} +Using $\beta^2\equiv B^2/\chi'^2=G_\alpha/\mathcal J^2$, +\begin{equation} +\frac{\partial_\psi B^2}{B^2}=2\frac{\chi''}{\chi'}+\frac{\partial_\psi\beta^2}{\beta^2}, +\qquad +\frac{\partial_\theta B^2}{B^2}=\frac{\partial_\theta G_\alpha}{G_\alpha}-2\frac{\partial_\theta\mathcal J}{\mathcal J}, +\qquad +\frac{\mathcal J\mu_0p'}{B^2}-\frac{2\mathcal J\mu_0p'}{B^2}=-\frac{\mathcal J\mu_0p'}{B^2}, +\label{eq:step5b} +\end{equation} +so $\mathcal J\tfrac{\chi''}{\chi'}-2\mathcal J\tfrac{\chi''}{\chi'}=-\mathcal J\tfrac{\chi''}{\chi'}$ and \eqref{eq:master} becomes +\begin{equation} +\boxed{\; +\begin{aligned} +&-\mathcal J\frac{\chi''}{\chi'} +-\frac{\mathcal J\mu_0p'}{B^2} +-\mathcal J\frac{\partial_\psi\beta^2}{\beta^2} +-\frac{\mathcal J\,g^{\psi\theta}}{g^{\psi\psi}}\Big(\frac{\partial_\theta G_\alpha}{G_\alpha}-2\frac{\partial_\theta\mathcal J}{\mathcal J}\Big)\\ +&\qquad +-\partial_\theta\!\Big(\mathcal J\frac{g^{\psi\theta}}{g^{\psi\psi}}\Big) ++\frac{\mathcal J\,(q\,g_{\zeta\zeta}+g_{\theta\zeta})}{G_\alpha}\big(q'+\partial_\theta G_s\big) +=\mathcal J' . +\end{aligned}\;} +\label{eq:gsstep} +\end{equation} + +Equation~\eqref{eq:gsstep} is the remaining Grad--Shafranov input. It can be +derived directly from the covariant-component form of +\(\nabla\times\mathbf B=\mu_0\mathbf j\), as follows. Define +\begin{equation} +A\equiv\frac{g^{\psi\theta}}{g^{\psi\psi}}, +\qquad +H\equiv qg_{\zeta\zeta}+g_{\theta\zeta}, +\qquad +\mathcal C_B\equiv B_\theta+qB_\zeta . +\end{equation} +Since \(B^\theta=\chi'/\mathcal J\) and \(B^\zeta=q\chi'/\mathcal J\), +\begin{equation} +B_i=g_{i\theta}B^\theta+g_{i\zeta}B^\zeta +=\frac{\chi'}{\mathcal J}(g_{i\theta}+qg_{i\zeta}), +\qquad +B_\zeta=\frac{\chi'}{\mathcal J}H, +\qquad +\mathcal C_B=\frac{\chi'}{\mathcal J}G_\alpha +=\frac{\mathcal J B^2}{\chi'} . +\end{equation} +The inverse-metric cofactor identities give +\begin{equation} +g_{\psi\theta}+qg_{\psi\zeta} +=-A\,G_\alpha+G_s\,H, +\end{equation} +and therefore +\begin{equation} +B_\psi=-A\,\mathcal C_B+G_s B_\zeta . +\label{eq:Bpsi_GS_closure} +\end{equation} + +For an axisymmetric equilibrium the contravariant curl components are +\begin{equation} +\mu_0j^\theta=-\frac{1}{\mathcal J}\partial_\psi B_\zeta, +\qquad +\mu_0j^\zeta= +\frac{1}{\mathcal J}\left(\partial_\psi B_\theta-\partial_\theta B_\psi\right). +\label{eq:covcurl_GS_closure} +\end{equation} +Using the physical-\(f'\) current convention of +\eqref{eq:app_dconcurrents}, the first of \eqref{eq:covcurl_GS_closure} gives +\begin{equation} +\partial_\psi B_\zeta=2\pi f', +\qquad +B_\zeta=2\pi f(\psi), +\qquad +\partial_\theta B_\zeta=0 . +\end{equation} +Here the last two statements are the usual Grad--Shafranov convention that the +covariant toroidal-field function \(f\) is a flux function; this is the same +convention encoded in \eqref{eq:app_dconcurrents}. The second of +\eqref{eq:covcurl_GS_closure} gives +\begin{equation} +\partial_\psi B_\theta-\partial_\theta B_\psi +=-\frac{\mathcal J\mu_0p'}{\chi'}-2\pi qf' . +\end{equation} +Substituting \(\mathcal C_B=B_\theta+qB_\zeta\) and +\(\partial_\psi B_\zeta=2\pi f'\) cancels the explicit \(2\pi qf'\) terms and +leaves +\begin{equation} +\partial_\psi\mathcal C_B-\partial_\theta B_\psi +=q'B_\zeta-\frac{\mathcal J\mu_0p'}{\chi'} . +\end{equation} +Using \eqref{eq:Bpsi_GS_closure} and \(\partial_\theta B_\zeta=0\), this becomes +\begin{equation} +\partial_\psi\mathcal C_B+\partial_\theta(A\mathcal C_B) +-B_\zeta(q'+\partial_\theta G_s) ++\frac{\mathcal J\mu_0p'}{\chi'}=0 . +\label{eq:CB_GS_closure} +\end{equation} + +Multiply \eqref{eq:CB_GS_closure} by +\(\chi'/B^2=\mathcal J/\mathcal C_B\). The three geometric factors reduce as +\begin{align} +\frac{\chi'}{B^2}\partial_\psi\mathcal C_B +&= +\mathcal J' ++\mathcal J\frac{\partial_\psi B^2}{B^2} +-\mathcal J\frac{\chi''}{\chi'},\\ +\frac{\chi'}{B^2}\partial_\theta(A\mathcal C_B) +&= +\partial_\theta(\mathcal J A) ++\mathcal J A\frac{\partial_\theta B^2}{B^2},\\ +\frac{\chi'}{B^2}B_\zeta +&= +\mathcal J\frac{H}{G_\alpha}. +\end{align} +Thus Grad--Shafranov gives +\begin{equation} +\begin{aligned} +\mathcal J' +&= +\mathcal J\frac{\chi''}{\chi'} +-\mathcal J\frac{\partial_\psi B^2}{B^2} +-\partial_\theta(\mathcal J A) +-\mathcal J A\frac{\partial_\theta B^2}{B^2}\\ +&\quad ++\mathcal J\frac{H}{G_\alpha}(q'+\partial_\theta G_s) +-\frac{\mathcal J\mu_0p'}{B^2}. +\end{aligned} +\label{eq:GS_before_beta} +\end{equation} +Finally use +\[ +\frac{\partial_\psi B^2}{B^2} +=2\frac{\chi''}{\chi'}+\frac{\partial_\psi\beta^2}{\beta^2}, +\qquad +\frac{\partial_\theta B^2}{B^2} +=\frac{\partial_\theta G_\alpha}{G_\alpha} +-2\frac{\partial_\theta\mathcal J}{\mathcal J}, +\qquad +H=qg_{\zeta\zeta}+g_{\theta\zeta}. +\] +Equation~\eqref{eq:GS_before_beta} is then exactly \eqref{eq:gsstep}. Hence the +master identity \eqref{eq:master} is an analytic consequence of the +Grad--Shafranov equilibrium, not a numerical closure. + +This closes the residual of Sec.~\ref{app:assembly}: multiplying~\eqref{eq:gsstep} by $\mu_0p'$ +converts the geometric $\theta$-derivative +$-\mu_0p'\partial_\theta(\mathcal J\,g^{\psi\theta}/g^{\psi\psi})$, the +$(\mu_0p')^2/B^2$ term of $|\mathbf V|^2$, and the pressure--curvature part of +$K$ into $\mu_0p'\mathcal J'$, so the bracket of~\eqref{eq:H4_expanded} becomes +$\mu_0p'(\mathcal J'-\mathcal J\chi''/\chi')$. Together with the clean +\(\mu_0p'\mathcal J\chi''/\chi'\) piece already isolated in +\eqref{eq:step3}, this gives +\[ +\mathcal W +=-2\pi f'q'\chi' ++\mu_0p'\left(\mathcal J\frac{\chi''}{\chi'}+\mathcal J'\right), +\] +and the compact $\mathbf H_4$ follows by Fourier projection. + +\subsection{The two equivalent final forms of $\mathbf H_4$} + +\paragraph{Equilibrium-free form.} +Projecting \eqref{eq:WUV}--\eqref{eq:WYV} directly, +\begin{equation} +\boxed{\;\mathbf H_4=\mathbf H_{YV}+\mathbf H_{UV}+\mathbf H_V+\mathbf H_K\;,} +\end{equation} +\begin{equation} +\begin{aligned} +\mathbf H_{UV}&=2\mu_0p'\tfrac{\chi''}{\chi'}\mathbf J-4\pi f'q'\chi'\,\mathbf I, +&\; +(\mathbf H_V)_{mm'}&=\Big\langle\tfrac{(\mu_0p')^2}{B^2}+\tfrac{\mu_0\sigma(\mu_0\mathbf j\cdot\mathbf B)}{g^{\psi\psi}}\Big\rangle_{mm'},\\[4pt] +(\mathbf H_K)_{mm'}&=-\Big\langle\mu_0\sigma S_\psi+\tfrac{\mu_0^2\sigma^2B^2}{g^{\psi\psi}}+\tfrac{2\mu_0p'\kappa_\psi}{g^{\psi\psi}}\Big\rangle_{mm'}, +&\; +(\mathbf H_{YV})_{mm'}&=-\chi'\!\int_0^1\! e^{2\pi i(m'-m)\theta}\,\partial_\theta\mathcal F\,d\theta, +\end{aligned} +\end{equation} +exact term by term ($=$ Eq.~\eqref{eq:ep_bernsteinK}), with no equilibrium +identity invoked. The compact form +$\mathbf H_4=\mu_0p'(\tfrac{\chi''}{\chi'}\mathbf J+\mathbf J')-2\pi f'q'\chi'\mathbf I$ +is the same matrix, obtained from \eqref{eq:WUV}--\eqref{eq:WYV} through the +Grad--Shafranov closure \eqref{eq:gsstep} derived above. The global +term-to-matrix assignment and the resulting $\mathbf C,\mathbf E,\mathbf H$ +matrices are collected in the main text. + \bibliographystyle{plain} \bibliography{references} From 3bf3334e7dbfdad3c4011ece9e42648dc8e0118d Mon Sep 17 00:00:00 2001 From: satelite2517 Date: Tue, 16 Jun 2026 14:21:45 +0900 Subject: [PATCH 36/62] DOCS - recon: fix H4 appendix A.2 (|V|^2 residual =, block labeling) - A.11: replace the proportionality with an exact equality; expose the 1/(B^2|grad psi|^2) prefactor and that the numerator vanishes by force balance mu0 j x B = mu0 p' grad psi. - A.2 intro: correct which V-products enter H4. Only Y*.V, U*.V, and |V|^2 (with the -mu0 K scalar) form H4; X*.V feeds the C block and Z*.V = mu0 p' xi_psi'^* xi_psi feeds the E block. - Remove redundant "Input Variables and Parameters" table. Co-Authored-By: Claude Opus 4.8 (cherry picked from commit 1ce5e3cffaf3079213dcd63e7343ea553bedae1b) --- docs/tex/recon/main.tex | 82 +++++++++++++++++++++-------------------- 1 file changed, 42 insertions(+), 40 deletions(-) diff --git a/docs/tex/recon/main.tex b/docs/tex/recon/main.tex index 3a8a79b9b..81f59cb02 100644 --- a/docs/tex/recon/main.tex +++ b/docs/tex/recon/main.tex @@ -2711,20 +2711,6 @@ \subsubsection*{C Vector - Covariant components in the gradient basis ($C_i$)} \end{tabular} \end{table} -\subsubsection*{Input Variables and Parameters} -\begin{table}[h!] -\centering -\begin{tabular}{|l|l|} -\hline -\textbf{Variable} & \textbf{Symbol/Definition} \\ -\hline -\texttt{bwp\_fun, bwt\_fun, bwz\_fun} & $\mathcal{J} Q^\psi, \mathcal{J} Q^\theta, \mathcal{J} Q^\zeta$ \\ -\texttt{jacs}$(itheta)$ & $\mathcal{J}(\theta)$ = Jacobian at each $\theta$ \\ -\texttt{metric\%cs\%f}$(0, i, j)$ & $g_{ij}(0)$ = Metric tensor at MODE index 0 \\ -\hline -\end{tabular} -\end{table} - \section{Log-output quantities and their exact integrands} \label{sec:logmap} @@ -3053,8 +3039,17 @@ \subsection{Setup: the $\mathbf V$-sector pieces and the single geometric rule} \qquad \vec C = \mathbf Q+\mathbf V, \end{equation} -so that $|\vec C|^2$ contains $5$ diagonal and $10$ cross products, plus the -scalar Bernstein term $-\mu_0K|\xi_\psi|^2/|\nabla\psi|^2$. +so that $|\vec C|^2$ expands into $5$ diagonal and $10$ cross products. The scalar +Bernstein term $-\mu_0K|\xi_\psi|^2/|\nabla\psi|^2$ is a \emph{separate} piece of the energy +$2\mu_0\delta W=\int[\,|\vec C|^2+\mu_0\gamma p|\nabla\cdot\vec\xi|^2-\mu_0K|\xi_\psi|^2/|\nabla\psi|^2\,]$; +the purpose of this appendix is to show that the $\mathbf H_4$ part of the +$\mathbf V$-sector --- the products +$2\,\mathrm{Re}(\mathbf V^{*}\!\cdot\mathbf Y) + +2\,\mathrm{Re}(\mathbf V^{*}\!\cdot\mathbf U)+|\mathbf V|^2$, +together with that scalar --- collapses to the compact block +$\mathbf H_4=\mu_0p'(\tfrac{\chi''}{\chi'}\mathbf J+\mathbf J')-2\pi f'q'\chi'\mathbf I$. +(The other two $\mathbf V$-cross products, $\mathbf V^{*}\!\cdot\mathbf X$ and +$\mathbf V^{*}\!\cdot\mathbf Z$, are \emph{not} part of $\mathbf H_4$; see below.) The field pieces are \begin{equation} \begin{aligned} @@ -3099,14 +3094,17 @@ \subsection{The five diagonal and ten cross products} Every $|\mathbf C|^2$ product is reduced with $\vec v_i\cdot\vec v_j=g_{ij}/\mathcal J^2$ and the cofactor identity -$g_{22}g_{33}-g_{23}^2=\mathcal J^2|\nabla\psi|^2$. Only the -$\mathbf V$-touching products -($\mathbf X^*\!\cdot\mathbf V,\ \mathbf Y^*\!\cdot\mathbf V,\ -\mathbf Z^*\!\cdot\mathbf V,\ \mathbf U^*\!\cdot\mathbf V,\ |\mathbf V|^2$) and the -scalar $-\mu_0K$ term enter $\mathbf H_4$; the remaining diagonals and cross -products are listed for completeness and feed the blocks -$\mathbf A,\mathbf B,\mathbf C,\mathbf D,\mathbf E,\mathbf H_{1\text{--}3}$ of the -main text. +$g_{22}g_{33}-g_{23}^2=\mathcal J^2|\nabla\psi|^2$. Of the $\mathbf V$-touching +products, only $\mathbf Y^*\!\cdot\mathbf V$, $\mathbf U^*\!\cdot\mathbf V$, and +$|\mathbf V|^2$ --- together with the scalar $-\mu_0K$ term --- enter +$\mathbf H_4$. The other two route elsewhere: +$\mathbf X^*\!\cdot\mathbf V$ (a $\xi_s$--$\xi_\psi$ coupling) feeds the +$\mathbf C$ block and +$\mathbf Z^*\!\cdot\mathbf V=\mu_0p'\,\xi_\psi^{\prime *}\xi_\psi$ (a +$\xi_\psi'$--$\xi_\psi$ coupling) the $\mathbf E$ block; the remaining +$\mathbf Q$-sector diagonals and cross products are listed for completeness and +feed the blocks +$\mathbf A,\mathbf B,\mathbf D,\mathbf H_{1\text{--}3}$ of the main text. \medskip\noindent\emph{Diagonal products.} @@ -3168,25 +3166,29 @@ \subsection{The five diagonal and ten cross products} \end{equation} The second equality for $|\mathbf V|^2$ is \emph{not} a generic metric identity: -it uses the magnetic-surface condition and force balance. Writing the bracket -as -$\mu_0^2[g_{22}(j^\theta)^2+2g_{23}j^\theta j^\zeta+g_{33}(j^\zeta)^2] -=|\mu_0\mathbf j\times\nabla\psi|^2/|\nabla\psi|^2$ and using -$\mathbf B\cdot\nabla\psi=0$ (so $|\mathbf B\times\nabla\psi|^2=B^2|\nabla\psi|^2$ -and $\mu_0\mathbf j\cdot\mathbf B=\mu_0\sigma B^2$), -\begin{equation} -\frac{|\mu_0\mathbf j\times\nabla\psi|^2}{|\nabla\psi|^2} +it uses force balance. With the Lagrange identity +$|\mathbf j|^2B^2=(\mathbf j\cdot\mathbf B)^2+|\mathbf j\times\mathbf B|^2$ and +$\sigma\equiv\mathbf j\cdot\mathbf B/B^2$ (so the bracket +$\mu_0^2[g_{22}(j^\theta)^2+2g_{23}j^\theta j^\zeta+g_{33}(j^\zeta)^2]=\mu_0^2|\mathbf j|^2$), +the difference between the two forms of $|\mathbf V|^2/|\xi_\psi|^2$ is an exact +equality, not a proportionality: +\begin{equation} +\frac{\mu_0^2|\mathbf j|^2}{|\nabla\psi|^2} -\left[\frac{\mu_0\sigma(\mu_0\mathbf j\cdot\mathbf B)}{|\nabla\psi|^2} +\frac{(\mu_0p')^2}{B^2}\right] -\;\propto\; -\chi'^2\,(q\,\mu_0 j^\theta-\mu_0 j^\zeta)^2-(\mu_0p')^2 . -\end{equation} -Inserting the DCON currents~\eqref{eq:app_dconcurrents}, the -$2\pi f'q/\mathcal J$ pieces cancel and -$\chi'(q\,\mu_0 j^\theta-\mu_0 j^\zeta)=\mu_0p'$, so the residual vanishes -identically: the parallel ($f'$) current supplies the +=\frac{\mu_0^2|\mathbf j\times\mathbf B|^2-(\mu_0p')^2|\nabla\psi|^2} + {B^2|\nabla\psi|^2} +=0 , +\end{equation} +the numerator vanishing identically by force balance +$\mu_0\mathbf j\times\mathbf B=\mu_0\nabla p=\mu_0 p'\nabla\psi$. Equivalently, in +the DCON currents~\eqref{eq:app_dconcurrents} the $2\pi f'q/\mathcal J$ pieces +cancel and $\chi'(q\,\mu_0 j^\theta-\mu_0 j^\zeta)=\mu_0p'$, whence +$\mu_0^2|\mathbf j\times\mathbf B|^2 +=\chi'^2(q\,\mu_0 j^\theta-\mu_0 j^\zeta)^2|\nabla\psi|^2=(\mu_0p')^2|\nabla\psi|^2$: +the parallel ($f'$) current supplies the $\mu_0\sigma(\mu_0\mathbf j\cdot\mathbf B)$ term and the in-surface pressure -current supplies $|\nabla\psi|^2(\mu_0p')^2/B^2$. +current supplies the $(\mu_0p')^2/B^2$ term. \medskip\noindent\emph{Cross products.} From 029dad9349feab653873fe276e8a3ea98f1d088d Mon Sep 17 00:00:00 2001 From: satelite2517 Date: Tue, 16 Jun 2026 14:38:42 +0900 Subject: [PATCH 37/62] DOCS - recon: frame V as the rotated edge current + triple-product rule Appendix A.1 presented V only through its components A_2,A_3, which read backwards (the components are the *result* of expanding the physical field). Fix the framing: - State up front that V is the edge current rotated into the surface, V = (xi_psi/|grad psi|^2) mu0 j x grad psi -- a concrete (psi,theta)-grid field -- and that A_2,A_3 are just its Jacobian-weighted contravariant components. - Add the scalar-triple-product rule (A.4): W . V = xi_psi (a mu0 j^zeta - b mu0 j^theta) for W = a v_2 + b v_3, i.e. the cofactor identity in coordinate-free form. - Replace the repeated per-product cofactor derivations for X*.V, Z*.V, U*.V with one-line references to (A.4); drop the now-redundant cofactor intermediate equation. No change to results; presentation only. Co-Authored-By: Claude Opus 4.8 (cherry picked from commit 69c6edc11caba637f6e88f38489c3a2bdc2d71da) --- docs/tex/recon/main.tex | 47 ++++++++++++++++++++++++++++------------- 1 file changed, 32 insertions(+), 15 deletions(-) diff --git a/docs/tex/recon/main.tex b/docs/tex/recon/main.tex index 81f59cb02..7d623764f 100644 --- a/docs/tex/recon/main.tex +++ b/docs/tex/recon/main.tex @@ -3068,6 +3068,30 @@ \subsection{Setup: the $\mathbf V$-sector pieces and the single geometric rule} \qquad \mathcal A_3 \equiv \mu_0j^\theta g_{22}+\mu_0j^\zeta g_{23}. \end{equation} + +Physically $\mathbf V$ is simply the edge current rotated into the flux surface, +$\mathbf V=\frac{\xi_\psi}{|\nabla\psi|^2}\,\mu_0\mathbf j\times\nabla\psi$ --- a +concrete field on the $(\psi,\theta)$ grid --- and the components +$\mathcal A_2=\mathcal J(\mu_0\mathbf j\times\nabla\psi)^{\theta}$, +$\mathcal A_3=-\mathcal J(\mu_0\mathbf j\times\nabla\psi)^{\zeta}$ are just its +Jacobian-weighted contravariant entries (the expansion is in the main text). +Because $\mathbf V$ is a cross product, every \emph{in-surface} product with it +collapses in one line by a scalar triple product: for any surface vector +$\mathbf W=a\vec v_2+b\vec v_3$, +\begin{equation} +\mathbf W\cdot\mathbf V +=\frac{\xi_\psi}{|\nabla\psi|^2}\,\mu_0\,\nabla\psi\cdot(\mathbf W\times\mathbf j) +=\xi_\psi\,(a\,\mu_0 j^\zeta-b\,\mu_0 j^\theta), +\label{eq:app_Vrule} +\end{equation} +since $\mathbf W\times\mathbf j=(a\,j^\zeta-b\,j^\theta)\nabla\psi$ for two +in-surface vectors. This is the cofactor identity +$g_{22}g_{33}-g_{23}^2=\mathcal J^2|\nabla\psi|^2$ in coordinate-free form, and is +the only tool needed for $\mathbf X^*\!\cdot\mathbf V$, $\mathbf Z^*\!\cdot\mathbf V$, +and $\mathbf U^*\!\cdot\mathbf V$ below; likewise +$|\mathbf V|^2=|\xi_\psi|^2\mu_0^2|\mathbf j|^2/|\nabla\psi|^2$ follows from +$|\mu_0\mathbf j\times\nabla\psi|^2=\mu_0^2|\mathbf j|^2|\nabla\psi|^2$ +($\mathbf j\cdot\nabla\psi=0$). All dot products are reduced with the single geometric rule \begin{equation} \vec v_i\cdot\vec v_j=\frac{g_{ij}}{\mathcal J^2}, @@ -3241,17 +3265,9 @@ \subsection{The five diagonal and ten cross products} \end{aligned} \end{equation} -The collapse of $\mathbf X^*\!\cdot\mathbf V$ to a two-component current form uses -the cofactor identity: with $\mathcal A_2,\mathcal A_3$ as above, -\begin{equation} -n(\mathcal A_2 g_{22}-\mathcal A_3 g_{23})+m(\mathcal A_2 g_{23}-\mathcal A_3 g_{33}) -=(g_{22}g_{33}-g_{23}^2)\,(n\,\mu_0 j^\zeta-m\,\mu_0 j^\theta), -\end{equation} -since the $\mu_0 j^\theta$ terms drop from the $n$-bracket and the -$\mu_0 j^\zeta$ terms from the $m$-bracket; dividing by -$|\nabla\psi|^2\mathcal J^2$ and using -$g_{22}g_{33}-g_{23}^2=\mathcal J^2|\nabla\psi|^2$ gives -$-(m\,\mu_0 j^\theta-n\,\mu_0 j^\zeta)$. +Here $\mathbf W=n\vec v_2+m\vec v_3$, so the triple-product +rule~\eqref{eq:app_Vrule} gives the coefficient +$n\,\mu_0 j^\zeta-m\,\mu_0 j^\theta=-(m\,\mu_0 j^\theta-n\,\mu_0 j^\zeta)$ directly. \begin{equation} \mathbf Y^*\!\cdot\mathbf Z @@ -3287,11 +3303,11 @@ \subsection{The five diagonal and ten cross products} \mathbf Z^*\!\cdot\mathbf V = \mu_0p'\,\xi_\psi^{\prime *}\xi_\psi -\qquad(\text{pointwise, after } g_{22}g_{33}-g_{23}^2=\mathcal J^2|\nabla\psi|^2), +\qquad(\text{pointwise}), \end{equation} -For $\mathbf Z^*\!\cdot\mathbf V$ the same cofactor cancellation gives, before -inserting currents, +For $\mathbf Z^*\!\cdot\mathbf V$ the rule~\eqref{eq:app_Vrule} with +$\mathbf W=\vec v_2+q\vec v_3$ gives, before inserting currents, $\mathbf Z^*\!\cdot\mathbf V=\chi'\,\xi_\psi^{\prime *}\xi_\psi\, (q\,\mu_0 j^\theta-\mu_0 j^\zeta)$; inserting~\eqref{eq:app_dconcurrents}, $q\,\mu_0 j^\theta-\mu_0 j^\zeta @@ -3309,7 +3325,8 @@ \subsection{The five diagonal and ten cross products} \qquad(\text{pointwise}), \end{equation} -For $\mathbf U^*\!\cdot\mathbf V$ the cofactor cancellation leaves the pointwise +For $\mathbf U^*\!\cdot\mathbf V$ the rule~\eqref{eq:app_Vrule} with +$\mathbf W=\chi''\vec v_2+(q\chi')'\vec v_3$ leaves the pointwise coefficient $|\xi_\psi|^2[-\chi''\mu_0 j^\zeta+(q\chi')'\mu_0 j^\theta]$; inserting~\eqref{eq:app_dconcurrents} and expanding $(q\chi')'=q'\chi'+q\chi''$, the $\pm2\pi f'q\chi''/\mathcal J$ cross terms cancel, leaving From 42f2ddbb86e39d1575c87f1b35bceee3e1876c21 Mon Sep 17 00:00:00 2001 From: satelite2517 Date: Wed, 17 Jun 2026 12:32:46 +0900 Subject: [PATCH 38/62] GPEC - recon: covariant bare-Q (qvmn) output + fix QvsC figure gpout_recon: dump gpec_recon_qvmn_sol*.out = covariant Q_i (bare delta-B = bv*_mn, captured right after gpeq_epf before gpeq_K/gpeq_dst). Effective field is cvmn = C_i = Q_i + V_i; cwmn is the contravariant J*C^i. The quantitative QvsC figure built its (curl Q).grad(psi) panel from cwmn (contravariant) fed into the covariant curl operator -> spurious RMS 3.8e-2. Rebuilt from qvmn (covariant Q_i): RMS 2.1e-3 (Q pierces) vs 2.1e-12 (C tangent), matching the C-verify diagnostic; both panels now use covariant components as the caption states. Q-vs-C table + caption updated; figure swapped C_eulerian_lagrangian_n1.png -> QvsC_quant_n1.png (+ gitignore exception). Co-Authored-By: Claude Opus 4.8 (cherry picked from commit fc716a45261db669adb8234fbdc6754c0d485829) --- docs/tex/recon/C_eulerian_lagrangian_n1.png | Bin 337616 -> 0 bytes docs/tex/recon/QvsC_quant_n1.png | Bin 0 -> 1105847 bytes docs/tex/recon/main.tex | 70 +++++++++++++------- gpec/gpout.f | 27 +++++++- 4 files changed, 73 insertions(+), 24 deletions(-) delete mode 100644 docs/tex/recon/C_eulerian_lagrangian_n1.png create mode 100644 docs/tex/recon/QvsC_quant_n1.png diff --git a/docs/tex/recon/C_eulerian_lagrangian_n1.png b/docs/tex/recon/C_eulerian_lagrangian_n1.png deleted file mode 100644 index df7d728e6ddab40a9a5d79f897430a010cd340ff..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 337616 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

f-Kp3%>4xO4F39PJ}xLO#bY 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

XJUA7DOzjyv&P_u^-PIJqbZlcY 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 z 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 z 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

T3b(nQtc<5$^H7-ycH+D@wadN_tJm^3*W9 zveY-(*`s*1JYy<=cnZE!^kRJc>x^RAR7eQeeT)nr;n{t_j(1lHDt^k^qSP;4rx&oB z`vVIW9itCT5$FjnSCh%Yq-1>eUwcCQS0pRl`-;|6Bad132wUjANxZ5?Z5God#T%HW zzwPE8S=fJFOH^?tH5XKMcJ!zh2fj%m%yX&u%&(P}mYTA@MApfW7;={QT3=t^hLQmY z)=3zS0-2#5wVOOVc~aVwQ8wT()&SADVNegK&3s|RRL$+4v12AIB}NqpLlOiWFB61D z*63TcqOGRNC_1 zmhj(M>l&IQsmchWp+?yf@9ocP)m_@^zQNEUxK7Fb|rjeRSO2O+>m&hVeZ;N{~!hrH3UrnO4|9F`!oZ-4{{Q!n` zPRxa}gF3!&MRB1O9JM{oGaT;jt1|EW(1t*Feb37Ww ztgc$01|-9ayJ$dNs3%Q>GqFtRJaq$gEz2Wi_l8qQh6KUXxG$$Z_v}ZX%evU+knj-e z7?v$zrMVtR3D5b}R02UKr%L{psGaw)Y|IB$Gf%gDoJBO5_val4+WzWMeqL_f`qLD( zd>A6WI&wv|3P7_ygG#3%r}Q}T`$z&M_;~{eF(3YQWyhqC1d-)d4!-?t%{1-RJdF;g)lkq&L$z)y?;D15C;A|eyhNNa~qeR$8~&fc}IL) zN|Zq^bMtY9;6W4+Bk%H#g_IY6Oz-jl>^)-Tj?gOMF-68Pof6Q2H{XeZWW;7CN{qgDy|Q3vFLI|{8TUIfegJVob$(v3>ER$wd1l}y1PG!17PT7 zR|rZ<^$iV{RxcUoCKjO%N!1|w@wBQX`X+Isj6g+{pwnO5rXT2S$*WW{`k^IgH2e|) zux6YBCF{xwW5s`y4^qw#nrHLfhz@O@(-UU6-A4;vky)~Xd6!Oxe#Mq-MH26WIVx|( z{>8x%&-Zq1w{=b-tXSx7bcx(UN~h$D0!jYxT4$?30gtaBI~5m-j>(uGXv;@MKx}8< zQiEv`Ql>x@LcTnZmLI=)^JZ}$QTl< z?AgSwHpOBMu`*vdU;nwN;dWpH_v?$pJy2aae%kI`THL1-p(UIq{wi{~u3>L?&EJK- z?}Dw91H=99UXSHTb#vn%Rli^Bj^Ymo-^ecvqz0dAsC!NCfLt*|ox8|w_QX=ro|ls| z7;=jICiO_T6+jaKxLvp&_+e(uBPRt4az%SiL7Hi>JW?SACMnRB;{^F6h*vO-pck?o zejIPf86ma5_f;{Y&-i$rY_ksuR5KzC0@wJ%hr}@q|Hc0@e|gQm;WBvRczgF_ZCj#R z84iu{R;Iana>lQfr4B#xl2z>+*y3I&arRMOxoSXiG~4FPrkXba`Gz)Zp*j73?>=U@ z(N`J$A8g#ZO7Gcc%d>n}R%z61MQ4uY7}9j}tMWWE_US)442^bOlFr>pu6SK^p^$$o z1$F$NlS{*tDA-U37W5Q|Xr`;JLH>jkmyl*F>6G(=#|Rh`As-!XMJdQR5c?oZo}|_4 z#52H9Os+fH77r42`A9s2wMGPQK|KwS)7hOXqWjA@;B2OMq8<;?_;T_!9+c6P!=6dO zuHjvj6(z`jx2XSNg14?~)w@!5R1{^-?$LxryB(od-rBN=xT#AD<%QrFiL%*bg9jJb zr-yjcIZCLbk9%OhZY{`@B{R6sRV@sce=gSE%1;Q&?;qKV_>@8WyWyGKn;y)&Sd2-cX2H=IiIn81)5)}tw?<9@ zDT3BA{0V!y$V5Zdx*lvk^?>aQp&2Hz|D_c|Y1*6fHbiVo7d8Q+@bmNMElABH1Z-|w zO*OG#HYHcPRm~7->LL?YQVX__`f5-j2n1jcu<6-t_CYG5064SCnL1}7rAdEB@c8z- z-)AcJHZvCnZyFm72aUVg90Z7lJ#mEFWJus3YX3%);)jjLdwiBl2x1l36b$v|I88#x$bXU zHX~y1bZ+|=NspQ#z}&ojo8TSvBe-nlIxW3FKaStM8zF^;Y{A~a0hBAvz6iKNF#}^7 zZ$Os>(g`~jlszD|vwC^$$~k8@cE5BJ^~H{NblVHMpU1W?JMF>rqXtn%EWtm1FR1@2 zjNgwQeduG;p48RiID9vx#;mJl>Q=BQJtNfDeAZV%csAnISgYP8H+IG?t-W!#XcJbJ z`+MpCxt1&4imO<;#X36~t`|kwbvlM-FUl3r3?A z&Awh~rqAwkmmCjs#N=~DtUmquf$F_Xp*&?N*HWFi=l#8S$J^T*NR>w@M0)JD!OTAp zo_Is@*5#kW#H9ta?PQYlu?}<;gTzl0D@F_|8tWEr`YJF*^zvM4(KFvy!&@=n=6B^0 z-dgSbl4999Ty6Vdr8~%UYLG`%x93&5s@Z> z`&p<-f@5lu4_1@j<5Rx7Ibq+BT0rf z-x#C57K%jP2eVtf(F9&@h&36MMCzr{&^l@R_7EotBOfLf+@K3;MV-H1`hhynR{bGA>6XTwL8gq^pb(m${l47>!~*x!_vH6xY@G%B zBWF^{o+J4S>#I%A^>gv#S{K!fyt3Ti;h zt+CUl@+%N+7eZecKD#X-MMh5k7bcqxa0uFT6L1IURD|jD!2AAnj&<-zF1#PDGWw?X#X|Nx1m3WV>M|!%YmV2ST81F#?j| z6X4i(qHuvk|J$4>?Q$~n4oV>9Z#$}rdhjb&W=fl~O2>cSc0@T?TT42lZ>RYkbg~+e z-m~^PA!DD6O-vCmBfvSJ`MmX~6>h@k*zo=$o5PNs3F}^)ClxkAq<_@W_7;ni?pyU# zP_ZM;3x8_fK%|r{PRkOCVUSxx@NA$_=n3ah@Sf|^P>CAcKX;DSX?Ycy#vVBc;%Zu+ zM{i!WR~PzEa$KNvfcyJdzhcd$&YbZ)*V*Ns?Qr_HbYCh#aI_r3Bjua6*ifG67y|Dy ze(-MiF5$h|*=+#>-O<788B?)Z&6b)b4CL2RV(8_)1YFHs9M<2GJ&0{|Qv8E>BLFBI z89OHj6L{IRf{p1q&Dr9S(8~{Oz1=GYv+zEXfnlb<|7(bc&~*q0IG`oIqi`>+iukWk zD1NhC4;%$-<|f*=r~vB15H zpgFR_Y3ZT4d1lq()$XYKE_M9(^diGJB#YIm>c8zK1V-CRt1@YbUJ6Mbllk$lQ_etM z-bk6|dN$3Cve@q1`20;{k3z+Yz9aW$m0f#$$brI|Z^~VT1fis=>doc3@jMeLx}Glr z4~I-qn#fvI)57>D_$rH#kdP*2KQxXA)2!-mhJDGulXMw-5&OIa&ympU2b6pZ4VL2Z zcu0)_ngL^J#WYKXtBpfe>obEvOT*5%>z*D8uX2rmEcpP`DT)0=DeBBdp;G2D9ls?OH4CO3AxL-`D*Gah(t-f{g$pdn4hD+;KxZcXn&t>3ZvNlw_p6Sm5fL?glmG~~R;7`umwk*9& zUbEgTPlP%Ra_y_5-fP=AHF}=4H}>#Wl&f(Q{oPQl3}zE(&6Q{`D|=NbDQZ$L<>-IB zL-Ai_MX8*FE5e%q){t4*JLAelq8GC@Tu?X79g3>^WMfT;w&LGk=lIidXKjijUUdiN z*i9OiKI>8#8(In$X;kfLDXbzU!D?C?KF&5s}l2Fd`*|+5+)6OVKEa1a$sz zFm-!8P8FT%1JDhiw&45rk_2*k7tn_$G=AMNx7KJFcD8pZR9w#%-f-i{)3TfBC23?y#tJ9Out#LS6mv@}R@gfxsmIS9@2VX1XcyFL{OBQQn^+Z(c|ohV^SV9cLIC$t z$v2gT=3^uI1@<1=0yL7uLrxe?{1^ur>J)}Sx^f$>n&qRQiAcu4{fkfvcS12HU?|4Rl2^&D3O*`uE|U zBf^h{Ilw2Lwmlz%^vfUiqpvGHb+3j*8HTC%w;YX)jZ5cS1fa-|z_5XkATD^NAi}dU zXTL(vErfW(rOJ<0%P*B_sob zArH<);L9iutdXieIi%&FpDsEI)$hEy@wWd)d4knHh>isLYp#d+D|bzVH8F1fH{=)O z6nk|So8(1~CL>a)ut&S1%N6E6!>_RR&|*<^i@Kd7)UQ81ncyuU)6Cu~e31n^lCEa& zbk6L+Iwq+po8Oe!s<#uPp%TjzkgJJE-H89^VddzHp7JmLbVadVEs=8 zuYA(utxI(n!;38myhkX>#l!GkK~>B8HtL@3{cC(y->NrCcgJ7H={W@@tyYlKHNGtC zyaO`3Xec${|I8d}vTUu2Gg;XIpu40YVohU7uQ<4MJ{M(UyOT%#VcWceJm5L~|BKD{ zpPG}&^##;O&EhvrZ+AGe94$xGVYh>6P)>x-TesqGQe4eHFek`lZugBESFofw+L^k` zgHPN^$6untB?k$$}t}RJDX2dGt<&(3Z@XcEIE6>`#r4FQ_SqJ9myVbq|fv^k>aY; zZI+PS;!A!}2n=tBe@accG4!eq=w1o!&iuFs3aG`4MSh}3``p6|HY%I(M>vFUct_Zq zD3;`=vsJSTaxAz!iZK=iUQXV;RjqYn#9VsD!{+o!-F|uN)2ElV z9IUL)B@JD{Qx!SeUz7coyo;7Ey*YDQIcHNm!jR(hHDRh(qS9k1vG9_7X5{>4C+@Nj zH|3COZ#%LIfS3=A&SL9LG1?If3|iKMwBQ{H$uiSP9x&;p2BtiSHx~o}r11zJ4#ceI zJNN%3)Zj$IWs6mUOHc9E4eU=~>TsJ56b#J69a5-0w2E|MVb>w9uy@@Xp;AN|IWTHf zPynrrQNX?5MIy*>kng1{S0oG#Z=XJWTCKpm0%C%o zvdI=R7t*pIdq`q6J?}5id}is$+&^7%`%D$4zp0ElmoX(qvv4kK?j|Fn$4$x5yJkZ| zFshfIxWX~~K!C{U(<_%+K_Rp3PBtNtG+OE64aSv66kDa)emPRAALlR3sGz)`cpY>DSaGoG6vn{+Nn$^IWyvgHp?Y#l2)nMbgx-KIh0Za>VqZ zgIlP;pIp)=4E)|9A)o2XWz}EPj8j9A=Q;ZycvEh33V$X+FEZ9l^cdZ$b`5UNa|lakwsbKqHE(*!!*1Yk#XM zc>~MC`ZUkkZ)>vooJGjL}Ik!2Ic2x7_YJu@93`kp$J(H6K$h8XqUNw%aFHP_;`eR>{p76m`}{<#Yz$E^h2TjV9Ld`e_Zcg&n>- z4mzs%q#$Rw*(P#7c+RAMQP&x*gTL2K+iw^P zvH_lVpX_+@<2p%NdcgmIjPr{|&3_Tc@t6wwOBneUF0?*n<&v@c6|>krnN)-3mWeic zzge22>td#nExc47v?@!hfpJ2X>V#5E(?w*GU13pCO>mFwjChc2Loe|;%{-YBDh<>0 zO*vnixYaFrgEtZHPW;ys=#EZxo8%f@D)-CJsp!|Sowtp*l$4b<0EUZke_jB@pXuUMCmcZ! zWxtJbS!W}vMuSknKX-Qo@0p41StNEH1}bH-EOTmOWnT9bh6X2mnyj@MR^E1%$eDBB$esO&DSS7MmRX&|FFjPjkHNe8!JvYb`Jv zy(z60H(8>Bzcx|uiU2W;gr^bdJ~anN#56#bSpG{sm0!3*VXx?lUk? z2>v^45bxw<@bRha;wRe{1083Oa+w3qsZ(J^jneV4BPrl`ZL2v zYf$~|ams%yq?30MZA_4<11TO^pP(Q+`x1(KxoPP{+lt(ujpCo9JH+ig&tZ|$ zY-+IU?bI7<&iMs9tveM^EHGnz($OEIK%g0GQ6f1ZU;QYu1b&M?W7@Ko?urOB42+Mz zVY@g`5A6!T65O$NVpF~3!tI(UzxgV~e#LY0Rj86_t>LQWn?oS>4q$9~P13=?{c&01 zl#AP!Nt6tw%Hk68y98fwDE+^^j9e1pCwn>jMigI#SZm9;@dLXv^F`AN-Zn-KYjd;< z=g*rPPvTWxNAdvoCLn{qpH?=v2hDqCX1`-pi=tPVEj`FVMe~gB}>& z(G84Wo?zayN|&YT`w|>H_X?r4!3Z`Ezy|k2AUQe;iX|;^rT#62`D937IlB)mUyYc~ zzzj!M_Grc1-XI`=tf7?Dg{MJuY?e}=*dipke$0mEp65ux^5%|YTn`$J!BaJG+;jeRt_NrBRg2rXSsYJeCq45Z~(*H_S^}C&a3*pP46) zP|_<5lmcsqDbxS|YFyiU62F?Ml1d}u91hLPY_nkz5CHR|p){79_}r9hUB64lky6-5 z5~;FAvQ$WHgSYr*sL{pa(OU|BT$%xnJnUA8^Y-|PpVd9Wi5k_uH)Wvf1-NF(W69Lq zBn}R7!!&>Y3x{jFN82|H>9tGDs_R6164rv2FrQFq#@Kd#R#bea@t91)-voz?iG~>= zh!67})jWUj_slXK6bNgf#S-$`Z6sEFO4`Zp?%FXmG8O%E5FONRy8U{Y&B-8oJDW;q zzk*JqR6W`nNu9*2OJJZOeyW9;=JnCo^hX)v8pFo>?5M4iyU@=tvn-h@tJfH;+&+Nc zO$NL&m~i^hs`lGPN^*C%vp7-f`vx*O>lFIcXyj7}debKlbo0C)#i$4L_7|EvzRC;O zn_id_*J0A2AVcuY&2xtTUR(BmuRQ_k-a;#Gt=Ws8B9=>e$0o;@vI-3X36m75F?a#2 zA=xa-11nE1u+8mp{!(;F!>Unhnq?<7T86{s9Ip*Pz5vMOWrFWunAv!iKE-0-vc9u{ z*%=q9_>0vCB5Tj?b=5S+)NeoG^e=Sf8;VOiA4D$@@uU$i&57vb#=86%mj4Dwz3c-V zQw?+T%1GLEX{xTq4TH@~TLNJAgD{OD`MnwV+f4eK-IQ5Q1fvy z9x;By9I&If|Fl-JhV=iv+nKBBqd?L7N>JCpthq#^v9{(b? zkO~=`P!N+pD{K#EnAwlOvX81oj#hT@yy{mki=>Rg zQ@FDj_}jTs26*jw4dk=b1k%H(GztpYXd}-SS!-CN!zsE8S%|MMRXCQXGIh`A&wlh& zx0p;bweDPPh=|#Q21#bTCFZ3~!G8PZ*IQe}DxG2M4wNmx z=ji|}qL{HCOS@x1L3Rtw~KcnRYI^Kg^YV-Z7t0TOobd znt*V9W|nrrRuIWTYJABNsU1zXgRgMSgqhVfHv0X>SFc#OK2O!#O{kf!vuL#!+=DOl zu|(UTNnjxXIZ-|e{~f>OP>?_^hFYdjZ?P!!wMI#;xP*7(!@d80`6FCF#;1W38e4e= zZ8wcrgL|pZWyY|qp_lB1o1Qnm+0Ey%sQcN1i*H}}U9G&wd#2tc9C;r8SNxc%7L@j_GCOMvV@ z-n}yl)S64avl$k!Zjh>00TvEHr+bD=JCJ>rad-TVBq{ygS1gu@a@ z!~e)Z#mWzX+NGD}Inc0Kf&{TQ-oa405z06BPOAN7>EHHHq2S*xY@#3k&~+ zjgoHsq{oi8UzLF{g~-`bpBXB)OP8GHxCNNw^JGlsjcoaC(3achr5nUuB1YSn9CVpa zGPd1oPrZM_hE=!$GiOrNU<(=jlED_|mK&ab>!A-SWy!U3xp3r#{ykyB7WK&4+|L^3Hz9Vtvt5tL> zNJpK2V5@(%4DCWaEsJf_6AKvq>b|o%2j7X;Kg;1As;HKH* zUbVG#GCAH#4CK;q<-CSg-TqQBBY9p)QdT0_+r5J^_o=Xl6E|k8)xXYPrEy~TinH<- z`uAfkKVN=^-~f}|hG530;FdMs$)YRz7Lfos*zBi8O-!)&2+`-c62F~p&{XhqHJ=o{ z=KRk6SQwFk{g`^C;IzB?NSruYYJ6#Fsp8e?qg82sm+;slJMLbp$8JL~Nd8-FX9m@= z6e8ISa#J9=yU3A3GoWi=wjgEXylj*37300+isEmNt?a? zL$&4uZAp#!I zcUmjv`<@q*y1bB=xiFQGvbVzYd**apbKJZ=BaK?RNe#vHhmdCxQVvE2i#Gq~UbH&& zSGft^w_to02~>`Oi_pjZUNuhw+ZA})>S~`t&lQJN1#(>9WX>qQb$RH}uwa$+&DGh+ zo#RL!fAN2J^8J32{+8w1RbRne?ZAb`BWY}(Y-3JZSQsU(fb}gL69qT66m2?mY9Dz7el^sTeG(dQ{)pXi zSg{e$)qn0~EUQ3QEvCN^rz<-<8<^V{V0A}e${Gb$bbyBd>qhk{6@V zWIdE9jcSLNuB@th+nquMHW}aHGDpyJ;IH%-2HIzE)cf@&@}muQwiE$P$Wd4LgA@4< zD+|NA*%Tcc3I21P!~n#Ud~#1(Tge0WDlWygrQRw*bm&Q*8IOw;4OY=IEfcThn3Ab@ z04`D}O39Uyz@A+=gPJbWD|z77Z|GfTfP0_0c){GcSTjg*O|rt+Li+mT-Id{fiPkJ~ zCnq*HLNTXKJ$rHCIsCmZd>AM+5L7lW5-RjrU1gqb@9g|VJ6QE~dQr?4FN^LHCKlLe zu{!-M_%xDeK0A2PLJ+spV(=eWfZ_ja3=I9=XQk`|tfrB1dn7h2PQ8%{WQ8O0M+lZfCL!DhiNUd*do6%RU z&wH?e)5{~M+{=@~ld+9SlvztN{mm;pdBNLNvnfuLBE;g*I${cdAM0~{F{JAAoZm;^ zI-aGe(P6)SdGO%Ll{FbE)_g#k4dkZ?#prw#^E(H=m9=Kl|kQc;nq%Dyd?h#zAv4N#2cx=qQOh zB^_!1=Tc|geQ*S>@R^RevA(*G*}Xi1#asND{U4 zU#f+TE&ecQUu~zpZS0h$1E z-ubQbCFJax{R<#G;w;Lqt&VE;YSynZ%$+&}m2D2GdhZKb?1l`Cvoc2y$JV^!L0?uZZI zNi(Yb`x<;w|N9yReqH*^Y}{_2wjVh{xLh3Hl2+|4oIYi6iQ^*u8qUW$+gD2JgJ~}Q zuUwcEdNv0}2Z9%nGnGmEJ5x0~Q|XTNeEY}J=t$0Q36zSSbV(X>rCDa*OjQfC>0sJk z^iN>m7b&C+!31_X%*Kc3AP&y5pF2aDWJ=9QLu1QwZ;^OI&^=7H^g8RS6masX+*`9e zQxWJ~Ll@E&kiEI9cboG@xnG>{9GB2{b{nIePoPbzYF6^{jT+b+g6Y;b?UKHGTe3gi zZ}5pE*#TtXVi`F$f%o36Z2hoD6ANu`?``81nh74?HDd_G@n7;g_6#6Qh!O&{q9M5h zqd~hpo??IJ4=|e&Gq)d*DV7YnDC}Ly3h^`^S2zfAi_!_&1Pv2q{IiZdSY2wBqu# zf%!6Jd9$VgswD2=Q%0JB0>MtR)?WemJr>(ig`4yX&5NL>8DjZWpHpmjGfr*rw}`6i zf!DVOZjonEZ?PfIY4?i?xDTy?I)vbI;Gu0K*`%E9vNefJh!|BL3?8U&|Lsxv+bc&~Ul2?4x*%8EQs^Q^I! z^0S{l@_w8uisHtMMimmXBx=b?r2}$VLAkojC`k9*0IQLeUzo|=E z)7+u^HoD%j7oD(5K zU@(w!v_R>qnd`HF>drJ7CMAw)X2;kXcdw>uww)b*;9cjH7{l7Z6Ny>VHI8*$-!sGw zO|is#Pi_0&w(8rU`J1cfr^fz2s@^;v>hFCYpArg@Bs;~cRMrx*SA`}2J~e)C5~^LQ@j+~>Zp>pu6nZp4Rw z*d1g9b;NTnTOPcLe(CoDTvU$e$_4=g*Pk z!dlQs74*Lwrv4KQ(r6C@8RWKZCoP$+@&3-EPG>LI!yb3BF^?T|A=hH{=5N{_0|$FR zj{oiZ_r|N~po)~P1w&RB5aj!qxiBooX6W;SP zRc+_4|E}HsUl9oqDUwOceknii(Cz8|m~o9few;CDeEsbM@-xAk4f&Ui#h=bUkhAV| zOE$sTi&;Niw3OrIjx@>i7PmateZiaa9oXHz4Zj=sqBbqKO4iba^47>(jx{n?g*xH!WRc!nmW%$BurB>hu$N++)*Zeo!Ux7}cZxa)5 z-oAYltj1adD66>|8Nu=AyNsOESve;;@aK+lY8-a#jwSM!Ro4N^-g(SYzgkkPH$Ef6 z{n4PHvfA2DgD&sqyxqIOCs%l^nUjBdZAL66G)F-1S&z-pJqWnf6a43k(Ccl6EJ)<) zzoo(61(Lo|hCF#Yt>AbX)$s=Z$&ugJ9uQ)QJ>(ZnLmeGPu|8GYB~_B2;p?IeFTa@G z{94j!RyEEV_KjU}@cp43a_0RLwiQk>%N*QH>wN~=*4zdsG<2+bpH;k^ZKVhL|9AJN zZLc8(&!ZW}hdSk5c<&of z{r*-g7M%!6Mz$D3Jg?)debe+Lo)5Ggr&fW$A$i0N7PGORO+r7@&YbGFdLZ=5zov{#9$ ziTiiVN_aSN%=sH=Dm%oq@il+??sLN(oZyS5;8E?a`zxYcCnPSOnkalAJ-;uP6ExWT zR`mHev$?h1u~&T5?MI^gzn?ku{IB2&92^4TUE?QZf+26`&r9;M!ozC3-Gv#V$GR35 z?>kKDbURlM3|FP~I3p}s=pyChcPcBF86~75$0d|4a{fJ2%HcDWyv+cmAz;hFeK~P6 zIT4bU)(JRTrfs$QGrCf<7FP)zDgLzmb?5u#S#f{<<`{HE^N z(OM?+)JP5-|D$sj<9Tj%=cCDSzCgx`(L$9-@pbKM!(naQYKU}3AKx1D%iTSXg_}{g z+a3yi9NNi!VP)h0qu@^4!*#X8iY?3`8#b^G*l8BcY9>y%ja6ipXlmpfv&WWyvLno= z!@jGB*v3riYMY;)oP$dHpbc72C%kXC?dX{1c$z)`bi81=8nwY!Mfwy2>+3fhKwwA3 z_|R(ethB4QCYJ__CcWd;MF&-YP{Yu#~92-kMQH`G$_g1#bd?dc( z{1MG|`X&?KZ%R~o>^0X?Ix`r>aI>UKwj+&T#;=e;#oM7fk62D!emARvoy8Vc9;s1(!lpBsawHk8ze5K zIzQ5A*H@Y|xZ!{C>u;>Z+L&)rc(`-J&(4T9gl`W~oF6I#WL^&wzS`5l$Y;(J53Jp+ z8t&Ws;S4IR--06jqN4&^*hpVb)XX!>aXIefyD&bQgUxxmzhedd5@!{PuyB*TEohs5 zc7LnKuKhT-bn|gq6JH-7Z=k2flVy>i7*e||b?RDG#)T&ohRD2PHJ>wv^c;0%jFhlJcur2U8=@teb7MY1({vZ@7KfZ6PK8As*E6B*<eVi)(Ga~y;TnWZ1`TG2uS_R zCa-AVbr-6wFi~o$Kl5|Mt@pRiwfT?OgRO!O+tmg%R;!auy$lxA4eW+p&Ei>YZRrwF zz^P1N`Qe1=FW1mWAIW9@{gEDyU_HrulX{?eW4F8~c5s|}K?JS&5%ztakf})T(AV7H zx3Q9^xlx?`a{iZ96VPB~KXa@tl22`Ob7SD1=8YQ{=s}0kDVWV?0PxxKM?lfg0cH67 z2>xnob0uBlhwI-joA@vp9XHju5+@f&_k8e1^Uul#h+4MmXNzkM$*;l|OA6m3!kwh@ zkx||L$M#mRl-1wP*ZK=Ss}=L^%WOt#YPhJhb*XhEzjd`AelIh+=8ks{2N)8}u?Y zAg+Y#8AD;*yMzb=pDLV8o=go5eR0E2@Vu80gMtDBqw%>8aA484nlEHFMeMVkx}FK> z=qdcRCxtXL6{FZG&!>CjPt{8Z5V#QSw)rf_o<9}*Mxm?FMo5yd58k?_1WFgNT@-^z z=m<}_Yvdt!A%;qFR?|X0g}C<^#qpp`NNltj%6Wb#i-T5v9}Uj6bVzRu<%9EJ+QX>2 z%1yubCdOyU`(nyOeir`jS1akvRx2!A!ex$c~2-Q86wFB=}|Ml11h;|hNvqR@M_x(v1XfPJrBcRkeeeew&A~j?qPS8nMoDJ~o-cLV}Lh)IaF?+ zxQEh5fnKt}$Zu;DoUpO+T}q1{8;N2+#cz2P4ID00X5hdsKf~@EGjfFX5_6Bc`f@lt z7mh+iM6mr|nh>;W=HEzTWeEL*BFxV^S!^u5i)X=EbGgMdwWhWz%CpTy>wbn5O($y@ zI953@A3lN3UFxU9C-{}piQid2e{G-wh$z;WBZA%6D{<3(qh+}12+;dzAm_wiyqjfw zbZ9I~!h70Q#+;55RCLK&P*5M~84h}J-Sod4G6NEX%05B&4m?c)N>(lTV$2-=d-ryc zEKxaTN6FMco;}#ESQ2qQ!Dxi3v9J!!? zT_kq;^5s(k>$Goxa_Q%jng2n|hlpRztkl>{K&Pv+Ytbi;K>;#*G~ecDZ=kgQgRR3E z$Yk;lmYJQa42!KW(ZuU+xy#Z<%z)?Lv`1wq0Y$7iCgkvWfEc~8tzQ%B+zwvO-?VX$ ziaO)7n8GE6;eUOoKhyzq&A@)!kv}pG?;{Jr;`gPeYne1>*aS^t{Z>ZgG^$uTb0|;e z{sT%j3C5k%Lm=QOTgK7Qg`uYPp?Xe^PE<_2uY&S~r#Bc_bj{0BuglKk3*&wgXSroM zD?u%pAy=g%52Jm$!jp7Rgb$Vs?~Sx~Z?@s$mV=6`tl&(#p6&OOMX8Cy+SrTHp{{& zB=sDw74+>JTh!h#37-(3|Hj%Q;WKh3{vyWJMr#LNLNm%NQ zo9^#VOkbm!3DXt{dwrZ|6-P6+VfFXJ?*qnA_iVK8_Le`ToH#vH`$%J=8ASqjYJfQ% z(v_QsL(pYf-02q6QQ`egb5iO~yAhc(o919CgW5)grKZyE(wA{w{CACVK$Qb14!(Q| z<2mq6ia?t$|L#xv*RbeI`M176MX$jgD7(Rx=T;2BM3yh?eJZdzerSD(J}oq}5M2$v zEL`F>Y$WaRbPvO$R7Liz`9(nTA-E*3D;E4?qQFod0^A0v64W_=K?U75Ofx7NFEuzZ z?nRsGo&_(2vPb)J@Lnr(W{I{&L7iyUYn$MZckjxJr|acGXNfBBCyzmwg$d}ZwjL=y zMBe?ENHXm)z{gTJh*+&5zG8~gi{}NtNQA0NdBlynG;Hk=OK*;TXb`O4ihNh$dl&@)TYSa=Z z-#U<6>hj4GJ6u5D7LgKEFQVDp6r?FV%4uBEuv>e)^T-(v(Yj}@|DJ$7|1Il(Ia{zS zp_$ut!x99f4F_BEb`UR+pZoWPB>ux*T)uDXY@)S|Y|FT3$FOk5LJpgFs{o1Jy%ZR! z_fsk?zS2o5B18!qfwF=2{!4U%H_y$`{_SPKeWPpdI=ggn3ayVf?UVEIBX#iQ%;Uo@wX~nV`27>%d>QhFBW_x%X&Eg4 zoM*nPm!sk%n7N{xf_B}*5BuQIzO2bJ@>LK*v#^@O!VchR@@b_V;LP&=whU-Ic;)td z=f)p(5a!PYk!oIYS|t4M1)?Io-Hc*z#g2Y;EdR63mjBZu(w#W7<1zp{u0*f8>cJ0mY%2 zJxt5fUkIS~+S+4zUV#Tp(OAXo4%%+!W>oBTYd$(gUU)*9%=wF*WqXHhKRZ z(YJjqm(kB}<-A_%`MJ_+WB%C{BvFj}Uxrp#a{f?eMMEPhChS%ixbG9epflg@=a0IS zSf1bzH3sE)$*DGS!J?u8RjikbEaU-z-Q9gMU)OQ;NoS1@pO`Us$nNqoxhE{_yg1A4 z+p$=!_~zE|PCe5P?8Z10d|5%rxA{10WO!|r@xNEicfY(cro7c+4Y5v}=mSpUhU<8g zwBVktR6<~Bs>#J_k#0R3^uJW0_TDn=J+M-v{_#pp?GisiG+SPsI$=pu8sE*XXJSw{ z+a~4{pfIT$!z^bEy?Ryi9B-_&kNqhQx-1y0k`Fh0Y~ktrHs9H2$EvkrH@w0*v9po0 zB>ZgqiJH|b&qx2r5+qG+U$+n#T9lx2g7Zy5amcv2kxxoo7av?vY*q`X+Wg4GDjCcQ znthLygy&_3=KMELnC;+-Bi7Ic*DyfAZswhr82r9Lwt=Mxkjit3G#KT|(s90h<;0t` zoE(eVMAuxq?`$E#XUDHI*_tBjfKPk48VIA>vQ-n^ZWE0ww5Yf{ze)b+pyu&*ZK9;SuEI2<0 z6MAD~pX!s(e{Tm_dX*O6xZn>JF04v_hW-35u!oK!ew}6e^ZP9NSFhXeH&F>J(^S8R zh|j9``2>wGt$lj3GZ5B(F$YwfMF{4xL zCwb)epab&9{#=h;cM+DrVI%u25rwhiM=@Tn8RlOGQMSwJH$5}I`VnGT(Y>E+0$D#V z`AnY8cijqpw$QzYJ}g)s9=8ySKlLfG(}j*Vbv(CH-^GSEV&7f(YDH*)SbfvFx{B59 zxC+Of7faML$Z#(wTsZ)uELiy2wFg-{<(Y*PBCEU;EFetzOjq>qTGk$TD??P3^j3yMJpay=FFOYKHV$jf=FQ|Kh9;o{WYIiCZx}>EsSs>i;_1B_x(}KjB(h?4PPJ%c|}9 zx!5jog}u3QOqLWCgZ{hHN!XYP3lAHUm3=N{Fj=#o9g`*#7nVF^N8?yI1{UB|X_E}z zpB0L0Xwsvbvi2M5O-a$4W<7s_L93&Z7F-dC&_#uao$o!RncnwKrqQur%@XWXu$%oK z=YQL9=(X0~{}v~`V+Ww~)0O>Xh?g7B!XL~2dX6#wOW{C~a41T$-(T;n3-&YNwfq+R zkBd(KRu;grpMz}}zk45&kZp#Lj0$02((Gn`QwvrUpy^gb(dU%d|(#*!UMMiefOHlmsu~o^dS3B{bA5Snkv&v_^gG62a znprF&$}&+6e*zB!un&a|W8?i?4t%@(l)GC-$}O|DW+zl@&Rs4zBO~AE)p9R-Nr0}} zvTyCFnS_Q}$s?kCjrAS4FCnMneg%FzN^<~5&dpkCx<P>j2VDeZK#|(4s6CFHC%qn0esJ%3AXeal3Jp6H^I2_IrnNZ-|1t^Qv+qXaM1SV zrv!Z6_TZy$U3Jmo!%MYS1_R2UTd-w9cV$IzkIYA_y}v>LbM6`m!=yE?ow|q0dI|18>Tk zktDVsY{KBDUX#hvhzXKV9L)D?KR#cpf!|+Myo?Ak-NR4Gk>n+Y7p-YfhqA4k(CM# zi$Uq3t_#}=PQzIargaDZO;hlJDu8iG14R1JA2SUi z|K_h8ALXrC>&F}ez6)WEvU839gpX4X`J+MY8PtW{4Cs}ndv3ayhB+ofT8<};w9m{% zb8^+w1+11aideoMynIdk_uebBJ|~{oX{KWs6GLv_v1`O*Gg`6TLdQou&l@xzV^o6v z(Yzbae+bqza!v!^*FBi$Vr z7ViUQ76TlM2b^)=%-7za{+c(iIB>+Y29sg6XKe!lRNfMzNl(4W(!s0Os{BBsk}YCY zC2cz7wIRe@eh0qc5@UyLApk)uoJ5!o3$2|8I+djP`f9++c^W_uSh@8r;l(1(;E<|B z8+H=*X(7BuUq5d@Qy%WFJ({6BDZp*p75|aP@;6#w^ihHecgQfm{fTF6LcyCJ_hb8O z4OpB|XK}|4I{9$e2&;{~!Z)`9*e_docyt_C(7GvWr0*bTgOuS#AcwZj|A0LH8?()79$FT}`mdlXsm}e5V#GX;v0>zr=T`#xA3D2uVm<}RNOHBa!;$LM~{J+h%E24TnC#>s72$LaSzXIYIB=AVA zF#X)l#%$(E00Gme{-_fBPom<;{FBUmW*iqp+j8#iO?L&6co~n>Sb%ouGw|1!jveeauSz=0=V)xvFG8?bPe8RB>CZ$@*@+i4{&L6c&@b!$v;V{A-tmIk zO5gq|D^XKp+tPt+zC+(CHZWef2gjV;Q53=ZYsD`c{;hDZ35@qNG!$J$a2h>tFwc{DyD35)Hp6twK>H;UBn>K8y@s)!iR3OD-KN6TQFT47CNd@LM)g zPI*hAx8~N-J#u>90M0UVE!p@GCpoE>s2|ylQ8$)a7*(u7XvX=@78G>Xre>&w2fS1s zOS&#P0~FtJ$!{}z2bo#j&rg1=F9LPwz_u_uF7hnfKPRotDqYVc@+DeTF8;W;TCnE0 zAK(EzJAhy>Er^bn&HiS#2cpo|CDGV(7z*1^l=LBwHdH<2pW2JE_BtKV6D2H@At31g zsSu_6$?1Zdh`Hsar@G_5xrx*tk#^U|o?TP6Ojh1|I%`jyc=Qsjrz@AqrWe_JCub{7 z1%2cBVZ)g#xu8z~@To_#-6Bt=_F{j==Lk_2_HfOd?Bzw>>u0XR9t66Ytnd?ArRI6E z)87&5R;S7XXSdUDZUVmtOyUyMD#hvnOb-aiH%-8KF4xoMvOZIO6dSAQH=>mEVWkXt zlNLJjYrUdCp_jHjCzr$P|Gs{Wdt?g5IeS(8^)fC0@*u5q@ElE{Pg~}bQgLBVd)-C(R0t_O%(kU+M z%hE~auq2T<%!ydyK1g^asMYN>aoTqOoBb(Q=`0lc%>2in zBv)UG_g5UF&}#r@_b>v?RmD~o{-My|QW!#-NG+xi-CiUNcROL@{oQ+LlS=5Hdk7NCwJdW*px@tII z)}!!ewwwJ44$yqT`ZpXI0qgHjztilg4Sg%e(>-T&Z}sD+BRxtHUt~Q8B^9bmb586p(oNh0^)3KzfqEnSG_+=Ig{%@kUH^y%m}?M?tjytw?^O!^1k zT-{*OdtU1vzQ4L)J5WX;<6dDwr4zH-w;+-+`PNC!J#HVI^RYy*rb#xI#QyZe)pC2T zwvwbIF1Lhuxe=-Sok}OWfgCcrmoy5#>E+hAsadlw_oVL#U9?(hjvpbW5OBosFEKO7t&F_`UysuzCV>tn*?BXctR*XxxteY zniy4>MGYlHgmWGcwWn%9!sEcYH{Gnv&bG$)Pw&opCt>kEnY7Y?WQXiL+30b&n3SFlWPL+Brk}tv;nr{EV&0j1|v+7wcS0LgDCv%)HQB z___B+7d$a%t&I)3%N3tbP1GcSRXAyC18dy)kd6cgoCuMY%nUmB_KR%F<{ooj7cW{y z2q-8*-cwm`kSyX&)J;CsJC=rCNK0u$jWRsCWivo8%rd|~=jz8hdtue~Y{#iXgJY0nI8 z&%f)Ze*L{FaRiX3d8(?~O&x!qT1+n=LzBzRC)M8G5`9`u@m%IUL0QpQRsj0E?zwvQ zd!`e;vxt<38Ag@F1(1rTu_XXI>;Y4qkQa_Ejx?bCrfA$_{4+=}E7~|lk&8LCb`Ov; zmfF?j+Yfb;;NF)%G4qTJFsA5-GPiXe0>b#iy7~N`l*Fs;xtP5$4(ZVqbVtM6lB1b!BFN?J$`ZTQQlm$zYmhk~K9G-~zZ}h{_XZ1m zE+R(Y`@O*izgg5G2m_dLW~p~g!BZGTg)vj;((jlI`+LdqPkA{W1x8h7r~h&4!@$47 zELy&cIn?W^ESg?I*dSsOT&C>%x=G~M;XLQ<^pvRzjE;ZTv6fm(<$@3AnOa)qvM(%(-t>IHz1=N4Gd3j)4)arC%Z&EeK3wwp2z?O#_B0_5ts31vhh9xF8~Mb=kwUfRp`%az-#+y zT&RW!a!vvTdpB?MPFlRTY#X0^vsa?URU>Ji`Y=1j?IC-}-}1UdTvKTo4UB5*|I09m zKkE}$@ueWhGN~WyTuf1RxbU(NQw8_^~IK! zJ*6{sO4k)VFaB`Bj%Rgu#}L4f6R-(_>zO3;Qgx?03?9r3(_)V>3+1NuRU74f8HK^! zwGBRNuTsR~SnKF}v)o?mlXheknYp+;0%t;EQX|=*MKNLvFqJ!6ToiuJcf>s%oolL~ z*G+%fIw#AIzO*ODoO|km^^Xv~C~q`(5Vt0wN(Z|O-4@efY>GSb)iVS$bFJMkz>6a8 zVQ*slFlv~qK0DdTOT8+5zlv8Ge;&Sb5&$=g)~@K$ppcn4#kav!3{R@dSCF^p6LY(? ztMT|*ntBTegnF*ryHm5hSCm;;H1kG60fQ^vP_)d~U+%DdIrS>g+k|r}`2^;gFF2<5 zEy307(!=!X9U#|mFI^Pml|e=?mm!qd=aeLOaB8_y)>7Rc*KD@~RB@*0;fj5J7#9s0 zDjd|cwSP{YW{ybmxUDYxMyc)?2p6+?TV9NrN~q&_PR{Ntqh{q!sJEEtc%O#&z6_}d z_=LdgU+Be}^6#;-DX1v+Qs=aOmwjBlUGK*NflP^liUN@k;;L&0)BMXztF^r+NU*>9 z{TbmcyT5;u_MsQATbCxUhSKN4IZk`fc>Jc{{PT^9nV{G=S8=Id;n+|ZmjA?3iD{DB z4a@frgWTN@aP9FvkNQaaeJiT?*z~a5I{tx^6f$Ng{oTTDgMyg3L{ znAMu=3*1FmLI*B*3TbN>drgKAR?+9*Ifzy<{5s2Y076a_MXVtRzwrzt2$2%r?=Olb zrkfz*KXckdG0OtV)0i%Q&W6KqhqwTQhNJ;q7DnlHa~zde_e1+!3csm#FW)LRFYb5` z(f=^5#eO+DHIJG0PunSF--ErkU1!#!O*!=9R9=4Rzbgk%mu!ho_iwtixX#K_>i)U^ zXT>FYC5`uIb{^=;-L}pRk09_W3>-6~xvV$5I7{>mpQF=IQ16s z0uKnPO=2dzs0=^yQ0^hFw{(VOp3A5Ya|f=yI~A+Dq|`_PcnhSSFF`@~B&RD5(3yt1 z>VgiCOe6darK|ls1IAkNYR(5hDyc!i*&eS$*fOPlh&Lpu-3m4$75-^}lRl2T_;C#( z%F$Slk?m7Li=zY5C>x<-o?40Hw^;y)J8S*x8RHi0N{C-NPLxNIs zb1KpJ#iWc?i-5pgK#^zxEO(tX-9+~i_rdBJ@~kzG@I0eXWy|fm|KYtLGaX&gWCjqR zBfd`|ZTe`m+^mqv_*5A7Yd_Pn{4kBlxmSC}YNm3u>gCNho-P0v&7vH!nnyrxn{gr_ zQDX|XmU8C-bNk`V-x&?7iW`GeyCRVL`0M&A5ixIjC*0*3Qm&2*(|tnDuRLHyg}4Ae z@oVaE=+xEYwquy~!78QJiF|f*XtPp47k__MBevj$XJHnz0r8X^&Gg6w1PW-@)QB`O1S@+g7!&iT03dX(96Y*{_7g+zM{8;1Q+(tBKy!RdJQpm;o zm;CPEQKtG~)jW=`nRcV>FVTpE!*-+{_AEgUUfwBrqc`8U}wu4|if*3n^7 zsvm6t`%DO|0lR~hJzRnJ?;@9y*mjl}{(_X_UC^3Iuwe9|;j6MA=bjm{FFX7^*_D@L zRv3tS;$S#JTmU&jJ21d^rgqRJo_i%wvCkwo9e+8nOZ8&D-Dw*fA*XFFeM=%)Pa~&B zBS22VV4x_Mt>hf%%ZD`o9;NM_eOR!Pxugvpuc_IB9utrGqR6K>xc*1La`?iHJSBHi z)4kRoKutzS!@Bewb$j5bos!QDn|r#VzY7MEu3lVv{Jli^mNV$0Zd-N{$|bql6v-LH z+rgWs3@>Y7jJ!D}I2ii5uU!K(A~jlx;yHib-Uh`^FO;>_l*O#t6z}y&a#y}338ANu z5qD2X`-^ZU^~=Gx-cJrdh??~^qo6cv>zg+(gVBd@NVl6$qwxD+HRGP&)o%${#ka<} zxMn}vCN-tmm%u_t`PJ~olI(t;$- z${?{`y*t0q8HfFga|-@d7F@Z+4Jpu>w4DSk3YesNR!*;7GVx-RyzAj{fN|N~80b<$ z=W@iJdTDfmuC1d>Mf`VJd|Kwi%+e<>9R1H#eZj---=DP&wtqO%bzY%%IorF>!y%Zd z1kVD6?nxww&^LV-$2*nG1bP2=4Bg;&fLsK4zd7@*xT$T?BLl{%X#ayx@{w$6;&l;# z-GnJx2lId(@+y}-*v^4kO+TrLLs?DYXH{@+*tgU7`eKz&b344%FZbxiiD~_sD#`oV zu3P1}&XRA8^YAh77S6aoR_U3ah?d>)t@!CIweri_rQy@nKNhKF*k?s&(?*G18dWDc zYR6ON6lB?7Bxi26pU-)L9CuNApz2EbA(BR9WOxoC)4zfUD$ihzhVMX5DkHhr1eMt` z@kB~srZ1HQHGakbc_rw(qO@|X{Gdf|okeKm%3Gf+PQxL5ans(|_=g)6$i_cs7!G

D}q?3)+gYiO~z%#BL50!n^Lln*>31p5yB089S2hRB%t+W)rl@9+i!M zWTX2LM_to9Xl@$xU#jJrI|#aR9KTd0Z$vjooKDV2W`RInwJ0c}-W_=*?o_OO1}U#*eQC|AxLW^-_e^lOfrS+Iz*DW7N}!UFg)pU)MAhw~7Q1;n zeG42rJ7U{nrOIB7!lK0LnOKhU34n(MQ+s-b{R9oYz5mn|zpb~pFwGXU{P4k>sD3jk zHm1p)+x5fmgo1C(i3rsOQ~R|<&Ytyw;VPYm6W4E{J8lIZ0QPf|9=5E`$k>_XU$769 zq=kctP$HWw9pok>uh_9^)oiAgVLv0Wx4}#IdO5YJGkORf#74XlI#aj!^h!pp{4-FD z`qli>E(%7Kn$I<{Nk~ww)2AY)1APOZPoZMqO;z({N}iPBOhxTD&T^8#J8G+p2{dR8 zHI*@S7uU9v!H>X>sDLf41LQ&7%E7IWJw)A>2l;QpIyK$cUWamF;1nU3#ixexv(ai;k6@S=7Bg>(uw=-ZLZ|AMOgOnDY*TvObxGiXVCPxcb(g zBE{ea!fHjMLE!+U9`UJ<#2b4d#iclE$2kN*E!ptjJ+m<2I@k)~v|G_V+mtNTv~R9V zBFAi#*vQKVlvlK$4NDqMQ%l=Qw>wizgkdNNtIDLwplJz;(#q3!y1Ed^IX+kI`Xi9$ zBa$|*tV1X3ZsWVu1UFOQhU&Mn$O{{WZ;OmhxEftrqt^AL79PO_8#Bf~XMI`ysHNK2 zs*I!K@wTklach;mg>Cx*@*Q`p~4Ud;OySdyUOd9P8cv3*@KGC^Jl30sY^Nr)4Z${YHU;fnBcpnSD9COdcKHSJdV z?(7{&|32=(hAVHHf+5$#+_YoF14XmQ)prLeSqEhtr0NwcTtfqs5}Xxu5MD#goMl~b z=yh>ho!)u;2Mz9i>NvwII~2EgoHo3Cwe(mBU(gJll2E-*G4HX7o-S2m3L5!vHCaz? z+6^O9@0DMH+!+V`e}3MIaDrPEG8EMB5zz>%jLvoqS$Fihmm_tbM-FRW**gMR(<5u( zzh%%Di%PRx`_J@}#&0B>YjD^fUgHFA=WhSe^{PNt3)vd)jP<9ajTppeAgnqF^r|05 zmTuS9^F$!2EsTXJ@qBcx#iEUt^*)Wl$xQT52!wxp{Uj%!O`!Kisx6gKtx_h? zv{2hW5scufXSub2@BFWxO)QoCZy};xo35Un3eZ!T*uf&Gsp_0ex-woSg)9LNAwMjn zWQ(X27D-JF@_0SowZJ)ms#4wM)Z`D7JIDxJ?EwP`Rt-{_db`UGD`qkM#_hl9 zI54!7yax`rUyb=I2X;FOCRI&nFDmI+=n)8aX-3}fqmZ`TPwp%F`h}+h4+07ELZne# zs@k(@)#i-XGYq*|E{-Q(LiwJ$1Ws3AY7t}!%E1A?czC9+MySyEBX5?hOX$;#PbiW&9ZI#8O{{e9~^&+E&VP` zP2D=T+hJl8Bc<#qJ4MZ6dxqWuqtTI4jA!XUj3m0iC&Bd@)$$({i;6U?OB`*1Kv+gL z1b!ZYpsboE_%#*353K2Xk$v0KWO|LXMSP4;fUr3ewS+9nSdB`R^xhc@-Uu5eDt9~f zBPi%edT}9`@|?O*!PLQ;Lj{K;buY`UL^){10Mk=1tL?k=dlsE?r+6CKC4`@@3s^UA zm!f*K*G~;o@qXr06x5q4`Y2C*D$9%s}lQhYONpYt8VZt`dwZZ9wN8U|Wnn%CIv9 zbZ(Y@3c(a2^_uV(K?YZfxZ~#;^V}H_dz1WgXBc7ExoCieav;xOcz!q8rYPb8vG8Gl zY2576EyLr2&%nqAF75RlZK;I36rHAxy`%Tctw5ye{tCjez*m{YwSKR2my5bAx-Ul| zTUBc;{u0|JfkiMl9Q=Lz>1$x`{B&L zLY27jF@>*Ey-!~g9KuYmdud&Wf<0WcPpLfuVfbboF877EPe)yp^KON;Kuw0Ud#`Is zXx6^RweR0>r54)d(8&b( z%$$TMq+~DC0<(g!lz=+e|EYNa}&rd}mKd(*pmGI0K3`ovL4bN}3T zc1VPoQ}%}FK9nKwn}Fd3-^Ae%kpjXCul4b%5V$%0FCSGjD2i(863x6}Nn%*+*Mi$z z3qEyg%{pLr7Mr3{pMPz9m(obW?a=k7O5PzC!i*XzA#7gONnWG;YSt98)9gl66pWk@ zAT&;yVJyrVbWj~cudsfa?-E(Uz@?Dp%|AYIXqH$Ny7IxW)&A(t>y;&LHWWv1p^cGh zAJyW{WF1^nJxQlQX!oYKg1jyfS6?{2ty>)zwogXv4?B_+Rgy$f>x1jPZEmc^3%OCB zhWDga5Dy@bYpZ<|d{|CCL{gx9itX^a{PY<$!j96%0;J|zk@m-Jn)3;9!YOWkyF^}1 z=zvoXY&zxN;ybq-G84jyQ_15bH%fXY*<+yEv4DnV0{`~M`2rbf1RP&|)pGRiE3bDa z=b`0gSDfeHumt2=`t3DeX^nfYMhGPTM&r3nIdL`t#K}#kAeK6|uOK#AK3ZIfb8DE` z+;Tm+K?Pq~zKe!HvN^6CqidFSD*A)!&Ha_|mQrwxD`uGF=^6Iop3{ZVkt@k@nStev z$en(z!r7r|$|Nq-<;8dUk-qewx}W$|$Q#?p#qr80u+-PKC{LQ%-hl%0G?NI zGL+O(mOjlvgBP_{hm}&*2;`C!bH>lxp8GT)e(bOR;*%^tRbgQO72IsT*%0Q$P+{Mo z+qJhH-?N~ho^%#!?-uW;FbKsh~HZu-PDPbCqgdRin-n;)43<4A)^RUP2rA~Y;LeWpMNc2BW2==;Ov*Bx0v=;W9ac=(T{Q{dN`HVBRU6~a zCUt8mvYA!;lQ*NFO)_&NgxXw1Rf zbv;5A-CrYx{o9E6v$$x*mx>H$RuaPrEvO6C1(TAr>X>nIj+4|toM$9j^yD0YI)Pzj z?W`)0z%UAOlkeUy#=gi4#$i6<@zt3?Qh6420sxr z?xpJAB!HZyyzrb_LC$di5Kb-UG*c6p6Q5&uoB(<@KltsrX<}mi25_bZ z%%E%KW?U+^nh(LIHCY-YivKMObJ$`2;%1p2{B7P%p=OSNp{~K_nUR(P-F2GnNV%d% zux+8jLFims#Hmd%<(<1$O@J%0WCE_lQrNlL%pNMbK3b^b-ab=6ha%(f)@zbtA_aC8i;H14o+|^}w)i08 zoj~&ZI?}DWbisyvhXfb$fswmD#$x;pT zy<4Ec2P}r;hw39-dutrdaQW29CJ`KC8PMg$S3XF@-#Cqj>^p+iY z7zKwD=b=noa=hR0Pk|eWgX0A*2JP%|(P$WBFiMr`0283Dc~Z}VrG>mXA}bucBMQs5 zUf-k9cLWzlo^WTn<*)`Ag6W*RnJD@ zRlrJ4O3N`6I?m<-?g?o8xq*eJ+dEu{55+fkzZ)`^n3>jC-yx9qDC#Y#l15=Z?8DL< z4r=JJ1|R021cP%ozVJ@D6zTZS-uAY#v7S=Kk*biT$LCmwAQeN3uBXWa|qr`Wn(Soieb;wGYK234?oe7+xW(7|H*OxV2q$HLb_oq!QQTpvhXS>Bl^xOq(n4ZlEOR2bo(Ql(5V zLi#G_zfBL+jhOd zsT%ma>ZVF__H7W2&KKon7BGwn`eySk)CJb=*9LDFvfnj0DX6mdblZkhf+S$z(@prMC_MFGb=?hCzb}w45y>d{ogoBY?>5uximr4*p~9mY z5scFZJKF_+P$hQ)XXrAJg;g1s&lcXABwz~B&48)Z^^H_rg>7;TcO?kHjol`(|GoKd zrDz>Yu%2nYOQECG`|maP3b)O^XrCk8=Baq{YPOhWKJ zd=4R2 z`-Wd=4Zyvzp<-Y>QjPomv|GS-bKTbJnrP1k(n6DAzi6m=cnALsimZBK6BMwmPdAfJVJ+Lt}18!++amf+t(D%1Q zXI6h>md%EZUPw)_tSQqqz!3~J?>>c~20w6Nxhw$Y11SEUbXVD(agP)rRx|{v4AnNN zDu&Exf=CbuNcbx&iNw*}z3uYH>+=aFVJ|?$X#BJ!?Z5SNHGmR>_%4YYhko_B);^SthB}rvnf#Y^cVsL(&Ehm)>#CeLp1u>7tKB&5+hwV|6CZt zb}L;VHDNP_7e{=rhMn;Tt!o)S4eOVPkfGR$C_?HJ$+-MVdfhsc==b^MR;8Zb9^5+{ z=-e@ucj5p~M=d-a$@{Qa;;($51Rwbp*H4e->-ua_a^kqwm->`j^!jKy%EwcGKI7~+ zJmsx+{!@mVhPmv@Qg%ifg_k1mC;yadrsNAhghboAz=3x2cn7%42pX2_90|!+2h7Sh9Lf`Na5#k)W{_ zvbM*$9>06Kt~`wVa-T z5Qi=jC+E6cs=Vy*BdycAml&s=+o`+Ro4$jw9#Cg@yVbZTGgjryqg2#$qxoC&#fEz` zH`PSW3);~HG8z=LOs&aID5u1d-!HX#-*ntKH~R!DbWOI`Rz469Z9)B zpe>*0co?Wy{$pQVXbWX0(4 z82r^Vc$35TOpC6Tj`a@&DcVZ2k@`J24O&z1@KX;}t~9S+izFTuypH*Id`$QUBhhjC z&JPa|QNmB%jJNRy*p-a-GvT;Xs%!;1Nomj8aQsvA&b%4>rd4ds@)k*3Jg*pHvvOvM zxUg`STj7fCYxsTQz_}bT3PtxtSER1`go8(Cep6zk5+msA`>DM1p6cwky(ZMsfNy?Y zos6&Hp0thn*yJPn05Lbm0;^9+oxG9HK&J$e8HX|4q;}EXEP3_)g0rSW;{7~ctiNrB zSaS9m!)tdt^^uAmlCD&^ipNUU0o=D@?^k{;_9voEF8|+8?P{3jQ+>u&{F;}&cjHF3tJR9}eVP6OAf9BC`0`=}351E%tzfy_P zfT(Lk*w+k(J~3vfSJY|K+5D*cNf7Z}M^~QHGUDF zRP&))}+awWNjz zeNyQ9eD7(D2;Y|C2G<>KoW`J=-g9@>40j15raR^nGd|ZwX5M!U#ZW?wh#Xu~H}!Ge zUAm0QUr2hY_S;N(x1(Y+JmoXBx9!#KQ0oA8?meRLPRCDL@=$`O7LsY$LRCNFnmG}f zh<(QC(>ou_YMs_-6~YY^w9AJ({6BE(jU<__npfU^V6o}*`=mrM{cSj_n&iN4Qy=D~ zV2A@jK~qn$d1~4kN+qsc{2PmpqPOcwpE zmV6+v8T6$u+;_OCrNMQ9=KztPA+f?qiOT;Xsbgx7#)=nGf_dq%ey;v~3K6fGNMUn+zPhDJVUjuXw=KWa{FK;BBwoVX zlDQ@kMohvxfDu%3tEDNuFOQcJ{KjN5Hg!UiqOD70wXd-@-~KFEJ6`>@)jrOscuRdA zVib1C0J1h5w#75~eMly#bmOznlp%YlrQABBBiS8)Q93#_9r$C+F2!Wb%0a`Srn6V> zr?TiiH7sSZw4YTU#d`Ci)Zhg9Oj~WRFlEBWUkz%NNeqO|uy3z@mX(d=_PYS&ZFNfC zC)=@UK_hLpA9g>9I(nYHxOZolX6`AQxfF^p)T;Wp;bCTeJXN*S8*At{HBgr(8@EH} z<49lL&y)mR*VC2k-|oRpG@f3gRP;Kur*wSTd1@Yoa`W5S*%Vd*G846-`%un%8eDM2 z#O}zcdlTcyG0UbNO|PTp!Ec{o*_+&g0-0*7^JYi*}=#azR_-iS}_m};4xm{<|Z zL+Mnorf&H#5}(yEl^TEHS+}u^5Jfwyq`OLtnV$t*)i!$j(_^=S;e+2RhL!KOi^8%= z@i~WC{#`yjsC>LM%;U$Syk8g}*4lo*Ba_oHiz334&v4%_Ufx|D7WOrLZ5H{Zh#+Be zVPR?>ZkNO&Bz6}n{s@f@Eu3-P?@On5u*Z5dmkytmze|&(P#&^SIG*kf!owO(U1gRl z@=$hG(S|f6g@u`7Eg#f^MoRy(;HA8~Rx+wQ>{dR3_hNlNIt6p&0jc{1PcA#foL2pi zM@!3}PM==$!DvbbRY}Ta)9FtPo$p`db-%x2=!mN=8GaMFv)$LOE#oIjZz?}^fSi6s zF77+AmSKozyzF8$MUyGZw<_gyMt(9T(_X0uTvk2R6DwRkq9*L-yIrwl*tvYku+~(h za8}t(?^+7w+3zhjktiK3`w)$nf#{`0a=L;nGk~lLM^=8R>1tLs4ZWkuDYrgfe%dO^ zmeN~Y%Q&rZV0u&xL7%sVF<~ba8I3X z06X0=Ux*TX*puy4RsKC%cqq`VDrkhEQ}THmdw5=u$_LJnQLZC}!ue7i;~Ew!S%Ph( zQ<1NRs_dun9x+#8%F)J@>6W$G><@Uc%Wx1!t9*s4iubziB|H>`OA#(^ZeU)sDZME) z*W&fo)NkG7l-#Z)yrhW!NBrqzKgXV+5x1LC(|<~x7ms!HtsKhl4um-{U(LgL5m_h`GA|wwuygo6ZQ-;4aT}-E@}u;pwmIm8*lsgZwSN zv(!cbj}O$aDm$%hcpod$Xu{Kjj2-GzzEvn!Rh3VV3s2Wf?-LZ@rJVFE?OrcD-o9`+ zQA>0<(`QEshb62$y9^eT)e`7rGc`~CX^_Wl(K!g5w->ry*fiZ|H5}we8!qS$SC;gf zpeU>%QQ>Q2&^W8$bGg;|^0F~y;eCR<)A`fUQW5?g0lQyh@KS8A!`v0V@GY3#@ye%M z>=fIH?fxdKRH@(_lAKI2*Lw%1OS^W?Vy@YCe%rqS-PAthw&Zo41@33LQDw`@*z~V2T5KZh zYfa^P5;djH(5 zYIjyq(Gto)_oQ3tYHFXB|L$95LF-&kUPJtM0oL1o#E9@iZTks&%9wIipnTkE(0UZ( z)koUrX0xxXJ;75U!5BYxT|`TA-jstJ^}|rRq;iM!Yypb)q^mwUJ-8q7^=<`y=Tz8v zLy`O4Ca3Uzr|#mcnwI>sg^XQgVp-I2|6%24UjNGQnh)2M>GOTMI~KWZ8BX?X zBpoAqc=+oxg8(%x!m{j~dTp^hs3*fw`Dffh`syuf5VgNQzpfF>{f|I^7}{iFr5 zhPT3wWMB8*-@hhGf1R9M^~aA#Z>gMG79pXwq^qlIgPNLHdV2be7@+=-4;@sXRX6+K zCA`LU*A*EhC8Y*eLm9mVjg5^PG&Lph?G0L5Qby{-IyguYWF<^S?+8w4z%dlUNyd)7 zJ!C4mpNjVqw2qDr!(w4dx!zH=-6}W}Rz~lk zn}vRo@g5^1T^%16$+rP~|4lM!a3xHHBA^k7@;8O@&V7HIAY~Wr`}cqouC6<;$ehA? zjdeZ__V0P1{M{ZxeaSmQ{bMp~DKhM z78Wk0$4{NgmV9evVQ~@X*4(~Pmymk=Cvw5qHz{PLF0WUw47uI5@k3<9&PYuE2kd z6-A1Q`OX3@&1s*#k6>U_e=jdZHY(pgKK1_K4%_dWtZ8zKS3mu*3nrX=%FprNPXrqg zF^~`Oh`>%^gk&C1$n)ug9_;{*^~zaV4K z0-l~Tf!P!>>gGHS`PWc5zhNkMVSIj?ukd;M>A%cMI|xicAhmffnakTLH)Qnw`xVQ# zQgln>&_*x?szvqoVjXDyeMy2CuV84zfpYy65**RqZu zZNq`LjT{+0)wrEZXYs{2~LotIx2MT@m{(Jek;5i@{U#BYc~Z>n{}>_(%+z{*fdt+^cy2A3@1W{ZG$U()Lq=D}f+K&)aDSS3X+*bMOE+hZ0CPSIING z@bn0I)asfVf=Vp?5}ewb!LUAb$kCq)pqY~V^6mSXDF1)2tlw^FkpzR#UuMhdEf^UY zVNXWsC-qHHmn>PbEV_1wj-pAss~S$XFe|4UR{X~b<-y}v48*mKkIs!kv;B(2hGjfd?aO!;x55RH@^a;=FwC(Y!G&K zcK#8l5PHg&Kd{`tCW;{Wvb5jmA#K;H|K;bge~a$Y20;IPa?#80hz`1#*%kOWJ2NX< zuGMy5kBtq-I>A6rO@03s@yRTv2d5<`;*KHDa&1om+>?@$U`co=JH)8t$B(PtoJ#27 ztuTz1v$`NPJuH>Qn7&y4^&;}4N#hg3+Dh-@fDGai5j;FXb$N>@4~@>+c0RMPv5|Tf zfLMe>sk`dnBm+pL&A-{b&6@_s#mV|8OF6F~nXwclV74%*@pM=%6Qi3=ONn zC*sZd9^}jD_0zHz${JPyc5%YeLc)FEIudS;6G6x)u)9 zHd+GOa`EED)LaRbn@g51?ZTb23kpQ^u2dnCzXYsk#z$fZPmg4mWtdxA8zzP0pGHSL zFGWVyU<5Dg>S`7msSD$l`&KPlrgz0pYQ&QFOWN&G+Q7gG9h3ZM)(K_`0_Wkwc$FH=%4%>vg`(1c(T+w; zZKfnx5EHJ)b3VnypKx=lsjl96|Ni}|Cr`F9>XL_cW+b|RXaX(zU0!y(6X-d9eC2@y z2M~$VJKpdq0FPDx_t&jo@8x-@skvVoK!QJK#hB%nlvtJrxO8dOW=vwGRZf-*R;`nK7tbZ2qTd#18|Rd6KE7?#SYjg&1a-Vi@iS@+Ks8aYi(O$V*5 z2OUH+LPWx&bp4WsAO3+zGVqn1k#*|EcKnJ`bo-xQ*-FPzC;B4d7=Dgb&0GJhOf$85 z=S*ce1R7|`Rl=Qd5Au|~L|w$nc@&%SZ}I9k(QS0dux)rnsid0oiwzcZMMR`*P*Q64 zEN|QjwTeOst0(h9x`4=!3N7WZhW*j2Z^gu1JbU(RMDiQ+$9KIRbUrXo$-46k`GF&G zNbzgr2bYjZ5sUoc&41(0mMy;m5H!j+i&ShyFhV$44wjO*ca`U88$It3(y~$~ypR{k z*r=zUurPR}M*K=#nS;@aD8cN5D?!94!NPmjE$Qm;9}3@gdp^(ywoHJD{2wB4c1eji z(m_BCQbnFN<26y<>PjFkji+;jlt%9y(Ptj}6>BeIIMEoqk4*lI3sXWjA%O%QY94&E z3SJA0y0yh)CGpwX+S+|94=)o&80Ld=A@Q^mXXBx+I6L${_o5|%uoR(?Vyy$jsTp@(1y`|x=^c3O| zbc?^QF&{|-WLE_FBY}aX8Jl|GlKmm#@EtI|$#&J?!5r%duVcrOgP=Qs#X1rAM+wFjQ)gqoX6^f&p1!Ik>_q;tFrM zPIk`A@7y$w&}`&*^t@(2P^5%jmC@U;c(t&w5DDL|Y{L960fsA9kyYP}w2l(Id}VxH zi(6J^CQ{fwMZSc`0F=O(&C1G4&u;sT&WG`7_Zsn@izX=YCovQ84H>3;ftS|}w^Kxc z_bu`+D)$~=1XArWSPDearP;>5(J$y( zqX;MyhbB)n@QJHiQv?n;*O(_6>!tig5ym1Op;FPScMnNTj!OhYs=SMviM< zXhxQ!#3GDSI*=F_@zK`EIgb%hfh1LsD>zed{1YxN68-Mxa!-H0dmG^wfoS=%Bgc-d zfJg9koNIo3F5N84TRprvZ7;HrP^X0$S7{O)U@>ukkbA@~eszaJAQ1`b8d`u_1zV%P+a?hhcfC_;KZqAW?-munY=|>php4Igjq=KFVM(u%U1c zh?N|)v56%7)cO&kGu%nTMOQQ4Ev^6UD+-b&WH4T>$1$dQdyMHmncJN0kZ~y+kK*h~ zsv6=zLxXWmbfXjNgn#etP`?JHU~e)zV4pzfh&&q*dHE1t02nqXWPE)a(cE&^G#1tx zOb4((G$escj=84@$DnBRN1@dV-zR=ntD9VWk#^T@u=TTvp| z@Ks%%kB09)u>hBGuUOapV*Ku)7rHLa0aG_N*{k}k$JOYK@qCw55qY#zkUUTlcpw0Do}p?i3?KVKqzYOuXUw$k8gMxsosaH?5!Q3-GZ05ehJf&IXJ;o->h0n2 z$T8R!|6SK3c|1l`_!P+CL`hy=UR%+3CVaKj*d#v$jf9j$EQ+>0u^4(0m)~e#%Mm)D zjg@qtv-FEgp5?*sTuPD$}sDh-lGvVx^F&I)Ofwhw= z+>oQ1S6W&c>%AN$=vL6`ogiyrz4y%Z>}n3FML%1E6++;^mEpf1a7MgDo!hBX8^CCE zbONPUASZ<;Be!qjHu(lC)9K^CH@arwYuI2!Z@2oK=XeSLjMzc!uZsXv22 z1K1^Ol#z*nZgw$)6F&pYbJ2v-0QmqH{qgzLdpjh^e?CS3`LF*k^6Wpq`|r~2|NI-7 zfth(x_(1ZY)@-}UDGN)>J;gTyed;%=cn=(u(YxZk3Cly-bz>@L4VH-VZrOh>4^fC= zfF}WD-hlx~wky{ET2k6ENyHWqPF`2;>K#hZa*-uJ=T_P%ona(bfAHY4_a@^q$j!iNfFWr zwej~?0|B&yMh6rE(a}IC9t)U)Pa;S**|bb#DTPA|T(xM<1^^)RC{2WbMTk*IVLLWI zATvg(BoTyiG@iuSie2eeemLfK8Rj|h;JQKI*WX5Z?3|qXEBYXU5BQdtta%EEL|6|C zgL;pwN&?~uh@<;gWpXVFFJa1*hk9pifdS82nGZul3)j7W`}S>SlQD8@J3qf7W*?Fg zigp_TDQ#~OWhlDU$nhd-ywi;vKuI6ifpDw_P4nLvNUkZenLAAq+-dp~j_s}PU7sYV z1}x3#%07}^zziS*v28^-qy!I;7)^=z0|eSqZpgPJI{LR;$mlHP^1FuVd`jekw%57e zJRv;uO@hS}zVd5t0{KV2aaqBxD|b`4N=q=6P`V%1B>oG?lbR%xO(+W#=gdg6HBoVO z;I3$y0ZG6tUL-v0q|E)yOu&0|wDSFT?d|RCQ@k(>{41eGlxIswu(tiULhm7yvQ2Bv z%>l)|*|em2+%bsEjDh=PJFTIOv4_EY<6ftrE^tMrcq*QU3px+CaqkvM?xyes#SCxt z=18ZN{(^t)F)-KxB>eWB+%Q3kJIQ0*NnY-jf95RkEv_zQ@2Y``uUN;r9+HGnICr>< zrb}3fh@;*Woh0LT!@gN-Z(^MhK-DDUZ`|nH&0a*l+sn^g3eqhC6=q^)2HJ| zUf!;)By}9%a;T)AL(6Vem^w_D&`%GKO;=>j2WU#+*M@QGBprfx(VQy3d~v^@k@58D z#ih&juE1-NiY>vDo%;0h#&tYBn@0Rp<;!S_7s>o7j?ick5!zfA8*l>}2ZSEiGKlPk ztYBf`T%1T1S&tG~e}8}6bU8?SS2pr~-+}BJQUyZ(3QL*MDnt+@5Udtme0m)c9f*lW zw2{jV!x`^IlHSx)h`b6SO-Ei-)MDOW$s}sr)yhyK-n=V@yMhm$OjXR;X?OI%$Z?zG znjfL?M#fR&{bC>Wt{kna)oI3RkOCR>hNoEZi0OFTkE9cj54*d`LJ?hx$z-a@DQ))sPtiFB1_ac(Bii8AmL#;YaZ5ji#%1px6;%IAUlD zAtWx&RkVa4AO-+c=Y~{CSQw(?MN+ha7zE)!BmEo_cB1l(^wdeIggpSg+3f2%G1`|r z9UmK;VI%5Z?xc`=VU;3sKz^ZzWbh{yIF5uE0s;sr4E{40*wvL?X|icGhJbn^(334R z@pF# zug4=3#LH|(&;-bOK(G)hx`zR9zTrbrtHr&s6f$}1WiS><0J_xA z%kC5fSjcZ`&1`O22T}`xsiyH)F)`<&cp1GKm>rNoKgc|YU`+yJW)X6@i-0sHVy!hq zF!D5@zXap4B1HXy4ZxpDom^MGdi~m)UDV8z0A$MK+h(5P!R~L$Y~$M0RL)i+duVIX zXG&rdhx0G2#6w9K$%2i&c%cumaKa8`Z>6lPotGDTugl9K+%#@a4^A4lD$UHj^V~H$ zhX^|f8WW8ZM#NV+G9;8=x}~4=kl8&b)c9UgSvfyZ^aUX2&%w<@$#e8{sw8~c-*^VO zyFXm|iY$M^?ukae?f?EUJ?#c)eWqHwGhqPg&8%Zn4>Q?ceh)p>TF0GX5X0sm;*-6o zArX8AoUnZFFOBY^xy-){akkJ>b2R5sGJaFJaXs!qQN_AXlXb6mn~C7>GVVNwVq=u7 zv0=lTW-bCtubn~Q86$*b02Eh~9NMwtYN;ivWp0fGmVN}8#I4+=U0rOt^c}0=4|*HR z{amr&b#g21CCIGNdnV1DiN9u$H0`DyB$8AUZ*@&X^Q(Pi0V)!>0p#y5(%0NXDmi|% zZK=FQer>^F3U{?naD!taH=PyvbtX8PDnjVEW1KoL5macIDLXHYJm9>p2svZo|DMe6tW753FDDghFPC@{Y?bc5*|k!UFH~ z<5$3>lqw#ybPLjMP_M`!U2MPVO}?ouKQmoi4tVJg`kIJQOjcC~uSlWgU`5N4i%*Gt z%jo$vOOmgv2#}bjU_Rps4=i?EC1KJa2%)G2x_-^P02idy0h)|vTW(2H;CJGQBI|#6 zdu5voJT8B+!C28>@2z>o6u~F4ERZCU>|LH0A^TFIGuqqtq^=-0)4e*CbAlj~wweiv zK^xtu)Uu%wB${;gaEK~H>h#AypY@EORiQERxS&bb3eoYRk9H}I?^x7gb6V$uE94@q zH}Og$WWGdXxP6s-;Hcc9Tg%!b@Lov7{@#`ZE&+;&R1ha|RCbZ%9-?i--6Wd!qnth# z@Cw!n{3Z>pEDrFR7gdm`;FXzvGTdCvU-Su>yljt525IP3UB z$R-49!Dk_HXSBR+L%=<4n{;`GJ!2*o0)Pyr&A@A#Y=zQ(H;yr^8syy$Siv;6Iqhd% z`3qm*mzzd0AnU@T+}x%&+K>b&M4E2a;5d@!d${YYEv$MWgmIe5jk}HgNV4@;r5MKc z7YWWVk*@Ya515c;{8;IDhZxe!Q|MNx`jH=yhl4uws7aBe(QsqAXlK!bt*q0+O^?sh z`BtgMzNUsO%!PQQa?(7vPu%kteLO($z9cP|2gH#sE0J}g6kV3l15?1+pD8h_LnGe; zAdx0_?Z#2NkYOSgEH=Q8C_ufoUV@?ux40J4yG<@yENv?p5k=%U8B9X?k0gNn6+YVI z#B~4uNMmE>|J8qrfV%wwSzPf<7I!)@zr{a3KHjJpUI-2Hw;wB}L*Vf5&&GinJyJU; z7OFCl+XLe_ZP>6Oq4}=8qhnu1572!|nFNmD+sRrP`oMneJn_Gqj{d$1Mce29*E9EH z9RJs^@c%p~<$u=bZ>Rg8nfU)U6Vi#OgSHt^f+OAq@lZx*Du}qm(Rw7gDDLZ~n&=m= zrqnA<%40_bm!RQag9X+un&YUKRv7hyU^AZ9v+U~N6pdl8#iuDc=mkygn+-> zYX@cG$<$nm?N@H29QUWeuSu$ka)XWz$?CykUabEqID|VN+=3AK*5%)x9@%$&PVmd@ zX|&MG6V^^X&n|-=PuLt@LwQIpn^69rjVlR($Ue|$)AkAz+)5^xtD?;O7L(j+;K-G- zf(MY_Be4ffS46@FRT&92QY|PG)yQLPWUUtR^ch})S@zR(Mo$#ZhiRhiuXdE2&8ZeK)`t8-LSmJ z%Ick;9(gkqz1^>_(7wTSTXMkI0IkvWr;5%}mWyM)v_;vMs2mH5LJkqtP$FO*A8>^H zhpqv>jq?A?4MBDFlc0~bVeLpyD^!}6th$~NSi&3HIUaFa)bu3%2eL)P#4bX8b34l* z#a0xx!umCtAVnB7qel(;A$i)uLc;S2)oxM`HIS_h9@u?F2J>@O)+m|2h_dk>xKWbv zus=`mp63%&&ev(N=mlBA=dC`M@{XImY(H+oYeYA0w z9GVO;+!;RHHXIPDr(7F%Vl8^_Hf(smi7&wpbIhJPQ@t<;GGO?VskNxTJ$dqE?^xr! zhY!NK4pE-*5knH$m?+|_dI>_4aFb9M%vI&o2c4FvRs6T1o%!BJdNX?>ZI*z*MY>@Q z*fwG7&CKEq9go&;ajITxMkZ@2<#-?3ySNxAuArzMkc*Dlwreuha}K5Q$X{bN=+dJr z&cAg)MM>|9#M9LiuZGuAj#dhC4X>4fR^tZOCwo(W{^OBMeBDq%PCIm9{R|$5Jes%H z{OB0ms1jZ3)9z^AdW$ie%EMWoS?%qX z&^H7}8K||PT8grDLTv@PE81KslwUHbCI8?$ zp%MvnD~tJh*}^I>OU$H94u5qE8TS4Wte~(C3r~8-@$fLmGcNHBH-{9m1tP9Nrv4Vt z(IasA%KdR=U_cUm7RA_hT2bBUxAyA!C%M_4IKYb6kw||?V$N@YLO^6?H(JYDPe#(P5I?|qk09um?S zeEUww)x%0q(`q6lE@D!jo?j?S3UR1g+w>GdJ3>Dp(TM2BuE1ycA$wLLQcb4 zNztwuC_h*0dbr&@s*{?IHyNz|tKBWao<~}Zpn%94Rh3_lL#Jccmaot=p2r+>F150< z$_S0PDuez8D0-xiX=0-mdZM|&bLY+iZGFr*!|2njVCzTIqK1y9zZj;gJ|Nc06_d}M z6EZw!1%M^(ii_qLMAp52J$8(We#~8soVF6H1Co@7-5;J_1X2%F@)$Sx3Gh=6VKQ$u z+*@FoE(C0OSN6(Io;;!j_Yp-^Ri0nKlOzk(BTKekQINgnq)u*P;el8Y%Cl=fW)g6M zTm}ue6p8F4k5 z*X#naZ2bD9Osr;LQQy(s=w*i4TmxPlSW$3rUGf15l_$hRU(F!$GF(Oj3EKteQWG3V zbd7y(Cr)gpxAe_nrNEbCHHt_Xg9rXdX(Ul&{fKK{s=>`Z_T z3-RB<&mhAJedGRRkx*YXh|1fLzfhQO0|P)#TA1EHIXm$Xz(h1e*p8%M@9jJ}ubH5s zxSnAiV-%)`jLly&y$)29a!WAGHv>qwKV9mQ9^+x;}ds~Fu9 zC{tq!0=0Bi`Z1J1wSBae27C69R>J)$hAfK>>%(0fw8oZm+LR@7+KV_=Uag#6c*W*^ z+MxFrHK;N*%OlkrM(lE_=};UB3J%)v#SVIO-b>?5Wx0$vm2W4VZ%{A0SYRn_*{n8~ zVjJ3PMM;08XDX+^95t(v47t@q^(#~tW5jdJ{A*uKtrbJD$!F1)Es$30(!a{d$w?M* zZCgc^*rK09tE#I-Pm>G3gO=I}|96kKtl=$*?KSP}lMb~CZ96S>cH8aMmS+A^&~vxH zJKtJlsjRH*ugYob-1@4u^`KG8yhJDL%&-nWhK4-cX*mkLKpR94QX0q75k-63?fN%4 z2oj`+X02~aUJz+K#_B`nPM>!v4mAx&HS}nXw_md=@jcbD+aS*l>JD?xB>nZsg9!~r zo2mjLz#{DomNV*Bb_l3Y8HL36;F2!6K*4GhTS$`<)>dq(oMjlfEjkNGt?P0I?bzk& zqK4<{&WuQi|0>w_fyshMjjm17j!7as>H)e6Wn=y)Pn=kX8=&J0IwINSf;Q>2AUE2# zmlNoafzU!C7A9m$%^A;t^2)sSYlsmOL&>FJZOz;3A=fz~y9*`d0r+Nrg>!P8Ix-Mlz_*OXmUr?o_Ja~iMD zNML4e4S+#>eNEo@+QsNI(shz}=%30Nbs8v$g^u>-lm%10FRv?apEG~&=;&yKP<>cy zKCfr_cvI_*cdduj6ctT}9)yQUNaXQ*ogB2!5_%mXXO&BwUj*|;W$<*AQkBN--sP-W za*=pY;`;D2Dd^ZAn62KVx@?|UT;EgGoapA0R$ZgcTNBWX07@C>`{6vP00Gn{Mj8hO ztl@*`dz#<`XqG3Yxh3MilV86N(HuvkYVr`8TFn`0UJ+NgJ=f%QFs$R3{;+T>Rm7eK zHw5v#CO#ElKEylNAkFIm6xFxZc*TYGiqQJ2jds*78nH<2SJkM-|?lP@{c0#mkRCt0k+1!wZ zK0h%r5yxv9UYma^e(9+|Et_>q(Dt6H8Qa|bL!7g(l@9kx%G1J=8I+rf*(l=@V1@ou z-Y)I)l&DLc;%lgkRR5vUe9b!V?Ud5Zh@qeb216OAIOu|BA%4Yp&KUUhz*g!Tsh{f0mKoAu3-wYTWk9VRzRUI%ZHinkb9fEm~gAGU;(6vbO z4gk_3DpZvJzUn*OJfTmSXhVkhNy~Z7QWD8y^qjoTg{GqR{JcEuWtBWnVuV^nG0o2% zTWku(JN%iloSaQ{)=`8kmk_lRl=3aX$wq_Hi{t-G&L->;Z1g%0eJ9NW05Mfp=f%A9`oE_MnxlMx^y1V|>3AOf zka+eZUe7FPd!4tH`b3aMTfd*5pDw=xb280jjhb9YZb3oo+u?k`Y@$JNY0XUlU$XYe zl&Irk3?rS~t0m2u-UDNjVrto{r|E~IUu{KUj5bHT=}BR(Z6DgOXyD{o+cQMfa%jIi zL*q8-w?av0-m7lpM%6b5^QoDkP1w{g|9H0U8?-_)c_u&tdCTSDmZbL`j1+MmJWYdt z4I)X*lZr`~dCpFY|3F;>^1ipF;IzVf(p{T3W>b2r=kTa|nckJ0Kx2KD@r~Ttx_D5t zj25IcX^vXu$iEqSg+L(MnGRo`x1a9&1==*^%9D-t^P_T*ldq z@=cwqu%jW<%|mwO$~M)VmY~OG8`5L17q$#<7p2ux2Xy^3UQwqqFZ9x>9}%>c??0Uh zZUSsUGJ)53DM^Yc#ciIWYn5S>>K&EJnYc)h6CKCY6Uu68w0$bs8@`Lad6%ursv0vF z4)KoE;M1tvDpxmqGHajhv=_ahp&>&1q)V*k05<c~>nqZV&o`%@}!rH3>8CR)elQU#yL8)V-U8*`PX)c0!Go zENhW-UdKRxSmUiKVFk!sP=d@DI>FTZoWN6SO(+-Q>%fHCy$!Pq7(;j4#`+Q%*N}L> zj@M#%N<}<0ueh5`XT2n(Z;?u&@9>AXIs-egwn)w{`IL8c4AaTdyco`|6j@8bN4k=y zWk|zdd;BH8usKDhbC2SL6{VlwjJYGdm|%I&!v~Y-c9C1_JnCy3r`Apm zlxNoVjHvzIk@571s_EJ#jbE*pe-OMaBK(ifVSen>kY0*Jp2AD(oyUUnP0M+WLIhg8 zCaiI{bIIGY;}`pft{4?KbduXUYM3^#S?C!{(f6JCv9cJRCtHhA{3`OZGJo7){W?E} z<=&;4*;t42eGPV}#f_l;?!=sxm~$;KpQ+EJ`l2V7wJ_D(hNhQ$x4K2hNvp7Bs6aod zVRM01@!QX?@Fkk;g3Yd#mcIrkW}b>^_uJNuuI67`$8OVH91^Wrx_(=TVW#ypQSY{x zIq2=q_`Qc(zDcaouF_pypfcf9OuWqVGiTmnk6BLOiSb!%y0{6-N~C$AWa-kSY901$ z|2RiEqsgp+?CCbg{9~uCQ*XD87G-Q4KzbTM8hwL#M0MOzKg|8&M|Rn^cU4vC z)G&7NN{2MPn!4>3+m~Z(ro1>o*Fbsl%T2?wN8#~9(tK~68PoI*o339B3N2k3#~$S6 zHNTm>?_z&KOXY=m>l~_7u||i;UHD{C>~XCiGgb<%&cVd+j-|P|szPsLfqH0Q z?76K@f+BefRZaxFPDqc=bB&+3e@l+k$R7XGZ9&H_a#{>a?=L8Ub)sXL`9TDEXr}{d z&=GNu^=waW;#ni`D4)76hRPSm_iH9o=7jovbG1G5JPM!h%!r<+J}355eR%U6omi@w zXgp)0)VbZ-YZL3H>rWir+wQL)IB+cGEeq=3FdHR5iozSvB*5y)i#yrW_uM@s2YMFi z%gCH=DF|$3Zc&UiF}cutzd__uT65q@*%}!lcFnZEkY<`8kI=(h>(6f-=ow1mh#%M5 zI0vcdndqO~)L##LoTMa@a9;Mx;^09C=VHa)t1m?*##$2@KZaWSfK?9eL^hXUPX}ZJ zzs@t$H?2*7$t?YpaI9o0ftehx4BENtWMHPpjp2^BE4pwby3W;mv@&MGZC< z7R-r_uHojDZ|z^-+A_L1@&e(Ttd*B8ty@=H{W!@r?;B~op=E^Z$ly()3t0>9H}&v_ z9M>;fiJTWbaV+-p9{+-43IgR#V-H)VN-X7+UF65qzNL>@+`G#2=G7|$*`H2*%pD9- z6I^_>ud4DNo9MYWwA&)`vBj1{i^i~-WHH)SBuZDlV#H@mJ~E8dn9!)piB92|y{kn$!JEaWZ}*q4^Q~Mj z9F)#^MDHs#RCV_zOX6AywR(s1TbuG!+>NsyXg1!!t5sCC*q!?tJf z-Ss+|8pCqw^3Ke?xsR!I;-KN@gmDsJ)4I^(mzQ7Md@(VF{UvQOV{Pn#{TJ?K1|^b&CLRdFT`}5&+-XU(HBRI3qQmDD@aGu3M z*9R6gF3fi{f3INg^s7RT z_DLpa+{fbaXXtXQL(MC_DsxTG2wmcac4wa& zZrgJ5FLY~GBf=Rot`UL-h14e_;Kta{{ml^?swazS_^44coyucdeJM`{c=e2^7ln!q!$up z03@t4r4X{Q6diK3MkptlK69{38#%A+9}Tur8H`A3yzgGI`Nu|c28S$HUMt0%HoIw! z)^DHG%r{x%wdmHWC8Sexo>vr)i0Rm4j&d)KbXx?*J0H&oMYe zVv(=@a!X}>awvm+A4p+o+6(jtokwc!m*U3s45sJ0KJp7(wukBS8LB8m$#PQVVXZuB zXm@NZ?7fJ##4M(Mk7!F&^BMX9L;wlX{pP5mV7)VGe2I6x)Y^+;CHWHb1X<%lY3o*_ zim_@@gX>PbR@Q5K)0x}vph)lUJ$dZdvEIsb;XZMHq)7KkNM}M9uCq4%T`Z(fk&`K8 z8RHWUo+H9-0ROe#u!gm-pCX~d-*Zp!^G@*+NkLUhS3gQgXQ*F zHw~IcBqVH0)`4^g*#`>`5$DhITbJ&#V0H`o2VQxMjW{<4?YnjUIxJuySX}MZvr6!Q zxtVHXQ3-ly3x`IqVFy#5ugHS#1f^2fi4(%f84L*>zI$sQ?Hm%b#dJr3p4?)iGl_R_ zVwetFIiR>aQK+pf*W-v!zIo(o{$W}c{q*ruBfqm6Tx&9f>N`Ypc{;*Ec#Vi}_uPm&X{C&ob+VBWVwD{fIzZSk)j75cUA5$I?CdI! zH6?7%ICHytYl>m+0S8BprqY3ezN!Qxs>oB0nO1J*CTLo#bB}($zm|jEBw4x^SsM+u=p|w{fV(j-H0uLfZ}?GfJL}oh3A`rn&pd z-7H$x+@*4x=~8eVwUL+oU+zQMmK(Eq)t0)za!nLzQAQ<&0TGI;Op})lRa|D?eRPoD zVdzpD#jW^E3N>?kMk8=Pr8v&}0C{r^T#d96&Q?M*@Kd-x>Rb{xY8$s_a(ov=gzxqk71Aan6{Z$Do$n?L7>7*A|`1GN}DAw z_PB4E{Keq`aLKd$>X2^M#AMNyF$aMTZ>|U;RQW|+U@~hBw0N(*QJrlpdR)s|E+r#f z=^_bKpC$H%yg5=5w-Qw=Xmu6)3D>wVJM|%)#b;q)l|kK3n{g?a~a|$L9XCEVSabm&v|O&K8vL#(J7wt)||+I{zii zY40EAqLl->rA5nfoahlb7W*C@V7q7adERNXi)_AXfx-5+sD~atEqRR-&1q4fW$AyG zPUqz+1f-SGHkj|tA@wk!dTOsOd{OB0nA+#f_fA@&cd)-yU_1Ly>s=lRvvxiQ6gF1q zr^x1z9$R#-H|Av}ALuR~E@ZieI7Jy3H6093qO-7H;=^7OaU$VqFbLJ0N9{SjtZY7!vYXVCdm;B<8?}l1ms-sv- z5hqoGnY-`>^XO!&--*^i#OY5rnt`jT*Eub{IG^CNG>#`wAu`E-PJ+OZvGfp+MSQ*% zY_-pChfdNl?v_T^jL(Xf9^WrLnwoK05zEA8c_YgxzF>={Y*K+Zbm*POWp`xUeX~M2 zYXp^4(YcQCcxg!E6zLliEV!BY*Y8k;AwD_=%iiHUZg1we%F3R|DI4oci65NEr61^( zhZU7gb7M)%RiaU>{g7XlZ+%P0v-Q~Jv7(1%WgX2-Z-19!v$+l#n%A05`H&L!Gx|{b zKtrKg96C|)Iw^ZalqnaXWQPil-RDI@^+oeE@iZ1$m~50VTAO`N)c=R3z@pxzcgNLs z-^{D^XN_NcdIT!$TcZa~fi`Q_ZF|&A&G60}pV3ts$IHixGm?!{a{|BT6&Ai5%YIMx z>}tk}`wKY5Ij#rhqiG>L0?#fHZp`#1*@Wc(^-pVBBDUfx2`*|@9d7IU8XFgv z>9YjVoafu;BEn?r;?N)H>u@=H-kAl4M$4~sMRg_hsyDI>*~MqY7$YQeTv07bE5KG| zuxb|r55SzHs*C*==u~9mkCql=^c_Nfep6~&%pLo2Ny+YnuFvqHnGanV+rF6vQi|7FZso6Ff=OiMuY zm&lu5q8DP;gwgp`)=vwWMzOQ~y-=NDa zBt-LS_0~bMdq?#ot+fNqD}+7!C}c&~CLF)s993P1ms#ab`DbF+qxs?D4JwSU*3M1Z zC=Zc+kbbMXP$47_O7zx+5fiCn5?L8@iNM7o+C7X|qTCcFvQAD8FR8geQ1*WRZ>2r$ zn;eyY+ppT?u(BICFPf{XDvBeYgTr}d#-9jD`Ro?^w31x&?AH{loK3O z^U_NP6I`^NrG~Iy;1=XvQb^Ru*T9kxQ!8%i8}5|u*%AiE-Sl#b+50a2%OJLgX#ezh zCP^awLA{BaRWFLM(|A4iO5}0+J6|GHrEi@TH?|Q{^wz8!;1Sq6053-45B=?*nwvK5 zx6wrG@ky5`qUGbOzJ35PG=UMaF8*X8sT8B!MjHz!-$usj&2I$ooM zN*Q2k9SFPbVrQqxbBI=qxE8)){4=S-;++^VdC{T2%*q#fyKdb&90+Dl*bQusv@SzZ zW7%oOGlpr2rY;Goh`2yPogANETB-*Vy{&0qC#tX732kB=D31NZcv8ZPY~+rwLph2h zP1dPtv32EM+8$cD-cp;dx6~f1|N5Ppu{J#98Y`e9d~&p{tSsi3581an{xzW``P3By zmP~HjSVCS#s;P)Z&{Tki3N(%-@NOVU(M0&m|EIkxe`@Lu;tz{jNA6GymL!N$lv2x-h#sjziN3f{tB-vP}~g$b*pdtNeuyp~lN z47cTa{Ir;$8pypz`&!|}gsDWOyqID8XfLjZR!;_j$|AZ@r}xQ zlM)G=?w=nq@4=cvG}$?d0%c3v^ZO=_033jg&Zd){hz)x>$Ks66ay3tPhe(N_sm@tS zMhiByHU(3oMgk2q0DYjP;_nEN+A4Uh;8Z|$m{F0QmB-7yK2_^m^g+^z8V#Mbz@7xi z2pG$g2XA`^aVx;|fR;_`o+|~yaeSOjB_uF4w$lRDz-bc~#VM`;vn@zFmmKLeJhYC> zBwYa!g}5a_#!T}>v1t;CbiK%4z}E|-vm2ZEjw_yj0qY&00SMH;9F=c&gadDWjsjbS zjkQ3K0PljUq@m!9P=7oaP$vB#&_2Kv3jlwC1U@5|po8+ti&J25$dbaB7dq%_*}U5v z_97k1|AchdZj+oA0+B`K>^V|fARLwr)`y7K!dcPi zUg&|MT6gFYGmrg#7d>|)I4FJM>7@(72oWs&U+L zVRhAfIbV$2*K_p23{De9oAR6JQG3cNLK?;yQIMsH>W*A1urOBpw2m{3RM8{90tbq` z5z$ydC{$An7&;L|>JBe*S&G_xstEj`StOcI)kFFu56UoGt$={w%is4rMR_~!gX&vT z;RS1-XZ6M;Jk_vHPcbAYt>N8$wE zwYIhzRvHtB3B4;mTn7gSn_Y9!pXEF{-KN!E?w8GX7s@jH)W&k@$q^veh|*G7ES5YK zHqGo%-|3>e6Pwqvajk7_c>#a>NmT*Vp``T33q}|H1_`@LyeE`Of!rSZO45H~53&n2eiCj(Up?h=iO8 zCxED@3&c-)|D0;cgM;$;`y0rD&kk!G9v{^nHh-^%xH&%(zAe!yX^(Da;Pnh;rN#~z zmTxloO`uHFK@GaP*kl_p%d5q{xoYgy=NF6L`XC0?3cp;GNccCe*B9PKZ;0`8Hb6Lh rwJdkJyg^9a_VK$Pdv_S$c9439j>)qf!93aw>N5vCeBJr35t;u3_$Y5C diff --git a/docs/tex/recon/QvsC_quant_n1.png b/docs/tex/recon/QvsC_quant_n1.png new file mode 100644 index 0000000000000000000000000000000000000000..bb697a4be1f1edcb5c20931376e2efbf364b8dda GIT binary patch literal 1105847 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

XL2xXwnk7j37GI5<>u* zXgkdHW_7>N9WJhudrIo1kxjw30!yEc4HYz0XLg0X%m3|7t}X*ZzVuSV=@;z z=pl@55@JWyn5Rq?JBSol6Z$mdKOSq5Ksn*T#)`Eeeuvl$Wh3($fO|g;Ebn*{VS8o5 zf{qZYvsqEGv9pB+^Rb%luA9pj$rY8WS5pm|5PdAi$beFpj(xva;akfm4h$gjBS

u0}@ z!;ir>fcJTI9Nn6^hIMY8>+wo9O?Aqp-{mNsMG>vd8*S>KH-C?4$UgkINPyGpV+uka z)fsAo?i>H+urX_cUuHhDEj4eu^Yyf-G}4dfdyew?9BLZcTiI!C$?LO5qo|bpW=xUj z;sq2YGMp>8sKZbQ+wwn>PNS91$~wzQuC>R#Xdd?+BVlIPHt2X=Vuc>;l@XZvhxMpf z*Xn#diM`XtGW%Zzo2i5+EiOig;2ok-bJBENZtcr6+l7wKG!4&;8}0XINN*P?=<`28 zUFHM42L3gh>2wt&0U{#DL{e zjzegYTV>OPp$Qa{1LG#*tDRxpow^1_QNbIkuk@m)Vy~&XBDtIRt{=>jvaLy*fF#QC z<+yYgq?!fD&})F3030WILkujvzwX7)&(A^0BG*Sh%)pJ%- z9#JX{VR}=7V_Opgp(tCMEyJO9!yzh$4wmd$cQaltJwdzBeuAETue`}iHct(K!Vm#u zb?T5=QYZC;R;T@HJD~^b({o=B-BsivZf-_zkE0@1$MQ2sI24tc?-^a3*x*+W6Py7^ z;|jwI?MZOwH*IM(of@m6UOZ3; z2kSHx9;-;se7k{Deg`?La5IF0s;(>q&6O4S-N*;U4@VuD3SSKv_>e1C-R!+#I=`yqqJ?iBa+-rV%g z@nJ4VZwL-B$2-N)0OAr9YGGl~SD*ItzQoTX5GPBm-%AC*G-2zyU`?5lU+EIo+MSAje8QXOTHN~i zj|3phfa{wGA8-c8P4b${xuum8#)iuo&*up(8~MB}F%JydZ*<`SJOcz+S$TOs;6$;I z3!Ku6nJ7^_+?i=je%AEDOUgneH&r<4a0uYl7^P8Ywq_Hfss4y>7c}{7YDWX<_=^TZ z&F@(b%?zuKy@Jrlmi|drGp8XOPIPI=eyo4~1@2@>G*Ll?wtUjVm?z#KXlFWvZoTMO zb{kq=GM<00Av`f~_7lPyQxWUb7^BcVaoTXQ3Zqs76o5&Q=K3CF1T>3`I(D=G1%DH?A63_+bjo|=lNoT zFa&+?b53Hj`;&#X+uyxAzxh6*lz)ERPF7VM+0GM$Sn*+&Vm=+=Qg_+Z{lk#1;u8%= zo4QF4q537oyQrv33oRr?n2p*&wo2^{)0)t<_qC*B1 zcu1A<+kideg0H=ccyn@QY&?^x3K6Fi1`$E;JpHFsiON<(C-Gl;H=YItNMS!?c@aPa!?&JWWG>)shm&~WnrC~KQ09(txVa_h@!a6h`v$^+7Yuzq00-g1 zdrs{~cZ`gT9nioZY-JhWl1%$ab&KwTfJo*YB-E_KY|X(C%w$p4B-}rN$u!s6eE3&|>Og>cwg9 zzhsFAIJl2u28a=&hLi4=#yfU3-p1Gm#wQ@Gkag^q8m+0J*RN1cJgA**V**V1v~hrA zbe2jadg0Q+j4MXLkw~b5vBfvvWQ=&30({EhJ+Cj&x}(CrRHWBylyL6rxk00$rE>Yn znoGl25PwLvE`IkySW=>W0LaIX(E9@zvG<)aAcLmsHEq<25!yo~pmDigH#!kZB3(a6cm6F^!j8796V4J`;m<$V?NB7iZAUUY{qRd~ ziQle&ox}BH`r|T&$3-a4pM?czu;m6*#P|1^!KZ&>D7$?Luv^JV3Vmqd3P)zc1}u1E zGPcp0WtK2Y5bH{QqF_t=6IO~0=U{ed4(wQoA{GPtpLdUf2hw?${1N4RZd9pBEGj4b zsJxQp3MTw4`)=29Fpj|n8Mrzn(fL2#`vXNY^Ix+K2hssDZ^PSYydh=z?_w-$t{42r zxei&8#54lg@rihiBFWyrhyIpkf^8SHy_1Hc)%4NS7Up?VINm5sy^%He4%*=k1)ORk ziM!QBc$!1Q-Pg1k7l)8yhW`jp+)(2`e7D6{RYzCgnM94MCHxVa-tbl+2o2g z;(7ESW44LXC*)(eXN9Su$4|{g&W}Iw6$5|7{P%lFpxBi^v$N<=KnS|~=rxVUH(nSd zT+-BSwPRzmBU$fgRMbD4Wk(LlqArU1{>*zDlzlG_4UUceAMZTpO>+)^Elaln0&@gN zfe!No27o~np*Y!L^i+p_KI$w_PMs3(d7R{&fjAta)E-ZdNtL~-TvXGl=SXM84h6j=A-J1A zSq!H7RW(X(q)|UTK^Mn7qI4crT(m69?t#u4W0~N)_?meh!2I^zn972K-TS^64n@2r zZ?-!PKs@sOY9&c=AU_A@YY}}xvO;xoDUAXK2OLIi ziafR%&R48oU=tN&A>zVt*W+l+!o`EsX&#JQ8?2?cri!!FYA=-itAbK{&Xm>M#xLO4 zOIq{A8+!bOD-k_j{#Wk=b$sE zf=!$qtgI5O%fxIydX^X4iC112oqTUCmX~8obYXN5m^*?tj=%hk!XyE7=9{jzV@rqE z2Q2=fVjmB!V+}f*nwmDX@p0Ds&K}PO6H9X=s_v<%aMw&VN6rpv@9(%IkD|YP#(l4! zP#=dIGhMQpDvDCyr2V{P+c)n&{R2W^PoX?mb8?;H{+~l<0LnVdo`NQ!X7% z=^vY7+Kblb!X@fXSQ7}4)5PNrzWk%XpIzNIO}-Pz<`~dopo(OIbL;P*>!vfgDUnhi zWAI;cX2P%6|csesz90bH%;G+E2!8WoIuNy_Q z?Wi||?w<=W>sRqYerx!kBPfOIHFif;8DT3rs<4A1GGjobJkMdabKTzk5}W%5KmXgj zs>Q8=!a8s}9sJ4-_C8#TK5(1@UR@~sdUqu7Nyg2z%e3KJWltoj4nnjYqpDDZ(7RIp z%_5v9@%zN!67*0kaY+`X1Gs1QmMS=>_!3}My$h4cXpT6MMQiv))mBlQNFR+-OLu27 ztF}#K%i10FMQ~FC181$770Wbb9gOBU;ARG^iniQmww7Pb!W-Sd{HUGrVKGl%azA!l zY@R%%P7sUfy%dEH3E1@o(kr!fKF=wBu#mO*!(gvuLy^uek$I{(YfQ=YN^F;l>G~U; zfYjy5_USq{kEAVA-b544xU{{DDs-p8DN+myHC845K&=Dy+f}!ks=C^t&Txo`7yyMg zFkl=$9M*!2Dyme3StILPX|rKgEEVW8B4YlhGmQ)iI_>3fXTvN;3)h7(sA{(lJl>V? zGFOp$Z+pvjK3z1B0V%Syh*A!%goqDSw9aE2g83F;;S;7zAz#?uv<>)%n8XU_`KY0p zguAD5s^Hd{r^-~(} z_G?Y>?wkL>4*0K72wk6ycy^sjjW)Z(M<-#DSzD8zFkK|WD`t33Q{tUup?EXuUXkV> zejrU?b|*U(^D5n)eh%FKQ$#ME!`V^x_pF4`5XlsQ*`bKU;%KRkQiZ8+4+Gy1PJA1U zooJYdngk*d6?=cBPca07=c(_F&G@MFYB9>a-qV_Z*vAd6$KjX9j2sMQ7WC9Yz~0{k z>$6~=O)ndrR``tUXdgY~A8%HFnu;;3`J#_p^e}(4W4Htwi}eqORqI*U*usu!yZF4K zS-EXc6_Nv;8e@wP+%SL2`~8T;cA*9@bgYc*jXUF*wE1Q4Mm6^j;KWrBI zoMIE_bC9!6g=x5&#u}Clrz>nZH>uZC5hYZ6Lyvwjy%><@!64Jybm6M zH2v^Wnw)g23V#7uzlgE7MF#$yf;LRcvAQ6XshC>$2$%F~>+6t21$)HTHf2+pqy)Je z^?f;UOw{R;PK|7(z}25ICHq$R8L^>;(tNlOJz?YO?x+WB)P; z0NklWr5{VjJQvHmN*X!@8&C@ytGDN=>63C)B`-+^ExP?~TVGHsVur_6f{oT5nm^e{ zC5&oI_?d>Ng%PqSr05*>_OUwBc|#;Ah#CNu@Y zPj6OD7*$s!UL_U%CZ00PDLbcvs5I)*?RKV@AQFY^@%a6v&G^LytS@`T+2LlKh9Xa+ zTAL;{0X8}G$}~AWB1ey?Y-)bE2pD{oZI4(Anwy%6$d`amB-cP=R?oh9zrySV_$fd6 zwzD7s9eeAJiYK5bD&Nu3R73yYxI9?+bIWU0NJcq7SN40_fWOYa*D+WUG2f>$2lCL+=Y;>5 z(nMMR4V}#DjMwvWk7tt+Nr{XNsi=XZ4{LIoyuW<3ot7oX>Qz-Nkg$yKK9ApHM9+t% zuO!!E7f3~sp~GfQkL$eX!kA3$sfL;|VduFio8G#c&I{}gL&kzvqMz4QuL@WB?Vw4h z_^2tptzuzG1}l%l(mr$sRg3>U!H4MA_alAp9q-M|m|FjRS&yCa((A3>_aCWP4B%kH z#%OUu_ejM4CwMWuhW^>l?Q;%ePmX_>YvxkP7E5iQba6QryB+U-CME*aLi^S?cui&erIGy%<=)t`>E0r7VP0FFW&y*+^!uY5Sl^js-r!*@FD~Z_qXija;v{4b z)_{#3(+Mnx@o6|geDxIhCU^MzX@i9oLw@y9A+B*~JlOKLe9cw;A%!fygv+E+owN^h z*mWQ0fvEo!&4Nmd*u#l|(@7_Eb-d6awbAWwL>~_PhTt<`3fNKgf^9Y{>=(S2aRLv0 z%$?$>9dxCSbSsmvOFMO~m}+*_h12uJI^N`g>LSK;#r*B}x$*a{?GojQdB)&ng_FGK z)WStBROVEdRIWK1x)($`V*_oQ(D$xBpjAWQ^Eq{-d;L5wzwYr_^Xc<<{8uQV! zq~+xl(>L;b96A4vKQyKQCQq~VMxop4{ZI7ICI&T9eoYNBO^y${0{<~(7qIyiv|kw{ z=(*{+1-7f~9%R{#JNp=HRTKz$HGv;*P#Xb zkP!Ux4CeUG24u zbqNzTlSfW64gDlLmL`lnVQN9Fm#D(|cJ1_Wc-=FnbMdR&;Uuw&z9*_4z^z$tx6b>^ z*Mu2pra8#m3?;Bs1nGIv8%2*&GNP!W^V$#R2fgGP>W(Y{F`e>rZmJZG&W@~X=Badh zMaDaz_=7wiHCpd*MF<3hH!N~kn*)W3{|Av^i)u*<6XHM#C#axqQknm`zi3xG8w7LU z9){W)5*g^>gTf22@A3H;q%U~W^UaHI*)eF7g zqF+1_5d$z052r`hVRj5{^@tRBt|@&UoJ+r#iUcD;pcdH6mHW$jU*I?knjq<{e}*xT z&T3j?OWkeTiSfM=D=5SDdSSz(w4{W_^)U=R)zVq%&+2f_`HQ(OM4xbUlA{<-0& zUe^XXH!%9ZPNrYqJ_< z35bvM+m2Z5sgS*Mp1uPNyva$QIXt)W#Tkw%-v-?T>%A7GdU(WH6UIuaj6NK(dctk zs#p)pG1(lI7MnO4EU>6K^7Aw=#x9MV@S^{UR14QwL8}pGiegFA;LU6YQ6AD$2Z4jh zM@1f7XvV?L61ac6Hqv8^CT(Xmrv@?^6cEu%0^}zO$>s9neY`*RUO)D}{pjr80Qm2V zo_}_00LKZ!sK66#@{N1$U^UTW!$0b4^XX9xi)aeqZ52}X%u8B z8kvQbWFzB)VoE6KZ7oAjP09E1LRDNBA|sLlF%w1H+t0?!Qn>5cXVUm>g3Jo`USb=p z|9v=bCO%|^6d+$gNO)S{5a1TPwu2~%X2}plg3aCf4XBj!*>?Bk!wa|r?lbt2RA6= zQ!3kr$YrBo;Why?&4&k_<%7;gTrMA;%$LW<0eXT#lPo=fWTmC}K7sEh)UEz~Q!UQ9 zodWc>7GwyU49a@#^r^gLJ1k_h{HDb|58~zKoJj~%B_A*(r&;^u>R#3i?%ZD<1-soY0G-e|CFB&iW_cCC1uPYpjljV%B!Mx|&u z=3w1C#+x6UM><&|VvCVJlkq`?&09OWE#!Z>+y~B`>d!Jy$&G=*R?{Xf-c46@e2Z{q#)AI4sh;%Vm%dWVravUja1i+nvlTh|hZkm6}mKaPw=UB$Dxoi@2OCBgR ztn9Jqr3xoiER?oRE5cr(ck1nU*+Zvp)m8!V+OgDX84@K_!Qq5dI3U$Kd}pY@9!2>N zYWDVCiII8WgbPL+Qu%m*R&{{U<6n5qRCy)|(sN2j6^+d@YDY)z0HBXz1sQeUtPKW% zwGa96u%n8&an`k+*ct}ToFJvC387>`0^U9~+0sH#fxpMO%yaXp(q*SVNj4nCNpDu} zRj!B)AL<9*g02g}9r8{&Tx}`f)5vyR)OuRK^pCTgD=`ALL+tkgoTn-Z zIn!V)F)@$~N6xIN^-N@!V-SEpvJ(|lVE{o7f6R+aU73&^@hs2mU4|=;BKp);jnp9n z7)BL;?)^Mj8u}h8_&9geGj>Q+xJGMf5tTD2iqF)5qWs6N-!z9bLj|IbP2NqLaqwoV z>}TwNUFQV?m}aBbCjdufqYBl;+pl_c{cQ9Y!OMbxn1ESBumjN#Fh{GbfX&8F!2M!v z=-MRO6A+D-Gd|tJw0l{%GckJM{~r@%{MMqNaO6zaIB{U>s+$({f^b5Pb*an7PD%l1 z25#~hDt4Dt7LGjx4FR5T6vbSLc!GewF(~GV1d4@4d&oYHn2%Yv96QD?tjNQB;-Rh) zf|@~yWC^*NuGp$*qY5W!+{4FQ+tY)qqMTq{H*Hf7GPkgK8+x^71l{!OMgO+v&rm(d^1$zM@z#n;?ab zH-cueaRz3)P}{1!CttC`KG4wL7-gBm41u<63eSXkhr`u}z`ThBIQkWXiG4M5jT}AE2lO?-s&uB80$>Vg28ypNs62krBRP^P0oe#X+sk>Vk)2WWziH=rtfiR!C-~6N6SE2s&M09ikpR5> zT3gMe;;6@eJ%sUe;ociP$=pk5Z>`T!fgo4~4NK{X$tqrsvkvF8T;z?Tp6>>j|CxLv@s7LzwL1K;bVx zy@b9v{wZ-Qv~S!mUb9Q~=%(W2fga)&s$3<<&hh}ayK^k!woR86^UbiR4{3{ zr>qVbdk6my8;-YN!2}l-n6v?lVh%l3;en!UW7chPEQGUj_chK>a^xrK>=mIJqWI*b zg1wqAZ4STosUa_xB<5pe-0QttgYt3s=V*7}y86qDkn!tSpd2LxuoO9yZEb-U_yr;gpw^X3OK zsGa?=oh$kF`p)7%{NZ!@Fa51gh~7MbHL}UL0a%w*A@~t;3)?+SZ#sgtLpMhQmCsD; zDq?{a($RA|GP{YZxQQPIoq|js`bk1+<&!f_BRv}SZ(52^@Vh!rlt4hLZ1fd|mFmgt zHMHu0_x%nqN; zWJW-e1f~{1YZN%Pe|x}DUW5{%sgc~sJB!jFE8X8jN%q%Zf>Jhyu(M4mmAqd`B~+EE z9pS=1qJ=sosl=+U37+6mxdbYD4L;If#{;^i$vlw`&updKii|-n_eYr5odyHL zJTwX(BUZzw3RpnKg@CY6r0(M|@g}}ls&cL|ZQFE`h@r$AT3A_WLg$4inoF|yxNjcn z(0Yma3&DGhAvpv!hVToz(A&zi1CUs{v%DJ{yc>}-4l=%xqRU-<$>;_vOXn ztRebQbO-RahtLrFi$+pZu}RK@CyYRBdcb-MKD~tY<|DM(vGFrS6CqRXF89Xw=7Nk~ zfcRMyOjuSn+SrH%0XUivTUy(|Jw^@KS7AYL7@)XjGyk1!f%vjcso|c?M>pG{)KXVQ z{eO6G$e^3ZJ8{{O3?NkDX9zJQz=3FaGp~nl&4Y}%0alEzUholbd z-dUW|shjt=ZfI%221bJ3`AC6$sZZX0p6#OyGiu^F8d!v%89 zF|Fh)S+61sXM{GjmO8pOW#>!yIcEn61o6#FzXg}ea6kQ-oO?AHmem$pg7>G+)$8C( zx#2lQ!T!so`FTU&BHe1GiwNGA-uXE+A>+O=ssL@_^AE~3=Q;=%Rv8b?g!Fsn5dY%I zHRQKX7%gJ65cJsQgIMDwMXn89F}lp*7_odXjegDo@0-v<16Kv!*PC3;b|dHhuZTSl z)g(KCupi}`^<~8Ar^_6px9BDio>+%OZX8s#@Lm{jd`J$a+#~OypIArH3;l>il&$mQ;8lbUEZyN;V8|md5znU#!)ub6J5C@qSO-Ry@+0yT0 z=V0C&#KNJJ-Nrt>#6|UL7DP4`n)@nGCJEF!{Vf)0wUMG)>7P6Fm0;4H$llT!RXx=^ zLzuOIV+e*u#NOiDeCM+3y8c=PfRvjgU#uvBkV0NvuN9WMOTm9K7Y(0g2)fZ(O^3or zA(SMoxFubX>6`PkC_VkRq?WWjRO*Q)V*`avpYYvktixVWrKioixWg3B+iCo6lJd45 z_%8bBO0$D(xF-F*-=7b!*DrlhG;|%IH#{HLWs)iJ(wXDgMGcw~Bf|Wo!3BYrB)jnV zZXow#LKyGTL~1utuo?AOP~8u{1jY4?`<0L`Pq1lZPT5ub><#iurU|1nD&pBWxRQvS zTy`i){EyBJjb4^nLxISyAR(pWNE0Ax=xG3_r>}R@bxDs_>KokL0%S@}+YKyKa?)G* zhfZ3vsD;s=U65*dQ$rz_{|nbEC?`kSzIEMA$Hrq_!a-J6mV8zhz-`@Lqyej<&%U<` z`_E7b&iEfF{{=kx2EGt@>_gLwCQPBaxU~~sBlIArqhpqzp8M)X#fXJeM8LU^AcGSM zO~vdI&7zmEZG~^hfdxDrk9k31C-zb30z~sWoDrl2pRz*fe33}vsOo@hC76>$bO3!#8gqk5D zf-s&gFw&`Vsnw6u&?eWeCWb?+y(aoU+0$dG5N#IgsH4LxJPpv_8i;=cLekrV*9Dc0 zeg0PPtE)YTNEmu_UU;i%3q`};5;e2p<{1ecjV5V)t85TuFdyqB+ZmdpL!H=~^4>}J<3PEK zdzdazlH4TqM)!%)MURanx8$)>?y1_)sJ-?E$}$Z4b}ru#O1RpWdFNtH9sITyQY15XDApYVAlg1&QcI|HbbJO2Ak9O z^v@rqaAWiTtdp?wh5kC=t_t9KXklQq0gKF0pNKH|Y)?h0)B0bY5m~pkp131G7?9Uz zgwP1b+Hl6CbM5OgG5P@>Nonvn9u6I{SI!}Ty{^4$sZcD z^i~yD6ElvuwP#~WO-6;!TmAW+E^hJ&$2Ro-JCNWHY)1L}VK@*1??5Sl2^X~Czt0}3S1O{(kDw&^X{Q;Z zQs}unepG05?ITfCzxA}nQqVG@O6nRN%ilQpIhNjNunyQYy4AV)kGSV)n8g@~fdS#S z&$@4SpQpDn0M#;^B*~9jpM3^U4xB7Auug-TkxTrVO0>NKiJbX~=Qu8<%N?U&Rk0$C z+(zK1fB`iY)}+QF#^m=DO$0QBs)O5@dLI2@@x=t`>b^yI%RKHu+(a`Tgphmc4RJbL zvAQy+)rJn!l$`u{@pno8yt!Hy$1~J$cr1K#hzAWRro6p;u>f(_5b=4?)1sw7;zhnIkmPc$%@O3)0z$8%fRI1@K_J)x7EmHXZlOUA z>RTig0RCAkD^Wlx5jVL&bPNib=m!!Vz`#xyt3mE-r>SUzL}plYxJNr+$@vcZ5O zn~_ckF}kS^8axQrn~urZPmOpc_4HzASmKZky>mEH7KSw$psG0 z|9$NE{P^i1{ZxeL7|UcOr9L(dClb0Js5Mxjozn8St+te8OS~a2ndm=MlzdxPDy5i| z%W7i4ebYrv=-BMZ->Bq+Jz%-ko*?Ii!19ynu~|%gLwu?)uOt29z#M|!Ds;P-9%AiS z-RN!*+G7V+?YkponfXb$H$8$yiTU?t1|0_Fdxz&QeQ+RQkm1f@3mP1z3@qPr7`~{6 z;DkHV-GI>xnuV5NQ)x!UCQAKnm`Kj2j(l*TNftVPMj?X=CtQoks>z7WQ{*G@_O(KJ zU;XQP>M+REcy&&q7lCuYf{E>jiP!wg8|o&4p#b77w)C&wZH>!SJpS4`5_GGe6x|kf zkZoFBeZ}9R4!MzE0~#t(iG&>s31u%7VFgL+hWC=8K3+QMj8rc&{^;rJkr9e;v0s|- zI+2Otz@9ADzw&oneKHDU)qtcifJ~gESW=4n3;rVj(!`p5Y-xX{b+KQ8Gegr<1ibHW zEOXW7e4uebL@RSQKXn+OHkP;yw_c_zm#p64rhl^z8l_S~S(pOv&U@-%22Z#I8RLLH z4GL`8vNWd-$fCs+9XAQvs$lx#rq+^ps^d)&g*9-4wmgmR|0A9aO8TC{N`KtGRHha` zn$YvFhW$V9S`J>A0LutX5~P}goqwjnd0U%U-(DlIb7?m{_#+)mVoTEkaS6WESt+g~ z8|}ee--Vat0YA6y=WxxwO6tFV|6cvu{2<=UIsgMo|yLisM-OS z%=;81{Rw!j&6ma2t4`3pOOyA@fWIhtr+$=Vl$%CzEmRw8 zWoybANl3(d&0)e<0<6QoX%&Eux{TfH-;c`Q;MC)HdS+_mlm?Mk4luje*mAiFza&;BlxYH)L5tFE|S>4xN z({{{w%1zC$(MvuOgN5uSZ0Q*3(A(_b^+9EqKB}aI8kCI-N=^V}Apj>2=zqiWK7#`7 zKskCqxXjGjS`5&xP*OJoHlonZe?&k$6==7(KADDlQ7s^cfd2nk2mmApMC3V$7Ryz2 zfeZ+sYy^<6+3XkX7tlE-uguK=9iYf1Lt3WNr7_F&T_CN7D5*X zpyXY!=n#^Pt-W=%=3d``zh?E(iooTm*pn7)9K+Z7TszFn@Pp-IV_`)K>YdF)4T4fRVy*U1J+}8D6Y5ugfL5NB!jUCXkddcgMq<%GN2FJw8X6b#jV6vC zRhtXWZ}TaQgeuK{B~2v}4}oVS*`Y2U3gG|qUEcEe^MdW#80n|4e(OLYacQnMv46WY z*M`o0Ao@$bGOXc^MsJAkBQZ18cEvH(c{kaGuS#&LlB8u~+JULcu+O~QWF^4_lbs0| z4P-!oS;ISLQuzYiZofR{b2BeT0#RM&m7jY@-rX+$ZOB1dp10~9(a^c@u!Q}$a`7q(F^l@m%nSPo#ayC7 zD1;)*6Y3$*78NjAd9qgt9-`A0m>rwpRA|9p!g*Ph4=~O+{HejD?1LmTAq(Zc!+1ko z;UPjl-&jchvTfQ6u&+@YS3Ey~HUcpeyWE8z<4QQ5d(#AaoIpU}j9&9}CAGMpfkP@mdRaMhfOF@^Qt!=DXBQl;v zc?TJ)v@{9(f9Ew0IG^@_Ec93gFUC98;4C;jJ)I56I%jy@ zE%6+e)w)RkPtb0`_)pM|gIi9Rep_|c5fM?bqifO4Zr|vE?oXZ||JN$;6OsrzM*2WC z{4N(U1l0*k5NCjQOPjQ8*f@3)eTT^ZpDv8HSnMRvkg>pMAf61~DL9>ZFlXho+O++z zkK6_wvtWBVdAScYNA;KXcKj2=zQOO7#_oq`DECz+zRRz3zG!mU8yC z5;{)#8v1uWd<#lRs9S;Gf@;Av`S7uZN`_jtv>+8rK?lFhyeGb4;vkZO`V8A4x!6JO zO)u`ulo-n~QGvMH4wPG+pt|z5qat0V$Cmx`rfXxK^9;3jCjkE4f4)z#?~$Q_UFl9% zB&U>p=7_y{E0GD5sombBjDV~D=5Z9;CEuJRoe7em+a#l>fgs!4NRmY{zN$;e>$`bT zieG$rdHl*A z&7)MBJ3jDK*cqzxSIwkhXfMf1KSrg;6OY+*rK>NqH&)JRBb{D|e=IPZWTap-q++M& zoTPVmuBTCR9R-45_iXzVbvke* zV{9&*7!MP-%pnh*yHM*Cv7c6BB)%ZB7kflVkSd;F$+mM=u6+$gQf7UWJ0-9_v=AC4E*+?X z<4S~-TocgebHGaFT6`p;e?y&GXv&pF#F!_N?z3H{NX(R+?acJ0TSgHEgHqm}i<&MU zEqUEzQT;I#`JlO1JqQ$qZtFnqs34!&8Ggwt^5m;Cc+H2xvd+G4sxZ+!x`2;;HV@oJ}c~cAC zyZ4UdH(igIm|*6eGB%=jbc)PSIcRXL*x@^3PF$!I2&zN;o2#VH09i+htb`lcPu_-- z26wy)D_#*dW?wp9^z}J31sSZyqEqKk@^27w3-@0rs=YvdIZ69ZWQQff387sr@3*%- zA;j>H0H2#jo2MB+)|2?b8>#qEEyT(iJ53j+`H}JH(U^@jE9`{Gs=l?qKx^>a#twz!v%K)-$*g1-t$hd?#AJOR=`;&B9&`Atxp7W3k2tKZws zpY8iVDy6azWYL4fi#l9nFgx3RmaJ}ZOPp#lhWuO4Yb0S`oh_01Ar(y0+p|0GWp3aV z{l;zgbV=9MYCgfYdm?R{2iWf&iA8y>B=Sem%Ht9{y`zfI)mxt_xh>#~AdeJzaNp3^cbQ9l4i2q0m&e@EN$s5^?))~~7# z$+XjR%=v?e&CeD3E{+SoPaM}E`N_3`m8T43iSByPQxWA5&IOhW*0MEkRy+7E7#rb^ z{h;tdx-J!<`7S~O@x*xShaj5djPT@zM`1J|EqM5`1ABmmpPfdj7(52LPOWES1aK3n zm6BXOVdyLWw=dC-+;Eo;C&kM5>n8MWkRh<}^-Cug;?rZJrch-uQgJOk4s5F^39@`4 zn|-xJU&wylp=OW#m88RtXnI>)0$-wZL}=>kkDZ@4FDUEU&vB+c{yxvGwq5T#bVkgV zpFw5A7?lmIp<`lWS26e@?m$?=cj`vRkiOmXrFK&_VLK3k*FCNvVJudqnudLv zCQg?O!yhAt2a5mp92VqupI7g8cUu6YeT~^gxL|2gLez8utiB6cJaYF8^9{|LsLW^u zct3oE*~`;_!4yfCyHt^a&}neV`IF~+f7ZreAN6k4xS@t}_54TJ3+MQ_X-|q>Tf9~2 zB@XLQy|2iZ)PB2{Zf0ru0dxXX9~~@I8kkK>$O=>Lf9tp!Kp~GBB2Q_HCjC6hSp!#{ zY@MjpA}zCTS-Lk2RG3>!-Ns(V!!<@@1!iSbl)}$y=r%ACRZXhWYLN$*gymaDOB}KG z!yo32pie%bGv|?vNPEk`C)-N@__wX{^^vT^1qZDHcpeJ#0dH*YWow`j1$LvE;dMHt zGcetz1^#<_di!MnJ5iA#N|BzLZvwf3pP1a<0w+yW4HE?#Q>BpOp+Nv661%8!dvY(W zW_;#0M%iZtlwQid7T;}jx>&?CLK=THMF9d%2S7Rpn$>~pCoa1&9Lm+vpUSN#VK9VE z%fk-<`unAtwG8U&BLl{R=d@jrGvXtDz(t!JE~=MdQjw6j_X+_RGEY%Q1BUI+S`thU6=x8x?P>BJa=Uu{M$7?hy(AdtD>R)mV)19eO z@AxeV8V>LDa9XlEe)^lGNe`Kl$0f~RUYd^7K+-3y`T6$zG3_>X2P(2J-U{`6JD)F6 z0Ea3RXy=*}3_K@;|5UU>JVh_E2%zDaBvw*tq8~cDhvnJtYH;qzT6;+VJrx3d7i}r& z4QCdO;nG5ql(t!gh2G$`#LDe?f{M@A2Ol0@Vl*qecQy3@o@*!Mc}FLGdGW4jg32|36V@^)>m{@}|-oSY`6@ z;;=EIP*!!>nOd=-F~rv4Ol>{lFCUYs$vXP6VL2ZNJM6Zm1fEX@^`SO=0Rx6245h&b znso6Fz<}X(95-wlJ8TkbJCtWD&K!p&23lO)&8=@ov`LBBSc1oTjpkwe zQpN2t@;^*ffsB}vtl0INl-nW~S5^q|qlsobOm8_Z(mg>oBifD3#TkN*dSX~y3Xl4{ z{rHm6zcP$4H9_c?}TUzSw?#L zOsV>mFa;ti5aC8BMReDgj%`18$E!0ynt=f6F7%6|2nN~$4G3;PqT!FcD!EYxA^{KF z+<9WWg1k5KdMSPKi_tulK&twSZ_5jk$XBh{E-z;qD{OKhC`9x}$o35T72<-CFie3& zr6WC7qOtV6D5<=ua|#OCYb_TCkrqC;4hL%p8T5U!!1Yj#4gx^*VtO%z zR=f?aQ0HGBsh9qn)0&ZxjR`+qo7SU;DEx3-!d}hC1kB%`UhX$(gr9|yJ6^Egyv7!P ztk}&kfh#{vigBeYB%5gm(FrEjmL0&aLZFQeF*3t>S9K_U1F8Z^ENhLYvpC%eB)+ExRqYh!$v5%eB!u7aK57ZGW+)y9;2MUYzJ}p7{@NjtNA*vL;e(3uI)VV%c3eZ~YgZ#s z9&3|QE-^|oN61?jN81m3DrvR+FRUk-tIU0C z82tF(-X{sXLXG@BFOE^gG*1W0Y@i*81rKfzle;N1yit1f8TrYR5^_&u2xCdLP*yc+ zD%pO&Z&u&5u}dl3Vijy7Hj2k$_z?9i_CQ&X>%~coZt&!_gCC4D^6Mftu}v94Y?>j< zKc1`NK$zYzh+g=3guZ<*kl3$WbCCo-Fd|vf`cK_AujLFDjnU!neF)gprLMz+!45c^ z!_^MEvd`c_;Q@o!XH&%t3oENWcVQuvnaYf4AOQ1wfds;zQVhn+e4H!L&wi|RxU=?_ znGBeG-HvaE|NCp@S8AS!9ly@7rwq8UpEi`Qw+D7{A%)p+^^bHbdFZ|Bq9(vy^P(osM_9r^MWK%&tAfF z+eN;_YXV#O2Op=~M!&ORWz`X5&JlNL0ZYgV>??0F1gYNfo`xv|>BYw>U4kc+Ioc4j8 zH`WsgSVo@TNoJ8w5NT2Xa-FDkmcXwg$3?mU1hU@33iA0z=bS~2zGIv>auvb_#i2gJM6b#&Ig7$Pa+S_q^w+!Ay@d*VGtcHLQMuSPL3gz&Zd(;LNI36_3Cs~bN2A$Kf#w+vn z3Ox8n*F2Q8>DCBx4Q6WTz?rPs9eH)@SP3BN=I4-vXPA^si)Jpy_ZNBdeqd6Xt$aMd zN^Y;=OSp-!a!OiOVy8hP%LSnvBVwS63u?AtzEFp>@Ntq~~WNvYzZ zSF?R*nc(v^Du^XwI{sM*uC+1{%@6r6!2suV}m2}`$mhzqK ztsUIpzQ?{P5H$bIbJqUET&HHTLt?NbrD=KyU?IJJ6et36=?d5U( z+e>iNrWj4q9B%ugl5pjyje}r$Ho7*v+C=6_-GNsNb1GF&F?-N&%|gr`LLD+?N&y9A z1@TEGhtR>YWl}9WwVPVf7g;C-B*tfZ zW1{~(o-p+^TYL30(2n75?Sy|QUgqJOL8#(-8~u_V04k8KQ{0h(D;GfS5W%%QReI*s zVbycz;+Tk3ZQ}uS2L9r|UlU|~K&XbBDskNxg4NKhyh^efkYc1rYPn*aePJkN28nu1 z9Eo75eBpwLo*``ZT8U61(Fr-`JdYCETugFOng=Q~0$bM|Hl768)Y8?tNdNv=8(QI_ z)dq7!U0I1yjS$)*qj!xEz@1+Jx?W~$fE9qZQDSZa2|pc9vR1u;ME|i4Gp^^UlYbb# z6^~pPCPmYyhgl`EzrdN-Y!gcJXDkla(+)&o!RDillXkeu-V3i*G$i)$a_xJ4+H5(l z=ml2n2cW+RbP@S+<*n;O>SMX>=F)!VpZKDOAy^N6KU0|@S3^Bh}+daDPVgnB<( z+EPq%LCNWt*xTUvPKO-8)()R2IR{HGV=G4X8N>Z89qw~=-VL_Jzk&{oVJTrq@E4{! zk{4%PkrZrt+&7M>!@$Sw##~b5kz-D^i~B-=2+(smc)jenH>NV6p0L{kf=hps&y8@X z>6o2M>st=}?@$69K>t+_V)K6tXNJDiLt^XEU={}gnl(sN_5$2h@pAm+4c2y{QqjYx zZdtF?(X00rC72(klNv4eM%;QcogFP1z9zfdzRb_f83I;FH!TeLpHI@Pju$y2+NJLL z=M~5K4GK|Zo@;4dLpM7rm-iw$AdGO8z%O3#L zG09wo!xvkfMyu{y&B?BD?loV)6AcmpvS1yztLNLMolS)NNcf5LD!VGoo6XEcmBXgK z_OvDItVTQvugTRtOW)@uw{~RX-LiWFB@nc*fe!X0ZCS}ei|-GjN)9#YcXbMra%Q5i z=Nzah`c6XL_EQhIZ8M4jvlvRkA;ZGY@Oy%nPEAQ;s_+Zd$=CF-IWwnwD(ckC$?1)@ zL9xm>zP3SsP1cbf%x}|LTmU|?k6#za{OcI>QD||Bd0(6X+=UE%AQ2;U&*viXd`ncR zdbGVJFkICdcVC-@n`chQI803nPs3q=%5mxM}apbp1+BhIVuZa z1JSPZbc{aMqS1+qaoEioYkceI`JxdxMA0w_3i)VMJPbdJbTyGi?-VUkZ{^B4L>wNj zAOz-3|6@e8-v=!vl*0}S5hXiu3v^+%2sdny#S+4IwW6+AOc9$ux0pgmd*O+z0Bnw$ zqZysvihRTI#N5k_l5o_y*L|zoOZ@`4{c;;+z}EJKDO&IjcTFYf?l1IBR8}@Y0_cvi__jb{x~mx@{07yJwP+8r37_GF zmG-X>I~~&s_Jhp~ja7dg%?rV~7qhiW&tGj^I_Z)4dDAgReo)fYhgTgT070{0=e@)iLdM6qXmL!CE&$_0K)l zCUiowwL!}wJcxsO8OJ6Y;_=-U*_|0a;XfRqz(P;{JxPX^&WC+Jr>Vc!7pwvs^_eUE zmP_7y5kO7^43oyG&`{AqDERG+<1U!U_Hih|nVbHz6pc!mn_#~sIE_2(ry0=2QOm;J z?RkqHu@jJ$ObuUfs?>DN%ZKAFE5TmVy5gI7+q}P6`J{CH^Xb$FRMC0)gV1M7rlefa zVUjBNlGI$bk38!a?+9d@b` z;sDuodi$LO0aL$T&&C1M-`@C|Mm9?|Seol@h~D1)b6T}7dRF-Di2t(Jet)#z9rs75 zFWebfWROF%)60^;b%|He_tuXmGao=B+}e6FY>LYx0C z(oY*K%|r>bFdZ@|k+6VTMes)-ePV+;C=%;MNMlD*O2i$DjoF>JQ?(dRai*)NTObv( zbM(pVKqunW9d-&+>^#&QD3m+8gACVWo)>%~FV=Vjh9OootVAzY0gB|O&`VW>T$QNi zN=h5!A;DFNaNIsJKMZ6`#7GG(DN)1QJ-d!FZXBgy=<&t@apD-eEx?EV2A+zv${SMv zbjWh4NL8hzgq=WN1LqY(hm^pP>s_+xqMW`|6vO4K8qB=SRHchV{@|{}g@Pdqf!B0LFjgjre~pDW6>UG_i&T$ChE9l)Zk-Tic20n zv48FEh`P)?mqTqa*c?>0ipFQIPe4_+KO%D%mZq-Xs>^Cph|gY{DeJAy`gehhJ{Ed#MM_&M949hOstUgJ*!2Hi8LN?kmz1ETf? z{RpG<%oQZkRJb&Mmp(NY-=v5wkPWC_$6V3=`Dh@c9$khwY-~RyCA5hMZ{nT83XJ0j z-FMMvmTK5o8Y`o)hr^8wtfOtGNL2AO?@A{isFys z>Xm&|bqa{fRIWl|R|7k?i-0>g!0Fzq7w|!@tYQf#FKWIp9cg!yTOB@u(-Bxc8D`7v zkC)-S#V|!=_Y9E$8+plfHSGQA1QZ-YY_yYk-Qm0uq!`#!!JM}_N?y^`6ZWKPj4akb zCS)5uQ{s)_A(hT5R?A9Rc*jyq%Vp~`e2|&>@vGl>bMEnU;GsKKLr;&1+UK^@er8Vd z+qt3m!wU`$V^88WbC>YG&=V zsMZ(d_0`Uk@_n2^9QH_rf z{jCZ#vEqwK5ej=v=lET9kLVOHS}@P#w<}UCL~hbzPHrJua<{;MZ65xy;7d3@OZ%Ut z*zgS$Xw!b$`+!y9Trqe|oKBf8@sZt#u+pzYiFx219t^+yM2n&;6IU|~U%=z=yz#U? zND(8@bB+Xn+_~4>C=_`QDS4*p(}&9NwHXnH&caK2Zcuj*ka5O-xLu{{w^P5SO3`ix z(iI49OU$RtuYwR%Cd(%Dq;AwYl%%Vo;3+fqUXekNFAvb_jRVn`)4hPx(QcHfaU%i< zDjC#RSX=jNXc|Pl=cSJ4)AVH-)uiA2G1`g+AfZjPE_jFNQbs4w`+j7InrKoKz7?O;n174F+Mcj2r_p6Wf@jZx-9Te zngVhXTLXBVeG8pV$PU^un|0Q}<_JEuZUW{2Mha9|Z*w&ti!tCmj3X<1x~U7YZMw5& z1+GZ#5sOF0lvOkbF5RJ!<+rxzW0847orby@xkt``YE6+mD@K#t#31nCk3>{uv5TOD z=uMT^+vm~6m3e4@nvn(wa_c5M^{5Tgp&w{S%fePd+14amT_C#??;Jb z+vVsVjK2TPAuthxx<5K8XFqY@;G>OV)zitaJd5Yi>U@N);7rN zC{%?uo0o3_#aBn4l$~jBwcNLu&Wt%1t#PTaOMu_!KXEeh}o>RS7m01 zRmsKiQHTxExek`T#z_%($N1b(lzpuaU+3SB{A9Q4ykH1SWH%gWjrp{tI~fko!Zo~1 zl*kw3c(li`79j9?1J5{*IF888P#U0^J1`yIFZFSh*BL&{HJKqQhd zS0|!nbpIMWqS@j9*1qZU?lsEnLu6_5Em?oWes?z>X;CEZV2H{7?4oZMWsb47I1Q9U z#W}%4#84o4>YbM*wK}2zFlU=D?vPZ$?TpRO9?}oIexI{JRH&|>+Z;r zpB~OCWVLC(f_qT_)8in>_qPjvpkDCF(SAA3=gl}EQRj4nU@q4&KaDL#rmp5Px{d^S zBg+~jdJm6Z3X(~J^EW0v<+f)geRb4kIqu&P#gLtHcjE5JY_`xIOSlA7^ez8uZ{HLu z#DXlLEooiHUfZg52v~JW6!fNp-?Sx_X3Q4xgL1@SL@-qG0n!M)xRz$RWH|g466SBc zGnLqVvvE}eyLKA*l|YfugwVFrio0^m8QEj%h{1Qs+2_ffL@SIhD|U>*$2*6 zC6xC{{+1=^+S^TW4-Kkwb=kC?WP%ws7OCMSO$bPs{7Kp4?L2gE>ziO7TREE3poEO1 z4f|3vbt*0b44J<)y5^L(`$i+BSDm(N#MuM3A|Oc(a2Z=;!CFRjIF_wVx1;rxY?~=BPtPrd0o@q(_Xx!Cc1s6||NS>V6r<|NdW;ub71C$Q}ncENV_pr00YM{2d z^Leh4^&x#-LMY{0Joq3pa-pTw=&sbol>sC5v%HG}040i-DxSMH1Xl&jkl}^Pi>B)^%YS@qX8DY^HW%tjB(=8S z^P9sQz4H|?a7Q=XanUi#F_9~LK^^&G6U*nf{wE(=OEZT-RR}on-_QJ!_nJ2#Gyv!1 zgauynFG;2Kg}gUCv6j(Ys9o7>!9*sr6OD83nlnW9Q=-1PqemtShvgAjZ5!Dk-wH7i zM$MUnCWESMe?*Ak28d}qY${6JiO>5Kisj6q!D5FbKFWXpa9XexSNw>Or3@+E%Xfg; zXi<0b+*xgEK~`dbDA2igG30b=d@_-xBlf;H2R~5FRN0(<1&ILdB;1|1*3Sq2=Eb&V zw8AKdwX?aG+yQcgH2FEKQ@j+TRAFuU|AtWz;8mKqlEmTg=$VmyauZ^wjS^E3rW2W> zh8W!g$eS#rm+Xb>pKO}$7CO5U-yYDf+|RqLM(3@Yu7cCqURu(t+(+jVAJlGZWtB1a z1x3-h&CeLLew+;~GW9r)>ws!&G@EPbnOuyve!~YNO#KV0NdOPsg)_vtE9^xfp&zod z!=u0cu2dls!c`NqYcLMFu$^R-(9uMrOuv4$u!tSrk2_b3`Sq>?;2AsM&E5{@+3I0` zaJa;_j{to|#3X3d#YAA%f1RSL{@)5hhp-Irb!vjY)ah}quCaf1c1#+nt?)_ zq!fO!vd4ED6LII3bo{Ky(q(IL*t`B!8jtw>9O?G#xVP+>*zPk$Sr(1tyNA{dFXx5= zK_bTW?tdD*6K)k)XAMV!)I8t=eo-!YB#}1a&Px|!Izc3Uj&O(|V3H!#Qak>#9)?MJ z@W^3)rB1b8bxP!at7`5E?uPwOOs05yT|b+|q8u*KVS$lcj3^c0$cp5?xW=lR6H-u?V={fDWUl42M5bw&QxBD5MF z5!25ybBc)$4`Rd7fIm2j`w@HoLSm>Bl3f284_1!Grr`Tf@JJ1AW`T$uxx~h$+Acm( zG6(TX<`AoH$rn*W&nd}YVIhP7<83JtEa7mCt+85n~q0>6G1B$@3%11 ztieWa4kScyLPlcwGEDMuwr^)Uz7zLGS6cQqA8Z&?%H(oFc9j#jywP>=67qdr(DehT&c?cz z;yMMC#uz*9XMAmU<<7&&IdoSdy4v-bN84Xl58D}u_hy){IBJTVhx8!7>oFRV4`>%` zv||e=BASZ(@9=>uwG^v{-+*1o(A^G!t2tMvJsu79rK4`gVq#hZI6|OrlkIn6Z?7)_ zev56Qi;US>6ByU^gjt=QcuY1TuCX9$xz~aUw?0079ZSlXa@054^`_FF=WdX=ochU8 zLsZgNkvA`L!+~76dIUUjkDt&@s$DO`IEb%CFeqz@6^?DMs`8nmlu$!!s0%SwZ8?+~1(Jf*|J|I^APi#7Ae~>i^_GwUs z=JWSoUq7LX*#Vt#qjHPjSF9Z6p7RctXeoS8mFf6dF^{i(p`MDu@X zaFG;-wG79Xs9(q7zmw$Xisc?Y4?%!r<2Fr)fM((l-&W=y>D;#K7#){}=b@^;AsQ1O zLCPsxoWn+4et9THc(uBT9C@<>kLM7ncT0Y(`lLN?b$yN8CMrogoYwzlj)=2Kr2Ead z)8eRY>|}3Dd{TQ3 zC)pqymU~bm8#+42V@{r6V`kfrrNBp7stY%XQ}MZ4!0RpV z$FcrDXyMsfGunNH4Upl`;f+65P+2Q6kL&d_mW6m1NmE^~R|1bopC!l{N zY?dfHEg@vJrgFZPYfMyqM+tN`-Kbiv9%+9$pD9A|_CB1vytVa2QXHtoB>GEb_FLCG zS>3h253@B~nIJ_(i@-@MK^b@O;8fAp+?Ttk${+43A5^0% zEoyRLu%gk*K+Qi&s?5M$f>W~;O$y;qn?m4zIg+%SEn(j`HTly0gaSOdPi=tUU>jIkgPiO)0e06#kPJ>e)r z^^l%F8*>Z54AE;s(`^!1iTUOpTl>P3WdqY3td!_Z zzcIed@1Y+7ojEg!Da01sw`{wWs3URHf*eW z+v8Mnc2f`gIVKMd-sdNdoq^`U?U+$sPhV(e*pUy_6YVVW7_#VBao{%lzTQoEeNCI* zO}Q9c^hc<{&`b<+Zc{!EK15#YnYr^(TD)w12rWCobZBPmc)O_kW}m8!Ye3wk)m<|G3x9K6Drn z@a65xMn0EV9?MHvYrC2#1XMXE%uXD#e!s27YhoOns9j%EK-KbwAILXm-nJ*9lKDdh zqcmV2O@|%ck1hEl*&r12&-)gbfj+b_;y><9#g3BV%qYP7Hjq~VZQEkip-Db1G<^R5 zt(u(CMi}Pnkj2Mo{-I=Pd6DPbuhgv)(6TNy2q3qI-IRx0Ku;PweAt+W#bBoCQ`D4D z&KO3&>|Py6=IAe-#WH%FnJysnDWC}K5|RAJJV_I2N27*CnXHhu5y&jaYcd>La|ZAE z$Dtq=*1U;Ibe<-jBXmqLhrB}8F+4e167eQ($n2M;VZgT*$s(t0d>J+TPo;s;(a5@v zw{zfCBG(Hx3!p7AYN)S;2B06zV(XiErmWcmKYOCg{epK$Cb_)EZd7R$&d2huWDj&vu9m)J`CSEnU(2~h1g35v##)q zKaCCzO&*=|8`Bi7xH0OAczXA~Za_HWT6wdgUj&5Cc_Jcy6I@V*4qSxTqVVoP6z%gT z*h}2d`d}9qVQv^JOMsgpG>1$T;`WY0%LFCp+&&Fk=gt%&e{xt@Aoon>{aOh zxd_ex|2#OIacLEDci^iopv^bUzD*=T8Od#f&%$e?8|{a|>8yJri%LBxw*Ov=zcPEF z+?VEG2w!9exZ!@@$a{8X5awidz4G{r^*m*mCcBdI8@_Ipey>ICg8eFd3%$!xZ)~V4 zJl>1n8dohPeiFq4!LUB<-;;){z~fNoWki;KB+x7g39>joVm*C(`Is>AK<*l$iZm4d zqd>@1SJE=F#P&>#i`9P$8(SZ zYz~nA&@k9pz6(x8h*?P*S+{`+xQZHS zSQk}kOh!IBzV9582ww~3CMf;87(uJ`2NHAJ2Bg3%c>8$`O^Pu39fsHX_$AvHiW1+% zkvT!I<-<`x?;}}nd%dxrHgE6Oe|FYk8kc+%7LUNQj;azm(=}Y`0WN3VUZyg9RB^u-d~PK2RRm6!5Qn)hhK^*vafLu$&IfX~CkrspJI0!i zh5icY=~rTuyD(+)YQIu79+GJZrxT)!icczHBvMHb{oQ`&`AINJbe+w9OM-)w69V*J zhhn$s|4rY1>%v3hI&L50Gj+ZVn~>=Lz5T=gS8&+yv#!Cp+rEt{dK6`&-7D(&@ym*C z*BoZ~GlRVd+(uU;pLD1aVPenG7hSMdsqW8kDd%NrxNghJj9*@YY^and_jSh5$ z9~eEi3s(bKA}#@g+e164YsDLf5XA@-=;eXssJf*`A80)h;Sy~cS2FWG!)*fcX^$&9 z^ck@)2l;IVZEai7px1kbnOi@0-~6fU2a6-`Ua4ykc8aqxcoj5=;xnYGpN(DJSJla3 zlt9MyCVULd;K)k#*s?955e#E0@$__{r*fc_5 z^wMJjeOqqelJ7jD)_q%E{<}71sF*jBFVurP%HjSKdk$5iR0$wUPCZ@A1Y%Y0b4dQZ z=K7s;a42IBPHOuWF)mE*dxZh5JN&yEU9kv@c3S$P;U$r^^&b=|a`f9xx0!_%2vp}; zg^!rriDF#in*d$o&htR%;PphhUWEM+jL-A%(E^||A0$Y1>T*^1f_%%NaV(b+XjGAFg}V`^Zqaie_dj8<_l)xT-H2}nScuD51_j>Qxd>?0+q0nrA{WM z!sN@Qqb23x}aye zKo0O!zoN>eFz?=X-0ZS!=E^aP>M4}Vroz*~x@wl)Fg$dZVz&h=-|EKKi|$UHTaVJ!I2=!vl=4XgGf}sxhPNdVAO=KD*G&#Uw|n(YqrOZCn1(y@KLCG34z>`RBcr8@Hn z@w!~B0t>@fd*}ixzS7~?LHeG^EO>Eep2%L(q8m1nBkMpf0qU0($NR;Kzgn88ZRD@y zk(5-j%-|37FJDchP^=O6LxKrO#1L=T8e2PQfH&6cIui zba6K~3G59iZSPrDbanKGT>gCfbq_Vs3dYg8-IVI)kcM|o#Qjm=exIApo^+(9MRN0| zJNerlnte(LiIwhco0?Wed$KYqU|W^sM;x+nSse71a}u*4bA^>eV5QoNxJXDgb=Kg1 z41dO8$9Y;1>HFvfNtryJvqv2q{e}e?k~BSs+RCFo&CYzQ-=4Dm%OUwzrrPnuDK1% z^-#_`Bf<8akfyPViH?{AkfIcG!!Jn1#)^odjcQjbf5zVN_AinB@@-U+(l$MuqO44! z1tX`2tr?rCoRJKXVtz1@N?n=sbJMrDTs`<><(Y((Z^2nn)z1D|nG(taV5bj;ZfVBj z-*zv1t|zy9fLS}xrv?H!J3E69C%wZRCk1f=;YL_oS(v@xnqOYa(Ns&d6X4s@}02h9|20^McBWpdv`_m@@5C?B)R&UV=oKU9P!Ve=8GKbS z7lA|P-@WW(^q6&Z`6V89pK_os;H1m0S(gDD!61N;IL}jfoA4@rbeD3>%WN-l@EPea z%jKw~xcpXsLa)t@?Ms(M`m*_J@ zhY!C?jyhN^9}y*=aXR7RKiw(la-lnv2Tp;Ja+s5&PLO;Ou-*QY<5->;3)ezeJJeq> zvJp(kBl7lNiqhROB8e^hnbO}LuOXy`67-gydGY8yJDW@Avgs>$J2z?rx7o#bY|#~M z6?KBC@CgW7wee93=6NZq3pIiZ%dagO;(AWGkU~_XRc&TO6(qj;8GP4kObi`z`uWXQ zW@ZShmK9^nbwST%z`3&n)71M6)7!S6|9tBw&MW3*JCA{^|CjPip2Pa0eO>R*%Fw($ zLuHY;`#Kc)6}E9zI#0&&8rT6G?mrufcCeKPi+~2?_4J`beVG zwrw@GjmEYbG)`mN-_HHK-}N(NBqJF+=XI_% z*IdVR3&cf?Z}H+!h`sU?BhHqE{33G$^PB_vf*?VzqM;_U+2J&Pc#s2w6xGEH52T3a zbAg1Jh@j5Ne*$IYAtlvt`Hi3lfDb!I{MSlQn9>z7%`=O6#x|z)*hLSMft6Dd zBn-vGo5LU#pe3Q4h5VaXkYdk%A_#ojHUXU}hx{5k)aG$;4|(@?=Xj!iD?^h8DFaGBH#-j#3K72SIEDyCG;O679YTYg!zX)m9O&xio3 zV}~D7#Rj{j>CQq+>R`?qJ~f`7e7fF!arI~Ct?%A2JufkKyICr|Kt5Woy^<7?q)!Ez zA`%jpea94z*_!Sy!ID4cI+-~|v8K7C^A*`YLa{b!Ap*&HBExkWC)K4+kx>v6sbg@| zv4e*6o2AcTQ_Q@$Q2u)WZ`yF$R2zZY+cN`N)Q}@eLazf-2ob$pABoqQvSNgo$*FFv8PW)%Z=#Saf z5@_QSnBYX41%$-lKCc|xPXn1APp^4i*knl{V=GT&{dn1#cvd*4O6$FdlEc7-0lb&H zav>jzpbo4UP>=wbfF*n}AT_7zX^(FX`G2xYh>=oe9QmjWl5k)VGuV@1sX%WA(WPJF zRt>mlYG?%Q2NVq?iV@ODs)A~ugFD~i;BUp1!VddiSDrj92KFD5bZ2Q5-fSm7qRaqzBx0;$7- z9H(Lb)Aie9X|6BM;ro$<`{7?VTAH-3RkC5}DmwRZvU2oQA{dpIF&UL}oItdav#w7$Sp<$8y`P(djYa=25btL25{LwOKkMLJat1@o^_e*NBVrgcr< z?*Op5UO&HYK-!SpaBnGjZMUxE%(pU>9EkdkS4ObOf^a<=fP^d1|H&?-Vo!qs>%a2DCnOBd zW%lS#H4V)3Vr>eS)MIZp-uC;iv$1FKo;2$#BV7;;-cH9GSgPYd9W!Z=v_KsqXTuip zwrAK;Y&A6S6+nL~$Sw5J$ybp|t&7 zN`{XDD9*i-O5d0rk;nbV3y*EWwxfpQKXnc&FI}iX_8<9OzDEwK*4Zq@GUaw^aqUbc zW#P1YZ7krDq1x^!FJgo2|Ag8m@COujZlp*=r#=VusgIWNJKr_Bca)inDU}Sg`tnvfr{?$-p+(3KG;)>~Py4$P(rb48fP<>Bh_!Pbv z8c%24#q;z3MwT65HM9uC+zOF|$}*<{4vDt1VclqD*>=`KG8qSHbXtMJ1pvSwzt8vf zEG}|A*FQ3Ucnjt+lcr8YscWRn;wFFe;{*_Att0>|Q z+Jqo}r?>2uhNz*yu5D~Y)sWBoLT=}6Wic6o)^wfFd^-~mB-zD&$)_mYpjuiIX5xuh z4142n9zRLKI1pTVZ1CxQT3}m6pIq8lFB2C%by0_L@z}RYc=*w<hHYt0K*Rv4|CiIa=mZHV8_X;z$-{zZaG29yyta{8gJ$uX0ZG8Oy`@7z0$Vm<@AVk z*->iEHRe}@-L)#Xhbs)DPus5~L0}G;ze7-INRntmKPU3-6`weiC3o?v))5x7vZ$21 zt-El_0%75R*`=irVEEK1oqqJUGYBbUiOkyKNw|=jBJ##BuTtGM*Xvm$^UpOln?H2{ zI!&g2Kri*+M!S>4lA4AgFgg{B-%@a)p?N4*NJKN@b{+${16I%7X$%D*2t1r1P|>O! zBTBGOs$M=?h$fOjkUdJ4sAgQ$byrH3G3rcw&BtYhV!)aek%j8u`Zc>eT>LqJFy=)8PwnPp{Jg0K7b$hUvd~@*uq5?bJI|k|a7SC;kvReUujIBnL%~IF_dOxIU%i|J+1*PABZZw8&;gcJ)hcXjWy{0ZIIB2lSEgjFsR6WGQC%&QQn1s zB+43Igpr@=`!YZlhWBz`Dde*(#8F~`2A+fVwMhL-vi|BVkFpH$ z%Z716dWMw#WNqPsZ+a6|;(`w9I*yR9AoFI>OIbb7$n`^Tf& ztq)5o2I`hXTtjuG^93n5oU z3qNj@I))ocin6p1Gc}_ShJwO7#2KMD-lPEURJ`?=!jp!;m~L%`{ps>@{Pt1+MJTLc zUW&#p&bW72ZZ_hhTDJS*H_21`-^z@b@?!NM1&Y%zUE1m{;EsaP~<^+!r`gKu8%~t=<%6yJNA%ZjJ#XTIZD z>AxBL8?rYV%(icqIQKvZ^pb!S6Eb?R?&{+*Fs!uV5MXeuV^`SN2nMKoETyu zPj)gs{$bOFG(^!T`kV8bPVjf_AtmmO8TT@T5s9d^Bz3Xy5^2sKMY7#an>3~y?r%Jk z(&+lUdFawipbC5+SY~f8X>S>X4W~8fzV|?Q*r0F3LRpbjp4%P@fs-NotX;P948Am# zEDv`xSQjk2b2|AzIP}$tRLzyWmJxcS^xB$vaYD&7nWOI-7x{f&WP5{LXl5p_@7rJM zr@2;2(zFQ>z;cyd7~$ug<9|N1F(c6w$esq1BMM?!j62;G)-f5q%Z@+>L>b{khZ&2Q z_G#M#>Qsd;LtaN~cVk{&3&38;Enu863JLTd zRg8}0&7(P*4I-+mA{`wpYH%1W1Z)6MF;Sr=^G)%qpw*d(0*yQQlvzr{d1}V13G}M4 zb)q9$2~(yFefLNwQcI3oV*cE2P!2N?-l|J720{$&nY`!)UA())&v)pf?xtQ zMZq>*sNlh+z#}GEe*Plq7y77NFc37Ec+qRI3CWPZBq7(Be`yTu&RK#-gV+*A)o(1o z*f=@&I5|HcNyVeL9n5EP|MMs7wA#|^BWX1Y@94lJn;Ps-?iaPy@oEy2!($r3xXtI6 z$7+ebYfVecYOL9rg(Dx<&PgQz}^S9ME!Zp*&CX4vat#_`@j+jifpe;t{&n{iqPprmK8+F+{L7kQZw@k!tvL zvX~453rkm(3}L?JH|y+?(UaSGr94-VA5{u81!DDl4%8ugs2_ME>qKVxC{Q3mRN$%% z&_oYPnZB`GD$stx+e>Mfx0g^XAp(eYiVvaoFeEcIV3;L?(6wYci4he-UX_82_6>p^ z3d`X^g-7lv4n%!@F~_pT5{>*+A~giUfL-v3N=$t(G?0NuL2nU!^@*R?B7UE^wp}0E z9~k?yh6C4?w6(+2o!_Lg#nsSS8(1)uDs)6tP4j8>g2@gN*IV~JCFkqNx_OVomtl$z z_w1>|k%EJLBN8Bv*MHVKv_AwV+bvx!3&O!|St)hO~Gr%?mI?~Y}9_m_K&cwK@~6QKqV6RR5_bbwSp zPeN{s$HY-?Z{dsL-)2Mr3*e)uOL6?F&AiYeZU!%}%|)R|^n z>t;vBz(r8Y&_H)Xf3t+V%@3u0m$96E{QQQHHn7!3Mvf<0k?8DFd=G(q66Q^!cIR3pQ9>%J4B*Ud8lKo9_^*6KVH%V z_8wbjb|1xoxylTkyV7^oR*`XxdKxmzH2fSO$qO!>KiML=gJ|EgN%f*ddE{!a*mI`U z0G3d=V-;HC(M>bX&ncpgbd3_{osUd!|Hk!q{gGd-rLv~9|R@BLB6V$_6S zHD*kSt)_O8_NbinW#3opNm#^+kj;OllVS0ZdN-y~bQAL(05%B`Q93--XZ*>u1J4LD zkm7AH%w^Hkp)bA6h^dH)uxC>0fon4yc_KCXgo}4T&$El7N|unG9!3my;0x9iD2O8X z(91LlPb9I1yuygRmX^qiL=8}j|NxDf`VICF;i6(`Ya!1 zDd}=Q<#+3{Y|0i*jN6t6lmPdqH*h5Y_NytqUdVg@HiGYl2Tk7B0d2YyPFUI6jl@3w zl4J9i!GE)Eral}%9nhrH-evl;`E8K}&aH-Dz(e4XPI%IbW_c4Pe&*on9cW|QdVXl# zc?yny-0~y*LPB>v&C8@Dh4DSytU;tyvTzWvMiss=;kpqRW?BoqT`$3Gt^|3m1h$Qi zOGgtIUur{)9+I5IXFA3wj%spQfx- zp@$N)n90zouY$~gMUGzKclHGG{giFNZ0U2sBC2F@CpuR&a5U|+9f!eY*Cx~~c@r+> zXV2o~-MHRP{Kriv%wEo&*@3H1AQ-&9(~-Pe8Wt+XOWl*ET=?`b{^qgbN;H{M`(4Mu zp{SjB*Zi1AXe43FG4|Xda=39)D_^$E%n4PjKw1vS<{50bn@#635cHdT8Y1U9{xfss z#Ypc7A@BlRVw@YPoRG~S;}yI_xEhkXr_3+og?0j!THS@uN3RpcS_#;ltVZ!+lS%!x z%OFKe)9>dkoV;gXoLNSDVf%+tn}svU>aWGh4e_^Do3d1ijmI7ZUK_j@cK6$r`A31_ z(@WoP`_}%zBZ!s4j;Nkz*}}}#6XhmXjJYMX!N{$5 z{lNbwo=bs-1#~&Fl{}C*Jn)L=xCO+9DlF_6|EF4`62$*33FrAMirnJP#F6I@UM1jh zAqhjNqGroig8v>y4@Z-d11XOHw)==U?kf$eCbff>6PxXT4WmxdH8~KDI?{x__da&Y zE9HixM1mcpa$ngR8*DbmB-e2w9wU8PBCT_)Q*Q(T%*hLNIb8+;yxbiJ>3_bgaNW&{ zpjie6OVc3ZK?I}TSn={zxki{>N74}THQO~p2OO_1wU9gXRl@YYR_+}#-fwM|bx`bP z>{fLF#V7Kt?eSK zlVNj2rrIgCw*o=zfgJ|x;d#J=g5$nQ%rEm(b`cCWxv1lH?@t=9nr$nAaQtX*o)Z> zY)a}IIN)B{-jcb;=4;-Jfq?>y+6@~^q8!o2j~@8)rvgu#0kHJ5u(cfqzPxmZVZ0Fk z=iTfaYI$G)Y=#aOC+j$p0?K6gz&Lb|<#-zi(RmTg&@-Qw;b4e~q6Lq_?K=`@6{gxO zi&brcHof;;(4scY%z*raudX4Q7ptHyqV4A>;~k~|em@vW&z>=EeceFfk4URT+OjI% zcmY}^>OMBjJkv1Dnzz&~N~8|{C<}p6Sh%FDB7gpF-0cpAi*yfKg12?Bx6OLgxRK`t z266s8g>3oe1NvTt6p8}xQ6UxA3sr8E!nPqvbaslri=f3V|3;kSkg=0h-y_PCt=a}} zMq~{F_G!5qQj`gmC>QFlc~3zOeO|MkE;xJotD(AHKWN^rKJ`L5H-D%H3R*!Lb)6PS zX->CtY6k5M3T?p>cQP=}JrQMtXYU8=Mp61G8!HYlM_e?&aW z*BHY%32F9*dURK5E-IQU=SI(%Gxwv&NJvOb7NdVdnfmQ2e7xq+rZ^cHatAzS?4~|Z zUlV;+(s~y4+5u-s18V9{A4*wDReF+y?%-QYgA7^SKibJ^WGQQqTceqD+nre|mfJ(h z6jK|oc{WO)k18_TBC-_+%PECk9Vy(H>xXI;XwoW(p%Wa@*8Qh#J5AhZ;)rY~mFY`4 z)oXMk;_~c4bAej`fZxE7DTigu>3)Xqm%27jqpvd9Q1`$&dC0T>K5O;gR*;~uxSz4N zFS3^qs8XE-o2wqvmbL7EO=v;oq>6GcCw+E+kwKA+pQmZ{?$<_u2)gU8+nJH}t*6j= z>^rc?0i-ehxq7g3{Ig$RF6F^Q=q&3@YZE04oHhdEL-chAeHU?*lSrGZCopOPC8`J9 z)DFp)ZLm+hu2z2=PaPw$pd&`2afo&pvT8xW-+8%fAwjyXyGf}Fd zqbbIP{BofB^E+Ck_rmG!q_VBVvxzQ2dtW*gj1$tuTp~$ejn#?5$u(_&6Vb9h3qMO$6tAyx%47&aaVNsdy0AX z7(%6H0!M@qah)$YfTO|KRFOGqs%}MR5ZxRjmc@P@XZ^B&W11 z6d5C%+EjHFzU!d&QH)h@qNe)*f%k3EDdO6oF~q_IEk+$Rr+x2el2BqXdKSmh$fhZT zyBZo!d&rndi32G&Bf8#Idi$9&uWz5V6884%bNU7fOk_y~g2aDEL&sn@|0ahIpxbM+ z(H1J4PxV@=P-_F`H~;`&NS08j49C6|SVP%MU*7t75_G+MFc;q1a`L!(tT#5Lp0rU> z)f%3wCeT|teh=T=2RmJCJ*`MT$U*$-B9!f8~!)a9ZAZCWl@SsyHDyh zx+GYZxcBjeVd)^V2)oX6j%?@M2=|9oa}Yoj27UkG%nNVJkFGyWaww~hBB9~`T0(-Z zc`YtVMPD}HXJWhTIElEIXM=c64QuEJqj8bPGw4>?>!OA`wNA)wSz;s`>kb&<@YcK zn!KSRI=N+vv$zvB0m_l6RkO|q9(tx7LzJ{+`OFfV)EgGGJn2y!s0X3D;tW-ms0L># ztM{>RVwAOijJp0SJrB)eOmwcEH8}j{)#G5{MP}aMyJh zLT`K8jas24?Kcp_0=}argwFK+sh+3hJwa`d0K~J=D8)73)T+*hBtz&qJ|qb`TWX3< zSZc|zO?wVnEx`J7+&m)8Wg2=Pn8UiomRC?{GzCd~G+>^}TBi=00;7;2$*2>*>vMBd zI3sABqy-D3frf*K5YP^Y{0txM^0F5&G&BcAjXuC)W$v8qDOf+>-Kh1(*7$Ml7g2k^-3u2Mwp(A)@L zf&ermn6qt~B*(_pZ*2PM#$2J#EXx)Yke;4Bc-V8t{?<$Qo^}(=UCErIqB#eibK{7l zMApIiR}-!%bL$`@LesdA_`IIbCu8aV!Z*>cq`hm zIBc>l$=`(#x7RCPmo!;HpKo~r0XXpabD-=x;XL$g;%gQ$t#g?RAnYX3G3@mQT_M+I zznV%R{F{ZhuU(QfG2u3D+8I-j34s^GtQ%DvxiD=SL~v%(fepjr#$~PrM7>9zK`5h{ zY~Hb2IbQ3AV-(LOFpepQkQ%03G|fw+B^T|I9zx}}%CLcSd^?%?8s>Kkw(0hJAwA#u zPR9pK)?d6bLG;-s(5_^kXlVh)7vN z>j5^qnWbDPq?dSz39K>Jn0aM1?x{1xOljuUr;z8@N`Dcm!XVI$0|oeFvLN@hsA5=2 z-@<0eSfP$ncm(HDtb`p|^clb1rvw&?J>MpdlNnj|JBrZnud>k7)mT&2lYq%I`*3)6 z-wySm2q_Ab{v!+)KK{^H9v8OXZA)u8+lrnWKELaRgZo+ih-W45VZ(J*%qUp5#y`Da zxjZB$o)Uw}a%v@hJ9hG<0nG-_Uo5Y#KQv-Ux)V!(&gNp%9=MjOGdjF%obv1Usq+n` zOU4Cpgd9V~S^3V9epK6eRZ2IXMVh)lXg&1hm)ieHAwlVgVF_+SGJ206g7|tLCGP?y zi=i0KO|AtKuKLf9*IGC6;68sQA|eBIVd#KxaGVp=HqqI+7zh+S!9wp?5@FJN&E@z` zqQGNzCcZclA9}y7e}5RLNtt}?{tjwa>3To`^8eZzcaqD@-_hl1z;ibMup3lP;u6rs zoj{r}KFR$CqYpwcrs22mkT(_{8V5gq&zctb35R4L)XDMh>x&DL9DG+=^;#!%?$q;s zr_~>3tnHE3d(9Hr3h4El5xA$bIHx^+IMw@QpZGvsMisp?6YzwmQypGm=|hF)?RXbJ zTwX=PJtdfI=3sl~7h33YC*o{Km&F9V{q%9(V604w z$_m5FCi&CN^HvQ~;OKJ6Ox^E=MSz0S-wP+fG+N)Q}c_?>_lO9CFfu-~_3+7J0X}WZY8;rrrI72>SAV zsV*`;ORx#cac_@DMg#v1YZQH1u=IrnxyZ)=JX#fwvX2jZXeUk1u-V{ujb#gBovL_3 z8uw(=uBZ^~V3xp!EmALqbic^>wRFu6UuPj%!5ef&;FA|%&^X2MUy(ocqpiJy zb%Mh&h}v*7P+#D6V4ph1VT=;X>o?>#WY`C=W3GAe5Fh66xfJ$eMDbm~STGEIV{|hs z>j?~#_gD%{aF7@?uuHxh$u1zoLIRE4YPIvS2bYllL30C`W9UN?_=m~fO;mqbeN~lP zAmyR=;g6&T%)+sR&+hQPd1yih1Iwe<`l)CMZSc;i06k5o-*kvxD>B3{*tc6QOOv5L zkar|b+bRL0CFTo}69%)HW_9kTLw|m@{{3GL+6?0-w+&k2AOuanNsWv9#a%e`-|~+T zP(&==aDbKQ4&x=`l^O_0I~UOAT@SpO3+F7he}f?oV)i}_6|hik07uad*F%_lUw(qt zp8M(yic)iMuzr7kf31jgn0DhnA5ml@Xf{$J66t;%RN~kqr)RN-#a?j(!zgO0ff%@- zNRrriG}vPQ0By!Yu+F6=0KhuqD#*DRZRhv#1);;mpA;-1!MX-ka0-7rC0u`uQ5oa( z(Z?k-8QCl67r8U=md#O;ixUYGF%K*2k1FkKdW(e8`z0Q>^b7a;tv;6IWiep4JZ0+Z zR@Zdz<@km5z6vw9gy+0`O7vY@OADm!RByAZ7-STv{ zAkCwy5vrbG%fmX*{<=xu1s&sgk5?L43R+Tt`!_RksKAF@>oGL3*gR4DLeBpl;#9Xx z8XTz@I12#lQkYj9o`1~`-+TE1oswpdx6h9=cN5qY;4i~$POmwQG{`~sg8}_wB3`aN zbW{CIlEIU+ng^wJDKIg___exquto+03^*9d`aM&t55k5M0o8AYyJ(xwy)5KZ74)#7 z#HJlQCy#n7p_9IFh0Khk?go+jV`XS@pDg$3{hq)B6!^S^ab1wG=E2>^eWZAqLe-YI z+YFQtXVoC&`LVJRZJ4I%;ZY~M2sdD8-ea6}(Hnhx2I01-?rXsE)HmFuW+|L>v~_vr z`Ux=2%F&d1o0womqA%N2LOgV#bNwAewa^7;ldg`aFDr{wAVLu}=#)VkhBM;f-9Fb; z=n8Fm6#wj7JXz?^7xY%86%?AN>~dZ8^F0>H0m!`BSyYklTWhuk0qEG&iy85@9mCCs zqeT;Wy-_(F-i@AvH@PvIx9$4x1kH-Gj|rs`&Rj@K#(1s!ySfuUvaM!xH`J>N^ld7! z{1bkzr556TlC$fl6nK`3j*SHc0KEfJcy4dkZO0{9FT(O2@M^R{81IKzyGvBxPl9*{ z)TQ=4uuSq;HRD!n!$&s_ZlZ;HuOs z?zpJve1B1iV>)XdIP-a}Z*|EPKaVN+7V@`D-H9L<-F_1c@prA3Qc+3rJ^1fdnY60X zZAbZh?fr~mo#p})hW;Avh?pz79~Fe{w(Z3Z08t|mz|0gkam!=$|GRCBj2vm0zo7*~ zDkItg+y{w3k#1weURGrJejy=~Jk#nmlzI)C)LN8jvA&p-1~Xqf2kY1_gZiQOXcki= zr5{4y>e*+c>{oQRr(_y{BYtNAjj%*XN0|Qsb*2=~rS=pqD|tqg4rhHQ(uHMW)` z80l#l;&7+JRHMu~?DM?yD%S1e=T|6Q#_-Fi6gaRnKWpYrznyw zGEshPx|ra=3kEBrZQiTU5Uf+!QQxy75Kkf~Bzai9YNnv>0#2ESCx?UoqrlkyX{$@? z@5|qNzrhg!9}0E8R~sqhF}FwUGQI)p2LEy~EQ~$z#0ug9K9pe(+{k5XN>jg%_&0xR}U4L|jdqzQ`sw8iYqV2^r1PDISbqNt&_=S|ctgRo65I zBGEK%b#J>yyB5pOXbK!^yB~)!fff~DZvzSd2JS)TaUG!PI!&>6FBr==k0<3Znd_4N zTxxi3`Z=vcvL!fYmUP4WO0GO{FEQY3nBOO;|w@Q~#16~Y1C4{LBbw(aDA?fMad0XyH@(|*qe zXA{&vyt;$2du<~Y=pbKDBdFI|J=FhiO2YTJR`TsHfxq&XCqVyg7jr>=?+Yq;*0OHP zbyhb}(tY7ef`tSLZ1<(Bva+Q)Dsx1eIG@36Be8yoSUJo|ac!ZYF^b9Y1u3z4c!n<4_H z-!#(uh3&DMVJG7~Qh|hIvCUUYXSclX^3Va7-mk)MZ|0xXHTXBN0}g+XFVFPxeP|=# z*F9hOAuQQ6zn95{9B$8RJTDcfz@D~NvDEUkk(+5jradsV>ZU8kw>ynvLX)J-HsSXeSu19Wu1&lGI1T5xX<+RJ`7F?}xu=w!1%-$6@H#CT$C6Z400a&1(}{+nAnh9o|_Re)61+ zsa1);1Ugtvg;`x;NVEBdK(^+GUM3|G5m7!N(gsoV=te~OIg6=qC?U?>E-WQ`pMSfDG;;DEwmQ3*4;ugTGNK_di@p2Ucr$1GV z+<50#o1W3w@pD(crgz!EoEi6v_Co-fVblySaMw?}ErF#8u+1TuxU#CdsBiTQnL6Zx z44n&QP8|N8<}^iNF@BFgnc?SDq`ANrd)u1uZ&wf;$e+Uc`oF7RQr7_i zl$4a%|2q_j`+TeYJfUQ7ce`muRjV*Km2R;3S8Cd&m>brY9kfwhLnq@U>db7yo$<;} zL6brXk3+8Cmk!-Sk*rp}te2XL7iKy$sO6riR*|p|71kiWw3O-`fU=ngP(<6Qw)3f^ zxhWNRwhV1)NKKR`kA9GpgFRfJqzuITDx>`2kv$+o;4m2mGt6@%-XGQ#u+ehecOw?e z6y3+j)3(1zx^cdDzbwn`kf0%hzm61&15Qf}(GW>QYadnjatw%ID5Jb@2$I#jHP#QP z;#uC+->VIVeH`|0xokY(lXpp|sG1(HKLP$`jS=T=nib%_%1x)FyY$jZR7o5LaM*h` zJsBK$RA8;)nGALBUZ(rOc<6wRaz_bll#*WgtOy<#JO8?^5Z_o7V(^~FPajNy_Zh-U zYrE&H*1hoFSAp)dsaPoXhW1@+9>Z{ZK1fG}yRmo-x+)+26PXwXs+wntm+4A1o>8xw zRJaBIyslayQl@TH?F&IHJY+kc0T8a|KZyBDHlTnDzbj%qubWbb$L`0p{i2=hv#ukg}d3w*GBF|L#9wclLWphu+BDga=07nTzx?yfL*~smjA;?%jJv2&3ml9CoCuKZHxeH zIlk2rI=arfwbGl6?^*}v4Q0oCd}taouPJu(=WP|6A-tAp-?DUfOeJrrXH?gG`|>MS z7?^(|ypBL^0aK*7jt5b%ZBBB$ljJ!2u+4J=zA330|;4&ZsQ7~=ozI4*hGT{Sl@ z&2g1(gwA%`^!VaJM~@Pv{I05Qd(<=zqoyPl0om1RF)$6P@bW(}@*T-W*tauZdc)Gf zj_#Z0W@V{Oq|4I7G$Y9Ry!uI?j}s-!`ZI26p45mvLjUEAgf^|t7rwtjRWR1ttevH( z?ip(VQ5*cK;lZmo>)>H) zdp|r)72ScZ28Ar49gcOIAQ1#^@X|cr7s2s7g#T+wpos6>6v+H3vc@E-#X}yX)Aywx zhsPkv3rz;*6c3f%DU0b+ch%dARz_MR#s0PJJ*+cvXLvt1y(i+&9y`y!tPb;<=M{y7 zllvIp!;yzi*$OAI3ELI5RSp$kf={C*lpl4jFhyAUK3hB?(V~ut*|&C8NpK9FHzecV zdlkJsg{5sv2()SD^zLkP?tQ-PdA$(Kw{Fc$UYRIS`ekw>_bnTvJDpj`D7BkInH=pW zw%@~n<;+!h(ly;C3oWW1DE~8X&F{y#I`Mhz`=8wFe-}}j+dsnp%w5%HT-<4KcbAEP zFhJ#;Vyx;(TxBgvr9`biS23~0`7qJt4@*kVy~%0oZLl@7{L{f>76)l3-Muk$;2U3s zRbW1qT1AnwVlbF~J0(vw24MST{cspf^+`p94xau5sS;^s%02@6&gq)PTz^ksVg+= z-tbqel~?0|KF@y(Bhlhu+`qsoAMWtE4(J1ywU)>f3oC=R_hPzU4H5`qsMUdzMU zlj8?W9z|isU zn5BLfPC%7czh+*~dyE_yP1+M`+qzC!h=OJtLOVIcuzw~lGeHu?V2nxc?DkLnXRT$% z`qDr4icATbh(8rtbgh&*jFe(O;~D;3tVkQ22EP3hWogF-lN{4$z6J-u!p0v0LMUqI zO}mh!TdGF8i=5BQATW_q`;kx6KriHVN6lIxTQsAEE0&sBKp}#lnHIxDa1aC zJF1sc;)gv%gLUkdK|k@`Ho0%r95N*5XNA&=k~T5bI5k7#{3SWpm;brAO8L(Qz2u{a z_GvYvGnL5y}BN?Ysaxx~3aI~<@3jQDv!em{Bh2Se=l+I;Ql!A3-Q z;XXJj>JlvHHltUnM`L03kk9yC!T3IFE+VX!X&9fDlpZF1O)R2n(`YBLc2tTfnvtBQ z#SZSIc6ZWUH>z04AidUjI{ke&D(?dvgI*UJ;BI?wm3>vt>aaJ}$}=9w9pDw5kI#FC zZrV{fQ=3(EXqn(Bz*6OqbK^5&YWPIn>Nw7yQ0Rp%PaC953hQLb2@iYbDk^KJ#2dRf zLYKW``U3_68JwM{+i@m`HFl-@teECl!Pid)r@t+xY*l>Gwve4aaJdV)=`bdL&eou6 z;dfU8#W3zcAtb0F=x>$Nj`Z~OK`_kEHZ}!8;B#p|ndB)_t)QDluR&l9Cn>D?2)nci z2^|mwPZ3_QWgUV=AYU642C!IA%QEs0Y3|*ye z0|GQ)=uFr!qo2-Ju)^!x`q=Az600)x7wk-bd*z@na&# zd6vH-u>XC4+3ZK5c`>NiO0+o?pwT2{!#Pg%2H$f|60u_>7^182z)?Gmx$gKqce)W>dE9s zZ&@y6R|$J*8(2O-N;YhvQ~Av#-*k($X{R^pjB}7`USb4qEcJ7si-b%sT_k-^t-A3d z;hZ_0563Wtp0M0ox`7^;zg#EncE6;t*M695`s}@#lpM>}>`fs(FF57{VqirR%$!S~ zFOK%%_yN>LAmP^Yucp6W4s!Nf!vl-HKbDH_!0$B%4xpM()_|FbOu(!SU5|qlAKRfj zqDjfGx(dOXl48kB3>v#yuFSd~iH_H1S4?Iz3@Lp6Z^JjC?6(BNBVc}%7@Zlj12Nli z3<`j*_ueeU{7~=5Za3$x25sAIJ1YgGwc~9zd<1Jzp)dmzl`_X2vi6T1Bu)3A1Jig4 z1S{6+U=3gNMQqdohIw4Gw~Mu{UEr{=WLp3Eq_^KI&ev~?4-w(){B&Y~l3cV#l>l`z z@zv!BckympDF7L!yNXXtzxUsdG-b`+>55_ij;KV1Ld5$59J|*uLUd-Kr|Fp*eOBj1 zNB+1No$s~!)4Vxv`ziLAsm&lLO8^@;k2?uEXBq48g z;t!5TmU^=@CDcc^YD+Kk<$5T&Hl6YH;b08sjR>aK-0rA`g}>24#>h<@OMSgMuXKg+ zR32hoWvZtskf-NMR_hWH?*mJ#-88$h)P@Yo@Js~q$FY*W9_Z!* zN{rPyVYF#_8FH$NZV)WU)H%sN(L^J|5WX}L=&Qcnp{TDA->-c!R~)p9-p>!sHhbcS zO)on4t0ij-Tkp1jJL@`+0stykY6h14v|&Wy6&HmU34|7H3%EG~AF>e&<%7%c4VxAQ zv(D5Z0@(Ee)DZb1FFH1pjlU!mvGmN$c^zZpae0x>{+oYkzmzadrp`8; z8t#$hQ`Aa$y_qMGeiu2nrxx;eB3RgklurgrP#a`OF<7yuN|@3R-_fmd;)3XQ92Ce$!Z{xH?Lbm|>h8yp1Zzdcrvh^j%p;%f}0M( ziFnVCcT44vO1PQwC)g$(q+*ROcdDiFZbh{u;pQm3(~C+@>p%O@{?y?@oo4!0-t%MA zBe5q@Zu)|%BCs}2G#FS+bY5Thy-B!yKK6d{$-nPYUccSWJPM{3P#d@;RcY(ro+B=2 zwDb&Ck#6BJ#1XhmFDs#AYyWk+?7ofP5y2B#&dofBWnodFtP-2Z0bM(rJ|VnBOqw8% zDmfgEyeut|NP_w={XSp0_Txo>z!+hh-uH(ekRd>!m(#YbV6c2J-U!2T01S8mDG%1S zI}|wEkpPH8+J%p<>W(3^PhBGXsR|cw^EXgV;Nj}!601U^Ea5>o*Z=(WIK)p+m*k*b zw{7Jc9u`knojy2=su&OZ22>?jH2WTv%=!(JPr2so>TO{}tAAH}h>;U8Cpf!B_eCs9 ztD=Aqv^gE%bKN@SDeVZg=r@4zyY7xzG;4!ZHr5&oO-m8nr16r4x+*uZ`6P+rJEnB; zOCVLuuZ~M9h^6F>i(B|r# z(__3eS;?aF0!kFNMOqvVJ&Uk13?hF>Be4c#-B0x|D-+-M-TdUgLF@cftPBA*=fD06 zTibves^uzMRg#1lc1gyP=r(;nZIG-Q=A(F{Fol*nc8Z?SMbJ&4 zra@L(x2UG0KXiayNcCbpL;q`wsm}$>-*aA&10*6wD)1hQo&oKP0K7{uE$4&rJ5P|T zF>t}ahFqvu{o|L2!t0dV+?UjZ(YlF7L~xV$e`LzThT70cn`1Sp8@iV1`TrP&P{IKq z0DzRJkSaIJVUW<6dCZD7popx$=8mVi=)BIY3+z(hA6Cl0k}TVPDayR)rAm#Jl8Dc> z6&03O5~zJE=)M%@nx+Tey!TTCVjH?9Gehj$0UN{&g(2*ZKdB5i_p?i!uE|^9vQ%bs zJmc~n;ta$S3&~h%MKlXCTy|oYG7s&OpR(Hkl??z9v$jX81SXV1cc?8)H!a&z4n41^(y#Z!P)!|JR`O zFD|Nf)Xs}*&AT&UC`%%;{TduF0OK(bBB7Pzz}z@BNCqM{`f542q*`kRAGOaiyV6Va zeBluFyJR{liGNjnOV=$P=br|e6vi%u&KE~|UvArkBc0RGh!p6q7=+>=Uw&o6%jl~PZ-D>c}%49kHJwoI}eFST0 zM5#6+NbC?1EpPSWtu17>)(~HD>|M*Zb>~4a+DJ#Ji2ftOV{5UdtRj9P*U36sQbk!8 z?)GqMD5EqtJngJaL^}0%Z|)=go6YJHfJm+xWwNP0SD8jeZalt*EZK7nmE@kEDqk2! zg8`1pr%i1_EfafOcUgaB-8U#Qx0`;y^~S7Wyq+-YG7rCmMI%ULoJ!{=B@nuH(;Aa5 zn-dCPzcLWF^Y8T&v`JfVQE(Ak=+}a{(*+felLT@zu0;$RlX+20y;<;e=++-!o5HAO zy#RE5{w-RculE+di5z}gLnd1sMRXRnFFs(_su^f3C4Y`U zuS{at)(x0)XB2^$PMOeNsjMM~lo#Ggr&tbd)E;xFMbAR4k92Y{_TGO8p!6~MIBr2d zY=uWQ>7g@M!jHU9K;&P^7x}a#wQ8Mg+qPS_wX9`ZOUuT7 z@4lbkpZ$4yoY%Q=UDxwoGP$htx|8{PeH;n*b4p_KXeLPRv5dh>dif6<+Do`x`#v>K$zXyoda@rLW2-ATyl^x|;vqS= zEBo`AqMGix&ESJ`_u*}uRpuYo_{OqWS+eI&qeB*ceNPK}Lb~tDC}2-3)O@bA5h?}T zc=XnhqljEVeV%;SjfX*=azWwOBPEVKtPdRiJ9a_0EJwG@pD09|S1V^){x{Hr9Mrhz zI)KpE<;|?p6z6gy8ZtakHO#T&FZy+8%VBK8LMfsptd&#UHX_J>vwp>b5)Y)Cz^o-! zu2Z5B>me%p^tJT@1A5J={tmBZmgR4(80?z6zIR1k3pMtcbz7tlzWIt)9@;DB!BbD- zw(2>gdSflM%V=|3z!OFE&rOgpK=rKWeVxrw8($mDu=W2Ubc;Wp#p7V)LICNh<}sA@ zt%H59>(tP6g0By4WTBz+Qts!Mdz-=1pOg(z-({bEUVYa<6i~u5F!#DbIB)!%q@muj zF{|_COT0sie_6Kv{@E=xB&!g2_*9ms;GJjL0m5YK7RAfnp{5!3D+j{rw{OK@XzJV_ zzeS)a106F-G>@e6-FNecEY!zmYn%8*@hz~AY^mdp)bUK@1kTuplLjN%f7b7(sgz#B zSGvMExZiG+2j;wNn=8+O((RP%gCuD$KQ9s46>#`)UWzVR8NFFz7LdROLih1Q2y*ZR zxlC0JUZV=C{U>pJP;)c*Fyg=$Nv(%wTQAK$)q919{z1?ZFt`U@1$H?fsWz;ftu>57 z5jjdy>mn7MP-;6%?Fd6?|M5?v*9(Uh$Ia{o|A-`p~e_z8UDDoprm}7#zJ)br27A7e60du`>R#iBZ z+!eyxR&PFIVj1#vxWK2yc0==wab(Eve-i&84!P7{bbRN~Wg^V7Ufus5vlc0>m{n!^ z30Zt*AGd3;$V@BL=!#i7SmP@z-Qz4({kZpU5x6q8mk{9>h#0|_Z|+jOdqiNgaHYiU ziYPt~yRE%F@c~I#c^=f!ZO8y?!vm2x@Ld3R4TpusrzMw0Gc$^2ml(hZTWeVxT#w~OdAMwRJNw7}7) zgyC@6xnjN&&rv?^87y>`phZ=;Y|=xwP&PMF_05veAC&=RTFtI92)+%P;|-;z4q2y` za7SLTCcJ^)`=driWHMcz4ljCM@1a10gF}v2w8Bvmgbsqg-OujZ7t!;etz57e((0_O zwE`#An?sF1yVQLmv16YJ?x?|W<&tzz zsJ&ZF|9K^7v)9L<>t{@$ol$IFWKv0IxN#&lB5a8Jf;M%R;;v!g4ljx>>c3vA5WP`a z(V90$G&(Gv{4*jZ{zjENji1CX$6kr|5t}by>TIpf4|CQ~Q8f9kgcGhvSuneJ+N{x~ z#CaSuJukI5l9ZyW1!-*1B)YgJq97l^ZH|5X_bP7fo569xr_ONSdY>-%anW=tXNHm6 zBG~1t!JY8;O|3sU`?U1_f-)RoVQ<8)myZ2hEjumR=Ba^5>gi0 zVGI*YCDzQW4Xa);vgaIOPs?ZoBifZ7CJjIplg|M{GojwYghP3|gU9OX#a(lER?!4K z1-1Ar%>;@^&|k8*$oN`b8)(1T0QPng5Lw=!%7Qejjjgyf&Ttp`o^-X83AC{xVQ|bi z)oES=M>D~BdpaetM^YX-PML%-;elRd#V0HWVRL-NE((Lka7|#@rKAC?_2Z{r7^V_` zSw5r=k75hApV74)X-T+VZSqiCY%|GNElyd?{WiQyCUa%#?;SaOof+fIXJcR5IsTFq zewR)sd=~hVsjkC-hAbK-vDiV+ObnB3xyNL9$ZOp3A)B}3>iC_&o+qv=H%4sd-g7J2#==G{HT(o(Y!Tw1$+6J_Q`KXQ!@#xa_Ox=oc85# znw*Y{T)5I19_*kKGxEf&3x|@thMUQS{?JoxOQi*eEPw^l)U;}s>9iJdQTOS`m&M7~ zyY5{n;r9HG`}e3^1{)$2LlrdW_k|RyN`d-n6dPA9np(|Bt?Du~afqX2Vs{3D;?#yz zOPPlk(sXGuCDUX|C6C6}J^9*RT5)sDm-#_%`*J^^LC(8)DTd8NbGCj2%(?$t^YRJ# z->rSnF|liqB*3%dVQrrMr8TQ`dU2|TTS43I_NUxX?3YWF==)r^hPJ{i_*oBuehKw) zd1*;fCc2DgvU~qmP8!5Eiz1Y$Rc^ecZCCTihR^eT(K17HD4c{GJ$J1bYel89Xr?$hdxgw zKmE`+kX0mQBOBgoH)c{LJw8PQhgFkmXsx2)%WC20ls{ih{0?TqFA#>!o3qyz((3kb zZyI&4%z~NuGz3y?W)3?Xb0#|G?8ni*CtT=M;CY979O zO39N+wP7uR`5dfCwf*}o(UA2om2K&sI^Xs@Rp_7}7IiM%WxD4SKHCtUpL0;(GiO7lwi8M4Rr?4v?%~h+1%|bS`x*QC z`>>;x!!6vI*KcN6#BbaGUWdAO0XAU~zwlE4X&*~_m-E(b@<^L?%E^r7yyW>D_R1vd z9C3XYBx^u0V$vQsYXogu-w1V+=2=T*p;nRPxX8D$gds~(bB+iE-oIrHY1U=VyqZQe z-t4?nUhKMb_~%Dz=xuh!&O^s5h#NLHn~lcRhu1#pOzUrzt_)p_D#8b8#|d*41A^{r;m!9FM)*J zrgI$A%|-hl1$V47iP^ZCVG;Qe$;gYkXKZfNd$DPp*j?)i<*)ftGLE_%eCstUN}QJ0 zLOq6bQkG>|Zz^hl+2}4Ad*|pqzLy1mSAcM$q(0)CQf7&Uy zG4S3WPzBA-=>doQ9xFlZmuZu~^E&90IWTgF0W}g96+%IC@SDA|3qwUkN1Ct9?U!^Q zYeJgoK1vVlUqHUVG9HOm1K#3iwwUX_Q{hiOv%<7Y5=$_~qyTu7?b_5M(AIU^G**7& zv-?|uWIxTiwv1U4+cAL{_)*;fGZ#w*+pJx0l8h|V0qZ08M+I+~ky5rus9DvhVs?!c zgRvCg6E$smdw_b%)hoVDR9C4uAvv(Ssb2+1k%Qq?cPqzkLf)5%5D*+eCspkqJkAL9F&D^lAAc(jusW(%z%Iv^oZ%nc`8>+_vwk zgYa+9+?7E859)J4w$;lquI6qC?muA{?}yDUq-yZl39ODq7l9K9dtO{P*b+v{Q>M+} zxV&_W3B{)G6S5n&e%up7_%egU{mmA`f%;V^11hhQiEeW3Oh0SfqhKe^lb~I*jsl?0 zpzb6+pO#f+c}#cjc2~bh_%N13t@;{i#acwkCk8TO9ED(rQW?NMTZvn))uSNmEfPz@ zQ*Rx=zC7J}-HL?oakLJ72HV%vJid~%KM`mIi>T(axE+01H9Eny2e|cD%kwR+174r& z)7&U*UC-Sm(p~ zb<`P=#33Hpiux1gsF{|A6l;?op^-EptV=)SNGfr%K>v!+FRn7~QqyXg;%(qU9pN1`*bw9r7%;t)9O%ZYu?J9wB zO?_Npea`(Q)K`P09$}?_IfTAN2Iq-P>ri$(j<%FlT5`?PUfipwh?U7VD}9AA(A*(T z#MPU#|N0No-*}Muo55Nph>$8Ii_%dB!2=)rgU%Sj~_U6K#B!SPynbY(b ztljB=6?chaIomg=a%GQHu+dR><}xM0GewybxFrZHeW^4WtI(wUcQH!p)O*r3M=qeV zLuiCqjAd&<=i}J0!WRfwLt1Cyt0d{m={S2BiNJu(pPguLH{CwgvM-~<~AH4gEzX(I-#Me?b56mjUn?vaDg^B4-3s*eQjOPo=N_k&pF z&^Rkn@N3!b$ROV$fio(4X`knhkacG~@GW5|Z{(qe*1&q!E zK7>OOwY)ZA^PbxnsvK6YpM!|pAJAu2o9RKv97Jv7< zimKwq?@R_Mj_eC2!}7wxV%(UT#!vM4deE$jz$MMGGR6>?c8oga6eRu=nJGeUq=2K* zo9tCe1gZAQeVBkIl#PNm(CFAMe{hLdf9$${3d zMiDfnFyQw0qtaH|>N(T@O3D^eNeT8qIqN}QWK4}{uUw4x+8dGl5pOebw^4+W- z8_NpaW*syS)zdhyv}!_jiIRF6J-?t`a9<-uB9DWuPjtOdJ3q)0DU2{~cBKnSY3hvm zio6vF@OAc*$UYJ2ncMz->2vd@Idj2&RnMvD|0Q!#AAiMOjgG(QRpE-Sqs|>(-xifg z{fw4$1A!naI6v_2%mYxCq##y{Ng~gK*_=T@Pj^~n0-4tgMvXkN9Z1M#a2ss9SVZ%1 z4ufMorqz-&)hwz0T(MYYKw|8ic5*s96pB97#m>||$~kgRxLds(u|AC8RU*A{eCa#c zV_qoMeLB+Bt$b1zQ{>?-!I6kd?^KPyTl%h)>3&?skah@}%bzl){P|*{7)Y~bC+WQ9|D*hc;v;O$22O4SVv>P}JC&%~}*{CNP&%eJ?9!Uf* zt0>6Er_x>d{zC?FLakA$6V#6?Oa%B&XgBV=?zex|Pxc|uX8J;X-~~lVLP-%hif=|D zDDiGXqs49e)gaI0UI1qJ6C{*Qvj22L0(p5w@?~ZC-2xxcHdF;3c#8131FE>!;*6FX ze`MXC{kRd%o9Wr~d_kNnoCA%=srcAJH(O9Z%yRE!7Z74Gt`DZBxO0tA_ndzwBygXo z{l=I=B7qcpAY4L*v4wfq%7v*YQ`JKtVn8Hd@5B0P0>6^`Eq!Gl#~xN%@bY1o_vB`Z z0hLtXtOF@p@Zfd!>l)w1p-5XiP;yqWZ|8ORyM1;j&}|@Kuh3rTb8yxtatG`5Oc-$; zkTO1zhz7;_bj|w*!CwUzjSnYlR`Ze}D7o!~#Pn{opQYo_egh8Yg&FEUKacL;;j;9; zd=mqcCThGmMkx=Pm5z~OVIPfM(FuwDOCN>#s)H~Cj@QY3qLveRs(u|`ez69#prLR3 zdi@w$lHR%8QTibq+Wzkf3$QH`D2Sio5S-EIe3xXayVO$-_>FI6yde#BMkhK}(5esr zVs=JFQ~dSiC~(Ss?_Jg{MKnL49IrUmA?fc=+B||8qX}Il1P2hJ{oP|Flb#KT>@7> z@EyepLX$vO6gr}^ZQW1)>14s}qU8R~w9^37UaTPVGXvp=rT$4b0<|oY?h&w4L;eRQ z)(_4Kwk)emi`9%1Prhrebr*x>n-99x3W>#}wgyzCXw5Gg9|w-v3LUTsu`}-P)=W?V zoA8Kbq4BJPeiu=R7r zH!F1--@c2Fy9`ZjJr`5MQAF3+?@jI>W4rXV{#xlc&Of}v_ES^Kuwah@A$Rug)@`*< zXWPGooVQ)DSA!_A9%MwOgatlLqy+^ff_TYbNjBcw*ZaVJ1_6u1pi9zosRzBE*Ryj6<*2; z_AgPgWWy=UA_MrKr*IXmZSBJ5-r*~}9-avPR@T2rT|5{EULdVnJ*1Zumh}-`I_(hZ z@jt=aYgI|OtaGUl1dSwRu5YG#>4@mm`I&h%GJ(t-HTLWLo^Ll(TSq0?kRaQ(BczMz zn4Cb3v7y2|61Q$tTlnEe8AY&{`_k+gTRnp*M-!-2*M>yfPP6%!dDiitpU98s|GZZmXjPIf(Y`TBs} z^uRZA9hqQGVjikU*-H327=+w8G8J+Z6AJNcN7d1KHvVM&R^$`|_cB?>8x^TmY|$eq zXE5>Ulz}X&XdRq+aP%!+pO+p{wpO$v>AAmNZKx+@?|7lbtH!|7+Zw1O4kzwZmk)J? zSOC*w7K7nQB)-m7v@V93GjGPGgUrv%;Emn$B@h!$V#MtYP`v}EJn!mLQ!j2h%sW7T z-Gfw04qtTq$DR6b37rhS(CfD%DV}|A{JeV2>a*LbAu)hf2Vcn=({6c1#MqZx)l$iV zHh!1-D1)hHaaw+_ksKgSHkJwlUfp73a@ugd$VlvX)LhgHu*e4MV4rhAATGlmJfi*D z(D;O)q@bW~1(+9sRj+$wjL*yN`(tRJWXPkeL66hP2t;!`E-U#4cz)k|u3z~Q5#Mg6 zr98ki9Y9v`+m;{Pjz1C$2z?uX77^(Mz()SJ6|*7JlIDk0%Z0b%4W(Na`;}ZLtn%Y{ zSDb|r7y3Rr%$8D2_PWL-EgG~ohyq{KW0Qn8QxuaKoefch*GFv(%-ua$-^0=B8Lxm zb`%FmxQ*Gk;O!c&xe;dPgo{*imoAIiI73eWE8^M@lDLrpI_Q!D=r~c$tOQB-`p|t? z&>9MZshQ!IdoDal2k*IEI>2a}K?GkVJpY1r_|2)a6F&vN{|w%6JR$M@^g<6H9Uy_0 ztbv2Wmd&1p0s@Tko!PhhpT3+c7%dhW=nWH@-Uia9Mna!Xt*z)1PY-pn@xAR~Htevg zF{BWBU0PI(?WTwyWVa4E&QDxpRrVvic+ICNO>gN8caWc{fJZ!)Ebv6)4!E57@Qn$* z@u>EF5hw9p4G8tV{H1PC_v=M3qZQ@XR5>3N(y8_2>$*y+EpAgc{2BONikaV8IC>0(cbl&;2zrle$SS>Wp|-}S zd`R?1?pq>$yNtE!u46?PYR@vEie6Ww+@ha+v59iR|4VIQnx$(tc47){Nix9IzbX8O zSe4;Bp}W*beH66TJ;uhkbZSyr@MMBAi zhv6Nj#ZZu(Xc$RWvuvJW49F$0AbACa?edB$_AolHq2XN3Dkug9-remstDC(4sgS;m z)g2hC_U+6pt$P@20EeLE?dinv9UJ&t40QlFCYvOZ*FYQxzP`tMCLl0hR; zW+Ji>j#3aEYl19GZ6FJ|eUBE4?r4 zel!rga4#vEs=OCq+$-17yD~KEU(5uTN#4m?b(V5M$5I;wdlZp;vCT)CMWP z_p`jphH`SX>ttL0Bn}e#- z#?qp&qGN7x?JG_pL_ymg$Z!bOZ{8#T)tIkCSGDd}{dzVkK(Ka2Ys~mFPAmfCw$e?Q zoh5bf&N9LX5-HplyP6Ih@atst1?VYoJ;RCpfP5Gu1W1DXwZRb0MxLL6j9B zg#l+V7j=XXv`Tk5-$R@oKp>gXUG7)5ZCOBOa>n@!uOl`S5-tT@e_0 zh@6JWwScQIu7Llg131kzFo0_qNt@$|0f6@U$wP>CZsdpii3|bLG4FOD=C>u|kZoXa z>M;%>4z8c%mkW|imJHo|IpAS)*yzBwck%lFrJUc$NZDL$z>N^~`sOd`zBjH|JXFae z^I~-Tb_Hd?B9Ps~PX~=nBz%4I#cgjp1Ox&`q#-08ALF_>b;H*TLO}r^W^M2ag5-ml z3*{qqkMRq8;S8hknP5r9N>^h1T?dG)o5`XNo}864&xnU?y3S8{{Xyzw^WS;<@k`eE zlkn2v{_`Z61k~r~S812w$M}~a=87d{k`+X5xbiN1*$-yN5=eQLR}=kRysmPDXE$%3 z483SBm{$KjK#0(@me{bfEd=9d_dab5sUl^)M8?GIe5dus(sgJAYA0Yz=6$^RxYGqk zaxA9LWtqW@6nx!UC?8*X5>%6NsLMKy^;=cpQT(7gaL%Z=ibugXkp1qXAqjmBo(i;b zp&&=ck-A5jvvB)g9Pucc-_}r-Gz4ed>E9)P6P@RBSU{_k_+2Un1{E+zx=WM6_oU;w zbunK2ifaCh1^)d$DqVl$47wwKs3#JRZNO zGO4js)gg-k93gZ^TemnX z2!_CkwAi|F|M?HvGm7+@Adz`RuzBA^qKt7tD>Vy$x%Mr|9OPeg%`zqu2)Mw+1{j#G ziEi4VA>*cXV%hKX1na zH`9oQ-tk56uom24zNUYs1R&n)agIws?e+4l#25U3H`(XR;Ex*o%1!F>9hfvE&?ZzK zZdL-RM3@v^-L$H@1Su%Kog#@=w(CFjknMGA_4HRAhqBZtb|mSzly&tO12u5qOk>r% zha<2(GIgcG#DC`kjQ^Ov5V?3Qst{en%Ow+^-jpdJIWNbDE6olJ2jSBT{9NCFc$yNOopOPyP{*rB4t=2WM`NCvvuzU^D7BvWDQhy zz{H-ly=E6=|MB{==SXohN5F!}!gGh$w&{ol9?)Zb!F^v zo3P6nO)if7>kIW%j1rnU!I`v8M@Y0s^gZu%T;V8b;sr_*tvv0g1=-J5DD0Wa_J$XC zNX4-<`&=Ry4OrXr9)JB?O(;RWtABm4eh598VhpxSL%Q%=HtASS;RB@w57=E#$Kf1A zbFKjn3e49l)|$k2 z^A7rK$ne*KXoyuTn$Y-jt+9BNRF8Xr(wQ}SH_Y9084%A8Z$3u}9Z1$nen(fJSsZ}> z%=cAJgWk|3Y~TF1awy?fl4V7RMgE-TuP0R&Hth+U_lF`1yUH81kWLXL*(y(BqKDh0 zh^s^nbpr2KZMJK|CxpcLnLD(6VogG6Pkfq6yBjWA)(yymjh2OfVUQ8 zcD`SPP>OmdxVM%Y`RP%R`z$yRIgPdTj~%krlS(4}b zXE%KNj-lgzE&|pPUW-fY?4%StQ))=EnrV(m#X;xB?VCNDad&y+)tRuev^^K_fgWkU{bJA?Pb7$nNScP z)&CZS=kf^2v@Q%r8N&eX%UwmQRvoSE`%ilMmwA<}H86(7Bz|&IA^0$=tA6S-$JMkJ zs`N*WPs4W8lkx(j&S4cQ~1$)tBWWSEdJY@{I+r2}H=MM%IE-cwfK6=r5-yyjjr>W11#m*5S3tTZJ%_M^|;9GP-hdqdc$+W@HY}Ne3ZnIYJHsx0`mli4#F4V7}-kLd+(ly~ghw)=vXJg+Cl7i8U>QQ{akyrGnQ{$em* zRa@NG1t5iTB3jRXT%g4_);xfdl+ev|v}B-K^kh{Fn08Q`5}g@%P0lV515O#_2$>TJ zD33=YGa!5BH4TIQXE0k7ddWjIzT6q$bCwpP`2H0ybk7eQfpL;%8z4+d9*fsqtk00T zZRCf=`6b)f&3ryCW4%JR@luOb2_G%8k*V{SDVKJdLJqWvL11l?X!yqC&NLFfcp4X1 z45CcPn$p{P``ZTx;M#H0L4E{_>Y#SeaEDIclMA)tl;`U4O4k^>U?%H@^{M*EKtH~& zr$(3FwKGoro@tez_pj`1s30$jz+=LZ=w-=B@K*oujmIBUk{KRh6@^{h);Xk_m=8>n z^zm@9$X`awX%;^SUVIi;p}+&ILEZrtnx86`+5Q^yqy%@QOz4dveEwlwF1iZ|i}Fr9 zI{XMcpKt$b!Cr3{cXffvSL7K&^! z5P|pN-jU+(0GiY0O>Zdc-W!Vll4FpUb5tORd{YxlKa7A%XOn4#{ULPpHb;tINg2?g zRLALoU$}p?}( zQ822uLbpm0KmE?krqF#%@Hoe4MbCcJMeLVIHA?>A|e4xlSY;US|(JZic6$!=T z53H4xU)vz%v@T4wnBRI! zp?X7Vz3aGmwZ@eJmTM)qG|aLvO0qrbZVf%smNU2%-xx?&_D$pPPdKqb`_*W`3kqPH z+!iPqttTk`w{-ZHM>yn;sHXXtX|w4(H9M)TU6{8ZeazMx-0DfZzXA7S&5HIgL@_vy zjAL?UuPy4Qo6w_U;RFkToM@0)_gZF;*Je^NPO~wS`d*hofoK1qv}O94J%eopfnt$7 z_yAEm<<*Ku{oYzTMU<^T-j2ygIo4R#?(`G9R3H`WK})u#9X(T;XC_Ho9UR9 z%E2gotc9>0Ov6 z_c~GM%fuoMuRqX6y9(UB1|DZHARvD9&i_xMak^-0#rks?i|4&!e3XFBkNv+rH6*ti z(4unlo_Abd0Gd#99eUoc_tL~MC5Wl1=LiGvWcl@eth==Agfo5vV271F!2uZm5t06o ztH#ie6w?H+k(3I{HkmTCQLJX6p`#tWY80-G784>HpT$7~w{U3+j6|(usZ}8%F;5nD z{Sc&2HXjXiR#+}6G!PyJ)3Rq6=bN$h&oED$8h=z1{}tDfYrbH>iY#A zr62VOnue{&W8PKWbzc9vJ@J58K)zK;KZ#iY3Hoa)ggbGw%V~vY{jf87zN(5Iv%tp? z;~G*4>atdWYk~$fj=t-XB8FkK4^QzXR)-yoCbB{~)iLWqYSoLu=!jre8zyoAVcYiG zh>Nrs(g?+N6i~}H24z!Z1KrG}2=?Qr&iYqX>)2-bW7*D?9{Jl<7_?}4U8K8czx4D4ge_ZFh z9p#K34dXo{qgm^@D{|L^?w-X8H@^ygf z;YmiPHTESqEx<&tdnhJn3egbL=-?fF%4275Re?5TdZyooqsN}WGa=~tUoiRx2u8!= zv-O^UaXPLb`&elrwTDOkw=O`zl_CKbvQr4|gi^kPkR~~0#3KINklmp9JN%%q`z#vv zS*CQtS3bd(gF==Y8GR&Ez9&1ll6uHojG#z5h<@`1eU%Rb9^j3IJcV1epQYr^+us(9 z1by>1%3&Cx=ONF-Er`3t?zAJGJ!|td{zfek-rw@E(TxA(B(&vx!{ggF_^|xC`DJ3Y z_MFj>i?TrtxH-t3jwz0l>I}2DJ#!F1aNSV)CcMSxaVn+ywfh`>Urk6$VoO09=axe|NI) z&{ZQ!*GhVG(0|xQpz^I;20ozt#fOI6s3U zkzSJP>lTbhF~#UgW++iVni*4)X45>ue6&+V%-XXlvFV^<(7g(Z3&hxiL`_4qMe;_% zkqP<5{`bjVKtD$&LtyrPpXujE6K-XoW+3H)yZVit*aNR+yGo`J&D2`>U|SJamB| zNlq!yNsvtxFdB9tV>51g zi+{*B7Tz(`$yd&|p2k~3H}qtlS@B{1B!Kx-9m=`eFLM22BP%9ZrzJ%&#j1L7W-~ad zoPvOlhff0~$zNPMJ^xC9(qWl-fHdw;ib-|neIKCJ08uf)3y^)+BaVv_M=A_jTM(5} zWef{7<9Zgd!F%2X5)y;5@7H=K$v9h- z4Pu}C!{9^X0ts;Z6ID`HY)cN&5ttK3PrCwf0;36b1Yu=$$0Gs6E(1 zn0VwuSZC7-spQxM$AbgBZXmTgqTL33ndpDalSh4=u_x$rixdo`~qZ!e_dp7v-XtiPfstI z3L~rH?+NOe*EZ8LQ0`di_rc|qLw*n)I4t@V73p60E5xLLF<1F8MgNx3^L*ytv9O3@ zqVz@x#At$}Yi2Ab33MXQNguZw3XkRrabnIOc7FUmrt0^d$7pL~J|}4l%zUxMYPB5j zEqz2R70O|SVdo)BssJ}6NXzjbWy^DIiJu1HoF$p{kKeWcp;*8l$l~W}KxHXHAqk*x z7F;!87$N5pE zhwwjQ#X`7wZfHUSIf_t*y&zWxkjF2Bz5TeGK`-iw+n6_Jm*Cp6`w1-OQm{8 zO@{7r95Q}t4Gg~d;l?pMH&%S!R!o8Vo|b$C9an#+0VWXz-?P@&1PVd(_754<3HpcRu?Q7e~D8mz{!`Z#mnXbpi?b1wzC?n7IBkJ74MIvwRl=p0F z({t&)1ZFm)xmATa=>GD*wz zq=4ffzQq=>0_b_S97sgqY^Rz;BMb)8|F`GgM3$PL4+Rb+ZC z`)PzX@rs)J7Nv~E*iFLS^tH<2Vd3#`+wb`t4m6&@gG&0gbZN;+Fsmq~aVnU~pO{@z zo?DV*#7UQT7ux|jzOZPBM{@|9zr&Zo_yKO($mA0}`5JuAp-4o$%G0zy8yJEa8@4Rm zVTSSP#`dWro8anD(41oBe9QPbisqg80@&5;^F9fMFIW;*)@oo3x-|fR??CjAR?yqiVf6C9AbE0bxpMyJ z>qPYTkfwyJg-KB@piS5v&RG0@Ak)vAk(k*72MmV-ZR;!`qmg)OOYRKU?VnF`bU{mc zObPI^D^_FhYBqX#5w|d-Twkw4HtuT-MzN0A`;RI$&g`bt?BrQHO&OO1Pz8&XhnV~E0WAw_A|+tR=N4E6Y>qnH(KtvgN#gSD`<#oT$UaS;cNW&?*!-qQ0TW3O0t3* zZ5E&A5wyNnTA9*rs;XSLyOCQ&jWV5ofReqfDvv>$J)!TWG)xlOAnS$5U>N3DOHumxZ<6?dj0rfc<^S*7bHIlHEBlcq;<~v$3H0p$&y_;oF9&=aGiobbom)iBe2H^9!y6VzBN3rp9^9=cRpbs zzZgz+!}GixCCj(H`F(0%Zqh@l_*m4dhy5|o%f_M6uOJDlucbVkAytpQn!ku%=71jG zeE2WiZW7zBL0{^LX&i$>AWxV3$E5pmLWlmgGF~8HX&bXXM_dVIxk(J zA_mj{aK0>L0{n``b-byyXEJfLC*X94S`XkBFg9$sCvlBJR4ax>-A+wVH&}fs#A~j* z7!cs=!(DB&C0WoA5K0sUU5m+3b_;$V#!xfH&I{jpa*QLm0bk7u84w^bHVYFa-9NOV z{tWDUVziA|gR0%Vay3J0xYj&NlMgev3d1n-(JpcsAZ5xyx981CWLknD1JWBe{0--oMWHzm33V05#?I>iA zzT1FLz`*O5auDpj?sm)Zs-y=ATC}>_6`vE!a3xjs%xOkSYwUH~VeyZit$wNknj2oM z$zL6oKepMc-Os`7h3*R9M-kiI8r)r(IN-v(*0FEfPidvi|~*jmMEce7aHAa~h!z-Nj>^r9&s= z?~4T94eN`tfoi-$3qVT#h;$behjz-S@JRiM!#qxQR(##cBX3uifTm5A|4ZjG1qgM` zhg75500rbW9bp*B_x*sTPYhdicx_pEvKHmpU@$}fZ?T39=9XD62h$ehl!!*2q7(Fp z`WTk#O(G(U#LsNMGjgX?GN)(@0TTBM5xtA3>Wb^;u2;0v+Cu{vKG+b9$1nemRdfOj z}ELKpOjjncSiZE#-4T6PV?kIRk1GE`&gkm*nx zPSDObyU4TLxE$5^z+ITrV$6MI550&h_=nKmZAuIJ+`Kwq0bG<=yWbLfEsF)tjg-t z#(l`>rTO%Tjw^w8bQ(pGdX~qgX|S{@1O}!nw9Ze+wbA@)_^!b-pF%0=P1G@5*LPc6 zk)`y_E|I8j#o#?(Z48G3P^mp{`(ThRYh%2A^2S4)1dMvDj{Yu6cqM`}1RLfKrWK|P zvy!PC%^0?NMX2r)z8+{@M{v}$ZdRCz26{6Vg0shCQKZ%gsfw!F0x6>iPs?<>k6y`> z1wO!>){?`K?^zyCjb|8o@e>y98Z6mgxYKJ-LOHE7GjX;y11asyZ!ed!2CvVX|480% zg+)|2F+Uvh2#7|hb@eA)Q)=KVdgqg=N^>{ViWKie%z1U;N#pcP?lB}7-g0gwfSp$N z*)toyV{!^xREjhj1J`}wN(uumG5fr`RV8)29z<3D#ukG62{&`&4O}1hWt%0p1Z6*X zHT|$3NkTLq&LH{Kg--uI#6WUu0f;fTVi`Qd{{)si$rLbhY&*fDiw{#^JT?+MC*ArV z83{HBbWBBj!tzL8eCxwMvKGhr2?_hn>Dv)7-AeP=@L*-~)U%Vp#x;kLU_1^f8wW0d zY@0T8oZLKw_4E)y?GxL#gBr*Yx71DnS1YGfK)ew>2^pn(p;0SGd$+g)dUGK1~9DaD*X46+n zyc85s;;Km`P7%@%#~B}uz{>h#)40m|x1*!1zNiEpDF z;nQYIP_dU#g&@U5^A2@OeLwS{T_c*lVovP5a7fP0H! zhA&sRG8z;B0)D7wT9OdEIgB9~{1e5P=<-c76~>>K>o0PD?V$gWxEnXS z7~uz5KGw)Kw~w%DaiiG( z(R7XhdB1-fzO!u`%eIzn+qRbNW!r9f*|p4NW7#dc=Wf6M^M0>d->&QWe9rSY-f&O7 zJ>|S&sMwJ%UVznPUkSpBS>5L%q8;G4NnP7w@h0y(ycQP5weZtk2cNhX9ZL;o*cseP z^ffnhl~QcWl#RWViD4FO7~;zc;_&+Mh$@Mv zT5mV+uLd}V6MU1dqTSNR7=@7zmBc*1Muef1$U+b%CzHR8Mp0sJBUFi$WyOevCO&u* zgbQiGZ;aNZdcW-P$9h=z#R3@m_}~u{egn;%WXTghg~`Tkg9Q#G)EF;|m4Cro!&YKE zbP2nFKS0eoX#W&-G`!3%U}p%_Ubj|MxqG@dQC3ANb>4p~AY+do%a04z`@$xDginMw zP^Q3z3BOX*l^!rXSY_1}I7N{jGSFex}mwU$O(^aY9I zrBaJM0QD0_fgoky^8YkUss=6Wmu6}Z|2VxTkRd39H~*1X1YNsgqcMR)00P7aUZSkO zJ+kJDqs?2ATDKs(X&+7CiCFAl7n+CECr|?WGQaPk=Y#>2;C1FSLnq;cgY%h(GXHE_ zmYObgZ1RC-11XI)<14CluLr(HdJG2Cz|o>U#^m-OqaQQSHl37|7z)9`Smni{@16WL zL$%`?ka?_abP4hdP2?%MLBm?r=y=x-l^KfMs&fg)mLxK;Q8s^m{b& z+3mbhy(U8x#0Rd>yp8Uz1C~egfu-ZI8$+$Gv+irY^ak%CZ$Kk=^Ea8zCH=7A#F7bS zbZ8-<8q;_CAfdJumg>oAtaljLZ5JyPhmI@`J=X=Sw!HB9xCtejT0qcO-x=68-Ni2up9s zcy@gu9snQj0!I^vF}k2_HB46U!WpLdb+hkKR9xo<0n~K>!zr`gex%v&I2jZ<#7yHM z62bGDdtY$?_tZ?XoNKd|@eU!ZJEdTdv4UH!XnxnbL=`thf{!G&4acQ(^5G)WZ1nLg zneBHdqfVzp?gLtgrA~;~=|YjGTHj5xxc8r%%mNhJtS#=5QdZI}CGUy{-i;5s#8j&bq}?BLtHLa6yV@zoza<&6IJh zO;b7WSw!FJ!dK-iO%z$UvE2MM;C`?;YS6J=kdRDavC^vuv@4tIduQ~nkak}|pbapG zo3|ykj?4dTUC6%p)q4uM&^_c{63vBIE?QI-cSy7OxE}bx9%NScc_WR(2acxjcz|?v z)gzg%5=nhJ2__2hl_M%5>>{d60v!EE5>D$O)X{i}+DZp84he z6@FiEmc&U>vx8y3xE1KqNMmidF?%j52W!0=Okf)*Reo0Zn%lZIxMIMCH!YawlU_F$ z%lqf@{o?Yvs>~I!V%gxX03onsV%l=R)gi`*eo68H%b(hFrDP|ce%wtPd4(M1=MHhi zC|k7DTJTXN@?u_hrd*kS1#t=RUIbPmshwSKrGPU6{zzhR`ilT|d2{?3p<{2Ay&j9) zL^E55Gs}bw_~)J=l>dGiObGSq7&v+w21DXgjDue@oas(tP-HGxelZp=AKRp*bqK>c z9(Fk`fi@x>ag*~jA@^MXIumQ!BAvb^4F7T1Q^?31p_42344<}M;1QF5(#Fh!Hvh7q zQ^Bpb+=klu-n&$VgjxG^SNr#@aa!1dHe*<7(L&FnGe?(37<>2M79+s{v-HZ5PLjXeaaNDwla&fLA>sJm=2bqqT%Z6P7VjjRT}F>Z<2N{HG(QVDfT^YB(O5#`Y0vMs9qW>oP!aZ`GR#v}2AONwd(i8~co zHQiTqT_z-40e>0NxU5dpyBl7svzG<{)Ab9&^YX$tEyHV;(?nnAtqtv|`d;hX9b@DI6IW8~ewE=mi@$MjVBCMtnF!{SGG*L&EfuMCPUH!<4Ib ze}>qwJ2mL1QXco~Eju^c)8k0*>IG$3u$SRlSa3A$l$EC12=02!v_JVOw4zrxt3OCo z(w5}=*y-yAN`;TMCVgg1P-g}>mJKv_+n7Hg(>A%ET4C{3)b$9n8Qe4)gYfb}mp zU_oN&v#A1P9qj-KeVJCui{2qPUx2BTRuqN68M)A1!+tdw;p|*&!X0H2_V0!XfvaoC z9RcL<4XDm*Pjdt#=Pg^M7xY@~WYpJdgL@@^SoACeWXkjBvarm>9{=D3Y+QDMqp00O z4XMcRJw8$sgdzA?PM7{B3+aV8^dnH7J#;>d;FQv^=D>F|gbNqDd%6uX zW_5<#o&G4(rw@y-*fL@FED6=BbD$u+u~)C&2Yun4&!oVg z>Hx&niA?-1wUlg$itX=-n)#aCvoTn6q1JgLAxZ7Hsq&&)^uC4uNmHfalkA{kL5G(`-L4Gh=g zs`w#w4A*nIZ=F`!ik9Qift*w~tCKCtCipf&~>!|R&U4lNzuBT~lZeDxxEXaUk zJW8d9s(z#Px5-)%08qdaJnV;FWMaZ9yTC?@QFA+vSe@!P zUy@Anc9_&;UF|kxvCnXQKSo7MZSx}lK76-IwIA?J_m+hQz;))xJ*r0BUTKE?{Yhh6c2A{5q=* zSR|ben)1^1bgo%>2r;3oS%`~9YueCY9pb^UlGVPHEFCA-AjypL;YepM6!_MjmR?9c}jaUv7pwYG>aFM zX3l-rF^NG5_+!yD%b74@Dlp_^Rs%O0j8ik2UTWYb!@eoI98xl#JuoCnHTp}dsRW34 z4fTvkp*7QcPiA!p5N^@>GMUm!(Pdu`>Itt~GOR+%H8Pu+3#%FCPp60SL&7xa54@hO zfwATbP+$0R)`&73>9#~`@FaZ(Bu}@g(UKwUJ`;1eXEG+e?coN`L1?V4%*+v|a?E~f zJP01eLDI6_aGoQXXqfCy<1N?cm29DtN!_fjsK)~%A7R3F4QiY;W5jU?qGuX?K`0OB zBk8PjK&&j9W2W7zohY0mBahq0o;19(Zyr40+D}%QvE={(_ybuFJ}+w!xtpG8&{{}U zKLI`^&XX0Pll4&?r9N$?n%`7?t>bEH@nl-pdn6Rk$331WzRVG1ay1g~HxEdP+s51y zKu7m9Hs7`>(nZoTdp9?g;!^svUc>OaCYEf`rF`4iWL$#+HlhH4b+-pS;J&UyGlMXA z=%7v09)yV>7ai$yErHDRLL34e76K;zPic*<{cD3EAAHM;b3@2E^T;RZrCxFX^ZR@- zadCb!ixMTlwW#Fp)Cx=rciZ(|f)=Yd5E*w(?QSKqGTprIcQ+*KJH`=qht{Ek*~}A6 z^EV0@wmH2G;^*{}8R{l`nPhLC%+DgQF=p@;q=IYdC+RlVzQj(I#OnrB10-`BC0 zP`_LF({xUp>kA8;VVMQ&i4eR_y7oO; z?pGl^MX&{%XiIY8j0WWfWRJDP(8V5)m@fx882wNHhLbnbyGa%~!3#Ev@bO%|M=}G3 zLef3quIwa15kSum0#xWF6t;6Az0TQ!;L|>Oa-W-omWZ;-)6RuSY5!j@$Vez*oK3CJ z7q-=HYov^Q8G%UBPV?!s{5k1lMb1r6K|-B7z8ON0Ogm9v3nT|o+l2>6yo(Yqi~Q{# z5+jji=^bXHwE?j>2>M{~m$vrbrHes#XG6Bc4L9m%fTzZ5y^LS)wGxEdgpV<-_ z0{ve0OA%xm>mW9cnF=%&$0jyxNNDFC8r7G1GZ7nou+^y{CM0EPuW!nm4JRWBCG)gd zC3`X%zB#Uplpj11)VhmL((>9BcHZ!n;B#DsM^2gg9uu7m*efm%7#PsszBTeF2wYDR z1&@u8*9OyLN?jY;oAlgroYv}`u?qH zpJ^!@AGF$py@%DL$2!z(XX$Xz%zV+reM56#6Hy|q~9}x21FIg9(22MY*6svRl;078=Lh>~|EST8zHV05VrHo4u^ifVA z(I6Jvq4%S6_nyrl1lU8=rzo4SR}?vSYk1+a!0e-U`2pVMy=$blEJIC8Cfkuui}KD) z7S1!IY}FhcJ6c3nc%n81?xlVKj}0W#?p7J}WzKV%0~NoHBfPQcMwM)k0zWf;>S?+N zZ?vaiE%Dq)#L)Qw>77(|+tg;E`YUJB{Ijqx!d5#1ZkYr=7H*&(#n?0a(Z7iG%l^3BB;J?{ zd+2M`=@i29#B^OuNQ(8ubzR#tqjGD}?+QVLf(e=vJ6mxY$0P)~~Rcdn#5{e+X znlQyeQ_)+0dm~Ewq(>|(8u?(0td59!3!<%Zk+b3KR!o-vFg$1wv+C#Al< z^>6^sz7<5UO4x(v*boE35HCLHuko?Lf@jI)d^#FA+g9yI2)eVG$MgvG zI1@fP(>aJ||81t%Ir-^?hX?n~-LRu#ZiX@wp*{}BBu8aD^AGQ00HpHf;e71&&Ke=6Su(=>;;fvBJFk<&caZ$mJv)p?&IauE!;2A zG~P0Gez$fXc9?!-hdXX&!UGjJX;EpL6wc~w#zVd)vR6pLsy{Ai+8NWtgobJ&N>zIb z^QRwz@~<>(3noJ19c2^#)ic<9HE@2M1~d?;UYkty@2j5Se<+Qmkxz3*?k>axf0})O z-$y7isAve#>Wc}C51In+QGoxyN6E^MkO3-w6aN%eQT*en=!

$3*dSle0r=;YC#W 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

^ZcZTsA_B^f& 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

V`6(BYy3 zL}C-IQ~SyEapHi5@9_eBT{GOMJmP*@UmVs#Uk-gfC_FcUg>1Tp1)TnSs7gJ_C$SEj zB1UBRwfcQw0W;0&%7UGWCs&fD4U~uE3{4rh+mDPQ3E~hAycE$Ubm-;lC>A1Vlmu}l zcSR?&!OwuH`n}-EMt>8XWDBko%LvXz`aexU=7VWnmGGRO}s3r?k88 z^H2P5l5xFYoHDm3&Nd#Oz_hmm-{3w+A<{KjYq&Re4hn|NWmjA{AeY0p>Gv<%fsbXU z{2Yh+zlXoA;rwA?r%81*BMbg`; zM;y0TDT0f4)Sq!5n4=r&k_V+sHr`dVsQ0p&etYm{j1wr|\M`_-*hTU?;nMthX< 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%0DHOP92CSvqkC5AN*K}e^@3_ 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�c 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 y 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Ð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%0AfA+YyP_&A39UK3Pz(erGc+Wzi11r!jQ<(lC^ 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

    OX_7nVCGaWxgLLFb0huCHAqKFKP*I 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�t<3KC3g;}(NUDdulg&pb;=M&;6)A|7VY2lX(-POXsMoL63-K{k?^OA zKz*WIRM&?sbU z9HG?{i~VZ2bnj7mCNb48cUVv^SE;XwYO1Am-FidulyL*kTH)9Q?Lz&Lk=LmE6?V04yL}WJ( z2SraxVE4O2BW*Z{kx51iAsC(xoO^KT=8u@D9!-9cf9B~Cch%CGD}I*iV;4j%RKOC^ z*?W$=L=bs&802Za^N&6Iv}K~9CF!Hwn%eg3lREkOQQV`?r5{`0U>oeTKX{>lh&sO& z4m$eEC$Eyq(<%@X_@|u+l}Qd|jR4dR*R0u?@kiur(tYEuZPn(FyK9A|rRi`P>v-~l zqBJMwFv>fSTdJ{!l;X;di37#--_IYOAGh$L;8H$)Hy8?-7f)T=2#?6Jv}KrQqf^u~ z{~|Gf*+}SDBUz_>PH=zxV0+bpMET|5t@N1jd@p-#&V#L~g!Nx`%%56yR@oCh-DCDA z?b;8Nd**kkiR@SYM5WamOqj8YPjVd#H}i?WOYPYKMG_6pDbu0c8R29c;eo7De#G9w zv9`LZAM1=&4^omP%7n@X&f7X}gj5)Zi`eEHi|ucHsW+#WR=HCX9j%(oB0b4CAZ*_t z?PxEC-7e%?xrN1!TILlkXK$dwQ)*x3`5JVVWr)+5OqpPfNiH zPR#qH`^!bKac`w(*x){2&yoAt-1O}&)Lur_X;%*{ycQfm)3QLh9N}>}^VHpXD0Ur~ z*!b?9`O_(R%(+X)>IXJloD+21$kq7h?=9G3G@?y4-DQ?uS&sdb>LUIoDELc#?eQv8 zW}PVoVOZLE^&Cb2JekQQszeXQd>Qh@EMj-zWPA78nzFZ4(bk}xrKJT5suDT-&}{Z; zcj?=seshK=7V}~4jcUy_u1NDr=B-8$7dX|i$X=8qrl8Nqkg1>Ib`!FB9XPxPVQBU& z$AMjByy(e5ZY_Yt1EyLhzYw2kSdu*Wb17S;`Ob|Tt#>0&F&sHkQM-}q2hT;6_+W%5 z-f!p(mkSoPd0jCuBQtfo_R$90XO4Xr*S=cuGD$^7ZZGy>$^DM_FGp7*j+hvS?o{R% zalGVK<>j!iNX(jucUQK*QBTFe$xbGVH12)f2`+U>D^=>zZB-#hNh==5XpqwhHnyRX z^q@0q;SD0k z#UCh!#x=%0px83e3Dw>%YoBzRD(I1KD}R%wX4va?&gOIErh0USkY;}I1Qr7KR#_eP zl}|xh$Ba0?34Sn;t8k3_rG2YIf33i+L!YOxz*<3TK2~r#wI(t@{kg17nHAC?%KdOn za&q#^1-S4SWQ?h;?&3jxZ-SG$=C3^~vjK6E?Ym=1DX6WT2fl<_8HO`5Z?WX}Xv!=l)l{TB@((4{^^jcWS4_ZQ z%92NRBlrqt0&ph%YHEIN{1j#{;mcJ@-6K-mK1E+PgU|6%iX6SlR5Ix@$B-t~`;e6D z)4^Hyd}F~+i>jgfEp9CeqFF^#?ml{_?=0q#QQmwOMo7Z_X06`UbN9J0+(~b1IG5Fk z2}r1#^bbmL`}C28R`D6>S&Mi1@k;3qpMr4^si`Jhz1o)=g`E1Wm2V2S@^cI>JUWSL zd!RJpC2B* zIOXpp^KERLC9mztzEoq7KX&eW#@40;f7}F%H9WQ)0G@RT%<}j{7Yv%}pA<72bFD?s?aKp`k`LkN*B$ zxm^;ES>fo~$<|Nf?D7MhwSLbet437lU2FNaC`k1y zj5zx%*;(t^&?DBP*Nm0VH+XzL_`S&b`6QYnk7V17kDsh@Ysx)Tcd=V^)@R0SFS%Us z_WI8ZMyCSC#_l}MTT9JYkM1T$scy$=EgIIdDVmSO)X%qLYo*LMS>k?ZdiGTfZ7V)J zwZC)CgyvE=D>t+3Ne7Q5>u~vjYMy0Kpx zB!0A(I*aYZBrFJQb?z=K{E{qYB0VFLoE0Yg)3C-Y23zD_oYGrFS2nYL>XSiJaz1NB z6UB{VIPK7abJ1);2Un~;(c76k{9eBQgDn>5I9_wY_tw zjne|{Nt%B}N=E0C7+d;$*kN)f+v*=&Bg~v3-=uzNhP#^&bxQc>*NMMoFGZKP>fbz` zR@nXZz*`}8X}R0xD_tjomKf`l3~Qz+rtBiac9x0a;Rrm3Q%1pmKeTtu-Br7h6L7@*J z7{>cgQ4*8dIdffiv ze3w;D@(929d275}PCPCq>WO0(nU`BqxZ`z4e;cb?NW}x?0E#M4Wa+CbG9eV3{PHT_;*Dz6 zt8yt)Za_Bcg~~`LB&jGR%dz8h zinqaN1`W#2I{Ch)g^AeA7s~UkCeptCB(&QTLfSE&%-5p?8{B~REjp{KTURkY`oR1orolK0(Qmhej zy~Q~nqqN{IM{IGo@#@(`8eadG_nd6zoT~Pogf6GNM6y0m&2Jf{;R0X$6m~`X1!ZF*WEY+_qpV>=e^33_+RgA+APjE z564s-(e3u{Kb9#KMDde&<6+jsy*;Uo#kZt}x8gC&29L z7StGeWcPulNP%OMe>-M#D|#z}&(_xn*L&|Mz@P%ae(bm`620nsb&2eu!o}wI>DkY_ zjz(Zcwk)?EaLR^3xc11iet)*CUHHYK&)h(gwOs<%0c#^}P;uwPP)WWG1))b;{jOoM zpv7JL4t?62=*<^0d>5|J3iU-MpG`eqe^4$coRNt`g|!ZD6QWF?$+y-I9Y$3%AqOqT z4u$h8Mh~TM24@gTWtZl*ZxQb<5@c+hp%hwq#&YT2<27~%86{qid;oeUC=Tyh@`8_3 z)7hy;-1zuPN5|Lao~vJJ%8DJL^>N2p-<708jlZ46I=8!=&)LZ9kKAPPLwQ?i7nTPv z`Y*QfH*kDiCLQl{2t>vNRMNnM^SiU{eiVes zXeOVAH9Mo7Zdqf1;k#sF294a8WKN5b6B;lSfGhMiu)vN4smEC1} zLI%D>(W62ek>eg4v%Z_c0XNBZ^UVcDoaJ9>Xat_nNN!5mDQp*QTyu0^ty-gh^Qy9H zt*%krxqjgrPDYHvkJz>_rx@D6<_aZ$wfatqm zO$R-dxjgsMpHraZqGWnZUz@)r_;IptokkK)ID_uHF}-W-kVbA_)OK2w;cO^rP&9LI3NM}cudQg`I-zvq{8O7Q7e*$^ zLx!2-WTUj=c+${9_C=cAu{kHcr~2PX^b8MFY?LpI*(z>ZV2e<_+?c`M-)Y)fUMD;9 zG-p_^&31ojuB@_J9fxCx?w>hxW@S+Lm5^+0p_zMMTu)WGU=SLkzkJ{4EgNQoU(VL5 zK;!8`QP3D#g1f6NL+E3UkY8?;gL%R}tLyvRJLgW`<;h)2FcuqW6<@=I$D5ByG>)+m zD+@dgeP)v$A)w4$Udhdy6E)4oU6%JM;=W|El7F2TGGQoYl+!i=>fkG;Q&sOMD#!FRFmhfP(%VH3Yj*0TU2q;g@4e#^=cEx+ z&yp!;o{;{cR{lV-*u8?wPdy5&B$Q_RWj%iDh3c4KC0s6Ij&??m@qDarQe{@*EzHX& ze%v=-$EuY4Z2fGy@sfmO^pgoOhV;9W3Z*{am4{4AHG3X`?BCVMDX z`wf$qk=wVBTW|vI+9KC7t={}-bQ;Ys&2}FyO^|s+@ABJcl_c+gBjdzo>P_)?77DB7 z`~;lub*bJj-{@8xo~kKxnKS4~r%Te9mdLAQQ6URGJQUtk-)kP$A|;L)vkM3eZ?bm# z=tdn%I27Fz>24vHpcI;>!x_eZ6lu5m5Kg>KGsC`IeWK^N_xiNYh?0R^rGM(;B8}7| zbIPbShM}8${ee+_DjtwV?HbO$lc59W54^fr~3%KC9mv+ zY@mZ_;*^!jsgEUt(vuX#${35gMR)shjdhsB=GG~hG|ODVl#B0&mRY8#WUzskitF^t@{s7;wig-LO%?Eu5nVrq0WH_Z_4L%Wg1W}ce-EWb z+;t{9uI74^#RtyX)|{{=^>Zt8X7uhx`TCyJ!wD*T%+;EMwse_JAzzxvj#*0s+#G6k zuU1xOg7vz_Ompwup}Ri`CBVxXvaLwJ!N;b8TQJly-DIVgSzW-XqfPei`Qu$i$I72v zSwFu_>yEk>T`kDjR@iTIN`9e1C9i5#X8q#fZYrB^ONZiiHJvB5FG~<6V;pFSBL8`>)ZFATF*SGXF3t9?A4B?`(!Le^F&*V=IhVz ztjCy{U2nR1d=)-pV8s)WPxFo?QKmFYDP3ah0!}29aqdzZT-9gF!KPD+*p|xpEL?xA zs4qzUQSY2H-I2HQolk;_W^THnZv_3=^DiLNo%C+;F2h`UX~k+8ioP#0SZ~)C{7$o& z-T(2%&(gYy#QoN+ubGFU=JQB}uDs`%%Q$8{mpsZh)2!e(Kb(;NvPDPSXqNSKZ-slJ zaiC3j;BeUkZQ0@`IS$-CE~-qwPm-0+i{dkx1>(tGUfJi=8LSl2Z=`DIzc)HLPVp8q zo3q^-AVAUmHH}K2c@-)P?Zv^}r2fR4D9oGYnzw%YWOiwOmRvPjxUzg52hWtKv?{LOQGaBmx{ zQgz^6LQyuE(V&B*jnJI!1&!iLMk7_FZYeS*l9Z+cd!yF8QW!UDG26kk=~sH%^ShO} zVe5ZJY)VH(XJ4i|kT{8uE4;Q`GHLg#3?d|yDt*!;drq*Gsq3iQ0COwO5qq{vbIOG@~=j@fpMNqPJAM*dnZ^S%Q}}iG^?I zZuq5{u)`j-CR)yYoSJt(%|3qjJ0U3bdP|XP%`Q3l+S?Sh^g=&3vK)?Zhk}^t?DCxS zaCG)bWVZFMsIpQ-$TA6e?Fq6k`}_9AS2{1W-1EJnmcDxMC)s`uY;{c;wXs;ml5`pB;RO#W%AT@qW_=y~SK z#R7|ui`TS<@3ZL;}D_Fmc5+9Hqb5$oI34vhiQ!z!WSAMU1qUJ<;A zchuw#BByRfFT>fioOgru_I6%}m+_RW&G;JGH&!{@?|fk**ngl*GCt#;aM^{J=};Ks zfCrf>WuPZBeMzkEb8o-neOYRv_m-ons-B3>vK|Z1>Uy1DCq}owu1vEn@o}fhThVYy z;7}FyyB(wGOB_wN`DCSRhjrT2G1#+YdtGMg>u$w!$Z6nX`dCup6 z)uYw}GJb3mYxa*)zO>RW=_^ zX3xN2nH|WzX)H?b-+p4>$%#BGpnE_?O`7-ZUH8O~6A}B2Y(}ADr|WI#m`waV>a{dQ zuDx`tOwaVz&(0ByGP#(tXld7VgxqM*RkPKjBjIa#B8?R5E7`5W8^tQjZ8-B7bqY@Z zA(??|>~c`DouXB(&)VI`q!fEh4ACDhkxQu(wO*a}tqCBb$O&U~Zuivb&=-8xaq0M0 z(#QMhNuW^+#Sn2v{Xii`CGSeT`DpiCen4^lJzri`vux3CCa=YpFbZR{PuiL32}fdM z%-w5rXKiSs%y+F^$HrpEeQPD`jfbgTrLmBQ5|Dg5J5T{-s@J}+tHTktL6unE`8YER zMh-@)WXAR$J#6|Xne^gyT#W5~IjrO|ToZJDx5CaLS34I*1Q!=&g9CC#mq(p9A9U;L zG;BUL&@rk~^b+B^@|p4DLt)LfhjK1~lrK|MmT$vo^R_hWsi|-HcHl?xz4;&9kJT0tjp5T1xqF{^q zeT&BiXD0X+bM2NdcwO#eZ~SRtx$~-*r8mfgNBc_tWslUZwoJG z+z^T7%1 z#5=;d_p>)-4{W6eXE$b?c{1zq?oFJdzbp05>4pW)jEB9v*YdbEB_&0A6+_9wJ~I+U zAln3m5*3A$U`W>rOS`{Kn#^Z2*EJOPy(IBQio~|!k!V&J0 zH8$>!A8q>%_%=Uc53Dkt|PzgjFjb*GT zMIQtE`XB5DxjNDgnM&Q+k}2f4HU54@Sd6pO{$`F|RVO%$qnlQ82JhrX4re755I;3OLXs{T3R64zaoPVnpb z$x^wRG9SR@xVD+9`C8Z{ao%L%aHHc}X}@=5qEWgm{lf3>P#sv;G}M3inBG3~lPXcb zHrG7&eC^>i>&OZ!1$C>NPu{7f8?S7MOEMXKxI5a)gPYu4bbT6}xjavT6xB-iO(mIt zNz`_~Ax{l(ST?8s?!0EP3_!$}h&^q%xB}KzyVmMe6MVO_+ny$hM*}Mgi5eO;V(mhdH zB}aaQjy>_r7%$0)&y(slPJin8W)kh$UYyDPsEsO-QTjF&PFJ9MfF%T_&&m{W7=C67 zGdk3{!iD#h*1p8~HTk~p#Hfhf<$T&^eC<%sOX;BxH#u8q3Adxsr|zy@@XsXQieq-2 z-y@fy`9X2SC3~K5{7O?MvDUhdn`A9a*GuvI3yb)Up>Nk87Z5n0&;038BV>{W)?R`K( zE>o6vY?O%x5!A;IfF@&iB~|3S6QB1Z23#IIs`hH*qA!vh9KcoenU=A$P(b~S>Mg9} zT%_>+&N8ura+Yt`58<~buHVQnv@5bv|M@^aMU>}1ANt3U`)>byRG+&DsLekg z-q#`Z`JaCP3V>%Y5C3}nI0<&~Uyo*b#JlW4E35ZAQ7# zLHv>2viz~!Z1`t_3k}y#75I*yE$}fq``0rHO%hnx9bAswcmBsi|3g#_LZ9=W$N%*a z{;y9tgWdj~2jr87l+)mbt^XY1p#T{{2&<}3UZW-*f;4crOl;+0UZ~YSGSUO&NI*%$ zU=#?y6M?T3N#zE<0*}JEVq2h%$R4rcMQ+-_E9-?Kfg}7OQ;M{<*=n)_0|Q!mddK(U zO1<{0fTpEkYv1HpOG)q~wBSHb1;)Ybg* zHLI@*V@T{h!tB_|Wvk2Zdr>7L6XfD(Oun6O1US}La|RhDumqDn!D#5*&2a;BBp#8IIhh1 zr>D(Na*^J=V$pEleg4?kh>I9=%hv+yUax`eYx56Srl$LNkQsbO5ZICAVYbRoIhMh^ zs=*xT?J3v4C?`nJb1l6`ua2xO1e(~~JBErnjEKlJsMO%#ei=AbNEm|ZDHvg1XE%L{ zD|6V`*n}30?tZ*17YrZBKEJp4$2I;41a*8`+eCNwxCq;{?fs%GZ{6ASPf0Q*J% zauu37%$eQR#s(+~F)(JJZPC)w3S|VEuh@a!k&#!72*<;eO+%>*Z_uo*o5&N7whU817g5*O18R7es-~W-3-(?f@wa{ zj}c1-(gB2W1P=IxY`}G;bA>u&I9~Ct`>3E`C3yHcdfA* z25~p9-)c=k7W_D=zEa@!4Yn!qW5jvBcia`;>WvHYkt>LbFt7FpXdKx3Yx`X_sW^O+ zK%W;x(2D(=*2eBy0T%e{*dqApCg*CLgXWxrNiDI9;RH8s+z_&*#9pe6Z8`Y(YKu`R zkh@i4VI;^d<>Te$)P40}dH(F=$XX`#+V$`UEAy{A$6x-|n7v9^yEtpSXuAZ&7 z{l>-|wi*Z}toO}nij+@Dd)9Qg^|X4^IqssgeHfKkS9)@qbVQk3rjEQVM|!vX4m-ha z)Snkcu}$NU8KrLrv_QeZ!5@l?Qz2vGgz!fEl=Z+ZeqBcgTD0|;QB_>J{+Klt{WGzF zp&`}8b{09mN1Ht9UIR~Y`z;#wTWqH%K{bm#=ONeHbrm^*F`^gD>%Ro@4y_pdd*Pa! znq)8x$^*BivVly?VjB{lKv>`=dItPxWzPbMOZV1R8A3l@#o7C4`Pi535$}5Va!9seHx+ z8{Sz^7SZ?3XHw9FsM}4P{Dz>6gsgjjX=|$GJaoVU3@z|c0U-~ND8k*p9w1bKh3;t= zZVM5kwO#mjNT&xf`i>tz{+~YF!}Z}A>9+Gv zN-#9u59pcc@(wkVj1f^CG9;ob4w(^WfAj!u-rY+BIc@_Ey^Tt>ObS}e1n@n9#-ofh z$7pI2Er7$~q;rm-^38|w1(<@HmNd(jKoSXx3{1L5F}KA&=A-kq+jtLariVF7_zi*iWP0j7ai zsqdc>V}KKkWc#2ici^~no3a+Frx1(Hfqe^Aa&mt0^7GxC-M8IVJ+^(W={of=OYoHE z@AK3seoDh7(Bu^tV!eTM%Ue^Noxb)uHOh_xv7YB(vcTXR4{@tRy>ytlo%(Qby2m+A zl#72DePU<2ZFP0EYT)}m)P5a#sNW$6#=yxO^8yW`Q4y3tVsDpG;w2lh9>129whvq?xTK8&d5 z_<)A3El7Ts$^eWU6eE0Lj zvi0ePfv`&ogu~1~dVpCjshx0}2^ui%^cu)9!Y%zbTf|=9JcybSZ{{>4ijt}$x6=h% z*F_30kLe#mMJ z)J-KbJF{MXzSdy-9qV=cntRo|2x5Hy3?>K$L%MiKhceH1Z=hj)#4ZBQAdWhes<}*z%wSDN)I_0og{9~kjsugZYQ?4;rAps5!+=N7KK`% z<15w<-^%PN>t2gGQ7bq+hPo@#V6@GKV7t&Qw`{B7nBKguEn3u8KI3i;EE7KQqr!IH;)bqdJ%5^?SRsS*$JK~$Hb%( z$g#oNO5x}Edj|6;;_DEaKp60^4y*%(wTx0LC7aS2@7af9r(VedUtoV<-%Kgp0wp_e zxC+?@Z1T*HXKQ7jk=h4egKd>dFE0IHTaI(tJ5LB>L>})94Cmnetq^Jc*z!@Z6QHgf zF5-u-evJrmzR@huF{fI@Bjf?TL6m7PgkwPc6~U>N#EzoC#5j8%8UdC^mP?hUI=3l3W@qBCTJmr)*WGf>Yhur3G+Cyx|vr-_r1zJKj zOx6c2j%(CG?4b+F&xn+A+{btau@KP?vJ<(=}h<)IcT-iP`M zPe#V$Pye`uo%-=`v1nJ0j}hkQQtie7ZTYOd5Z({twP;vIZ+~*3t}cN|%EIYYL4rhH z3uKb)&WAk|JW+r_wqK%YR^h|Jw?I?)4Ic;m-uV7KKIfD$C`CwYJ`rMB_~wp+0@o0t z^dUqAuHETP!(`YIz$_(j{W_A634UBpKqRpD!e)99hfNbv;&tVs-SutcYZ-R|l?SZD zpsScn7?x*Ox01I@9!v$pGB+%TpItBA%->VVR0UsnzG>lhO!U-8^nQ`-E?o~k&XNBU z3^G!!JE^t!QJwzd)Yg00RAq^PZj1#B1rp$iXnthTn{!d#k8beu=Z4l`gMxyp`ulo& zSw1i{3PS@m*1*UoP&6|&VzLWS2n3`n9X)pL?&tcm)G}YK(S@1CG!%^3^fqW$>J^7t z0coql5L5`r4FS5o*!~7%s`b3VpAfpXNfl}>WQy2hL7yUFz_0ZZTD-sZm;Zfu(f8a` z%?$6)IW9vYsw8{5)&)>Plt?5FmQMAr&az)7LA4eCA$nB$@ppQwfk7pNRCumqAYN8i z;=STvVlr8ycoT@0{2IFMt=6291IXdR72l+=Pe{O1aDv*Z84&GoiYIv_K>|8I-VJ|GTz4!>-`0K-D5I9E-T9ScUT0d z7ct6P7zld7!9$p7Re-}cvr7p$uLo?g+2GSzTUnu-hz?$TKAsJc3q+GaQVjEndO65^ zLoJ_Rh@c6V4N=kv>-F#Nj}Wa3HYHcFB_^7i6DQPwM+)M+O94<<0T7-=0#fRVxIAdN z{|fVk+B@NJr~mv4r2XFm4FA{RwEqm_|5Hfye=kPYkUVZ;>Vq}JpWume{QnD1tmHCy9(fm`iKV41&=@Xg=;ib@v_-cg{1f1O-G~$c zI!=%~qiNhNLR46Y2Kc7%3H{--mf7c>F2O&&Jt35bs7)pmlsb63^@E9x9ag-xU%e9( z8Gx)ju=Ezv1}YHzn1E9_1pfz#G8OJTANK6U`dOTdQTN0u}(AyB3a) zs;jPVU;eJ#5hyDuw3##1_rvjy4kI?C}YXggMc_pYW1i^xV89*rjaP_V{^1_YY6on@%j>6!! zb#oLTEO}O-$hDC9f(XQc9ozC1f2{CV536@@0;c~2aSfus)?5*ZXmbS0`>wgwntagm z5awDIlj6R<{xM!snt_cOjtfjbqge@cx}h?`UUmNw+&dB_@i*mvAh~Zqk2(Pc!KiO` zcDA}7>$UIMkZ%)#ySWKmn|QWk)N&9acHU>N%x4fx(NE*f|Es~p!hPLeFSc8+cou4@ zW~c}R|Er|_l;NE~r6vKB4Imty; z2l7J1^AAah@ zoB#Z}V}QX!EbeF0b;X8HR>Tur3#QBEipy&Qwg5D$0%RdKgFe9K7bHFGK?tf{0 zCcYQs|L6r10%yUxG$_Q8L+I5Lo1X&w*H8(ABk(;$4G6t@ioka+Y1pk$u(JaY|ExmF zI}{(Ps@?-VG$@KVZ6eW7fWnAXPXp9M!iW6s0+ik=M1sUInM4iNzO zXl%CXNCAZ%D7Xi%X^;91&;Cn5m4ly^LwUZVf256?+m9PG!09HfTn5ol3d_AXsWeL1WPS~>8%yuwkK;ZtM51-@izi2eU%Xy$ zXdCiDy~`GZQ-&0&z?Z!MRaG0#i!%3B2z9hC8qIzTBOCuezzJDPjP~Pk`5v^H3_RxudhQ^V^^D*SyG$mHKffw)!Xk z>qon+cyCCBV$6J9!HWdM&Y%xUkPY4ulW4Aza*vX<}?p*V;DoaeuQ z@aA;=_)rEU&!YWj>%wp1XAtQ`W2FO3+|EyqJZU&)4`D;=91bNTg!mIc;QoI+DGSDfy>gsX9TKO98m8h_Wdt_#M$!K3zfAF#JW-V0zyUw+QBwFZ_=DTw*#GWJ%Hdhn;^-r< z4rd`pH()4`C@ks3c&G3}hs!s#yf#j8d2dRx8W0>~*h z6oM=5B0x&X0K^O0G*?%Ip$pu&GBqOpoNVaed9bCUwNKTDdl)SM!yO!)*Z7ISTLW+4S=Y;yu8F;c7mP-1(AZ8)6LB3p;$)_m{VDa!FGW&piUgGo~eq=mme_^AWb0t zixC5W3jloHQaFHcm2-ORM}JNEIfCVqMl1@%rLEhz-pC!n8R?MNtR#_RT-wff{yrB7T&<;VD_X3*3xcC-_IhVCrs8;$!dkJIDUpKOH zaxhx-@oJetX?(bkAfWbH{C;O_)UaGAx$*C>LP-T&4*d6@{(qj=e@xT=gO{KFUy!_i d&Cu39L8p`s=g(Vrw~)U}OWu)qFRt(Ne*g`;Jg)!% literal 0 HcmV?d00001 diff --git a/docs/tex/recon/main.tex b/docs/tex/recon/main.tex index 7d623764f..fd717c461 100644 --- a/docs/tex/recon/main.tex +++ b/docs/tex/recon/main.tex @@ -8,6 +8,7 @@ \usepackage{graphicx} \usepackage{float} \usepackage{amsmath, amssymb} +\usepackage{array} \usepackage{hyperref} \usepackage{cancel} \usepackage{color} @@ -1368,16 +1369,6 @@ \subsection{Reconstruction v1: real-space reconstruction on the $(\psi,\theta)$ \end{aligned} \end{equation} -\begin{figure}[t] - \centering - \includegraphics[width=0.62\linewidth]{C_eulerian_lagrangian_n1.png} - \caption{Effective field $\vec C$ on two flux surfaces ($\psi=0.45,\,0.82$) in the - (a)~Eulerian and (b)~Lagrangian frames: equilibrium current $\vec j$ (blue) and its - apparent normal component (red). DIII-D \#147131 at $2300$~ms; $n=1$, displacement - exaggerated.} - \label{fig:C_frame} -\end{figure} - \paragraph{Verification: $\vec C$ as an effective field and the $\nabla\times\vec C$ check.} The reconstruction is closed by a self-consistency test of the condition $(\nabla\times\vec C)\cdot\nabla\psi=0$, which holds on every flux surface and admits both a @@ -1399,12 +1390,10 @@ \subsection{Reconstruction v1: real-space reconstruction on the $(\psi,\theta)$ so the reconstruction condition states exactly that this effective current is tangent to the flux surface, $(\nabla\times\vec C)\cdot\nabla\psi=0\Leftrightarrow\vec j_{\mathrm{eff}}\cdot\nabla\psi=0$. In the equilibrium the current lies in flux surfaces, $\vec j\cdot\nabla\psi=0$. Under an ideal-MHD displacement the flux -is frozen into the fluid, so each surface is convected to the perturbed label -$\Psi=\psi-\vec\xi\cdot\nabla\psi$; followed along this displaced surface (the Lagrangian -description) the perturbed current keeps no component through it. Referred instead to the -unperturbed normal $\hat n=\nabla\psi/|\nabla\psi|$ at a fixed point---the Eulerian -description natural to DCON's fixed control surface---the convected equilibrium current -acquires an \emph{apparent} normal component; with $\vec Q=\delta\vec B$, +is frozen into the fluid, so the equilibrium current is convected with the displaced surface +$\Psi=\psi-\vec\xi\cdot\nabla\psi$ (the Lagrangian picture) and keeps no component through it. +Referred instead to the \emph{fixed} (Eulerian) surface $\psi$ that DCON uses, this convected +current acquires an \emph{apparent} normal component; with $\vec Q=\delta\vec B$, \begin{equation} \frac{1}{\mu_0}(\nabla\times\vec Q)\cdot\nabla\psi =\nabla\cdot\!\big[(\vec\xi\cdot\nabla\psi)\,\vec j\big] @@ -1416,21 +1405,56 @@ \subsection{Reconstruction v1: real-space reconstruction on the $(\psi,\theta)$ triple product $(\vec j\times\hat n)\times\hat n=(\vec j\cdot\hat n)\hat n-\vec j=-\vec j$ (because $\vec j\cdot\hat n=0$), giving $\nabla\cdot[(\vec\xi\cdot\nabla\psi)\vec j]=-\nabla\psi\cdot\nabla\times[\xi_n(\vec j\times\hat n)]$. -This apparent normal component is an artifact of measuring a displaced surface against its -original normal. The cross term -$\xi_n(\mu_0\vec j\times\hat n)$ in the definition of $\vec C$ is exactly this convective -(Lagrangian$\leftrightarrow$Eulerian) contribution and cancels it, +This apparent normal is a frame effect---the frozen current viewed against the unperturbed +surface. The cross term $\xi_n(\mu_0\vec j\times\hat n)$ in the definition of $\vec C$ is +exactly this convective (Lagrangian$\leftrightarrow$Eulerian) contribution and cancels it, \begin{equation} (\nabla\times\vec C)\cdot\nabla\psi =(\nabla\times\vec Q)\cdot\nabla\psi +\mu_0\,\nabla\psi\cdot\nabla\times\!\big[\xi_n(\vec j\times\hat n)\big]=0. \end{equation} -Hence $\vec C$ is an \emph{effective perturbed magnetic field}---the Eulerian field -$\vec Q$ corrected onto the displaced surface, not the perturbed flux $\Psi$ itself---whose -curl is the genuine surface current (Fig.~\ref{fig:C_frame}); where $\vec j=0$ (e.g.\ outside the plasma) the +Hence $\vec C$ is an \emph{effective perturbed magnetic field}---$\vec Q$ with the +frozen-current artifact removed, so that its curl is a genuine surface current on the +\emph{fixed} (Eulerian) flux surface (Fig.~\ref{fig:C_frame}); where $\vec j=0$ (e.g.\ outside the plasma) the correction drops and $\vec C=\vec Q$. (See Boozer~\cite{RevModPhys.76.1071}; Park~\cite{Park2009Ideal}, \S2.2.) +Table~\ref{tab:QvsC} contrasts the bare perturbed field with the effective field. + +\begin{figure} + \centering + \includegraphics[width=0.8\linewidth]{QvsC_quant_n1.png} + \caption{Quantitative check of $(\nabla\times\vec C)\cdot\nabla\psi=0$ on the actual run + (DIII-D \#147131, $n=1$). The real normal effective-current density + $(\nabla\times\,\cdot\,)\cdot\nabla\psi$ (at $\phi=0$) on the equilibrium flux grid for + (a)~the bare perturbed field $\vec Q=\delta\vec B$ and (b)~the effective field + $\vec C=\vec Q+\vec V$, \emph{both in the fixed (Eulerian) frame}. $\vec Q$'s effective + current pierces the flux surface (RMS $=2.1\times10^{-3}$) while $\vec C$'s is tangent to + numerical roundoff (RMS $=2.1\times10^{-12}$). Computed spectrally from the code's + covariant field components ($Q_i,C_i$) and validated against the \texttt{C verify} diagnostic; the + near-axis speckle is a $1/|\nabla\psi|$ reconstruction artifact.} + \label{fig:C_frame} +\end{figure} + +\begin{table}[ht] +\centering +\renewcommand{\arraystretch}{1.3} +\begin{tabular}{l >{\raggedright\arraybackslash}p{0.32\linewidth} >{\raggedright\arraybackslash}p{0.38\linewidth}} +\hline\hline + & $\vec Q=\delta\vec B$ & $\vec C=\vec Q+\vec V$ \\ +\hline +Name & perturbed field (Eulerian $\delta\vec B$) & effective perturbed field ($\delta\vec B+\text{correction}$) \\ +Normal field (flux) & $b_n$ & $b_n$\quad\emph{(identical)} \\ +$\nabla\times$ on fixed $\psi$ & not tangent --- apparent normal current & tangent: $(\nabla\times\vec C)\cdot\nabla\psi=0$ \\ +\hline\hline +\end{tabular} +\caption{The bare perturbed field $\vec Q=\delta\vec B$ versus the effective perturbed +field $\vec C=\vec Q+\vec V$. Both carry the \emph{same} normal field (flux) $b_n$ and differ +only in their tangential (surface-current) part, so that only $\nabla\times\vec C$ is tangent +to the fixed flux surface ($\vec j_{\mathrm{eff}}\cdot\nabla\psi=0$).} +\label{tab:QvsC} +\end{table} + The code's \texttt{C verify} check tests this condition on the reconstructed components through its flux-coordinate form \begin{equation} diff --git a/gpec/gpout.f b/gpec/gpout.f index 272c1570c..13445bb50 100644 --- a/gpec/gpout.f +++ b/gpec/gpout.f @@ -6882,7 +6882,7 @@ SUBROUTINE gpout_recon(mode, xspmn) INTEGER :: ipsi, itheta, ipert, ushear_fun, ucurv, uk, ucveri, $ uk_sigma, ucw_fun, ucw_mn, ucv_fun, ucv_mn, ucv2_fun, - $ ucv2_mn, u_int, u_log, u_terms + $ ucv2_mn, uqv_mn, u_int, u_log, u_terms REAL(r8), DIMENSION(0:mthsurf) :: epf_den_fun, epf_p_fun, $ epf_t_fun, epf_z_fun, dst1_den_fun, dst2_den_fun, $ dst3_den_fun @@ -6895,6 +6895,7 @@ SUBROUTINE gpout_recon(mode, xspmn) COMPLEX(r8), DIMENSION(0:mthsurf) :: shear_fun, curv_fun, K_fun, $ cveri_fun COMPLEX(r8), DIMENSION(0:mthsurf,3) :: cw_fun, cv_fun, cv2_fun + COMPLEX(r8), DIMENSION(mpert) :: qvp_mn, qvt_mn, qvz_mn REAL(r8), DIMENSION(0:mthsurf) :: K_term1, K_term2, K_term3 REAL(r8), DIMENSION(0:mthsurf) :: sigma_vals, jdotb_vals CHARACTER(8) :: smode @@ -6902,6 +6903,7 @@ SUBROUTINE gpout_recon(mode, xspmn) CHARACTER(128) :: k_file, k_sigma_file CHARACTER(128) :: cw_fun_file, cw_mn_file, cv_fun_file, cv_mn_file CHARACTER(128) :: cv2_fun_file, cv2_mn_file, int_file, terms_file + CHARACTER(128) :: qv_mn_file REAL(r8) :: dpsi_local INTEGER :: istep, nint_pts, iint, ep_index REAL(r8) :: psi_prev, psi_curr, epf_prev, epf_curr, ep_selected @@ -6961,6 +6963,7 @@ SUBROUTINE gpout_recon(mode, xspmn) cv_mn_file = "gpec_recon_cvmn_sol"//TRIM(smode)//".out" cv2_fun_file = "gpec_recon_cv2fun_sol"//TRIM(smode)//".out" cv2_mn_file = "gpec_recon_cv2mn_sol"//TRIM(smode)//".out" + qv_mn_file = "gpec_recon_qvmn_sol"//TRIM(smode)//".out" int_file = "gpec_recon_integration_sol"//TRIM(smode)//".out" terms_file = "gpec_recon_terms_sol"//TRIM(smode)//".out" @@ -6978,6 +6981,7 @@ SUBROUTINE gpout_recon(mode, xspmn) u_int = 92 u_log = 93 u_terms = 94 + uqv_mn = 95 IF (recon_out) THEN OPEN(UNIT=ushear_fun, FILE=shear_fun_file, STATUS="UNKNOWN") @@ -6993,6 +6997,7 @@ SUBROUTINE gpout_recon(mode, xspmn) CALL ascii_open(ucv_mn, cv_mn_file, "UNKNOWN") CALL ascii_open(ucv2_fun, cv2_fun_file, "UNKNOWN") CALL ascii_open(ucv2_mn, cv2_mn_file, "UNKNOWN") + CALL ascii_open(uqv_mn, qv_mn_file, "UNKNOWN") OPEN(UNIT=u_int, FILE=int_file, STATUS="UNKNOWN") OPEN(UNIT=u_terms, FILE=terms_file, STATUS="UNKNOWN") WRITE(ushear_fun,'(6(1x,a16))') @@ -7025,6 +7030,9 @@ SUBROUTINE gpout_recon(mode, xspmn) WRITE(ucv2_mn,'(8(1x,a16))') $ "psi","m","cv2p_re","cv2p_im","cv2t_re","cv2t_im", $ "cv2z_re","cv2z_im" + WRITE(uqv_mn,'(8(1x,a16))') + $ "psi","m","qvp_re","qvp_im","qvt_re","qvt_im", + $ "qvz_re","qvz_im" WRITE(u_int,'(15(1x,a16))') $ "psi","c2_mu0","k_xin2_re","k_xin2_im", $ "c2_mu0_sum","k_xin2_c_re","k_xin2_c_im", @@ -7064,6 +7072,18 @@ SUBROUTINE gpout_recon(mode, xspmn) $ epf_p_fun=epf_p_fun, epf_t_fun=epf_t_fun, $ epf_z_fun=epf_z_fun) +c Capture covariant bare-Q components (Q_i) set by gpeq_cova +c inside gpeq_epf, before gpeq_K/gpeq_dst run. These are the +c genuine perturbed-field covariant components delta-B_i; the +c effective field is cvmn = C_i = Q_i + V_i. Writing qvmn lets +c (curl Q).grad(psi) be formed from covariant components, the +c same way cveri forms (curl C).grad(psi) from cvmn. + IF (recon_out) THEN + qvp_mn = bvp_mn + qvt_mn = bvt_mn + qvz_mn = bvz_mn + ENDIF + c Reconstruct detailed K diagnostics for output. Keep this on c the original path so recon terminal totals remain unchanged. CALL gpeq_K(psi, K_fun, K_term1, K_term2, K_term3, @@ -7172,6 +7192,9 @@ SUBROUTINE gpout_recon(mode, xspmn) WRITE(ucv2_mn,'(1x,es17.8e3,1x,I8,6(es17.8e3))') psi, $ mfac(ipert), c2vp_mn(ipert), c2vt_mn(ipert), $ c2vz_mn(ipert) + WRITE(uqv_mn,'(1x,es17.8e3,1x,I8,6(es17.8e3))') psi, + $ mfac(ipert), qvp_mn(ipert), qvt_mn(ipert), + $ qvz_mn(ipert) ENDDO WRITE(ucw_fun,*) WRITE(ucw_mn,*) @@ -7179,6 +7202,7 @@ SUBROUTINE gpout_recon(mode, xspmn) WRITE(ucv_mn,*) WRITE(ucv2_fun,*) WRITE(ucv2_mn,*) + WRITE(uqv_mn,*) ENDIF ENDDO @@ -7458,6 +7482,7 @@ SUBROUTINE gpout_recon(mode, xspmn) CALL ascii_close(ucv_mn) CALL ascii_close(ucv2_fun) CALL ascii_close(ucv2_mn) + CALL ascii_close(uqv_mn) ENDIF c----------------------------------------------------------------------- c terminate. From 182660899773abd6fa0ab9d4d5f3263ac8d6dd84 Mon Sep 17 00:00:00 2001 From: satelite2517 Date: Fri, 19 Jun 2026 16:48:59 +0900 Subject: [PATCH 39/62] GPEC - recon: remove unused xi injection input flags (xi_flag, xifile) The xi_flag/xifile namelist entries + declarations were WIP and never wired up (idcon_inject_wt was never called). Removed from gpec.f, gpglobal.F, and input/gpec.in to avoid future conflicts. Co-Authored-By: Claude Opus 4.8 (cherry picked from commit 602eba2c1223a1445f41018bc020d24e5d869dbf) --- gpec/gpec.f | 5 +---- gpec/gpglobal.F | 5 ++--- input/gpec.in | 2 -- 3 files changed, 3 insertions(+), 9 deletions(-) diff --git a/gpec/gpec.f b/gpec/gpec.f index b8b015363..59e81505c 100644 --- a/gpec/gpec.f +++ b/gpec/gpec.f @@ -72,7 +72,7 @@ PROGRAM gpec_main $ netcdf_flag,ascii_flag,singthresh_flag, $ singthresh_callen_flag,singthresh_slayer_flag, $ singthresh_slayer_inpr,out_ahg2msc,recon_flag,recon_int, - $ cveri_flag,recon_out,recon_flag2,recon_flag3,xi_flag,xifile + $ cveri_flag,recon_out,recon_flag2,recon_flag3 NAMELIST/gpec_diagnose/singcurs_flag,xbcontra_flag, $ xbnobo_flag,d3_flag,div_flag,xbst_flag,jacfac_flag, $ pmodbmn_flag,rzphibx_flag,radvar_flag,eigen_flag,magpot_flag, @@ -91,7 +91,6 @@ PROGRAM gpec_main dcon_dir="" ieqfile="psi_in.bin" idconfile="euler.bin" - xifile="" ivacuumfile="DEPRECATED" rdconfile="globalsol.bin" power_flag=.TRUE. @@ -200,7 +199,6 @@ PROGRAM gpec_main recon_flag=.FALSE. recon_flag2=.FALSE. recon_flag3=.FALSE. - xi_flag=.FALSE. recon_int="spline" cveri_flag=.FALSE. recon_out=.TRUE. @@ -312,7 +310,6 @@ PROGRAM gpec_main CALL setahgdir(dcon_dir) idconfile = TRIM(dcon_dir)//"/"//TRIM(idconfile) ieqfile = TRIM(dcon_dir)//"/"//TRIM(ieqfile) - IF (xifile /= "") xifile = TRIM(dcon_dir)//"/"//TRIM(xifile) ivacuumfile = TRIM(dcon_dir)//"/"//TRIM(ivacuumfile) rdconfile = TRIM(dcon_dir)//"/"//TRIM(rdconfile) ENDIF diff --git a/gpec/gpglobal.F b/gpec/gpglobal.F index 9c21a82a3..2a8f4bb7e 100644 --- a/gpec/gpglobal.F +++ b/gpec/gpglobal.F @@ -19,8 +19,7 @@ MODULE gpglobal_mod $ chebyshev_flag,coil_flag,eigm_flag,bwp_pest_flag,verbose, $ debug_flag,timeit,kin_flag,con_flag,resp_induct_flag, $ netcdf_flag,ascii_flag,wv_farwall_flag,mutual_test_flag, - $ cveri_flag,recon_out,recon_flag2,recon_flag3, - $ xi_flag + $ cveri_flag,recon_out,recon_flag2,recon_flag3 INTEGER :: mr,mz,mpsi,mstep,mpert,mband,mtheta,mthvac,mthsurf, $ mfix,mhigh,mlow,msing,nfm2,nths,nths2,lmpert,lmlow,lmhigh, @@ -42,7 +41,7 @@ MODULE gpglobal_mod CHARACTER(10) :: date,time,zone CHARACTER(16) :: jac_type,jac_in,jac_out,data_type,recon_int CHARACTER(128) :: ieqfile,idconfile,ivacuumfile,rdconfile - CHARACTER(128) :: dcon_dir,xifile + CHARACTER(128) :: dcon_dir INTEGER, PARAMETER :: hmnum=128 REAL(r8), PARAMETER :: gauss=0.0001 diff --git a/input/gpec.in b/input/gpec.in index e0c82d28f..6e5b0edff 100644 --- a/input/gpec.in +++ b/input/gpec.in @@ -88,8 +88,6 @@ recon_flag=f ! Calculate each contribution of destabilizing term and effective perturbed field [Bernstein, Handbook of Plasma Physics, 1983]. recon_flag2=f ! Calculate the first-form plasma energy terms from Eq. (36) with the gamma|div xi|^2 term omitted. - xi_flag=f ! Under recon workflows, reserve an external xi source file instead of using the default perturbation source. - xifile="" ! Optional external xi file path used when xi_flag is true.(file format should be same with euler.bin) cveri_flag=f ! Under recon_flag, verify (curl C).grad(psi-)=0 and write gpec_recon_cveri_sol*.out. recon_out=t ! Under recon_flag, write recon diagnostic files and gpec.log entries. If false, keep terminal summary only. recon_int="spline" ! recon_flag radial integration on psifac grid. Options: "spline" or "trapezoid". From 192f7589677cdc24e968e092641df8d47f519f8a Mon Sep 17 00:00:00 2001 From: gpec-deps-bot Date: Thu, 25 Jun 2026 03:06:36 +0000 Subject: [PATCH 40/62] INSTALL - MINOR - regenerate install/DEPENDENCIES.inc (cherry picked from commit ae5b8692030229a291bad4bf79663a9d5f656364) --- install/DEPENDENCIES.inc | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/install/DEPENDENCIES.inc b/install/DEPENDENCIES.inc index a7c0d3f46..d842459fa 100644 --- a/install/DEPENDENCIES.inc +++ b/install/DEPENDENCIES.inc @@ -197,7 +197,7 @@ ../gpec/gpec.o: ../coil/coil.o ../gpec/gpdiag.o ../gpec/gpout.o ../gpec/rdcon.o ../gpec/gpeq.o: ../gpec/idcon.o ../gpec/gpglobal.o: ../equil/bicube.o ../equil/fspline.o ../equil/local.o -../gpec/gpout.o: ../coil/field.o ../gpec/gpdiag.o ../gpec/gpresp.o ../gpec/gpvacuum.o ../gpec/idcon.o ../gpec/version.inc ../pentrc/inputs.o ../pentrc/pentrc_interface.o ../pentrc/utilities.o ../slayer/gslayer.o +../gpec/gpout.o: ../coil/field.o ../gpec/gpdiag.o ../gpec/gpglobal.o ../gpec/gpresp.o ../gpec/gpvacuum.o ../gpec/idcon.o ../gpec/version.inc ../pentrc/inputs.o ../pentrc/pentrc_interface.o ../pentrc/utilities.o ../slayer/gslayer.o ../gpec/gpresp.o: ../gpec/gpeq.o ../gpec/gpvacuum.o: ../gpec/gpeq.o ../vacuum/vacuum_ma.o ../gpec/idcon.o: ../equil/equil.o ../gpec/gpglobal.o ../gpec/ismath.o ../vacuum/vacuum_ma.o From 3b14c8a8644ea6512812ff0e4b4bfc8978977377 Mon Sep 17 00:00:00 2001 From: satelite2517 Date: Mon, 20 Jul 2026 14:18:46 +0900 Subject: [PATCH 41/62] GPEC - recon: review fixes for gpeq/gpout recon routines - remove unused gpout_shear/curvature/k bicube globals (allocated but never bicube_alloc'd, filled, read, or deallocated) and the banner text claiming bicube storage - gpout_recon3 banner: B is computed independently from the equilibrium current, not derived as epf - A - Cpar - Iperp; identity_res is a genuine check (verified ~ -3e-10 on solovev) - state that the Cpar = dst2 cross-check is not performed in-code - move ep_index range checks to the top of recon2/3 (fail fast, matching gpout_recon); totals verified bit-identical - document the psifac lower-bound handling difference between gpout_recon (clamp) and recon2/3 (skip) - delete two dead declaration blocks (C-comparison diagnostics, unused *_cum accumulators) - gpeq_c: comments said contravariant components are extracted by dividing by the Jacobian; no such division exists - the routine carries J Q^i / J C^i throughout (Jacobian-weighted convention) - gpeq_cova header: metric%cs stores g_ij/J, so outputs are plain covariant, not Jacobian-weighted - gpeq_cveri <-> gpout_recon inline copy cross-referenced - fix wrong debug trace name in gpeq_c and gpeq_K exit message Co-Authored-By: Claude Opus 4.8 (cherry picked from commit 3255c2f402f6afb8866e3d73aa9310099f8c0e56) (cherry picked from commit 143bdaa1fd93b24dbdaf769eeea52711c92a73a4) --- docs/examples/DIIID_ideal_example/gpec.in | 2 +- gpec/gpeq.f | 64 ++++++++----------- gpec/gpglobal.F | 3 - gpec/gpout.f | 76 ++++++++++------------- 4 files changed, 60 insertions(+), 85 deletions(-) diff --git a/docs/examples/DIIID_ideal_example/gpec.in b/docs/examples/DIIID_ideal_example/gpec.in index abeb532bb..ece94a5c4 100644 --- a/docs/examples/DIIID_ideal_example/gpec.in +++ b/docs/examples/DIIID_ideal_example/gpec.in @@ -87,4 +87,4 @@ &GPEC_DIAGNOSE timeit=t ! Print timer splits for major subroutines radvar_flag=f ! Map various radial variables (rho,psi_tor) on psi_n grid -/ \ No newline at end of file +/ diff --git a/gpec/gpeq.f b/gpec/gpeq.f index d846b9a8d..068ca5704 100644 --- a/gpec/gpeq.f +++ b/gpec/gpeq.f @@ -19,7 +19,7 @@ c 11. gpeq_shear (reconstruction: magnetic shear) c 12. gpeq_curvature (reconstruction: curvature) c 13. gpeq_K (reconstruction: Bernstein K quantity) -c 13b. gpeq_recon3 (reconstruction: |C|^2 decomposition) +c 13b. gpeq_epfterms (reconstruction: |C|^2 decomposition) c 14. gpeq_fcoords c 15. gpeq_fcoordsout c 16. gpeq_bcoords @@ -231,8 +231,8 @@ SUBROUTINE gpeq_contra(psi) END SUBROUTINE gpeq_contra c----------------------------------------------------------------------- c subprogram 3. gpeq_cova. -c compute Jacobian-weighted covariant components from -c Jacobian-weighted contravariant components. +c compute covariant components from Jacobian-weighted ones. +c metric%cs holds g_ij/J, so the contraction cancels J. c----------------------------------------------------------------------- SUBROUTINE gpeq_cova(psi) c----------------------------------------------------------------------- @@ -685,7 +685,7 @@ SUBROUTINE gpeq_c(psi, ipsi) REAL(r8), DIMENSION(0:mthsurf) :: g_22, g_23, g_33 COMPLEX(r8), DIMENSION(-mband:mband) :: g11,g22,g33,g23,g31,g12 - IF(debug_flag) PRINT *, "Entering gpeq_epf at ipsi=", ipsi + IF(debug_flag) PRINT *, "Entering gpeq_c at ipsi=", ipsi c----------------------------------------------------------------------- c 1) Setup: equilibrium and metric at this psi. c----------------------------------------------------------------------- @@ -709,14 +709,9 @@ SUBROUTINE gpeq_c(psi, ipsi) CALL iscdftb(mfac, mpert, bvz_fun, mthsurf, bvz_mn) c----------------------------------------------------------------------- -c 4) Extract contravariant components: divide by jacobian. -c -c bwp_mn, bwt_mn, bwz_mn are complex Fourier mode coefficients -c (derived from complex eigenfunctions xsp_mn, xss_mn). -c After IFFT via iscdftb(), they remain complex-valued functions -c of theta. Dividing by real jacobian preserves complex nature. -c This is essential because perturbations are inherently complex -c functions in MHD stability analysis. +c 4) Evaluate equilibrium geometry and metric on the theta grid. +c No Jacobian division: upper family stays J-weighted (J Q^i, +c J C^i), lower family is plain covariant. c----------------------------------------------------------------------- DO itheta = 0, mthsurf CALL bicube_eval(rzphi, psi, theta(itheta), 1) @@ -885,6 +880,9 @@ END SUBROUTINE gpeq_c c c (curl C) · grad(psi) c = (d_theta C_zeta + 2*pi*i*n*C_theta)/J. +c +c Self-contained; gpout_recon inlines the same identity to reuse +c gpeq_epf's state. Keep the two in sync. c----------------------------------------------------------------------- SUBROUTINE gpeq_cveri(psi, cveri_fun) c----------------------------------------------------------------------- @@ -1085,7 +1083,7 @@ SUBROUTINE gpeq_epf(psi, epf_int, epf_p, epf_t, epf_z, REAL(r8), INTENT(OUT) :: epf_int REAL(r8), OPTIONAL, INTENT(OUT) :: epf_p, epf_t, epf_z c optional per-theta C^2/mu0 densities for R-Z heatmaps. Same -c convention as gpeq_recon3 epf_density: integral = sum den*jac/mth. +c convention as gpeq_epfterms epf_density: integral = sum den*jac/mth. REAL(r8), DIMENSION(0:mthsurf), OPTIONAL, INTENT(OUT) :: $ epf_den_fun, epf_p_fun, epf_t_fun, epf_z_fun INTEGER :: itheta @@ -1161,7 +1159,7 @@ SUBROUTINE gpeq_dst(psi, dst_int, dst_t1, dst_t2, dst_t3, COMPLEX(r8), INTENT(OUT) :: dst_int COMPLEX(r8), OPTIONAL, INTENT(OUT) :: dst_t1, dst_t2, dst_t3 c optional per-theta K_i xi_n^2 densities for R-Z heatmaps. Same -c convention as gpeq_recon3: integral = sum den*jac/mthsurf. +c convention as gpeq_epfterms: integral = sum den*jac/mthsurf. REAL(r8), DIMENSION(0:mthsurf), OPTIONAL, INTENT(OUT) :: $ dst1_den_fun, dst2_den_fun, dst3_den_fun INTEGER :: itheta @@ -1506,33 +1504,23 @@ SUBROUTINE gpeq_K(psi, K_fun, K_term1, K_term2, K_term3, IF (PRESENT(shear_out)) shear_out = shear_fun IF (PRESENT(curv_out)) curv_out = curv_fun - IF(debug_flag) PRINT *, "Exiting gpeq_K" + IF(debug_flag) PRINT *, "->Leaving gpeq_K" c----------------------------------------------------------------------- c terminate. c----------------------------------------------------------------------- RETURN END SUBROUTINE gpeq_K c----------------------------------------------------------------------- -c subprogram 13b. gpeq_recon3. -c Bernstein-form |C|^2 decomposition for recon3 diagnostic. -c Vector identity: C = Q + V with V = xi_n * mu0 * j x n_hat. -c |C|^2 = |Q|^2 + 2 Re(V*.Q) + |V|^2 -c j is purely tangent to flux surface (j.n=0), so -c |V|^2 = mu0^2 xi_n^2 |j|^2 = mu0^2 xi_n^2 (sigma^2 B^2 -c + p'^2 |grad psi|^2 / B^2). -c Returns the surface integrals (theta only, jac measure): -c A_int = int |Q|^2 / mu0 * J dtheta / mthsurf -c B_int = int 2 Re(V*.Q) / mu0 * J dtheta / mthsurf -c directly via V = C - Q (covariant pairing) -c Cpar_int = int mu0 sigma^2 B^2 xi_n^2 * J dtheta / mthsurf -c (= K_2 xi_n^2 integral; matches gpeq_dst's dst2) -c Iperp_int= int mu0 p'^2 |grad psi|^2 xi_n^2 / B^2 * -c J dtheta / mthsurf -c epf_int = int |C|^2 / mu0 * J dtheta / mthsurf -c Identity check: epf_int = A_int + B_int + Cpar_int + Iperp_int -c should hold within numerical roundoff. -c----------------------------------------------------------------------- - SUBROUTINE gpeq_recon3(psi, A_int, B_int, Iperp_int, Cpar_int, +c subprogram 13b. gpeq_epfterms. +c split the epf surface integral of gpeq_epf into terms of +c comparable magnitude, using C = Q + V, V = xi_n mu0 j x n_hat: +c A = int |Q|^2 / mu0 B = int 2 Re(V*.Q) / mu0 +c Cpar = int mu0 sigma^2 B^2 xin^2 (= gpeq_dst's dst2) +c Iperp = int mu0 p'^2 |grad psi|^2 xin^2 / B^2 +c each on the jac measure, as int (..) J dtheta / mthsurf. The +c terms satisfy epf = A + B + Cpar + Iperp to roundoff. +c----------------------------------------------------------------------- + SUBROUTINE gpeq_epfterms(psi, A_int, B_int, Iperp_int, Cpar_int, $ epf_int, A_fun, B_fun, Iperp_fun, Cpar_fun, surf_extra) REAL(r8), INTENT(IN) :: psi REAL(r8), INTENT(OUT) :: A_int, B_int, Iperp_int, Cpar_int, @@ -1567,7 +1555,7 @@ SUBROUTINE gpeq_recon3(psi, A_int, B_int, Iperp_int, Cpar_int, COMPLEX(r8), DIMENSION(0:mthsurf) :: cvp_fun, cvt_fun, cvz_fun COMPLEX(r8), DIMENSION(0:mthsurf) :: xno_fun, xwp_fun - IF(debug_flag) PRINT *, "Entering gpeq_recon3" + IF(debug_flag) PRINT *, "Entering gpeq_epfterms" c----------------------------------------------------------------------- c prepare psi-local perturbed equilibrium and C, Q. c----------------------------------------------------------------------- @@ -1751,12 +1739,12 @@ SUBROUTINE gpeq_recon3(psi, A_int, B_int, Iperp_int, Cpar_int, ENDIF ENDDO - IF(debug_flag) PRINT *, "->Leaving gpeq_recon3" + IF(debug_flag) PRINT *, "->Leaving gpeq_epfterms" c----------------------------------------------------------------------- c terminate. c----------------------------------------------------------------------- RETURN - END SUBROUTINE gpeq_recon3 + END SUBROUTINE gpeq_epfterms c----------------------------------------------------------------------- c subprogram 14. gpeq_fcoords. c transform coordinates to dcon coordinates. diff --git a/gpec/gpglobal.F b/gpec/gpglobal.F index 0c3c6cdf7..064a102ba 100644 --- a/gpec/gpglobal.F +++ b/gpec/gpglobal.F @@ -93,9 +93,6 @@ MODULE gpglobal_mod TYPE(spline_type) :: sq TYPE(bicube_type) :: psi_in,eqfun,rzphi - TYPE(bicube_type), ALLOCATABLE, TARGET :: gpout_shear - TYPE(bicube_type), ALLOCATABLE, TARGET :: gpout_curvature - TYPE(bicube_type), ALLOCATABLE, TARGET :: gpout_k TYPE(cspline_type) :: u1,u2,u3,u4,u5,bpsi TYPE(cspline_type) :: smats,tmats,xmats,ymats,zmats TYPE(fspline_type) :: metric diff --git a/gpec/gpout.f b/gpec/gpout.f index 710f26749..a812fbdc5 100644 --- a/gpec/gpout.f +++ b/gpec/gpout.f @@ -6898,9 +6898,8 @@ END SUBROUTINE gpout_close_netcdf c----------------------------------------------------------------------- c subprogram 20. gpout_recon -c main entry point for reconstruction diagnostics. -c calls gpeq functions to compute shear, curvature, K quantities -c and stores results as bicubes for visualization/analysis. +c reconstruction diagnostics: shear, curvature, K, field C and +c the integrals epf, dst giving delta-W_p. c----------------------------------------------------------------------- SUBROUTINE gpout_recon(mode, xspmn) c----------------------------------------------------------------------- @@ -6953,32 +6952,12 @@ SUBROUTINE gpout_recon(mode, xspmn) TYPE(cspline_type) :: recon_epf_spl, recon_dst_spl INTEGER :: cveri_count CHARACTER(4) :: cveri_stat - -c Diagnostic variables for C vector comparison - INTEGER :: ipsi_mid, itheta_mid, ipert_diag, m1 - REAL(r8) :: psi_mid, theta_mid, delpsi_sq, jac_mid, q_mid, - $ q1_mid, chi1_mid, f1_mid, p1_mid, j_theta_coef, j_zeta_coef - COMPLEX(r8) :: term_exp, j_cross_factor, xi_psi_val - COMPLEX(r8), DIMENSION(-mband:mband) :: g11_diag, g12_diag, - $ g22_diag, g23_diag, g31_diag, g33_diag - REAL(r8), DIMENSION(10,10) :: w - REAL(r8) :: g11_r, g22_r, g33_r, g23_r, g31_r, g12_r - + IF(verbose) WRITE(*,*)"" IF(verbose) WRITE(*,*)"GPOUT_RECON: Starting reconstruction"// $ " diagnostics" IF(verbose) WRITE(*,*)"__________________________________________" -c----------------------------------------------------------------------- -c allocate bicubes for shear, curvature, K only when the recon -c output tables are requested. -c----------------------------------------------------------------------- - IF (recon_out) THEN - ALLOCATE(gpout_shear) - ALLOCATE(gpout_curvature) - ALLOCATE(gpout_k) - ENDIF - WRITE(smode,'(I8)') mode smode = ADJUSTL(smode) shear_fun_file = "gpec_recon_shear_fun_sol"//TRIM(smode)//".out" @@ -7120,6 +7099,7 @@ SUBROUTINE gpout_recon(mode, xspmn) c Verify (curl C).grad(psi)=0 using the same psi-local C state c already prepared by gpeq_epf. This avoids rebuilding the c full equilibrium/C reconstruction a second time at each psi. +c Same identity as gpeq_cveri, inlined; keep the two in sync. IF (cveri_flag) THEN DO ipert = 1, mpert curv_mn(ipert) = twopi * ifac * mfac(ipert) @@ -7540,8 +7520,7 @@ SUBROUTINE gpout_recon2(mode, xspmn) REAL(r8) :: psi, eta, rfac, dpsi_local, q2_hr REAL(r8), DIMENSION(0:mthsurf) :: rvals, zvals COMPLEX(r8) :: jqx_hr, pdiv_hr, total_hr - COMPLEX(r8) :: jqx_cum, pdiv_cum, total_cum, dw_raw_hr, - $ dw_dcon_hr + COMPLEX(r8) :: dw_raw_hr, dw_dcon_hr COMPLEX(r8), DIMENSION(0:mthsurf) :: q2_fun, jqx_fun, pdiv_fun, $ total_fun CHARACTER(8) :: smode @@ -7578,6 +7557,13 @@ SUBROUTINE gpout_recon2(mode, xspmn) $ "pdiv_im","total_re","total_im","dw_re" ENDIF +c fail fast on an out-of-range mode selection. + ep_index = 1 + IF (mode_flag) ep_index = mode + IF (ep_index < 1 .OR. ep_index > mpert) THEN + CALL gpec_stop("gpout_recon2 selected mode is out of range") + ENDIF + CALL idcon_build(mode, xspmn) CALL gpeq_alloc @@ -7606,11 +7592,6 @@ SUBROUTINE gpout_recon2(mode, xspmn) ENDDO dcon_fac = (mu0*2.0_r8) / psio**2 / (chi1*1.0e-3_r8)**2 - ep_index = 1 - IF (mode_flag) ep_index = mode - IF (ep_index < 1 .OR. ep_index > mpert) THEN - CALL gpec_stop("gpout_recon2 selected mode is out of range") - ENDIF ep_selected = REAL(ep(ep_index)) ep_dcon = ep_selected * dcon_fac q2_hr = 0.0_r8 @@ -7618,6 +7599,8 @@ SUBROUTINE gpout_recon2(mode, xspmn) pdiv_hr = CMPLX(0.0_r8, 0.0_r8, r8) total_hr = CMPLX(0.0_r8, 0.0_r8, r8) +c integrate on psifac points inside the spline domain; points +c below rzphi%xs(0) are skipped (gpout_recon clamps instead). nint_pts = 0 DO istep = 0, mstep IF (psifac(istep) < rzphi%xs(0)) CYCLE @@ -7782,10 +7765,11 @@ END SUBROUTINE gpout_recon2 c A = int J |Q|^2 / mu0 (perturbed B energy) c Cpar = int J mu0 sigma^2 B^2 xi_n^2 (parallel current^2) c Iperp = int J mu0 p'^2 |grad psi|^2 xi_n^2 / B^2 (perp current^2) +c B = int J 2 Re(V*.Q) / mu0 (cross term) c epf = int J |C|^2 / mu0 (already in recon1) -c and derives B = epf - A - Cpar - Iperp. -c Diagnostic: Cpar should equal dst2 (K_2 xi_n^2) from recon1 -c pointwise and integrated, since both express mu0 sigma^2 B^2 xi_n^2. +c All five are computed independently (B from the equilibrium +c current, not as a remainder), so identity_res is a real check. +c Cpar should equal recon1's dst2; not compared here. c----------------------------------------------------------------------- SUBROUTINE gpout_recon3(mode, xspmn) c----------------------------------------------------------------------- @@ -7843,13 +7827,20 @@ SUBROUTINE gpout_recon3(mode, xspmn) $ "Iperp_cum","Cpar_cum","epf_cum","identity_res" ENDIF +c fail fast on an out-of-range mode selection. + ep_index = 1 + IF (mode_flag) ep_index = mode + IF (ep_index < 1 .OR. ep_index > mpert) THEN + CALL gpec_stop("gpout_recon3 selected mode is out of range") + ENDIF + CALL idcon_build(mode, xspmn) CALL gpeq_alloc DO ipsi = 0, mpsi psi = rzphi%xs(ipsi) IF (psi > psilim) EXIT - CALL gpeq_recon3(psi, A_hr, B_hr, Iperp_hr, Cpar_hr, epf_hr, + CALL gpeq_epfterms(psi, A_hr, B_hr, Iperp_hr, Cpar_hr, epf_hr, $ A_fun, B_fun, Iperp_fun, Cpar_fun, surf_extra) IF (recon_out) THEN DO itheta = 0, mthsurf @@ -7869,6 +7860,8 @@ SUBROUTINE gpout_recon3(mode, xspmn) dcon_fac = (mu0*2.0_r8) / psio**2 / (chi1*1.0e-3_r8)**2 +c integrate on psifac points inside the spline domain; points +c below rzphi%xs(0) are skipped (gpout_recon clamps instead). nint_pts = 0 DO istep = 0, mstep IF (psifac(istep) < rzphi%xs(0)) CYCLE @@ -7883,7 +7876,7 @@ SUBROUTINE gpout_recon3(mode, xspmn) psi = psifac(istep) IF (psi < rzphi%xs(0)) CYCLE IF (psi > rzphi%xs(mpsi)) EXIT - CALL gpeq_recon3(psi, A_hr, B_hr, Iperp_hr, Cpar_hr, epf_hr) + CALL gpeq_epfterms(psi, A_hr, B_hr, Iperp_hr, Cpar_hr, epf_hr) c dst1 (=K1 xi_n^2) and dst3 (=K3 xi_n^2) for the C-free dW form c 2 dW_p = A + B + Iperp - dst1 - dst3 (dst2 = Cpar cancels). CALL gpeq_dst(psi, dst_int_c, dst1_c, dst2_c, dst3_c) @@ -7903,7 +7896,8 @@ SUBROUTINE gpout_recon3(mode, xspmn) WRITE(u_int,'(a)') "c identity: epf = A + B + Cpar + Iperp" WRITE(u_int,'(a)') "c identity_res = epf - A - B - Cpar"// $ " - Iperp (should be near zero)" - WRITE(u_int,'(a)') "c Cpar should equal dst2 from recon1" + WRITE(u_int,'(a)') "c Cpar should equal dst2 from recon1"// + $ " (compare against gpec_recon_integration_sol*.out)" WRITE(u_int,'(a,a)') "c recon_int = ", TRIM(recon_int) ENDIF @@ -7981,11 +7975,6 @@ SUBROUTINE gpout_recon3(mode, xspmn) dw_raw3 = 0.5_r8 * (A_total + B_total + Iperp_total $ - dst1_total - dst3_total) dw_dcon3 = dw_raw3 * dcon_fac - ep_index = 1 - IF (mode_flag) ep_index = mode - IF (ep_index < 1 .OR. ep_index > mpert) THEN - CALL gpec_stop("gpout_recon3 selected mode is out of range") - ENDIF ep_selected = REAL(ep(ep_index)) ep_dcon = ep_selected * dcon_fac @@ -8015,7 +8004,8 @@ SUBROUTINE gpout_recon3(mode, xspmn) WRITE(*,'(a,es17.8e3)') " Iperp_total = ", Iperp_total WRITE(*,'(a,es17.8e3)') " epf_total = ", epf_total WRITE(*,'(a,es17.8e3)') " identity_res = ", identity_residual - WRITE(*,'(a)') " (identity_res should be ~ 0; Cpar = dst2.)" + WRITE(*,'(a)') " (identity_res should be ~ 0. Cpar = dst2"// + $ " from recon1, not checked here.)" WRITE(*,'(a,es17.8e3)') " dW_p(recon3) = ", dw_raw3 WRITE(*,'(a,es17.8e3)') " dW_p(recon3-normalize)= ", dw_dcon3 WRITE(*,'(a,a,a,es17.8e3)') " GPEC ep(", TRIM(smode), ") = ", From 6e2c2c249e8481b215607a33f81f7a369829ebb0 Mon Sep 17 00:00:00 2001 From: satelite2517 Date: Mon, 20 Jul 2026 14:19:02 +0900 Subject: [PATCH 42/62] GPEC - recon: document recon_flag3 in the reference input recon_flag3 drives the Bernstein |C|^2 decomposition (the recon3 diagnostic) but was missing from input/gpec.in; also note that recon_out gates recon_flag2/recon_flag3 file output as well. Co-Authored-By: Claude Opus 4.8 (cherry picked from commit cca31be7679547930599540020e542b47057bbcd) (cherry picked from commit 47e86e5c7d5a2c8cab65973a8115fcd2cef9bee1) --- input/gpec.in | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/input/gpec.in b/input/gpec.in index a5c3a5348..f06c19867 100644 --- a/input/gpec.in +++ b/input/gpec.in @@ -92,8 +92,9 @@ recon_flag=f ! Calculate each contribution of destabilizing term and effective perturbed field [Bernstein, Handbook of Plasma Physics, 1983]. recon_flag2=f ! Calculate the first-form plasma energy terms from Eq. (36) with the gamma|div xi|^2 term omitted. + recon_flag3=f ! Bernstein |C|^2 decomposition: |C|^2 = |Q|^2 + 2Re(V*.Q) + |V|^2, reported as A, B, Cpar, Iperp with the identity check epf = A+B+Cpar+Iperp. cveri_flag=f ! Under recon_flag, verify (curl C).grad(psi-)=0 and write gpec_recon_cveri_sol*.out. - recon_out=t ! Under recon_flag, write recon diagnostic files and gpec.log entries. If false, keep terminal summary only. + recon_out=t ! Under recon_flag/recon_flag2/recon_flag3, write recon diagnostic files and gpec.log entries. If false, keep terminal summary only. recon_int="spline" ! recon_flag radial integration on psifac grid. Options: "spline" or "trapezoid". ! For DCON eigenmode reconstruction set coil_flag=f, mode_flag=t, choose mode as needed, and keep reg_flag=f. / From 0e1f8750b8c3bdfb93085fb8be031f24963e1921 Mon Sep 17 00:00:00 2001 From: satelite2517 Date: Mon, 20 Jul 2026 14:19:02 +0900 Subject: [PATCH 43/62] DOCS - recon: document recon_out/recon_int/cveri_flag in main.tex Name the three GPEC_OUTPUT switches in the log-output section: recon_out (file output gate), recon_int (spline/trapezoid psi quadrature), cveri_flag (curl-C verify with PASS/WARN/SKIP against 1e-10), and label the cveri paragraph for the cross-reference. Includes the current working revision of the derivation text. Co-Authored-By: Claude Opus 4.8 (cherry picked from commit 8ad60e848273cd9bbc870be8d721cad7cdd1c4ae) (cherry picked from commit f89d399ed82155e708d54430f1f0670879a7295b) --- docs/tex/recon/main.tex | 2159 +++++++++++++++------------------------ 1 file changed, 818 insertions(+), 1341 deletions(-) diff --git a/docs/tex/recon/main.tex b/docs/tex/recon/main.tex index fd717c461..80d812db5 100644 --- a/docs/tex/recon/main.tex +++ b/docs/tex/recon/main.tex @@ -1370,6 +1370,7 @@ \subsection{Reconstruction v1: real-space reconstruction on the $(\psi,\theta)$ \end{equation} \paragraph{Verification: $\vec C$ as an effective field and the $\nabla\times\vec C$ check.} +\label{par:cveri} The reconstruction is closed by a self-consistency test of the condition $(\nabla\times\vec C)\cdot\nabla\psi=0$, which holds on every flux surface and admits both a variational and a physical reading. \emph{Variationally}, it is the Euler--Lagrange @@ -1609,24 +1610,26 @@ \subsection{Reconstruction v2: radial matrix representation of $\delta W$} Decompose the $\vec C$ term as \begin{equation} \begin{aligned} -&\mathbf X \equiv \nabla \xi_s \times \nabla \psi,\\ -&\mathbf Y \equiv (\nabla \theta \times \nabla \zeta)\, \mathcal J \, \mathbf B \cdot \nabla \xi_\psi,\\ -&\mathbf Z \equiv -\mathbf B\, \xi_\psi',\\ -&\mathbf U \equiv -\left( +&\mathbf L \equiv \nabla \xi_s \times \nabla \psi=-2\pi i\sum_m u_m e_m\,(n\vec v_2+m\vec v_3),\\ +&\mathbf M \equiv (\nabla \theta \times \nabla \zeta)\, \mathcal J \, \mathbf B \cdot \nabla \xi_\psi=2\pi i\chi'\sum_m (m-nq)v_m e_m\,\vec v_1\\ +&\mathbf N \equiv -\mathbf B\, \xi_\psi'=-\chi'\sum_m v_m' e_m\,(\vec v_2+q\vec v_3)\\ +&\mathbf O \equiv -\left( \chi'' \nabla \zeta \times \nabla \psi + (q\chi')' \nabla \psi \times \nabla \theta -\right)\xi_\psi,\\ +\right)\xi_\psi=-\sum_m v_m e_m\, +\left[\chi''\vec v_2+(q\chi')'\vec v_3\right]\\ &\mathbf V \equiv \frac{\xi_\psi}{|\nabla \psi|^2} -\, \mu_0 \mathbf j \times \nabla \psi . +\, \mu_0 \mathbf j \times \nabla \psi. \end{aligned} +\label{eq:fieldpieces} \end{equation} \noindent Define \begin{equation} -\mathbf Q \equiv \mathbf X+\mathbf Y+\mathbf Z+\mathbf U, +\mathbf Q \equiv \mathbf L+\mathbf M+\mathbf N+\mathbf O, \qquad \vec C=\mathbf Q+\mathbf V . \label{eq:CeqQplusV} @@ -1646,48 +1649,12 @@ \subsection{Reconstruction v2: radial matrix representation of $\delta W$} \Big]. \end{aligned} \end{equation} -Using \(e_m\equiv e^{2\pi i(m\theta-n\zeta)}\), the four $\mathbf Q$ pieces are -\begin{equation} -\begin{aligned} -\mathbf X -&= --2\pi i\sum_m u_m e_m\,(n\vec v_2+m\vec v_3),\\ -\mathbf Y -&= -2\pi i\chi'\sum_m (m-nq)v_m e_m\,\vec v_1,\\ -\mathbf Z -&= --\chi'\sum_m v_m' e_m\,(\vec v_2+q\vec v_3),\\ -\mathbf U -&= --\sum_m v_m e_m\, -\left[\chi''\vec v_2+(q\chi')'\vec v_3\right]. -\end{aligned} -\end{equation} -Therefore each bilinear product has a fixed matrix block: -\begin{equation} -\begin{array}{c|c|c} -\text{product} & \text{radial amplitudes} & \text{matrix block} \\ \hline -\mathbf X^*\!\cdot\mathbf X & \Xi_s^\dagger\Xi_s & \mathbf A\\ -\mathbf X^*\!\cdot\mathbf Z+\mathbf Z^*\!\cdot\mathbf X -& \Xi_s^\dagger\Xi_\psi' + \Xi_\psi^{\prime\dagger}\Xi_s & \mathbf B\\ -\mathbf X^*\!\cdot(\mathbf Y+\mathbf U+\mathbf V) -+(\mathbf Y+\mathbf U+\mathbf V)^*\!\cdot\mathbf X -& \Xi_s^\dagger\Xi_\psi + \Xi_\psi^\dagger\Xi_s & \mathbf C\\ -\mathbf Z^*\!\cdot\mathbf Z & \Xi_\psi^{\prime\dagger}\Xi_\psi' & \mathbf D\\ -\mathbf Z^*\!\cdot(\mathbf Y+\mathbf U+\mathbf V) -+(\mathbf Y+\mathbf U+\mathbf V)^*\!\cdot\mathbf Z -& \Xi_\psi^{\prime\dagger}\Xi_\psi + \Xi_\psi^\dagger\Xi_\psi' & \mathbf E\\ -\mathbf Y,\mathbf U,\mathbf V,K\ \text{pure terms} -& \Xi_\psi^\dagger\Xi_\psi & \mathbf H . -\end{array} -\end{equation} This is the actual route from the real-space Bernstein expression to the radial matrix form. The factors \(m\) and \(m-nq\) are then written as the diagonal matrices \(\mathbf M\) and \(\mathbf Q\). For instance, \begin{equation} \begin{aligned} -\int d\theta\,\mathcal J\,\mathbf X^*\cdot\mathbf X +\int d\theta\,\mathcal J\,\mathbf L^*\cdot\mathbf L &= \Xi_s^\dagger (2\pi)^2 @@ -1697,7 +1664,7 @@ \subsection{Reconstruction v2: radial matrix representation of $\delta W$} {}+n\mathbf M\mathbf G_{23} {}+\mathbf M\mathbf G_{33}\mathbf M \right]\Xi_s,\\ -\int d\theta\,\mathcal J\,\mathbf X^*\cdot\mathbf Z +\int d\theta\,\mathcal J\,\mathbf L^*\cdot\mathbf N &= \Xi_s^\dagger \left\{ @@ -1721,6 +1688,88 @@ \subsection{Reconstruction v2: radial matrix representation of $\delta W$} \end{aligned} \end{equation} +\paragraph{Blocks from \(\mathbf Q^*\cdot\mathbf Q\)} + +Applying the projection rule above to the products that do not contain \(\mathbf V\) gives the following blocks: +\begin{equation} +|\mathbf L|^2 \leadsto \Xi_s^\dagger \mathbf A \Xi_s, +\qquad +\mathbf A=(2\pi)^2\left[n^2 \mathbf G_{22}+n \mathbf G_{23}\mathbf M+n \mathbf M \mathbf G_{23}+\mathbf M \mathbf G_{33}\mathbf M\right]. +\end{equation} +\begin{equation} +\mathbf L^* \cdot \mathbf N + \mathbf N^* \cdot \mathbf L +\leadsto +\Xi_s^\dagger \mathbf B \Xi_\psi^\prime + \Xi_\psi^{\prime\dagger} \mathbf B^\dagger \Xi_s, +\qquad +\mathbf B=-2\pi i\chi' \left[n(\mathbf G_{22}+q\mathbf G_{23})+\mathbf M(\mathbf G_{23}+q\mathbf G_{33})\right]. +\end{equation} +\begin{equation} +\mathbf L^* \cdot \mathbf M + \mathbf M^* \cdot \mathbf L +\leadsto +\Xi_s^\dagger \mathbf C_1 \Xi_\psi + \Xi_\psi^\dagger \mathbf C_1^\dagger \Xi_s, +\qquad +\mathbf C_1=-(2\pi)^2\chi'(\mathbf M \mathbf G_{31}+n\mathbf G_{12})\mathbf Q. +\end{equation} +\begin{equation} +\mathbf L^* \cdot \mathbf O + \mathbf O^* \cdot \mathbf L +\leadsto +\Xi_s^\dagger \mathbf C_2 \Xi_\psi + \Xi_\psi^\dagger \mathbf C_2^\dagger \Xi_s, +\qquad +\mathbf C_2=-2\pi i \left[\chi''(n\mathbf G_{22}+\mathbf M \mathbf G_{23})+(q\chi')'(n\mathbf G_{23}+\mathbf M \mathbf G_{33})\right]. +\end{equation} +\begin{equation} +|\mathbf M|^2 \leadsto \Xi_\psi^\dagger \mathbf H_1 \Xi_\psi, +\qquad +\mathbf H_1=(2\pi\chi')^2\mathbf Q\mathbf G_{11}\mathbf Q. +\end{equation} +\begin{equation} +\mathbf M^* \cdot \mathbf N + \mathbf N^* \cdot \mathbf M +\leadsto +\Xi_\psi^{\prime\dagger}\mathbf E_1 \Xi_\psi + \Xi_\psi^\dagger \mathbf E_1^\dagger \Xi_\psi^\prime, +\qquad +\mathbf E_1=-2\pi i\chi'^2(\mathbf G_{12}+q\mathbf G_{31})\mathbf Q. +\end{equation} +\begin{equation} +\mathbf M^* \cdot \mathbf O + \mathbf O^* \cdot \mathbf M +\leadsto +\Xi_\psi^\dagger \mathbf H_2 \Xi_\psi, +\qquad +\mathbf H_2=2\pi i\chi'\left[\chi''(\mathbf M \mathbf G_{12}-\mathbf G_{12}\mathbf M)+(q\chi')'(\mathbf M \mathbf G_{31}-\mathbf G_{31}\mathbf M)\right]. +\end{equation} +\begin{equation} +|\mathbf N|^2 \leadsto \Xi_\psi^{\prime\dagger} \mathbf D \Xi_\psi^\prime, +\qquad +\mathbf D=\chi'^2\left[(\mathbf{G}_{22}+q\,\mathbf{G}_{23})+q(\mathbf{G}_{23}+q\,\mathbf{G}_{33})\right]. +\end{equation} +\begin{equation} +\mathbf N^* \cdot \mathbf O + \mathbf O^* \cdot \mathbf N +\leadsto +\Xi_\psi^{\prime\dagger}\mathbf E_2 \Xi_\psi + \Xi_\psi^\dagger \mathbf E_2^\dagger \Xi_\psi^\prime, +\qquad +\mathbf E_2=\chi'\left[\chi''(\mathbf{G}_{22}+q\,\mathbf{G}_{23})+(q\chi')'(\mathbf{G}_{23}+q\,\mathbf{G}_{33})\right]. +\end{equation} + +Finally, +\begin{equation} +|\mathbf O|^2 \leadsto \Xi_\psi^\dagger \mathbf H_3 \Xi_\psi, +\qquad +\mathbf{H}_3 += +\chi'' +\left[ +\chi''\,\mathbf{G}_{22} ++ +(q\chi')'\,\mathbf{G}_{23} +\right] ++ +(q\chi')' +\left[ +\chi''\,\mathbf{G}_{23} ++ +(q\chi')'\,\mathbf{G}_{33} +\right] +\end{equation} + \paragraph{Correction of the $\mu_0\vec j\times\nabla\psi$ decomposition} Before continuing, one algebraic correction is needed. @@ -1809,99 +1858,17 @@ \subsection{Reconstruction v2: radial matrix representation of $\delta W$} } \end{equation} -\paragraph{Blocks from \(\mathbf Q^*\cdot\mathbf Q\)} - -Applying the projection rule above to the products that do not contain \(\mathbf V\) gives the following blocks: -\begin{equation} -|\mathbf X|^2 \leadsto \Xi_s^\dagger \mathbf A \Xi_s, -\qquad -\mathbf A=(2\pi)^2\left[n^2 \mathbf G_{22}+n \mathbf G_{23}\mathbf M+n \mathbf M \mathbf G_{23}+\mathbf M \mathbf G_{33}\mathbf M\right]. -\end{equation} -\begin{equation} -\mathbf X^* \cdot \mathbf Z + \mathbf Z^* \cdot \mathbf X -\leadsto -\Xi_s^\dagger \mathbf B \Xi_\psi^\prime + \Xi_\psi^{\prime\dagger} \mathbf B^\dagger \Xi_s, -\qquad -\mathbf B=-2\pi i\chi' \left[n(\mathbf G_{22}+q\mathbf G_{23})+\mathbf M(\mathbf G_{23}+q\mathbf G_{33})\right]. -\end{equation} -\begin{equation} -\mathbf X^* \cdot \mathbf Y + \mathbf Y^* \cdot \mathbf X -\leadsto -\Xi_s^\dagger \mathbf C_1 \Xi_\psi + \Xi_\psi^\dagger \mathbf C_1^\dagger \Xi_s, -\qquad -\mathbf C_1=-(2\pi)^2\chi'(\mathbf M \mathbf G_{31}+n\mathbf G_{12})\mathbf Q. -\end{equation} -\begin{equation} -\mathbf X^* \cdot \mathbf U + \mathbf U^* \cdot \mathbf X -\leadsto -\Xi_s^\dagger \mathbf C_2 \Xi_\psi + \Xi_\psi^\dagger \mathbf C_2^\dagger \Xi_s, -\qquad -\mathbf C_2=-2\pi i \left[\chi''(n\mathbf G_{22}+\mathbf M \mathbf G_{23})+(q\chi')'(n\mathbf G_{23}+\mathbf M \mathbf G_{33})\right]. -\end{equation} -\begin{equation} -|\mathbf Y|^2 \leadsto \Xi_\psi^\dagger \mathbf H_1 \Xi_\psi, -\qquad -\mathbf H_1=(2\pi\chi')^2\mathbf Q\mathbf G_{11}\mathbf Q. -\end{equation} -\begin{equation} -\mathbf Y^* \cdot \mathbf Z + \mathbf Z^* \cdot \mathbf Y -\leadsto -\Xi_\psi^{\prime\dagger}\mathbf E_1 \Xi_\psi + \Xi_\psi^\dagger \mathbf E_1^\dagger \Xi_\psi^\prime, -\qquad -\mathbf E_1=-2\pi i\chi'^2(\mathbf G_{12}+q\mathbf G_{31})\mathbf Q. -\end{equation} -\begin{equation} -\mathbf Y^* \cdot \mathbf U + \mathbf U^* \cdot \mathbf Y -\leadsto -\Xi_\psi^\dagger \mathbf H_2 \Xi_\psi, -\qquad -\mathbf H_2=2\pi i\chi'\left[\chi''(\mathbf M \mathbf G_{12}-\mathbf G_{12}\mathbf M)+(q\chi')'(\mathbf M \mathbf G_{31}-\mathbf G_{31}\mathbf M)\right]. -\end{equation} -\begin{equation} -|\mathbf Z|^2 \leadsto \Xi_\psi^{\prime\dagger} \mathbf D \Xi_\psi^\prime, -\qquad -\mathbf D=\chi'^2\left[(\mathbf{G}_{22}+q\,\mathbf{G}_{23})+q(\mathbf{G}_{23}+q\,\mathbf{G}_{33})\right]. -\end{equation} -\begin{equation} -\mathbf Z^* \cdot \mathbf U + \mathbf U^* \cdot \mathbf Z -\leadsto -\Xi_\psi^{\prime\dagger}\mathbf E_2 \Xi_\psi + \Xi_\psi^\dagger \mathbf E_2^\dagger \Xi_\psi^\prime, -\qquad -\mathbf E_2=\chi'\left[\chi''(\mathbf{G}_{22}+q\,\mathbf{G}_{23})+(q\chi')'(\mathbf{G}_{23}+q\,\mathbf{G}_{33})\right]. -\end{equation} - -Finally, -\begin{equation} -|\mathbf U|^2 \leadsto \Xi_\psi^\dagger \mathbf H_3 \Xi_\psi, -\qquad -\mathbf{H}_3 -= -\chi'' -\left[ -\chi''\,\mathbf{G}_{22} -+ -(q\chi')'\,\mathbf{G}_{23} -\right] -+ -(q\chi')' -\left[ -\chi''\,\mathbf{G}_{23} -+ -(q\chi')'\,\mathbf{G}_{33} -\right] -\end{equation} - \paragraph{Bernstein-current correction terms} The vector $\mathbf V$ is not an additional physical term. It appears only because the Bernstein form rewrites the original current--pressure contribution into \[ \vec C=\vec Q+\frac{\xi_\psi}{|\nabla\psi|^2}\mu_0\vec j\times\nabla\psi -=\mathbf X+\mathbf Y+\mathbf Z+\mathbf U+\mathbf V. +=\mathbf L+\mathbf M+\mathbf N+\mathbf O+\mathbf V. \] Therefore the $\mathbf V$-dependent pieces from $|\vec C|^2$ must be combined with the scalar term $-\mu_0K|\xi_\psi|^2/|\nabla\psi|^2$. After this recombination, the same $\mathbf C$, $\mathbf E$, and $\mathbf H$ blocks in the DCON matrix form are obtained. -The cross term $\mathbf X^* \cdot \mathbf V + \mathbf V^* \cdot \mathbf X$ produces the current part of the $\mathbf C$ block: +The cross term $\mathbf L^* \cdot \mathbf V + \mathbf V^* \cdot \mathbf L$ produces the current part of the $\mathbf C$ block: \[ \Xi_s^\dagger \mathbf C_3 \Xi_\psi + \Xi_\psi^\dagger \mathbf C_3^\dagger \Xi_s, \] @@ -1919,7 +1886,7 @@ \subsection{Reconstruction v2: radial matrix representation of $\delta W$} \right]e^{2\pi i(m\theta-n\zeta)} \end{align} \begin{align} -\mathbf X +\mathbf L &= \nabla\xi_s\times\nabla\psi \\ &= @@ -1930,7 +1897,7 @@ \subsection{Reconstruction v2: radial matrix representation of $\delta W$} - n\,\nabla\zeta\times\nabla\psi \right)\\ -\mathbf X^* +\mathbf L^* &= \sum_m (-2\pi i)\,u_m^* e^{-2\pi i(m\theta-n\zeta)} @@ -1959,7 +1926,7 @@ \subsection{Reconstruction v2: radial matrix representation of $\delta W$} Therefore \begin{align} -\mathbf X^*\cdot \mathbf V +\mathbf L^*\cdot \mathbf V &= \sum_{m,m'} (-2\pi i)\, @@ -1980,11 +1947,12 @@ \subsection{Reconstruction v2: radial matrix representation of $\delta W$} (\nabla\theta\times\nabla\psi)\cdot(\mathbf j\times\nabla\psi) &=(\nabla\theta\cdot\mathbf j)|\nabla\psi|^2-(\nabla\theta\cdot\nabla\psi)(\mathbf j\cdot\nabla\psi) &=j^\theta |\nabla\psi|^2\\ (\nabla\zeta\times\nabla\psi)\cdot(\mathbf j\times\nabla\psi)&=j^\zeta |\nabla\psi|^2 +\label{eq:Vtriple} \end{align} Hence \begin{align} -\mathbf X^*\cdot \mathbf V +\mathbf L^*\cdot \mathbf V &= \sum_{m,m'} (-2\pi i)\, @@ -1998,6 +1966,7 @@ \subsection{Reconstruction v2: radial matrix representation of $\delta W$} \mu_0 j^\theta = -\frac{2\pi f'}{\mathcal J}, \qquad \mu_0 j^\zeta = -\frac{\mu_0 p'}{\chi'}-\frac{2\pi f' q}{\mathcal J} +\label{eq:dconcurrents} \end{equation} \begin{align} \mu_0(mj^\theta-nj^\zeta) @@ -2053,12 +2022,12 @@ \subsection{Reconstruction v2: radial matrix representation of $\delta W$} \noindent\rule{\linewidth}{0.4pt} \medskip -Next, the $\mathbf Z$--$\mathbf V$ block produces the pressure part of the $\mathbf E$ block: +Next, the $\mathbf N$--$\mathbf V$ block produces the pressure part of the $\mathbf E$ block: \[ \Xi_\psi^{\prime\dagger}\mathbf E_3 \Xi_\psi + \Xi_\psi^\dagger \mathbf E_3^\dagger \Xi_\psi^\prime. \] \begin{align} -\mathbf Z^*\cdot \mathbf V +\mathbf N^*\cdot \mathbf V &= \sum_{m,m'} v_m^{\prime *}v_{m'}\,e^{2\pi i(m'-m)\theta} @@ -2083,7 +2052,7 @@ \subsection{Reconstruction v2: radial matrix representation of $\delta W$} (\mu_0j^\zeta-q\mu_0j^\theta)\mathcal J^2|\nabla\psi|^2 . \end{align} \begin{align} -\mathbf Z^*\cdot \mathbf V +\mathbf N^*\cdot \mathbf V &= -\chi'(\mu_0j^\zeta-q\mu_0j^\theta) \sum_{m,m'}v_m^{\prime *}v_{m'}\,e^{2\pi i(m'-m)\theta} \\ @@ -2093,7 +2062,7 @@ \subsection{Reconstruction v2: radial matrix representation of $\delta W$} \begin{equation} \boxed{ \begin{aligned} -\mathbf Z^*\cdot \mathbf V+\mathbf V^*\cdot\mathbf Z +\mathbf N^*\cdot \mathbf V+\mathbf V^*\cdot\mathbf N \leadsto\; \Xi_\psi^{\prime\dagger}\mathbf E_3 \Xi_\psi + @@ -2106,567 +2075,62 @@ \subsection{Reconstruction v2: radial matrix representation of $\delta W$} } \end{equation} + \medskip \noindent\rule{\linewidth}{0.4pt} -\medskip - -The term $\mathbf Y^*\cdot\mathbf V+\mathbf V^*\cdot\mathbf Y$ is also a -pure-$\Xi_\psi$ contribution, but it is not closed as an independent DCON -block. It must be combined with the other pure scalar current--pressure terms -before the final $\mathbf H_4$ block is obtained. - -\begin{align} -\mathbf Y -&= -(\nabla\theta\times\nabla\zeta)\,\mathcal J\,\mathbf B\cdot\nabla\xi_\psi= -2\pi i\,\chi' -\sum_m (m-nq)\,v_m\,e^{2\pi i(m\theta-n\zeta)}\,\vec v_1 \\ -\mathbf Y^*&= -(-2\pi i)\chi' -\sum_m (m-nq)\,v_m^*\,e^{-2\pi i(m\theta-n\zeta)}\,\vec v_1 -\end{align} +\paragraph{Closed form of the $\mathbf V$-sector ($\mathbf H_4$).} -Using the corrected form of $\mathbf V$, -\begin{align} -\mathbf Y^*\cdot\mathbf V -&= -(-2\pi i)\chi' -\sum_{m,m'} -v_m^*(m-nq)v_{m'} -e^{2\pi i(m'-m)\theta} -\; -\frac{1}{|\nabla\psi|^2}\, -\vec v_1\cdot(\mathcal A_2\vec v_2-\mathcal A_3\vec v_3) \\ -&= -(-2\pi i)\chi' -\sum_{m,m'} -v_m^*(m-nq)v_{m'} -e^{2\pi i(m'-m)\theta} -\; -\frac{1}{\mathcal J^2|\nabla\psi|^2} -\big( -\mathcal A_2 g_{12}-\mathcal A_3 g_{31} -\big) -\end{align} +The four pure-$\Xi_\psi$ contributions assemble into +\begin{equation} +\boxed{\;\mathbf H_4=\mathbf H_{MV}+\mathbf H_{OV}+\mathbf H_V+\mathbf H_K\;,} +\end{equation} +equal, term by term, to the $\mathbf V$-sector of the Bernstein form +\eqref{eq:ep_bernsteinK} without invoking any equilibrium identity. The +Grad--Shafranov equation reduces it to the compact block +\begin{equation} +\boxed{\; +\mathbf H_4=\mu_0p'\left(\frac{\chi''}{\chi'}\mathbf J+\mathbf J'\right) +-2\pi f'q'\chi'\,\mathbf I\;,} +\end{equation} +as proved in Appendix~\ref{app:h4}. -Now expand the bracket: -\begin{align} -\mathcal A_2 g_{12}-\mathcal A_3 g_{31} -&= -(\mu_0j^\theta g_{23}+\mu_0j^\zeta g_{33})g_{12} -- -(\mu_0j^\theta g_{22}+\mu_0j^\zeta g_{23})g_{31} \\ -&= -\mu_0j^\theta(g_{12}g_{23}-g_{31}g_{22}) -+ -\mu_0j^\zeta(g_{12}g_{33}-g_{31}g_{23}) \\ -&= -\mathcal J^2 -\left[ -\mu_0j^\theta(\nabla\zeta\cdot\nabla\psi) -- -\mu_0j^\zeta(\nabla\theta\cdot\nabla\psi) -\right] -\end{align} +The complete term-to-matrix assignment is therefore \begin{equation} \boxed{ \begin{aligned} -\mathbf Y^*\cdot\mathbf V -&= -(-2\pi i)\chi' -\sum_{m,m'} -v_m^*(m-nq)v_{m'}e^{2\pi i(m'-m)\theta} \\ -&\qquad\times -\mu_0 -\frac{ -j^\theta(\nabla\zeta\cdot\nabla\psi) -- -j^\zeta(\nabla\theta\cdot\nabla\psi) -}{ -|\nabla\psi|^2 -}. +\mathbf A &: \quad \mathbf L\!\cdot\mathbf L,\\ +\mathbf B &: \quad \mathbf L\!\cdot\mathbf N,\\ +\mathbf C &: \quad +\mathbf L\!\cdot\mathbf M\to\mathbf C_1,\quad +\mathbf L\!\cdot\mathbf O\to\mathbf C_2,\quad +\mathbf L\!\cdot\mathbf V\to\mathbf C_3,\\ +\mathbf D &: \quad \mathbf N\!\cdot\mathbf N,\\ +\mathbf E &: \quad +\mathbf N\!\cdot\mathbf M\to\mathbf E_1,\quad +\mathbf N\!\cdot\mathbf O\to\mathbf E_2,\quad +\mathbf N\!\cdot\mathbf V\to\mathbf E_3,\\ +\mathbf H &: \quad +\mathbf M\!\cdot\mathbf M\to\mathbf H_1,\quad +\mathbf M\!\cdot\mathbf O+\to\mathbf H_2,\quad +\mathbf O\!\cdot\mathbf O\to\mathbf H_3,\\ +&\quad +\mathbf M\!\cdot\mathbf V ++\mathbf O\!\cdot\mathbf V ++|\mathbf V|^2 +-\mu_0K\frac{|\xi_\psi|^2}{|\nabla\psi|^2} +\to\mathbf H_4 . \end{aligned} } \end{equation} - -It is more useful to rewrite this in field form. Since +Thus the final coefficient matrices are \begin{equation} -\mathcal J\,\mathbf B\cdot\nabla -= -\chi'\left(\partial_\theta+q\partial_\zeta\right), -\end{equation} -we may write -\begin{align} -\mathcal J(\mathbf Y^*\cdot\mathbf V+\mathbf V^*\cdot\mathbf Y) -&= -\chi' -\left[ -(\partial_\theta+q\partial_\zeta)\xi_\psi^* -\right] -\xi_\psi\, -\mathcal F -+ -\chi'\, -\xi_\psi^* -\left[ -(\partial_\theta+q\partial_\zeta)\xi_\psi -\right]\mathcal F, -\end{align} -where -\begin{equation} -\mathcal F -\equiv -\mathcal J -\frac{ -(\mu_0 j^\theta)(\nabla\zeta\cdot\nabla\psi) -- -(\mu_0 j^\zeta)(\nabla\theta\cdot\nabla\psi) -}{ -|\nabla\psi|^2 -}. -\end{equation} - -Because the equilibrium is axisymmetric and periodic in $\theta,\zeta$, we may integrate by parts in $\theta$ and drop the boundary term: -\begin{align} -\int d\theta\,d\zeta\;\mathcal J(\mathbf Y^*\cdot\mathbf V+\mathbf V^*\cdot\mathbf Y) -&= -\chi'\int d\theta\,d\zeta\; -\partial_\theta(|\xi_\psi|^2)\,\mathcal F \\ -&= --\chi' \int d\theta\,d\zeta\; -|\xi_\psi|^2\,\partial_\theta \mathcal F. -\end{align} - -Substituting $\mu_0 j^\theta$ and $\mu_0 j^\zeta$, -\begin{align} -\mathcal F -&= -\mathcal J -\left[ --\frac{2\pi f'}{\mathcal J} -\frac{\nabla\zeta\cdot\nabla\psi}{|\nabla\psi|^2} -+ -\left( -\frac{\mu_0p'}{\chi'} -+ -\frac{2\pi f'q}{\mathcal J} -\right) -\frac{\nabla\theta\cdot\nabla\psi}{|\nabla\psi|^2} -\right] \\ -&= -2\pi f' -\frac{ -q(\nabla\psi\cdot\nabla\theta)-(\nabla\psi\cdot\nabla\zeta) -}{ -|\nabla\psi|^2 -} -+ -\frac{\mu_0p'}{\chi'}\, -\mathcal J\, -\frac{\nabla\psi\cdot\nabla\theta}{|\nabla\psi|^2}. -\end{align} - -Therefore -\begin{align} -\partial_\theta \mathcal F -&= -2\pi f'\, -\partial_\theta -\left[ -\frac{ -q(\nabla\psi\cdot\nabla\theta)-(\nabla\psi\cdot\nabla\zeta) -}{ -|\nabla\psi|^2 -} -\right] -+ -\frac{\mu_0p'}{\chi'}\, -\partial_\theta -\left[ -\mathcal J\frac{\nabla\psi\cdot\nabla\theta}{|\nabla\psi|^2} -\right]. -\end{align} - -Using the DCON-normalized shear parameter, -\begin{equation} -S_\psi -= -\frac{\chi'^2}{\mathcal J} -\left[ -q' -+ -\partial_\theta -\left( -\frac{ -q(\nabla\psi\cdot\nabla\theta)-(\nabla\psi\cdot\nabla\zeta) -}{ -|\nabla\psi|^2 -} -\right) -\right], -\end{equation} -we obtain -\begin{equation} -\partial_\theta -\left[ -\frac{ -q(\nabla\psi\cdot\nabla\theta)-(\nabla\psi\cdot\nabla\zeta) -}{ -|\nabla\psi|^2 -} -\right] -= -\frac{\mathcal J}{\chi'^2}S_\psi-q'. -\end{equation} - -Hence -\begin{align} -\partial_\theta\mathcal F -&= -\frac{2\pi f'}{\chi'^2}\,\mathcal J\,S_\psi -- -2\pi f'q' -+ -\frac{\mu_0p'}{\chi'}\, -\partial_\theta -\left[ -\mathcal J\frac{\nabla\psi\cdot\nabla\theta}{|\nabla\psi|^2} -\right]. -\end{align} - -The last derivative, -\begin{equation} -\partial_\theta -\left[ -\mathcal J\frac{\nabla\psi\cdot\nabla\theta}{|\nabla\psi|^2} -\right], -\end{equation} -is not a general coordinate identity and is not reduced here as a standalone -matrix block. Therefore -$\mathbf Y^*\cdot\mathbf V+\mathbf V^*\cdot\mathbf Y$ is kept as an -intermediate pure-$\Xi_\psi$ Bernstein scalar term. The closed DCON block is -obtained only after this term is combined below with -$\mathbf U^*\cdot\mathbf V+\mathbf V^*\cdot\mathbf U$, $|\mathbf V|^2$, and -the scalar $-\mu_0K|\xi_\psi|^2/|\nabla\psi|^2$ contribution. - -\medskip -\noindent\rule{\linewidth}{0.4pt} -\medskip - -\paragraph{The term $\mathbf U^*\cdot\mathbf V+\mathbf V^*\cdot\mathbf U$.} - -Since both $\mathbf U$ and $\mathbf V$ are proportional to $\xi_\psi$, this contribution is a pure-$\Xi_\psi$ block and can be written as -\[ -\Xi_\psi^\dagger \mathbf H_{UV} \Xi_\psi. -\] - -Recall -\begin{equation} -\mathbf U -= --\left( -\chi''\vec v_2+(q\chi')'\vec v_3 -\right)\xi_\psi. -\end{equation} -Hence -\begin{align} -\mathbf U^*\cdot\mathbf V -&= --\frac{|\xi_\psi|^2}{|\nabla\psi|^2} -\left( -\chi''\vec v_2+(q\chi')'\vec v_3 -\right)\cdot -\left( -\mathcal A_2\vec v_2-\mathcal A_3\vec v_3 -\right) \\ -&= --\frac{|\xi_\psi|^2}{\mathcal J^2|\nabla\psi|^2} -\left[ -\chi''(\mathcal A_2 g_{22}-\mathcal A_3 g_{23}) -+ -(q\chi')'(\mathcal A_2 g_{23}-\mathcal A_3 g_{33}) -\right]. -\end{align} - -Now simplify each bracket: -\begin{align} -\mathcal A_2 g_{22}-\mathcal A_3 g_{23} -&= -(\mu_0j^\theta g_{23}+\mu_0j^\zeta g_{33})g_{22} -- -(\mu_0j^\theta g_{22}+\mu_0j^\zeta g_{23})g_{23} \\ -&= -\mu_0j^\zeta(g_{22}g_{33}-g_{23}^2) \\ -&= -\mu_0j^\zeta \mathcal J^2 |\nabla\psi|^2, -\end{align} -and -\begin{align} -\mathcal A_2 g_{23}-\mathcal A_3 g_{33} -&= -(\mu_0j^\theta g_{23}+\mu_0j^\zeta g_{33})g_{23} -- -(\mu_0j^\theta g_{22}+\mu_0j^\zeta g_{23})g_{33} \\ -&= --\mu_0j^\theta(g_{22}g_{33}-g_{23}^2) \\ -&= --\mu_0j^\theta \mathcal J^2 |\nabla\psi|^2. -\end{align} -Therefore -\begin{align} -\mathbf U^*\cdot\mathbf V -&= --|\xi_\psi|^2 -\left[ -\mu_0j^\zeta\chi'' -- -\mu_0j^\theta(q\chi')' -\right]. -\end{align} - -Substituting $j^\theta$ and $j^\zeta$, -\begin{align} -\mathbf U^*\cdot\mathbf V -&= --|\xi_\psi|^2 -\left[ -\left( --\frac{\mu_0p'}{\chi'}-\frac{2\pi f'q}{\mathcal J} -\right)\chi'' -- -\left( --\frac{2\pi f'}{\mathcal J} -\right)(q\chi')' -\right] \\ -&= -|\xi_\psi|^2 -\left[ -\mu_0p'\frac{\chi''}{\chi'} -+ -\frac{2\pi f'}{\mathcal J} -\left( -q\chi''-(q\chi')' -\right) -\right]. -\end{align} -Using -\begin{equation} -(q\chi')'=q'\chi'+q\chi'', -\end{equation} -we obtain -\begin{equation} -\boxed{ -\mathbf U^*\cdot\mathbf V -= -|\xi_\psi|^2 -\left[ -\mu_0p'\frac{\chi''}{\chi'} -- -\frac{2\pi f' q'\chi'}{\mathcal J} -\right]. -} -\end{equation} - -\begin{equation} -\boxed{ -\begin{aligned} -\mathbf U^*\cdot\mathbf V+\mathbf V^*\cdot\mathbf U -\leadsto\; -\Xi_\psi^\dagger \mathbf H_{UV}\Xi_\psi, \\ -\qquad -\mathbf H_{UV} -&= -2\mu_0p'\frac{\chi''}{\chi'}\,\mathbf J --4\pi f'q'\chi'\,\mathbf I. -\end{aligned} -} -\end{equation} - -\medskip -\noindent\rule{\linewidth}{0.4pt} -\medskip - -\paragraph{The term $|\mathbf V|^2$.} - -This is again a pure-$\Xi_\psi$ contribution, so we write -\[ -\Xi_\psi^\dagger \mathbf H_V \Xi_\psi. -\] - -From -\begin{equation} -\mathbf V -= -\frac{\xi_\psi}{|\nabla\psi|^2} -(\mathcal A_2\vec v_2-\mathcal A_3\vec v_3), -\end{equation} -we have -\begin{align} -|\mathbf V|^2 -&= -\frac{|\xi_\psi|^2}{|\nabla\psi|^4} -(\mathcal A_2\vec v_2-\mathcal A_3\vec v_3)\cdot -(\mathcal A_2\vec v_2-\mathcal A_3\vec v_3) \\ -&= -\frac{|\xi_\psi|^2}{\mathcal J^2|\nabla\psi|^4} -\left[ -\mathcal A_2^2 g_{22} --2\mathcal A_2\mathcal A_3 g_{23} -+\mathcal A_3^2 g_{33} -\right]. -\end{align} - -Now expand the quadratic form: -\begin{align} -&\mathcal A_2^2 g_{22} --2\mathcal A_2\mathcal A_3 g_{23} -+\mathcal A_3^2 g_{33} \\ -&= -(\mu_0j^\theta g_{23}+\mu_0j^\zeta g_{33})^2 g_{22} --2(\mu_0j^\theta g_{23}+\mu_0j^\zeta g_{33}) -(\mu_0j^\theta g_{22}+\mu_0j^\zeta g_{23})g_{23} \\ -&\qquad -+(\mu_0j^\theta g_{22}+\mu_0j^\zeta g_{23})^2 g_{33} \\ -&= -(g_{22}g_{33}-g_{23}^2) -\left[ -\mu_0^2g_{22}(j^\theta)^2 -+ -2\mu_0^2g_{23}j^\theta j^\zeta -+ -\mu_0^2g_{33}(j^\zeta)^2 -\right]. -\end{align} -Therefore -\begin{align} -|\mathbf V|^2 -&= -\frac{|\xi_\psi|^2}{\mathcal J^2|\nabla\psi|^4} -(g_{22}g_{33}-g_{23}^2) -\left[ -\mu_0^2g_{22}(j^\theta)^2 -+ -2\mu_0^2g_{23}j^\theta j^\zeta -+ -\mu_0^2g_{33}(j^\zeta)^2 -\right] \\ -&= -\frac{|\xi_\psi|^2}{|\nabla\psi|^2} -\left[ -\mu_0^2g_{22}(j^\theta)^2 -+ -2\mu_0^2g_{23}j^\theta j^\zeta -+ -\mu_0^2g_{33}(j^\zeta)^2 -\right]. -\end{align} - -This is the completely explicit covariant-form result. - -It is also useful to rewrite it invariantly. Since -\begin{equation} -\mathbf j -= -\sigma \mathbf B -+\frac{p'}{B^2}\mathbf B\times \nabla\psi, -\qquad -\sigma\equiv \frac{\mathbf j\cdot\mathbf B}{B^2}, -\end{equation} -one finds -\begin{equation} -\frac{|\mu_0\mathbf j\times\nabla\psi|^2}{|\nabla\psi|^2} -= -\mu_0\sigma\,(\mu_0\mathbf j\cdot\mathbf B) -+ -\frac{(\mu_0p')^2}{B^2}|\nabla\psi|^2. -\end{equation} -Hence -\begin{equation} -\boxed{ -|\mathbf V|^2 -= -|\xi_\psi|^2 -\left[ -\frac{\mu_0\sigma\,(\mu_0\mathbf j\cdot\mathbf B)}{|\nabla\psi|^2} -+ -\frac{(\mu_0p')^2}{B^2} -\right]. -} -\end{equation} - -\begin{equation} -\boxed{ -\begin{aligned} -|\mathbf V|^2 -\leadsto\; -\Xi_\psi^\dagger \mathbf H_V \Xi_\psi, \\ -\qquad -(\mathbf H_V)_{mm'} -&\equiv -\left\langle -\frac{\mu_0\sigma\,(\mu_0\mathbf j\cdot\mathbf B)}{|\nabla\psi|^2} -+ -\frac{(\mu_0p')^2}{B^2} -\right\rangle_{mm'}. -\end{aligned} -} -\end{equation} - -\medskip -\noindent\rule{\linewidth}{0.4pt} -\paragraph{Closed form of the $\mathbf V$-sector ($\mathbf H_4$).} - -The four pure-$\Xi_\psi$ contributions assemble into -\begin{equation} -\boxed{\;\mathbf H_4=\mathbf H_{YV}+\mathbf H_{UV}+\mathbf H_V+\mathbf H_K\;,} -\end{equation} -equal, term by term, to the $\mathbf V$-sector of the Bernstein form -\eqref{eq:ep_bernsteinK} without invoking any equilibrium identity. The -Grad--Shafranov equation reduces it to the compact block -\begin{equation} -\boxed{\; -\mathbf H_4=\mu_0p'\left(\frac{\chi''}{\chi'}\mathbf J+\mathbf J'\right) --2\pi f'q'\chi'\,\mathbf I\;,} -\end{equation} -as proved in Appendix~\ref{app:h4}. - -The complete term-to-matrix assignment is therefore -\begin{equation} -\boxed{ -\begin{aligned} -\mathbf A &: \quad \mathbf X^*\!\cdot\mathbf X,\\ -\mathbf B &: \quad \mathbf X^*\!\cdot\mathbf Z,\\ -\mathbf C &: \quad -\mathbf X^*\!\cdot\mathbf Y\to\mathbf C_1,\quad -\mathbf X^*\!\cdot\mathbf U\to\mathbf C_2,\quad -\mathbf X^*\!\cdot\mathbf V\to\mathbf C_3,\\ -\mathbf D &: \quad \mathbf Z^*\!\cdot\mathbf Z,\\ -\mathbf E &: \quad -\mathbf Z^*\!\cdot\mathbf Y\to\mathbf E_1,\quad -\mathbf Z^*\!\cdot\mathbf U\to\mathbf E_2,\quad -\mathbf Z^*\!\cdot\mathbf V\to\mathbf E_3,\\ -\mathbf H &: \quad -\mathbf Y^*\!\cdot\mathbf Y\to\mathbf H_1,\quad -\mathbf Y^*\!\cdot\mathbf U+\mathbf U^*\!\cdot\mathbf Y\to\mathbf H_2,\quad -\mathbf U^*\!\cdot\mathbf U\to\mathbf H_3,\\ -&\quad -\mathbf Y^*\!\cdot\mathbf V+\mathbf V^*\!\cdot\mathbf Y -+\mathbf U^*\!\cdot\mathbf V+\mathbf V^*\!\cdot\mathbf U -+|\mathbf V|^2 --\mu_0K\frac{|\xi_\psi|^2}{|\nabla\psi|^2} -\to\mathbf H_4 . -\end{aligned} -} -\end{equation} -Thus the final coefficient matrices are -\begin{equation} -\boxed{ -\begin{aligned} -\mathbf C&=\mathbf C_1+\mathbf C_2+\mathbf C_3, \\ -\mathbf E&=\mathbf E_1+\mathbf E_2+\mathbf E_3, \\ -\mathbf H&=\mathbf H_1+\mathbf H_2+\mathbf H_3+\mathbf H_4. -\end{aligned} -} +\boxed{ +\begin{aligned} +\mathbf C&=\mathbf C_1+\mathbf C_2+\mathbf C_3, \\ +\mathbf E&=\mathbf E_1+\mathbf E_2+\mathbf E_3, \\ +\mathbf H&=\mathbf H_1+\mathbf H_2+\mathbf H_3+\mathbf H_4. +\end{aligned} +} \end{equation} Subject to the boundary and reduced-compressional assumptions stated above, this is the DCON-normalized version of the matrix structure in Eq.~(35) of @@ -2747,6 +2211,28 @@ \section{Log-output quantities and their exact integrands} (\texttt{GPEC\_RECON3}, driver \texttt{gpout\_recon3} $\to$ \texttt{gpeq\_recon3}). +Three further switches in \texttt{\&GPEC\_OUTPUT} control how these +diagnostics run: +\begin{itemize} +\item \texttt{recon\_out} (default \texttt{.TRUE.}) gates the + \emph{file} output. When true, each route writes its per-surface + ASCII tables and appends its summary block to \texttt{gpec.log}; + when false the terminal summary is still printed, but no files are + written. +\item \texttt{recon\_int} (default \texttt{"spline"}, alternative + \texttt{"trapezoid"}) selects the quadrature used for the radial + $\psi$ integration on the \texttt{psifac} grid. Every + $\delta W_p$ total reported below is built with this scheme, so the + choice affects the reported numbers at the level of the quadrature + error. +\item \texttt{cveri\_flag} (default \texttt{.FALSE.}) enables the + $(\nabla\times\vec C)\cdot\nabla\psi=0$ verification of + \S\ref{par:cveri} alongside \texttt{recon\_flag}. The pointwise + residual is accumulated over all surfaces and reported as a status + of \texttt{PASS}, \texttt{WARN} or \texttt{SKIP} against a fixed + tolerance of $10^{-10}$, together with its maximum and rms. +\end{itemize} + The DCON normalization factor that converts the GPEC energy to the DCON-normalized $\delta W$, used in the normalized outputs below, is \begin{equation} @@ -2865,9 +2351,12 @@ \subsection{\texttt{GPEC\_RECON2} (\texttt{recon\_flag2})} \texttt{int\_J\_jQxixi\_over\_mu0} &=\int\! d\psi\,\frac{1}{\mu_0}\oint\frac{1}{\mathcal J} \Big[-\mu_0 j^\theta\bigl(\tilde Q^\psi\,\tilde\xi^{\zeta*}-\tilde Q^\zeta\,\tilde\xi^{\psi*}\bigr) + \notag\\ +&\qquad\qquad +\mu_0 j^\zeta\bigl(\tilde Q^\psi\,\tilde\xi^{\theta*}-\tilde Q^\theta\,\tilde\xi^{\psi*}\bigr) \Big]\mathcal J\,d\theta - =\int\! d\psi\oint \vec j\cdot(\vec Q\times\vec\xi^{\,*})\,\mathcal J\,d\theta,\\ + \notag\\ +&=\int\! d\psi\oint \vec j\cdot(\vec Q\times\vec\xi^{\,*})\,\mathcal J\,d\theta,\\ \texttt{int\_J\_pdiv\_term} &=\int\! d\psi\oint (\nabla\!\cdot\!\vec\xi)^{*}\,p'\,\xi^{\psi}\, @@ -3021,200 +2510,514 @@ \subsubsection{Combined $\delta W_p$ and the $K_2$ cancellation} effect of $j_\parallel$ survives only indirectly --- through the shear term $K_1$ (its dependence on $\sigma S$) and through the cross term $B$. -\subsection{Cross-checks between the three routes} +\subsection{Cross-checks between the three routes} + +The identities below are exact and are confirmed at roundoff in the DIII-D +example ($n=1$, \texttt{gpec.log}): +\begin{align} +\texttt{recon3:A\_total} &= \texttt{recon2:int\_J\_Q2\_over\_mu0} + &&(0.817676),\\ +\texttt{recon3:Cpar\_total} &= \texttt{recon1:K2\_xin2} + = \texttt{gpeq\_dst}:dst_2 &&(1.082617),\\ +\texttt{recon3:epf\_total} &= \texttt{recon1:int\_J\_C2\_over\_mu0} + &&(0.941346),\\ +\texttt{recon1:dW\_p} &\approx \texttt{recon2:dW\_p} + &&(-0.1190\ \text{vs}\ -0.1198). +\end{align} + + +\clearpage +\appendix + +\section{Full reduction of the $\mathbf H_4$ ($\mathbf V$-sector) block}\label{app:h4} + +This appendix proves the $\mathbf H_4$ ($\mathbf V$-sector) identity quoted in +the main text at two levels: (i)~the equilibrium-free Bernstein form +$\mathbf H_4=\mathbf H_{MV}+\mathbf H_{OV}+\mathbf H_V+\mathbf H_K$, equal term by +term to \eqref{eq:ep_bernsteinK}; and (ii)~its collapse to the compact block +$\mathbf H_4=\mu_0p'\!\left(\tfrac{\chi''}{\chi'}\mathbf J+\mathbf J'\right)-2\pi +f'q'\chi'\,\mathbf I$, whose only equilibrium input is the Grad--Shafranov +equation. The steps that invoke an equilibrium relation (force balance, the +magnetic-surface condition $\mathbf B\cdot\nabla\psi=0$, Grad--Shafranov) are +noted where they occur. + +\subsection{Explicit pure-$\Xi_\psi$ term reductions}\label{app:reductions} + +The following term-by-term reductions of the pure-$\Xi_\psi$ contributions +were relocated here from the main text; they build the four pieces +$\mathbf H_{MV},\mathbf H_{OV},\mathbf H_V,\mathbf H_K$ assembled in the +closed form of Sec.~\ref{app:h4}. + +The term $\mathbf M^*\cdot\mathbf V+\mathbf V^*\cdot\mathbf M$ is also a +pure-$\Xi_\psi$ contribution, but it is not closed as an independent DCON +block. It must be combined with the other pure scalar current--pressure terms +before the final $\mathbf H_4$ block is obtained. + +\begin{align} +\mathbf M +&= +(\nabla\theta\times\nabla\zeta)\,\mathcal J\,\mathbf B\cdot\nabla\xi_\psi= +2\pi i\,\chi' +\sum_m (m-nq)\,v_m\,e^{2\pi i(m\theta-n\zeta)}\,\vec v_1 \\ +\mathbf M^*&= +(-2\pi i)\chi' +\sum_m (m-nq)\,v_m^*\,e^{-2\pi i(m\theta-n\zeta)}\,\vec v_1 +\end{align} + +Using the corrected form of $\mathbf V$, +\begin{align} +\mathbf M^*\cdot\mathbf V +&= +(-2\pi i)\chi' +\sum_{m,m'} +v_m^*(m-nq)v_{m'} +e^{2\pi i(m'-m)\theta} +\; +\frac{1}{|\nabla\psi|^2}\, +\vec v_1\cdot(\mathcal A_2\vec v_2-\mathcal A_3\vec v_3) \\ +&= +(-2\pi i)\chi' +\sum_{m,m'} +v_m^*(m-nq)v_{m'} +e^{2\pi i(m'-m)\theta} +\; +\frac{1}{\mathcal J^2|\nabla\psi|^2} +\big( +\mathcal A_2 g_{12}-\mathcal A_3 g_{31} +\big) +\end{align} + +Now expand the bracket: +\begin{align} +\mathcal A_2 g_{12}-\mathcal A_3 g_{31} +&= +(\mu_0j^\theta g_{23}+\mu_0j^\zeta g_{33})g_{12} +- +(\mu_0j^\theta g_{22}+\mu_0j^\zeta g_{23})g_{31} \\ +&= +\mu_0j^\theta(g_{12}g_{23}-g_{31}g_{22}) ++ +\mu_0j^\zeta(g_{12}g_{33}-g_{31}g_{23}) \\ +&= +\mathcal J^2 +\left[ +\mu_0j^\theta(\nabla\zeta\cdot\nabla\psi) +- +\mu_0j^\zeta(\nabla\theta\cdot\nabla\psi) +\right] +\end{align} +\begin{equation} +\boxed{ +\begin{aligned} +\mathbf M^*\cdot\mathbf V +&= +(-2\pi i)\chi' +\sum_{m,m'} +v_m^*(m-nq)v_{m'}e^{2\pi i(m'-m)\theta} \\ +&\qquad\times +\mu_0 +\frac{ +j^\theta(\nabla\zeta\cdot\nabla\psi) +- +j^\zeta(\nabla\theta\cdot\nabla\psi) +}{ +|\nabla\psi|^2 +}. +\end{aligned} +} +\end{equation} + +It is more useful to rewrite this in field form. Since +\begin{equation} +\mathcal J\,\mathbf B\cdot\nabla += +\chi'\left(\partial_\theta+q\partial_\zeta\right), +\end{equation} +we may write +\begin{align} +\mathcal J(\mathbf M^*\cdot\mathbf V+\mathbf V^*\cdot\mathbf M) +&= +\chi' +\left[ +(\partial_\theta+q\partial_\zeta)\xi_\psi^* +\right] +\xi_\psi\, +\mathcal F ++ +\chi'\, +\xi_\psi^* +\left[ +(\partial_\theta+q\partial_\zeta)\xi_\psi +\right]\mathcal F, +\end{align} +where +\begin{equation} +\mathcal F +\equiv +\mathcal J +\frac{ +(\mu_0 j^\theta)(\nabla\zeta\cdot\nabla\psi) +- +(\mu_0 j^\zeta)(\nabla\theta\cdot\nabla\psi) +}{ +|\nabla\psi|^2 +}. +\end{equation} + +Because the equilibrium is axisymmetric and periodic in $\theta,\zeta$, we may integrate by parts in $\theta$ and drop the boundary term: +\begin{align} +\int d\theta\,d\zeta\;\mathcal J(\mathbf M^*\cdot\mathbf V+\mathbf V^*\cdot\mathbf M) +&= +\chi'\int d\theta\,d\zeta\; +\partial_\theta(|\xi_\psi|^2)\,\mathcal F \\ +&= +-\chi' \int d\theta\,d\zeta\; +|\xi_\psi|^2\,\partial_\theta \mathcal F. +\end{align} + +Substituting $\mu_0 j^\theta$ and $\mu_0 j^\zeta$, +\begin{align} +\mathcal F +&= +\mathcal J +\left[ +-\frac{2\pi f'}{\mathcal J} +\frac{\nabla\zeta\cdot\nabla\psi}{|\nabla\psi|^2} ++ +\left( +\frac{\mu_0p'}{\chi'} ++ +\frac{2\pi f'q}{\mathcal J} +\right) +\frac{\nabla\theta\cdot\nabla\psi}{|\nabla\psi|^2} +\right] \\ +&= +2\pi f' +\frac{ +q(\nabla\psi\cdot\nabla\theta)-(\nabla\psi\cdot\nabla\zeta) +}{ +|\nabla\psi|^2 +} ++ +\frac{\mu_0p'}{\chi'}\, +\mathcal J\, +\frac{\nabla\psi\cdot\nabla\theta}{|\nabla\psi|^2}. +\end{align} + +Therefore +\begin{align} +\partial_\theta \mathcal F +&= +2\pi f'\, +\partial_\theta +\left[ +\frac{ +q(\nabla\psi\cdot\nabla\theta)-(\nabla\psi\cdot\nabla\zeta) +}{ +|\nabla\psi|^2 +} +\right] ++ +\frac{\mu_0p'}{\chi'}\, +\partial_\theta +\left[ +\mathcal J\frac{\nabla\psi\cdot\nabla\theta}{|\nabla\psi|^2} +\right]. +\end{align} + +Using the DCON-normalized shear parameter, +\begin{equation} +S_\psi += +\frac{\chi'^2}{\mathcal J} +\left[ +q' ++ +\partial_\theta +\left( +\frac{ +q(\nabla\psi\cdot\nabla\theta)-(\nabla\psi\cdot\nabla\zeta) +}{ +|\nabla\psi|^2 +} +\right) +\right], +\end{equation} +we obtain +\begin{equation} +\partial_\theta +\left[ +\frac{ +q(\nabla\psi\cdot\nabla\theta)-(\nabla\psi\cdot\nabla\zeta) +}{ +|\nabla\psi|^2 +} +\right] += +\frac{\mathcal J}{\chi'^2}S_\psi-q'. +\end{equation} -The identities below are exact and are confirmed at roundoff in the DIII-D -example ($n=1$, \texttt{gpec.log}): +Hence \begin{align} -\texttt{recon3:A\_total} &= \texttt{recon2:int\_J\_Q2\_over\_mu0} - &&(0.817676),\\ -\texttt{recon3:Cpar\_total} &= \texttt{recon1:K2\_xin2} - = \texttt{gpeq\_dst}:dst_2 &&(1.082617),\\ -\texttt{recon3:epf\_total} &= \texttt{recon1:int\_J\_C2\_over\_mu0} - &&(0.941346),\\ -\texttt{recon1:dW\_p} &\approx \texttt{recon2:dW\_p} - &&(-0.1190\ \text{vs}\ -0.1198). +\partial_\theta\mathcal F +&= +\frac{2\pi f'}{\chi'^2}\,\mathcal J\,S_\psi +- +2\pi f'q' ++ +\frac{\mu_0p'}{\chi'}\, +\partial_\theta +\left[ +\mathcal J\frac{\nabla\psi\cdot\nabla\theta}{|\nabla\psi|^2} +\right]. \end{align} +\medskip +\noindent\rule{\linewidth}{0.4pt} +\medskip -\clearpage -\appendix +\paragraph{The term $\mathbf O^*\cdot\mathbf V+\mathbf V^*\cdot\mathbf O$.} -\section{Full reduction of the $\mathbf H_4$ ($\mathbf V$-sector) block}\label{app:h4} +Since both $\mathbf O$ and $\mathbf V$ are proportional to $\xi_\psi$, this contribution is a pure-$\Xi_\psi$ block and can be written as +\[ +\Xi_\psi^\dagger \mathbf H_{UV} \Xi_\psi. +\] -This appendix proves the $\mathbf H_4$ ($\mathbf V$-sector) identity quoted in -the main text at two levels: (i)~the equilibrium-free Bernstein form -$\mathbf H_4=\mathbf H_{YV}+\mathbf H_{UV}+\mathbf H_V+\mathbf H_K$, equal term by -term to \eqref{eq:ep_bernsteinK}; and (ii)~its collapse to the compact block -$\mathbf H_4=\mu_0p'\!\left(\tfrac{\chi''}{\chi'}\mathbf J+\mathbf J'\right)-2\pi -f'q'\chi'\,\mathbf I$, whose only equilibrium input is the Grad--Shafranov -equation. The steps that invoke an equilibrium relation (force balance, the -magnetic-surface condition $\mathbf B\cdot\nabla\psi=0$, Grad--Shafranov) are -noted where they occur. +Recall +\begin{equation} +\mathbf O += +-\left( +\chi''\vec v_2+(q\chi')'\vec v_3 +\right)\xi_\psi. +\end{equation} +Hence +\begin{align} +\mathbf O^*\cdot\mathbf V +&= +-\frac{|\xi_\psi|^2}{|\nabla\psi|^2} +\left( +\chi''\vec v_2+(q\chi')'\vec v_3 +\right)\cdot +\left( +\mathcal A_2\vec v_2-\mathcal A_3\vec v_3 +\right) \\ +&= +-\frac{|\xi_\psi|^2}{\mathcal J^2|\nabla\psi|^2} +\left[ +\chi''(\mathcal A_2 g_{22}-\mathcal A_3 g_{23}) ++ +(q\chi')'(\mathcal A_2 g_{23}-\mathcal A_3 g_{33}) +\right]. +\end{align} -\subsection{Setup: the $\mathbf V$-sector pieces and the single geometric rule} +Now simplify each bracket: +\begin{align} +\mathcal A_2 g_{22}-\mathcal A_3 g_{23} +&= +(\mu_0j^\theta g_{23}+\mu_0j^\zeta g_{33})g_{22} +- +(\mu_0j^\theta g_{22}+\mu_0j^\zeta g_{23})g_{23} \\ +&= +\mu_0j^\zeta(g_{22}g_{33}-g_{23}^2) \\ +&= +\mu_0j^\zeta \mathcal J^2 |\nabla\psi|^2, +\end{align} +and +\begin{align} +\mathcal A_2 g_{23}-\mathcal A_3 g_{33} +&= +(\mu_0j^\theta g_{23}+\mu_0j^\zeta g_{33})g_{23} +- +(\mu_0j^\theta g_{22}+\mu_0j^\zeta g_{23})g_{33} \\ +&= +-\mu_0j^\theta(g_{22}g_{33}-g_{23}^2) \\ +&= +-\mu_0j^\theta \mathcal J^2 |\nabla\psi|^2. +\end{align} +Therefore +\begin{align} +\mathbf O^*\cdot\mathbf V +&= +-|\xi_\psi|^2 +\left[ +\mu_0j^\zeta\chi'' +- +\mu_0j^\theta(q\chi')' +\right]. +\end{align} -We work in DCON straight-field-line flux coordinates $(\psi,\theta,\zeta)$, all -normalized to $[0,1]$, with $e_m\equiv e^{2\pi i(m\theta-n\zeta)}$ and the -Jacobian-scaled basis $\vec v_i=\vec e_i/\mathcal J$, so that -$\vec v_i\cdot\vec v_j=g_{ij}/\mathcal J^2$. We start from +Substituting $j^\theta$ and $j^\zeta$, +\begin{align} +\mathbf O^*\cdot\mathbf V +&= +-|\xi_\psi|^2 +\left[ +\left( +-\frac{\mu_0p'}{\chi'}-\frac{2\pi f'q}{\mathcal J} +\right)\chi'' +- +\left( +-\frac{2\pi f'}{\mathcal J} +\right)(q\chi')' +\right] \\ +&= +|\xi_\psi|^2 +\left[ +\mu_0p'\frac{\chi''}{\chi'} ++ +\frac{2\pi f'}{\mathcal J} +\left( +q\chi''-(q\chi')' +\right) +\right]. +\end{align} +Using \begin{equation} -\mathbf Q \equiv \mathbf X+\mathbf Y+\mathbf Z+\mathbf U, -\qquad -\vec C = \mathbf Q+\mathbf V, -\end{equation} -so that $|\vec C|^2$ expands into $5$ diagonal and $10$ cross products. The scalar -Bernstein term $-\mu_0K|\xi_\psi|^2/|\nabla\psi|^2$ is a \emph{separate} piece of the energy -$2\mu_0\delta W=\int[\,|\vec C|^2+\mu_0\gamma p|\nabla\cdot\vec\xi|^2-\mu_0K|\xi_\psi|^2/|\nabla\psi|^2\,]$; -the purpose of this appendix is to show that the $\mathbf H_4$ part of the -$\mathbf V$-sector --- the products -$2\,\mathrm{Re}(\mathbf V^{*}\!\cdot\mathbf Y) - +2\,\mathrm{Re}(\mathbf V^{*}\!\cdot\mathbf U)+|\mathbf V|^2$, -together with that scalar --- collapses to the compact block -$\mathbf H_4=\mu_0p'(\tfrac{\chi''}{\chi'}\mathbf J+\mathbf J')-2\pi f'q'\chi'\mathbf I$. -(The other two $\mathbf V$-cross products, $\mathbf V^{*}\!\cdot\mathbf X$ and -$\mathbf V^{*}\!\cdot\mathbf Z$, are \emph{not} part of $\mathbf H_4$; see below.) -The field pieces are +(q\chi')'=q'\chi'+q\chi'', +\end{equation} +we obtain \begin{equation} -\begin{aligned} -\mathbf X &= -2\pi i\sum_m u_m e_m\,(n\vec v_2+m\vec v_3), -& -\mathbf Y &= 2\pi i\chi'\sum_m (m-nq)v_m e_m\,\vec v_1,\\ -\mathbf Z &= -\chi'\sum_m v_m' e_m\,(\vec v_2+q\vec v_3), -& -\mathbf U &= -\sum_m v_m e_m\left[\chi''\vec v_2+(q\chi')'\vec v_3\right],\\ -\mathbf V &= \frac{\xi_\psi}{|\nabla\psi|^2}\left(\mathcal A_2\vec v_2-\mathcal A_3\vec v_3\right), -\end{aligned} +\boxed{ +\mathbf O^*\cdot\mathbf V += +|\xi_\psi|^2 +\left[ +\mu_0p'\frac{\chi''}{\chi'} +- +\frac{2\pi f' q'\chi'}{\mathcal J} +\right]. +} \end{equation} -with + \begin{equation} -\mathcal A_2 \equiv \mu_0j^\theta g_{23}+\mu_0j^\zeta g_{33}, -\qquad -\mathcal A_3 \equiv \mu_0j^\theta g_{22}+\mu_0j^\zeta g_{23}. -\end{equation} - -Physically $\mathbf V$ is simply the edge current rotated into the flux surface, -$\mathbf V=\frac{\xi_\psi}{|\nabla\psi|^2}\,\mu_0\mathbf j\times\nabla\psi$ --- a -concrete field on the $(\psi,\theta)$ grid --- and the components -$\mathcal A_2=\mathcal J(\mu_0\mathbf j\times\nabla\psi)^{\theta}$, -$\mathcal A_3=-\mathcal J(\mu_0\mathbf j\times\nabla\psi)^{\zeta}$ are just its -Jacobian-weighted contravariant entries (the expansion is in the main text). -Because $\mathbf V$ is a cross product, every \emph{in-surface} product with it -collapses in one line by a scalar triple product: for any surface vector -$\mathbf W=a\vec v_2+b\vec v_3$, -\begin{equation} -\mathbf W\cdot\mathbf V -=\frac{\xi_\psi}{|\nabla\psi|^2}\,\mu_0\,\nabla\psi\cdot(\mathbf W\times\mathbf j) -=\xi_\psi\,(a\,\mu_0 j^\zeta-b\,\mu_0 j^\theta), -\label{eq:app_Vrule} -\end{equation} -since $\mathbf W\times\mathbf j=(a\,j^\zeta-b\,j^\theta)\nabla\psi$ for two -in-surface vectors. This is the cofactor identity -$g_{22}g_{33}-g_{23}^2=\mathcal J^2|\nabla\psi|^2$ in coordinate-free form, and is -the only tool needed for $\mathbf X^*\!\cdot\mathbf V$, $\mathbf Z^*\!\cdot\mathbf V$, -and $\mathbf U^*\!\cdot\mathbf V$ below; likewise -$|\mathbf V|^2=|\xi_\psi|^2\mu_0^2|\mathbf j|^2/|\nabla\psi|^2$ follows from -$|\mu_0\mathbf j\times\nabla\psi|^2=\mu_0^2|\mathbf j|^2|\nabla\psi|^2$ -($\mathbf j\cdot\nabla\psi=0$). -All dot products are reduced with the single geometric rule -\begin{equation} -\vec v_i\cdot\vec v_j=\frac{g_{ij}}{\mathcal J^2}, +\boxed{ +\begin{aligned} +\mathbf O^*\cdot\mathbf V+\mathbf V^*\cdot\mathbf O +\leadsto\; +\Xi_\psi^\dagger \mathbf H_{UV}\Xi_\psi, \\ \qquad -e_m^*e_{m'}=e^{2\pi i(m'-m)\theta}. +\mathbf H_{UV} +&= +2\mu_0p'\frac{\chi''}{\chi'}\,\mathbf J +-4\pi f'q'\chi'\,\mathbf I. +\end{aligned} +} \end{equation} -Throughout, the only current data are the DCON contravariant current densities +\medskip +\noindent\rule{\linewidth}{0.4pt} +\medskip + +\paragraph{The term $|\mathbf V|^2$.} + +This is again a pure-$\Xi_\psi$ contribution, so we write +\[ +\Xi_\psi^\dagger \mathbf H_V \Xi_\psi. +\] + +From \begin{equation} -\mu_0 j^\theta=-\frac{2\pi f'}{\mathcal J}, -\qquad -\mu_0 j^\zeta=-\frac{\mu_0p'}{\chi'}-\frac{2\pi f'q}{\mathcal J}, -\label{eq:app_dconcurrents} -\end{equation} -and the equilibrium is a magnetic surface, $\mathbf B\cdot\nabla\psi=0$, so that -$\mathbf B=\chi'\,(q\,\nabla\psi\times\nabla\theta-\nabla\psi\times\nabla\zeta)$ -lies in the surface and $\mu_0\mathbf j\cdot\mathbf B=\mu_0\sigma B^2$ with -$\sigma\equiv\mathbf j\cdot\mathbf B/B^2$. Because the perturbation carries a -single toroidal mode number $n$, -$|\xi_\psi|^2=\sum_{m,m'}v_m^*v_{m'}\,e^{2\pi i(m'-m)\theta}$ is independent of -$\zeta$; this is used in Sec.~\ref{app:assembly}. - -\subsection{The five diagonal and ten cross products} - -Every $|\mathbf C|^2$ product is reduced with -$\vec v_i\cdot\vec v_j=g_{ij}/\mathcal J^2$ and the cofactor identity -$g_{22}g_{33}-g_{23}^2=\mathcal J^2|\nabla\psi|^2$. Of the $\mathbf V$-touching -products, only $\mathbf Y^*\!\cdot\mathbf V$, $\mathbf U^*\!\cdot\mathbf V$, and -$|\mathbf V|^2$ --- together with the scalar $-\mu_0K$ term --- enter -$\mathbf H_4$. The other two route elsewhere: -$\mathbf X^*\!\cdot\mathbf V$ (a $\xi_s$--$\xi_\psi$ coupling) feeds the -$\mathbf C$ block and -$\mathbf Z^*\!\cdot\mathbf V=\mu_0p'\,\xi_\psi^{\prime *}\xi_\psi$ (a -$\xi_\psi'$--$\xi_\psi$ coupling) the $\mathbf E$ block; the remaining -$\mathbf Q$-sector diagonals and cross products are listed for completeness and -feed the blocks -$\mathbf A,\mathbf B,\mathbf D,\mathbf H_{1\text{--}3}$ of the main text. - -\medskip\noindent\emph{Diagonal products.} - -\begin{equation} -|\mathbf X|^2 +\mathbf V = -\frac{(2\pi)^2}{\mathcal J^2} -\sum_{m,m'} u_m^* u_{m'}\,e^{2\pi i(m'-m)\theta} -\left[ -n^2 g_{22}+n(m+m')g_{23}+m m' g_{33} -\right], +\frac{\xi_\psi}{|\nabla\psi|^2} +(\mathcal A_2\vec v_2-\mathcal A_3\vec v_3), \end{equation} +we have +\begin{align} +|\mathbf V|^2 +&= +\frac{|\xi_\psi|^2}{|\nabla\psi|^4} +(\mathcal A_2\vec v_2-\mathcal A_3\vec v_3)\cdot +(\mathcal A_2\vec v_2-\mathcal A_3\vec v_3) \\ +&= +\frac{|\xi_\psi|^2}{\mathcal J^2|\nabla\psi|^4} +\left[ +\mathcal A_2^2 g_{22} +-2\mathcal A_2\mathcal A_3 g_{23} ++\mathcal A_3^2 g_{33} +\right]. +\end{align} + +Now expand the quadratic form: +\begin{align} +&\mathcal A_2^2 g_{22} +-2\mathcal A_2\mathcal A_3 g_{23} ++\mathcal A_3^2 g_{33} \\ +&= +(\mu_0j^\theta g_{23}+\mu_0j^\zeta g_{33})^2 g_{22} +-2(\mu_0j^\theta g_{23}+\mu_0j^\zeta g_{33}) +(\mu_0j^\theta g_{22}+\mu_0j^\zeta g_{23})g_{23} \\ +&\qquad ++(\mu_0j^\theta g_{22}+\mu_0j^\zeta g_{23})^2 g_{33} \\ +&= +(g_{22}g_{33}-g_{23}^2) +\left[ +\mu_0^2g_{22}(j^\theta)^2 ++ +2\mu_0^2g_{23}j^\theta j^\zeta ++ +\mu_0^2g_{33}(j^\zeta)^2 +\right]. +\end{align} +Therefore +\begin{align} +|\mathbf V|^2 +&= +\frac{|\xi_\psi|^2}{\mathcal J^2|\nabla\psi|^4} +(g_{22}g_{33}-g_{23}^2) +\left[ +\mu_0^2g_{22}(j^\theta)^2 ++ +2\mu_0^2g_{23}j^\theta j^\zeta ++ +\mu_0^2g_{33}(j^\zeta)^2 +\right] \\ +&= +\frac{|\xi_\psi|^2}{|\nabla\psi|^2} +\left[ +\mu_0^2g_{22}(j^\theta)^2 ++ +2\mu_0^2g_{23}j^\theta j^\zeta ++ +\mu_0^2g_{33}(j^\zeta)^2 +\right]. +\end{align} -\begin{equation} -|\mathbf Y|^2 -= -\frac{(2\pi\chi')^2}{\mathcal J^2} -\sum_{m,m'} (m-nq)(m'-nq)\,v_m^* v_{m'}\,e^{2\pi i(m'-m)\theta}\, -g_{11}, -\end{equation} +This is the completely explicit covariant-form result. +It is also useful to rewrite it invariantly. Since \begin{equation} -|\mathbf Z|^2 +\mathbf j = -\frac{\chi'^2}{\mathcal J^2} -\sum_{m,m'} v_m^{\prime *} v_{m'}'\,e^{2\pi i(m'-m)\theta} -\left[ -g_{22}+2q\,g_{23}+q^2 g_{33} -\right], +\sigma \mathbf B ++\frac{p'}{B^2}\mathbf B\times \nabla\psi, +\qquad +\sigma\equiv \frac{\mathbf j\cdot\mathbf B}{B^2}, \end{equation} - +one finds \begin{equation} -|\mathbf U|^2 +\frac{|\mu_0\mathbf j\times\nabla\psi|^2}{|\nabla\psi|^2} = -\frac{1}{\mathcal J^2} -\sum_{m,m'} v_m^* v_{m'}\,e^{2\pi i(m'-m)\theta} -\left[ -\chi''^2 g_{22}+2\chi''(q\chi')' g_{23}+(q\chi')'^2 g_{33} -\right], +\mu_0\sigma\,(\mu_0\mathbf j\cdot\mathbf B) ++ +\frac{(\mu_0p')^2}{B^2}|\nabla\psi|^2. \end{equation} - +Hence \begin{equation} -\begin{aligned} +\boxed{ |\mathbf V|^2 -&= -\frac{|\xi_\psi|^2}{|\nabla\psi|^2} -\left[ -\mu_0^2 g_{22}(j^\theta)^2 -+2\mu_0^2 g_{23}\,j^\theta j^\zeta -+\mu_0^2 g_{33}(j^\zeta)^2 -\right] \\ -&= += |\xi_\psi|^2 \left[ -\frac{\mu_0^2\sigma(\mathbf j\cdot\mathbf B)}{|\nabla\psi|^2} -+\frac{(\mu_0p')^2}{B^2} +\frac{\mu_0\sigma\,(\mu_0\mathbf j\cdot\mathbf B)}{|\nabla\psi|^2} ++ +\frac{(\mu_0p')^2}{B^2} \right]. -\end{aligned} +} \end{equation} -The second equality for $|\mathbf V|^2$ is \emph{not} a generic metric identity: -it uses force balance. With the Lagrange identity +With the Lagrange identity $|\mathbf j|^2B^2=(\mathbf j\cdot\mathbf B)^2+|\mathbf j\times\mathbf B|^2$ and $\sigma\equiv\mathbf j\cdot\mathbf B/B^2$ (so the bracket $\mu_0^2[g_{22}(j^\theta)^2+2g_{23}j^\theta j^\zeta+g_{33}(j^\zeta)^2]=\mu_0^2|\mathbf j|^2$), @@ -3222,171 +3025,44 @@ \subsection{The five diagonal and ten cross products} equality, not a proportionality: \begin{equation} \frac{\mu_0^2|\mathbf j|^2}{|\nabla\psi|^2} --\left[\frac{\mu_0\sigma(\mu_0\mathbf j\cdot\mathbf B)}{|\nabla\psi|^2} +-\left[\frac{\mu_0^2\sigma(\mathbf j\cdot\mathbf B)}{|\nabla\psi|^2} +\frac{(\mu_0p')^2}{B^2}\right] =\frac{\mu_0^2|\mathbf j\times\mathbf B|^2-(\mu_0p')^2|\nabla\psi|^2} {B^2|\nabla\psi|^2} =0 , \end{equation} the numerator vanishing identically by force balance -$\mu_0\mathbf j\times\mathbf B=\mu_0\nabla p=\mu_0 p'\nabla\psi$. Equivalently, in -the DCON currents~\eqref{eq:app_dconcurrents} the $2\pi f'q/\mathcal J$ pieces -cancel and $\chi'(q\,\mu_0 j^\theta-\mu_0 j^\zeta)=\mu_0p'$, whence -$\mu_0^2|\mathbf j\times\mathbf B|^2 -=\chi'^2(q\,\mu_0 j^\theta-\mu_0 j^\zeta)^2|\nabla\psi|^2=(\mu_0p')^2|\nabla\psi|^2$: -the parallel ($f'$) current supplies the -$\mu_0\sigma(\mu_0\mathbf j\cdot\mathbf B)$ term and the in-surface pressure -current supplies the $(\mu_0p')^2/B^2$ term. - -\medskip\noindent\emph{Cross products.} - -\begin{equation} -\mathbf X^*\!\cdot\mathbf Z -= --\frac{2\pi i\chi'}{\mathcal J^2} -\sum_{m,m'} u_m^* v_{m'}'\,e^{2\pi i(m'-m)\theta} -\left[ -n(g_{22}+q g_{23})+m(g_{23}+q g_{33}) -\right], -\end{equation} - -\begin{equation} -\mathbf X^*\!\cdot\mathbf Y -= --\frac{(2\pi)^2\chi'}{\mathcal J^2} -\sum_{m,m'} (m'-nq)\,u_m^* v_{m'}\,e^{2\pi i(m'-m)\theta} -\left[ -n\,g_{12}+m\,g_{31} -\right], -\end{equation} - -\begin{equation} -\begin{aligned} -\mathbf X^*\!\cdot\mathbf U -&= --\frac{2\pi i}{\mathcal J^2} -\sum_{m,m'} u_m^* v_{m'}\,e^{2\pi i(m'-m)\theta} \\ -&\qquad\times -\left[ -\chi''(n g_{22}+m g_{23})+(q\chi')'(n g_{23}+m g_{33}) -\right], -\end{aligned} -\end{equation} - +$\mu_0\mathbf j\times\mathbf B=\mu_0\nabla p=\mu_0 p'\nabla\psi$. \begin{equation} \begin{aligned} -\mathbf X^*\!\cdot\mathbf V -&= --2\pi i -\sum_{m,m'} u_m^* v_{m'}\,e^{2\pi i(m'-m)\theta}\, -\mu_0\!\left(m j^\theta-n j^\zeta\right) \\ +|\mathbf V|^2 &= --2\pi i -\sum_{m,m'} u_m^* v_{m'}\,e^{2\pi i(m'-m)\theta} -\left[ --\frac{2\pi f'}{\mathcal J}(m-nq)+n\frac{\mu_0p'}{\chi'} -\right], -\end{aligned} -\end{equation} - -Here $\mathbf W=n\vec v_2+m\vec v_3$, so the triple-product -rule~\eqref{eq:app_Vrule} gives the coefficient -$n\,\mu_0 j^\zeta-m\,\mu_0 j^\theta=-(m\,\mu_0 j^\theta-n\,\mu_0 j^\zeta)$ directly. - -\begin{equation} -\mathbf Y^*\!\cdot\mathbf Z -= -\frac{2\pi i\chi'^2}{\mathcal J^2} -\sum_{m,m'} (m-nq)\,v_m^* v_{m'}'\,e^{2\pi i(m'-m)\theta} -\left[ -g_{12}+q\,g_{31} -\right], -\end{equation} - -\begin{equation} -\mathbf Y^*\!\cdot\mathbf U -= -\frac{2\pi i\chi'}{\mathcal J^2} -\sum_{m,m'} (m-nq)\,v_m^* v_{m'}\,e^{2\pi i(m'-m)\theta} -\left[ -\chi''\,g_{12}+(q\chi')'\,g_{31} -\right], -\end{equation} - -\begin{equation} -\mathbf Z^*\!\cdot\mathbf U -= -\frac{\chi'}{\mathcal J^2} -\sum_{m,m'} v_m^{\prime *} v_{m'}\,e^{2\pi i(m'-m)\theta} -\left[ -\chi''(g_{22}+q g_{23})+(q\chi')'(g_{23}+q g_{33}) -\right], -\end{equation} - -\begin{equation} -\mathbf Z^*\!\cdot\mathbf V -= -\mu_0p'\,\xi_\psi^{\prime *}\xi_\psi -\qquad(\text{pointwise}), -\end{equation} - -For $\mathbf Z^*\!\cdot\mathbf V$ the rule~\eqref{eq:app_Vrule} with -$\mathbf W=\vec v_2+q\vec v_3$ gives, before inserting currents, -$\mathbf Z^*\!\cdot\mathbf V=\chi'\,\xi_\psi^{\prime *}\xi_\psi\, -(q\,\mu_0 j^\theta-\mu_0 j^\zeta)$; inserting~\eqref{eq:app_dconcurrents}, -$q\,\mu_0 j^\theta-\mu_0 j^\zeta -=-\tfrac{2\pi f'q}{\mathcal J}+\tfrac{\mu_0p'}{\chi'}+\tfrac{2\pi f'q}{\mathcal J} -=\tfrac{\mu_0p'}{\chi'}$ (the $2\pi f'q/\mathcal J$ terms cancel), so -$\mathbf Z^*\!\cdot\mathbf V=\mu_0p'\,\xi_\psi^{\prime *}\xi_\psi$. - -\begin{equation} -\mathbf U^*\!\cdot\mathbf V -= -|\xi_\psi|^2 +\frac{|\xi_\psi|^2}{|\nabla\psi|^2} \left[ -\mu_0p'\frac{\chi''}{\chi'}-\frac{2\pi f'q'\chi'}{\mathcal J} -\right] -\qquad(\text{pointwise}), -\end{equation} - -For $\mathbf U^*\!\cdot\mathbf V$ the rule~\eqref{eq:app_Vrule} with -$\mathbf W=\chi''\vec v_2+(q\chi')'\vec v_3$ leaves the pointwise -coefficient $|\xi_\psi|^2[-\chi''\mu_0 j^\zeta+(q\chi')'\mu_0 j^\theta]$; -inserting~\eqref{eq:app_dconcurrents} and expanding $(q\chi')'=q'\chi'+q\chi''$, -the $\pm2\pi f'q\chi''/\mathcal J$ cross terms cancel, leaving -$|\xi_\psi|^2[\mu_0p'\tfrac{\chi''}{\chi'}-\tfrac{2\pi f'q'\chi'}{\mathcal J}]$. - -\begin{equation} -\begin{aligned} -\mathcal J\,(\mathbf Y^*\!\cdot\mathbf V+\mathbf V^*\!\cdot\mathbf Y) +\mu_0^2 g_{22}(j^\theta)^2 ++2\mu_0^2 g_{23}\,j^\theta j^\zeta ++\mu_0^2 g_{33}(j^\zeta)^2 +\right] \\ &= -\chi'\,\mathcal F -\left\{ -\left[(\partial_\theta+q\partial_\zeta)\xi_\psi^*\right]\xi_\psi -+\xi_\psi^*\left[(\partial_\theta+q\partial_\zeta)\xi_\psi\right] -\right\}, \\ -\mathcal F -&\equiv -\mathcal J\, -\frac{(\mu_0 j^\theta)(\nabla\zeta\cdot\nabla\psi)-(\mu_0 j^\zeta)(\nabla\theta\cdot\nabla\psi)}{|\nabla\psi|^2}. -\end{aligned} -\end{equation} - -\medskip\noindent\emph{Scalar Bernstein term.} - -\begin{equation} --\mu_0\,\mathcal J\,K\frac{|\xi_\psi|^2}{|\nabla\psi|^2} -= |\xi_\psi|^2 \left[ --\mathcal J\mu_0\sigma S_\psi --\mathcal J\frac{\mu_0^2\sigma^2B^2}{|\nabla\psi|^2} --2\mu_0p'\mathcal J\frac{\kappa_\psi}{|\nabla\psi|^2} +\frac{\mu_0^2\sigma(\mathbf j\cdot\mathbf B)}{|\nabla\psi|^2} ++\frac{(\mu_0p')^2}{B^2} \right]. +\end{aligned} \end{equation} +Equivalently, in +the DCON currents~\eqref{eq:dconcurrents} the $2\pi f'q/\mathcal J$ pieces +cancel and $\chi'(q\,\mu_0 j^\theta-\mu_0 j^\zeta)=\mu_0p'$, whence +$\mu_0^2|\mathbf j\times\mathbf B|^2 +=\chi'^2(q\,\mu_0 j^\theta-\mu_0 j^\zeta)^2|\nabla\psi|^2=(\mu_0p')^2|\nabla\psi|^2$: +the parallel ($f'$) current supplies the +$\mu_0^2\sigma(\mathbf j\cdot\mathbf B)$ term and the in-surface pressure +current supplies the $(\mu_0p')^2/B^2$ term. -\subsection{Assembly of the $\mathbf V$-sector and the $\theta$-integration by parts} -\label{app:assembly} +\medskip +\noindent\rule{\linewidth}{0.4pt} +\medskip The four $\mathbf V$-touching contributions combine, under a common $\mathcal J$ weight and before any equilibrium input, as @@ -3395,131 +3071,31 @@ \subsection{Assembly of the $\mathbf V$-sector and the $\theta$-integration by p \begin{aligned} &\int d\theta\,d\zeta\;\mathcal J \left[ -(\mathbf Y^*\!\cdot\mathbf V+\mathbf V^*\!\cdot\mathbf Y) -+(\mathbf U^*\!\cdot\mathbf V+\mathbf V^*\!\cdot\mathbf U) +(\mathbf M^*\!\cdot\mathbf V+\mathbf V^*\!\cdot\mathbf M) ++(\mathbf O^*\!\cdot\mathbf V+\mathbf V^*\!\cdot\mathbf O) +|\mathbf V|^2 -\mu_0K\frac{|\xi_\psi|^2}{|\nabla\psi|^2} \right]\\ &=\int d\theta\,d\zeta\, -\bigg[ -\underbrace{\chi'\,\mathcal F\,\partial_\theta|\xi_\psi|^2}_{\mathbf Y^*\mathbf V+\text{c.c.}} -+|\xi_\psi|^2\Big( -\underbrace{2\mu_0p'\mathcal J\tfrac{\chi''}{\chi'}-4\pi f'q'\chi'}_{\mathbf U^*\mathbf V+\text{c.c.}} -+\underbrace{\mathcal J\tfrac{\mu_0^2\sigma(\mathbf j\cdot\mathbf B)}{|\nabla\psi|^2} -+\mathcal J\tfrac{(\mu_0p')^2}{B^2}}_{|\mathbf V|^2}\\ -&\hspace{5em} -\underbrace{ --\,\mathcal J\mu_0\sigma S_\psi --\mathcal J\tfrac{\mu_0^2\sigma^2B^2}{|\nabla\psi|^2} +\bigg[|\xi_\psi|^2\Big( +\underbrace{-\frac{2\pi f'}{\chi'}\,\mathcal J\,S_\psi+{\color{red}\cancel{2\pi \chi' f'q'}} +-\mu_0p'\partial_\theta\left[\mathcal J\frac{\nabla\psi\cdot\nabla\theta}{|\nabla\psi|^2}\right]}_{\mathbf M^*\mathbf V+\mathbf V^*\mathbf M} ++\underbrace{2\mu_0p'\mathcal J\tfrac{\chi''}{\chi'}-2\pi f'q'\chi'\,{\color{red}\cancel{-\,2\pi f'q'\chi'}}}_{\mathbf O^*\mathbf V+\mathbf V^*\mathbf O}\\ +&+\underbrace{{\color{blue}\cancel{\mathcal J\tfrac{\mu_0^2\sigma(\mathbf j\cdot\mathbf B)}{|\nabla\psi|^2}}} ++\mathcal J\tfrac{(\mu_0p')^2}{B^2}}_{|\mathbf V|^2} +\underbrace{-\,\mathcal J\mu_0\sigma S_\psi +\,{\color{blue}\cancel{-\,\mathcal J\tfrac{\mu_0^2\sigma^2B^2}{|\nabla\psi|^2}}} -2\mu_0p'\mathcal J\tfrac{\kappa_\psi}{|\nabla\psi|^2}}_{-\mu_0K|\xi_\psi|^2/|\nabla\psi|^2} \Big) -\bigg], -\quad -\mathcal F\equiv -\mathcal J\frac{\mu_0 j^\theta(\nabla\zeta\cdot\nabla\psi)-\mu_0 j^\zeta(\nabla\theta\cdot\nabla\psi)}{|\nabla\psi|^2}. -\end{aligned} -\end{equation} - -Only $\partial_\theta|\xi_\psi|^2$ appears (not the full -$(\partial_\theta+q\partial_\zeta)|\xi_\psi|^2$ that -$\mathbf Y^*\!\cdot\mathbf V+\text{c.c.}$ produces) because $|\xi_\psi|^2$ is -$\zeta$-independent for a single-$n$ perturbation, so -$\partial_\zeta|\xi_\psi|^2=0$ pointwise and the $q\,\partial_\zeta$ piece drops -identically. - -Only $\mathbf Y^*\!\cdot\mathbf V$ carries a $\theta$ derivative. Integrating -it by parts (the boundary term vanishes because $\chi'$ is a flux function and -$\mathcal F,|\xi_\psi|^2$ are $\theta$-periodic), its $|\xi_\psi|^2$ -coefficient becomes $-\chi'\,\partial_\theta\mathcal F$: -\begin{equation} -\int d\theta\,\chi'\mathcal F\,\partial_\theta|\xi_\psi|^2 -=-\int d\theta\;|\xi_\psi|^2\,\chi'\,\partial_\theta\mathcal F, -\qquad --\chi'\,\partial_\theta\mathcal F -=-\frac{2\pi f'}{\chi'}\mathcal J S_\psi -+2\pi f'q'\chi' --\mu_0p'\,\partial_\theta\!\left(\mathcal J\frac{\nabla\psi\cdot\nabla\theta}{|\nabla\psi|^2}\right), -\end{equation} - -A $\theta$ derivative cannot generate $q'=dq/d\psi$; the explicit -$+2\pi f'q'\chi'$ above only compensates the $q'$ introduced by rewriting part -of $-\chi'\partial_\theta\mathcal F$ through -$S_\psi=\tfrac{\chi'^2}{\mathcal J}[q'+\partial_\theta(\cdots)]$, so the net -$q'$ content of $-\chi'\partial_\theta\mathcal F$ is zero. As written, the -$+2\pi f'q'\chi'$ pairs below with the $-4\pi f'q'\chi'$ of -$\mathbf U^*\!\cdot\mathbf V$ to give $-2\pi f'q'\chi'\,\mathbf I$. - -Three immediate cancellations follow: - -\begin{equation} --\frac{2\pi f'}{\chi'}\mathcal J S_\psi-\mathcal J\mu_0\sigma S_\psi -=-\mathcal J S_\psi\!\left(\frac{2\pi f'}{\chi'}+\mu_0\sigma\right), -\quad -\frac{\mu_0^2\sigma(\mathbf j\cdot\mathbf B)-\mu_0^2\sigma^2B^2}{|\nabla\psi|^2}=0, -\quad -2\pi f'q'\chi'-4\pi f'q'\chi'=-2\pi f'q'\chi', -\end{equation} -and substituting the DCON shear and curvature -\begin{equation} -S_\psi=\frac{\chi'^2}{\mathcal J}\left[q'+\partial_\theta\!\left(\frac{q \nabla\psi\cdot\nabla\theta-\nabla\psi\cdot\nabla\zeta}{|\nabla\psi|^2}\right)\right], -\qquad -\kappa_\psi=\frac{|\nabla\psi|^2}{B^2}\left[\mu_0 p'+\tfrac12\partial_\psi B^2+\tfrac12\partial_\theta B^2\frac{\nabla\psi\cdot\nabla\theta}{|\nabla\psi|^2}\right] -\end{equation} -(so that $\mathcal J$ cancels in $-\mathcal J S_\psi$ and the two $(\mu_0p')^2/B^2$ pieces combine), the whole sector becomes the single fully expanded identity -\begin{equation} -\begin{aligned} -&\int d\theta\,d\zeta\;\mathcal J -\left[ -(\mathbf Y^*\!\cdot\mathbf V+\mathbf V^*\!\cdot\mathbf Y) -+(\mathbf U^*\!\cdot\mathbf V+\mathbf V^*\!\cdot\mathbf U) -+|\mathbf V|^2 --\mu_0K\frac{|\xi_\psi|^2}{|\nabla\psi|^2} -\right]\\ -&=\int d\theta\,d\zeta\;|\xi_\psi|^2 -\bigg[ --2\pi f'q'\chi' -+2\mu_0p'\mathcal J\frac{\chi''}{\chi'} --\mu_0p'\,\partial_\theta\!\left(\mathcal J\frac{\nabla\psi\cdot\nabla\theta}{|\nabla\psi|^2}\right) --\mathcal J\frac{(\mu_0p')^2}{B^2}\\ -&\hspace{4em} --\frac{\mu_0p'\mathcal J}{B^2}\partial_\psi B^2 --\frac{\mu_0p'\mathcal J}{B^2}\partial_\theta B^2\frac{\nabla\psi\cdot\nabla\theta}{|\nabla\psi|^2} --\chi'^2\!\left(\frac{2\pi f'}{\chi'}+\mu_0\sigma\right)\! -\left[q'+\partial_\theta\!\left(\frac{q \nabla\psi\cdot\nabla\theta-\nabla\psi\cdot\nabla\zeta}{|\nabla\psi|^2}\right)\right] -\bigg]. -\end{aligned} -\label{eq:H4_expanded} -\end{equation} - -Up to \eqref{eq:H4_expanded} no equilibrium input beyond the DCON currents has -been used. The first two terms give $-2\pi f'q'\chi'\mathbf I$ and -$\mu_0p'(\chi''/\chi')\mathbf J$; it remains to show, for arbitrary Fourier -amplitudes $\{v_m\}$, that the rest closes, -\begin{equation} -\begin{aligned} -&\int d\theta\,d\zeta\;|\xi_\psi|^2 -\bigg[ --\chi'^2\!\left(\frac{2\pi f'}{\chi'}+\mu_0\sigma\right)\! -\left[q'+\partial_\theta\!\left(\frac{q \nabla\psi\cdot\nabla\theta-\nabla\psi\cdot\nabla\zeta}{|\nabla\psi|^2}\right)\right] --\mu_0p'\,\partial_\theta\!\left(\mathcal J\frac{\nabla\psi\cdot\nabla\theta}{|\nabla\psi|^2}\right)\\ -&\hspace{4em} --\mathcal J\frac{(\mu_0p')^2}{B^2} --\frac{\mu_0p'\mathcal J}{B^2}\partial_\psi B^2 --\frac{\mu_0p'\mathcal J}{B^2}\partial_\theta B^2\frac{\nabla\psi\cdot\nabla\theta}{|\nabla\psi|^2} \bigg]\\ -&=\int d\theta\,d\zeta\;|\xi_\psi|^2 -\bigg[ --2\pi f'q'\chi' --\mu_0\sigma\chi'^2 q' --2\pi f'\chi'\,\partial_\theta\!\left(\frac{q \nabla\psi\cdot\nabla\theta-\nabla\psi\cdot\nabla\zeta}{|\nabla\psi|^2}\right)\\ -&\hspace{4em} --\mu_0\sigma\chi'^2\,\partial_\theta\!\left(\frac{q \nabla\psi\cdot\nabla\theta-\nabla\psi\cdot\nabla\zeta}{|\nabla\psi|^2}\right) --\mu_0p'\,\partial_\theta\!\left(\mathcal J\frac{\nabla\psi\cdot\nabla\theta}{|\nabla\psi|^2}\right) --\mathcal J\frac{(\mu_0p')^2}{B^2}\\ -&\hspace{4em} --\frac{\mu_0p'\mathcal J}{B^2}\partial_\psi B^2 --\frac{\mu_0p'\mathcal J}{B^2}\partial_\theta B^2\frac{\nabla\psi\cdot\nabla\theta}{|\nabla\psi|^2} -\bigg]. +&=\int d\theta\,d\zeta\, +\bigg[|\xi_\psi|^2\Big( +-\mu_0p'\partial_\theta\left[\mathcal J\frac{\nabla\psi\cdot\nabla\theta}{|\nabla\psi|^2}\right] ++2\mu_0p'\mathcal J\tfrac{\chi''}{\chi'}-2\pi f'q'\chi'\, ++\mathcal J\tfrac{(\mu_0p')^2}{B^2} +-\,\big(\mu_0\sigma +\frac{2\pi f'}{\chi'}\big)\mathcal JS_\psi +-2\mu_0p'\mathcal J\tfrac{\kappa_\psi}{|\nabla\psi|^2} +\Big)\bigg]. \end{aligned} \end{equation} @@ -3565,16 +3141,12 @@ \subsection{The $\sigma$ identity: collapse of the parallel-current coefficient} Applying the cross-product identity $(\mathbf A\times\mathbf B)\cdot(\mathbf C\times\mathbf D)=(\mathbf A\cdot\mathbf C)(\mathbf B\cdot\mathbf D)-(\mathbf A\cdot\mathbf D)(\mathbf B\cdot\mathbf C)$ to the two cross-product factors, -\begin{equation} -\begin{aligned} -|q\,\nabla\psi\times\nabla\theta-\nabla\psi\times\nabla\zeta|^2 -&=(\nabla\psi\cdot\nabla\psi)(q^2\nabla\theta\cdot\nabla\theta-2q\,\nabla\theta\cdot\nabla\zeta+\nabla\zeta\cdot\nabla\zeta) --(q\,\nabla\psi\cdot\nabla\theta-\nabla\psi\cdot\nabla\zeta)^2,\\ -(\nabla\psi\times\nabla\theta)\cdot(q\,\nabla\psi\times\nabla\theta-\nabla\psi\times\nabla\zeta) -&=(\nabla\psi\cdot\nabla\psi)(q\,\nabla\theta\cdot\nabla\theta-\nabla\theta\cdot\nabla\zeta) --(\nabla\psi\cdot\nabla\theta)(q\,\nabla\psi\cdot\nabla\theta-\nabla\psi\cdot\nabla\zeta). -\end{aligned} -\end{equation} + +$|q\,\nabla\psi\times\nabla\theta-\nabla\psi\times\nabla\zeta|^2=(\nabla\psi\cdot\nabla\psi)(q^2\nabla\theta\cdot\nabla\theta-2q\,\nabla\theta\cdot\nabla\zeta+\nabla\zeta\cdot\nabla\zeta) +-(q\,\nabla\psi\cdot\nabla\theta-\nabla\psi\cdot\nabla\zeta)^2,$ +$(\nabla\psi\times\nabla\theta)\cdot(q\,\nabla\psi\times\nabla\theta-\nabla\psi\times\nabla\zeta)=(\nabla\psi\cdot\nabla\psi)(q\,\nabla\theta\cdot\nabla\theta-\nabla\theta\cdot\nabla\zeta) +-(\nabla\psi\cdot\nabla\theta)(q\,\nabla\psi\cdot\nabla\theta-\nabla\psi\cdot\nabla\zeta).$ + The first is $B^2/\chi'^2$; the second turns the collapse into the pure-$p'$, dot-product form \begin{equation} \frac{2\pi f'}{\chi'}+\mu_0\sigma @@ -3582,77 +3154,38 @@ \subsection{The $\sigma$ identity: collapse of the parallel-current coefficient} \big[(\nabla\psi\cdot\nabla\psi)(q\,\nabla\theta\cdot\nabla\theta-\nabla\theta\cdot\nabla\zeta) -(\nabla\psi\cdot\nabla\theta)(q\,\nabla\psi\cdot\nabla\theta-\nabla\psi\cdot\nabla\zeta)\big]. \end{equation} -Write the local shorthands -$\mathcal D\equiv(\nabla\psi\cdot\nabla\psi)(q\,\nabla\theta\cdot\nabla\theta-\nabla\theta\cdot\nabla\zeta) --(\nabla\psi\cdot\nabla\theta)(q\,\nabla\psi\cdot\nabla\theta-\nabla\psi\cdot\nabla\zeta)$ -and -$G_s\equiv\dfrac{q\,\nabla\psi\cdot\nabla\theta-\nabla\psi\cdot\nabla\zeta}{|\nabla\psi|^2}$. -Inserting $\mu_0\sigma=-\tfrac{2\pi f'}{\chi'}-\tfrac{\mu_0 p'\mathcal J\,\mathcal D}{B^2}$ into the two $-\mu_0\sigma\chi'^2(\cdots)$ pieces of the distributed form, each $f'$ part \emph{exactly} cancels the existing $-2\pi f'\chi'(\cdots)$ partner: + +and define $\mathcal D\equiv\big[(\nabla\psi\cdot\nabla\psi)(q\,\nabla\theta\cdot\nabla\theta-\nabla\theta\cdot\nabla\zeta) +-(\nabla\psi\cdot\nabla\theta)(q\,\nabla\psi\cdot\nabla\theta-\nabla\psi\cdot\nabla\zeta)\big]$ to obtain the final form + +\begin{equation} +\frac{2\pi f'}{\chi'}+\mu_0\sigma=-\frac{\mu_0p'\mathcal J\,\mathcal D}{B^2}. +\end{equation} +This $\mathcal D$ can be expressed in terms of the metric coefficients as \begin{equation} \begin{aligned} -\cancel{-\,2\pi f'q'\chi'}\;-\,\mu_0\sigma\chi'^2 q' -&=\cancel{-\,2\pi f'q'\chi'}\;\cancel{+\,2\pi f'q'\chi'}\;+\;\frac{\mu_0p'\chi'^2\mathcal J\,q'\,\mathcal D}{B^2},\\ -\cancel{-\,2\pi f'\chi'\,\partial_\theta G_s}\;-\,\mu_0\sigma\chi'^2\,\partial_\theta G_s -&=\cancel{-\,2\pi f'\chi'\,\partial_\theta G_s}\;\cancel{+\,2\pi f'\chi'\,\partial_\theta G_s}\;+\;\frac{\mu_0p'\chi'^2\mathcal J\,\mathcal D}{B^2}\,\partial_\theta G_s. +\mathcal D +&\equiv g^{\psi\psi}(q\,g^{\theta\theta}-g^{\theta\zeta}) +-g^{\psi\theta}(q\,g^{\psi\theta}-g^{\psi\zeta})=\frac{q\,g_{\zeta\zeta}+g_{\theta\zeta}}{\mathcal J^2}. +%=\frac{\partial_q G_\alpha}{2\mathcal J^2}, \end{aligned} \end{equation} -The crossed-out $f'$ pairs vanish identically, so the entire $\mathbf V$-sector -residual reduces to pure $\mu_0p'$ pieces; the surviving geometric -$\theta$-derivatives are closed by the Grad--Shafranov identity of -Sec.~\ref{app:master}. - -\subsection{Master identity, cofactor form, and the Grad--Shafranov closure} -\label{app:master} - -The closure is most transparent pointwise in $\theta$. - -\paragraph{Four weights and target.} -Write the sector as $\int d\theta\,\mathcal W\,|\xi_\psi|^2$ with -$\mathcal W=W_{UV}+W_V+W_K+W_{YV}$ ($\mathbf Y^*\!\cdot\mathbf V$ already -integrated by parts), abbreviating $g^{\psi\psi}=|\nabla\psi|^2$: -\begin{align} -W_{UV}&=2\mu_0p'\tfrac{\chi''}{\chi'}\mathcal J-4\pi f'q'\chi', -\label{eq:WUV}\\ -W_{V}&=\mathcal J\tfrac{\mu_0^2\sigma(\mathbf j\cdot\mathbf B)}{g^{\psi\psi}} - +\mathcal J\tfrac{(\mu_0p')^2}{B^2}, -\label{eq:WV}\\ -W_{K}&=-\mathcal J\mu_0\sigma S_\psi - -\mathcal J\tfrac{\mu_0^2\sigma^2B^2}{g^{\psi\psi}} - -\tfrac{2\mu_0p'\mathcal J\kappa_\psi}{g^{\psi\psi}}, -\label{eq:WK}\\ -W_{YV}&=-\tfrac{2\pi f'}{\chi'}\mathcal J S_\psi+2\pi f'q'\chi' - -\mu_0p'\,\partial_\theta\!\big(\mathcal J\tfrac{g^{\psi\theta}}{g^{\psi\psi}}\big). -\label{eq:WYV} -\end{align} -Target -$\;W_\star=\mu_0p'\tfrac{\chi''}{\chi'}\mathcal J+\mu_0p'\mathcal J'-2\pi f'q'\chi'$, -i.e.\ $\mathbf H_4=\mu_0p'(\tfrac{\chi''}{\chi'}\mathbf J+\mathbf J')-2\pi f'q'\chi'\mathbf I$. -\paragraph{Step 1 — parallel current ($\mu_0\mathbf j\cdot\mathbf B=\mu_0\sigma B^2$).} -The first term of \eqref{eq:WV} and the second of \eqref{eq:WK} cancel pointwise: \begin{equation} -\mathcal J\tfrac{\mu_0^2\sigma(\mathbf j\cdot\mathbf B)}{g^{\psi\psi}} --\mathcal J\tfrac{\mu_0^2\sigma^2B^2}{g^{\psi\psi}}=0 -\;\Longrightarrow\; -W_V+W_K=\mathcal J\tfrac{(\mu_0p')^2}{B^2} --\mathcal J\mu_0\sigma S_\psi --\tfrac{2\mu_0p'\mathcal J\kappa_\psi}{g^{\psi\psi}}. -\label{eq:step1} +G_\alpha\equiv g_{\theta\theta}+2q\,g_{\theta\zeta}+q^2g_{\zeta\zeta}=\frac{\mathcal J^2B^2}{\chi'^2}. \end{equation} -\paragraph{Step 2 — $\sigma$ identity -$\;\mu_0\sigma=-\tfrac{2\pi f'}{\chi'}-\tfrac{\mu_0p'\mathcal J\,\mathcal D}{B^2}$.} -The shear term of \eqref{eq:step1} splits: -\begin{equation} --\mathcal J\mu_0\sigma S_\psi -=\underbrace{\tfrac{2\pi f'}{\chi'}\mathcal J S_\psi}_{\text{cancels \eqref{eq:WYV}}} -+\tfrac{\mu_0p'\mathcal J^2\mathcal D}{B^2}\,S_\psi . -\label{eq:step2} -\end{equation} +\subsection{Master identity and the Grad--Shafranov closure} +\label{app:master} -\paragraph{Step 3 — sum $\mathcal W=\eqref{eq:WUV}+\eqref{eq:step1}+\eqref{eq:WYV}$.} -The $\tfrac{2\pi f'}{\chi'}\mathcal J S_\psi$ pair cancels and -$-4\pi f'q'\chi'+2\pi f'q'\chi'=-2\pi f'q'\chi'$, leaving +The closure is most transparent pointwise in $\theta$. Write the sector as +$\int d\theta\,\mathcal W\,|\xi_\psi|^2$, abbreviating $g^{\psi\psi}=|\nabla\psi|^2$. The +assembled pointwise weight $\mathcal W$ was obtained at the end of +Sec.~\ref{app:reductions}; inserting the $\sigma$ identity of +Sec.~\ref{app:sigma}, +$\tfrac{2\pi f'}{\chi'}+\mu_0\sigma=-\tfrac{\mu_0p'\mathcal J\,\mathcal D}{B^2}$, +into its shear term $-\big(\mu_0\sigma+\tfrac{2\pi f'}{\chi'}\big)\mathcal J S_\psi$ +gives \begin{equation} \mathcal W=-2\pi f'q'\chi' +2\mu_0p'\tfrac{\chi''}{\chi'}\mathcal J @@ -3662,9 +3195,12 @@ \subsection{Master identity, cofactor form, and the Grad--Shafranov closure} +\tfrac{\mu_0p'\mathcal J^2\mathcal D}{B^2}\,S_\psi . \label{eq:step3} \end{equation} +The target is +$\;W_\star=\mu_0p'\tfrac{\chi''}{\chi'}\mathcal J+\mu_0p'\mathcal J'-2\pi f'q'\chi'$, +i.e.\ $\mathbf H_4=\mu_0p'(\tfrac{\chi''}{\chi'}\mathbf J+\mathbf J')-2\pi f'q'\chi'\mathbf I$. -\paragraph{Step 4 — $\mathcal W=W_\star$, divide by $\mu_0p'$ (master identity).} -Subtracting $W_\star$ (the $-2\pi f'q'\chi'$ and one $\mu_0p'\tfrac{\chi''}{\chi'}\mathcal J$ match): +\paragraph{Master identity ($\mathcal W=W_\star$, divided by $\mu_0p'$).} +Subtracting $W_\star$ from \eqref{eq:step3} (the $-2\pi f'q'\chi'$ and one $\mu_0p'\tfrac{\chi''}{\chi'}\mathcal J$ match): \begin{equation} \boxed{\; \mathcal J\frac{\chi''}{\chi'} @@ -3677,194 +3213,135 @@ \subsection{Master identity, cofactor form, and the Grad--Shafranov closure} \end{equation} with the inputs \begin{equation} -\mathcal D -\equiv g^{\psi\psi}(q\,g^{\theta\theta}-g^{\theta\zeta}) --g^{\psi\theta}(q\,g^{\psi\theta}-g^{\psi\zeta}), -\qquad S_\psi=\frac{\chi'^2}{\mathcal J}\Big[q'+\partial_\theta G_s\Big], \qquad -G_s\equiv\frac{q\,g^{\psi\theta}-g^{\psi\zeta}}{g^{\psi\psi}} . +G_s\equiv\frac{q\,g^{\psi\theta}-g^{\psi\zeta}}{g^{\psi\psi}}, \label{eq:DSdef} \end{equation} +and $\mathcal D$ as defined in Sec.~\ref{app:sigma}. -\paragraph{Cofactor form of $\mathcal D$ ($g^{ij}=(g_{ij})^{-1}$, $\det g_{ij}=\mathcal J^2$).} -The minors are -$g^{\psi\psi}g^{\theta\theta}-(g^{\psi\theta})^2=g_{\zeta\zeta}/\mathcal J^2$, -$\;g^{\psi\psi}g^{\theta\zeta}-g^{\psi\theta}g^{\psi\zeta}=-g_{\theta\zeta}/\mathcal J^2$, hence -\begin{equation} -\boxed{\; -\mathcal D=\frac{q\,g_{\zeta\zeta}+g_{\theta\zeta}}{\mathcal J^2} -=\frac{\partial_q G_\alpha}{2\mathcal J^2}, -\qquad -\frac{\chi'^2\mathcal D}{B^2} -=\frac{q\,g_{\zeta\zeta}+g_{\theta\zeta}}{G_\alpha}, -\;} -\qquad -G_\alpha\equiv g_{\theta\theta}+2q\,g_{\theta\zeta}+q^2g_{\zeta\zeta}=\frac{\mathcal J^2B^2}{\chi'^2}. -\label{eq:cofactor} -\end{equation} - -\paragraph{Step 5 — insert $\kappa_\psi$ and $S_\psi$ into \eqref{eq:master}.} -With -$\kappa_\psi=\tfrac{g^{\psi\psi}}{B^2}\big[\mu_0p' -+\tfrac12\partial_\psi B^2+\tfrac12\partial_\theta B^2\,\tfrac{g^{\psi\theta}}{g^{\psi\psi}}\big]$, +\paragraph{Direct proof from Amp\`ere's law.} +The master identity \eqref{eq:master} is proved directly from +\(\nabla\times\mathbf B=\mu_0\mathbf j\); nothing beyond the covariant field +components $B_i$ is needed. Since $B^\theta=\chi'/\mathcal J$, +$B^\zeta=q\chi'/\mathcal J$, and $B^\psi=0$, \begin{equation} --\frac{2\mathcal J\kappa_\psi}{g^{\psi\psi}} -=-\frac{2\mathcal J\mu_0p'}{B^2} - -\frac{\mathcal J\,\partial_\psi B^2}{B^2} - -\frac{\mathcal J\,g^{\psi\theta}\,\partial_\theta B^2}{g^{\psi\psi}B^2}, +B_i=g_{i\theta}B^\theta+g_{i\zeta}B^\zeta +=\frac{\chi'}{\mathcal J}\,(g_{i\theta}+qg_{i\zeta}), \qquad -\frac{\mathcal J^2\mathcal D}{B^2}\,S_\psi -=\mathcal J\,\frac{q\,g_{\zeta\zeta}+g_{\theta\zeta}}{G_\alpha}\,\big(q'+\partial_\theta G_s\big). -\label{eq:step5a} +B^2=B_\theta B^\theta+B_\zeta B^\zeta +=\frac{\chi'}{\mathcal J}\,\big(B_\theta+qB_\zeta\big), +\label{eq:Bcov_GS} \end{equation} -Using $\beta^2\equiv B^2/\chi'^2=G_\alpha/\mathcal J^2$, +so that \begin{equation} -\frac{\partial_\psi B^2}{B^2}=2\frac{\chi''}{\chi'}+\frac{\partial_\psi\beta^2}{\beta^2}, -\qquad -\frac{\partial_\theta B^2}{B^2}=\frac{\partial_\theta G_\alpha}{G_\alpha}-2\frac{\partial_\theta\mathcal J}{\mathcal J}, +B_\theta+qB_\zeta=\frac{\mathcal J B^2}{\chi'}, \qquad -\frac{\mathcal J\mu_0p'}{B^2}-\frac{2\mathcal J\mu_0p'}{B^2}=-\frac{\mathcal J\mu_0p'}{B^2}, -\label{eq:step5b} +\mathcal D +=\frac{q\,g_{\zeta\zeta}+g_{\theta\zeta}}{\mathcal J^2} +=\frac{B_\zeta}{\mathcal J\chi'}, +\label{eq:Dzeta_GS} \end{equation} -so $\mathcal J\tfrac{\chi''}{\chi'}-2\mathcal J\tfrac{\chi''}{\chi'}=-\mathcal J\tfrac{\chi''}{\chi'}$ and \eqref{eq:master} becomes +the second using the cofactor form of $\mathcal D$ from +Sec.~\ref{app:sigma} together with +$B_\zeta=\tfrac{\chi'}{\mathcal J}(g_{\theta\zeta}+qg_{\zeta\zeta})$ +from \eqref{eq:Bcov_GS}. Moreover, raising the index with $B^\psi=0$, \begin{equation} -\boxed{\; -\begin{aligned} -&-\mathcal J\frac{\chi''}{\chi'} --\frac{\mathcal J\mu_0p'}{B^2} --\mathcal J\frac{\partial_\psi\beta^2}{\beta^2} --\frac{\mathcal J\,g^{\psi\theta}}{g^{\psi\psi}}\Big(\frac{\partial_\theta G_\alpha}{G_\alpha}-2\frac{\partial_\theta\mathcal J}{\mathcal J}\Big)\\ -&\qquad --\partial_\theta\!\Big(\mathcal J\frac{g^{\psi\theta}}{g^{\psi\psi}}\Big) -+\frac{\mathcal J\,(q\,g_{\zeta\zeta}+g_{\theta\zeta})}{G_\alpha}\big(q'+\partial_\theta G_s\big) -=\mathcal J' . -\end{aligned}\;} -\label{eq:gsstep} +0=B^\psi=g^{\psi\psi}B_\psi+g^{\psi\theta}B_\theta+g^{\psi\zeta}B_\zeta +\;\Longrightarrow\; +B_\psi +=-\frac{g^{\psi\theta}}{g^{\psi\psi}}\,\frac{\mathcal J B^2}{\chi'} ++G_s\,B_\zeta , +\label{eq:Bpsi_GS} \end{equation} +where the definition \eqref{eq:DSdef} of $G_s$ supplies +$g^{\psi\zeta}/g^{\psi\psi}=q\,g^{\psi\theta}/g^{\psi\psi}-G_s$ and +\eqref{eq:Dzeta_GS} recombines $B_\theta+qB_\zeta$. -Equation~\eqref{eq:gsstep} is the remaining Grad--Shafranov input. It can be -derived directly from the covariant-component form of -\(\nabla\times\mathbf B=\mu_0\mathbf j\), as follows. Define +For an axisymmetric equilibrium ($\partial_\zeta=0$) the contravariant +components of $\mu_0\mathbf j=\nabla\times\mathbf B$ are \begin{equation} -A\equiv\frac{g^{\psi\theta}}{g^{\psi\psi}}, +\mu_0\mathcal J\,j^\psi=\partial_\theta B_\zeta, \qquad -H\equiv qg_{\zeta\zeta}+g_{\theta\zeta}, +\mu_0\mathcal J\,j^\theta=-\partial_\psi B_\zeta, \qquad -\mathcal C_B\equiv B_\theta+qB_\zeta . +\mu_0\mathcal J\,j^\zeta=\partial_\psi B_\theta-\partial_\theta B_\psi . \end{equation} -Since \(B^\theta=\chi'/\mathcal J\) and \(B^\zeta=q\chi'/\mathcal J\), +With the currents \eqref{eq:dconcurrents} and the magnetic-surface condition +$\mathbf j\cdot\nabla\psi=0$, \begin{equation} -B_i=g_{i\theta}B^\theta+g_{i\zeta}B^\zeta -=\frac{\chi'}{\mathcal J}(g_{i\theta}+qg_{i\zeta}), +\partial_\theta B_\zeta=0, \qquad -B_\zeta=\frac{\chi'}{\mathcal J}H, +\partial_\psi B_\zeta=2\pi f', \qquad -\mathcal C_B=\frac{\chi'}{\mathcal J}G_\alpha -=\frac{\mathcal J B^2}{\chi'} . -\end{equation} -The inverse-metric cofactor identities give -\begin{equation} -g_{\psi\theta}+qg_{\psi\zeta} -=-A\,G_\alpha+G_s\,H, -\end{equation} -and therefore -\begin{equation} -B_\psi=-A\,\mathcal C_B+G_s B_\zeta . -\label{eq:Bpsi_GS_closure} +\partial_\psi B_\theta-\partial_\theta B_\psi +=-\frac{\mathcal J\mu_0p'}{\chi'}-2\pi qf' , +\label{eq:ampere_GS} \end{equation} +i.e.\ $B_\zeta=2\pi f(\psi)$ is a flux function and the $j^\zeta$ component +carries the Grad--Shafranov force balance. -For an axisymmetric equilibrium the contravariant curl components are +Now differentiate $\mathcal JB^2/\chi'=B_\theta+qB_\zeta$ radially and insert +\eqref{eq:ampere_GS}; the explicit $2\pi qf'$ terms cancel: \begin{equation} -\mu_0j^\theta=-\frac{1}{\mathcal J}\partial_\psi B_\zeta, -\qquad -\mu_0j^\zeta= -\frac{1}{\mathcal J}\left(\partial_\psi B_\theta-\partial_\theta B_\psi\right). -\label{eq:covcurl_GS_closure} +\partial_\psi\!\Big(\frac{\mathcal JB^2}{\chi'}\Big) +=\partial_\psi B_\theta+q'B_\zeta+2\pi qf' +=\partial_\theta B_\psi+q'B_\zeta-\frac{\mathcal J\mu_0p'}{\chi'} . \end{equation} -Using the physical-\(f'\) current convention of -\eqref{eq:app_dconcurrents}, the first of \eqref{eq:covcurl_GS_closure} gives +Expanding the left side by the product rule and multiplying through by +$\chi'/B^2$, \begin{equation} -\partial_\psi B_\zeta=2\pi f', -\qquad -B_\zeta=2\pi f(\psi), -\qquad -\partial_\theta B_\zeta=0 . +\mathcal J' +=\mathcal J\frac{\chi''}{\chi'} +-\mathcal J\frac{\partial_\psi B^2}{B^2} +-\frac{\mathcal J\mu_0p'}{B^2} ++\frac{\chi'}{B^2}\big(\partial_\theta B_\psi+q'B_\zeta\big) . +\label{eq:Jprime_GS} \end{equation} -Here the last two statements are the usual Grad--Shafranov convention that the -covariant toroidal-field function \(f\) is a flux function; this is the same -convention encoded in \eqref{eq:app_dconcurrents}. The second of -\eqref{eq:covcurl_GS_closure} gives +The $\theta$-derivative of \eqref{eq:Bpsi_GS} (with $\partial_\theta B_\zeta=0$) +gives \begin{equation} -\partial_\psi B_\theta-\partial_\theta B_\psi -=-\frac{\mathcal J\mu_0p'}{\chi'}-2\pi qf' . +\frac{\chi'}{B^2}\,\partial_\theta B_\psi +=-\partial_\theta\!\Big(\mathcal J\frac{g^{\psi\theta}}{g^{\psi\psi}}\Big) +-\mathcal J\frac{g^{\psi\theta}}{g^{\psi\psi}}\,\frac{\partial_\theta B^2}{B^2} ++\frac{\chi' B_\zeta}{B^2}\,\partial_\theta G_s , \end{equation} -Substituting \(\mathcal C_B=B_\theta+qB_\zeta\) and -\(\partial_\psi B_\zeta=2\pi f'\) cancels the explicit \(2\pi qf'\) terms and -leaves +while \eqref{eq:Dzeta_GS} and the definition \eqref{eq:DSdef} of $S_\psi$ +combine the $q'$ and $\partial_\theta G_s$ pieces into \begin{equation} -\partial_\psi\mathcal C_B-\partial_\theta B_\psi -=q'B_\zeta-\frac{\mathcal J\mu_0p'}{\chi'} . +\frac{\chi' B_\zeta}{B^2}\,\big(q'+\partial_\theta G_s\big) +=\frac{\mathcal J^2\mathcal D}{B^2}\,S_\psi . \end{equation} -Using \eqref{eq:Bpsi_GS_closure} and \(\partial_\theta B_\zeta=0\), this becomes +Hence \eqref{eq:Jprime_GS} becomes \begin{equation} -\partial_\psi\mathcal C_B+\partial_\theta(A\mathcal C_B) --B_\zeta(q'+\partial_\theta G_s) -+\frac{\mathcal J\mu_0p'}{\chi'}=0 . -\label{eq:CB_GS_closure} -\end{equation} - -Multiply \eqref{eq:CB_GS_closure} by -\(\chi'/B^2=\mathcal J/\mathcal C_B\). The three geometric factors reduce as -\begin{align} -\frac{\chi'}{B^2}\partial_\psi\mathcal C_B -&= \mathcal J' -+\mathcal J\frac{\partial_\psi B^2}{B^2} --\mathcal J\frac{\chi''}{\chi'},\\ -\frac{\chi'}{B^2}\partial_\theta(A\mathcal C_B) -&= -\partial_\theta(\mathcal J A) -+\mathcal J A\frac{\partial_\theta B^2}{B^2},\\ -\frac{\chi'}{B^2}B_\zeta -&= -\mathcal J\frac{H}{G_\alpha}. -\end{align} -Thus Grad--Shafranov gives +=\mathcal J\frac{\chi''}{\chi'} +-\frac{\mathcal J\mu_0p'}{B^2} +-\frac{\mathcal J}{B^2}\Big(\partial_\psi B^2 ++\frac{g^{\psi\theta}}{g^{\psi\psi}}\,\partial_\theta B^2\Big) +-\partial_\theta\!\Big(\mathcal J\frac{g^{\psi\theta}}{g^{\psi\psi}}\Big) ++\frac{\mathcal J^2\mathcal D}{B^2}\,S_\psi . +\label{eq:Jprime_GS2} +\end{equation} +Finally, the curvature +$\kappa_\psi=\tfrac{g^{\psi\psi}}{B^2}\big[\mu_0p' ++\tfrac12\partial_\psi B^2+\tfrac12\partial_\theta B^2\,\tfrac{g^{\psi\theta}}{g^{\psi\psi}}\big]$ +identifies \begin{equation} -\begin{aligned} -\mathcal J' -&= -\mathcal J\frac{\chi''}{\chi'} --\mathcal J\frac{\partial_\psi B^2}{B^2} --\partial_\theta(\mathcal J A) --\mathcal J A\frac{\partial_\theta B^2}{B^2}\\ -&\quad -+\mathcal J\frac{H}{G_\alpha}(q'+\partial_\theta G_s) --\frac{\mathcal J\mu_0p'}{B^2}. -\end{aligned} -\label{eq:GS_before_beta} +-\frac{\mathcal J}{B^2}\Big(\partial_\psi B^2 ++\frac{g^{\psi\theta}}{g^{\psi\psi}}\,\partial_\theta B^2\Big) +=-\frac{2\mathcal J\kappa_\psi}{g^{\psi\psi}} ++\frac{2\mathcal J\mu_0p'}{B^2}, \end{equation} -Finally use -\[ -\frac{\partial_\psi B^2}{B^2} -=2\frac{\chi''}{\chi'}+\frac{\partial_\psi\beta^2}{\beta^2}, -\qquad -\frac{\partial_\theta B^2}{B^2} -=\frac{\partial_\theta G_\alpha}{G_\alpha} --2\frac{\partial_\theta\mathcal J}{\mathcal J}, -\qquad -H=qg_{\zeta\zeta}+g_{\theta\zeta}. -\] -Equation~\eqref{eq:GS_before_beta} is then exactly \eqref{eq:gsstep}. Hence the -master identity \eqref{eq:master} is an analytic consequence of the -Grad--Shafranov equilibrium, not a numerical closure. +which turns \eqref{eq:Jprime_GS2} into exactly \eqref{eq:master}. Hence the +master identity is an analytic consequence of the Grad--Shafranov +equilibrium, not a numerical closure. -This closes the residual of Sec.~\ref{app:assembly}: multiplying~\eqref{eq:gsstep} by $\mu_0p'$ +This closes the reduction: multiplying~\eqref{eq:master} by $\mu_0p'$ converts the geometric $\theta$-derivative $-\mu_0p'\partial_\theta(\mathcal J\,g^{\psi\theta}/g^{\psi\psi})$, the $(\mu_0p')^2/B^2$ term of $|\mathbf V|^2$, and the pressure--curvature part of -$K$ into $\mu_0p'\mathcal J'$, so the bracket of~\eqref{eq:H4_expanded} becomes +$K$ into $\mu_0p'\mathcal J'$, so the corresponding bracket of~\eqref{eq:step3} becomes $\mu_0p'(\mathcal J'-\mathcal J\chi''/\chi')$. Together with the clean \(\mu_0p'\mathcal J\chi''/\chi'\) piece already isolated in \eqref{eq:step3}, this gives @@ -3878,7 +3355,7 @@ \subsection{Master identity, cofactor form, and the Grad--Shafranov closure} \subsection{The two equivalent final forms of $\mathbf H_4$} \paragraph{Equilibrium-free form.} -Projecting \eqref{eq:WUV}--\eqref{eq:WYV} directly, +Projecting the reduced pointwise weights of Sec.~\ref{app:reductions} directly, \begin{equation} \boxed{\;\mathbf H_4=\mathbf H_{YV}+\mathbf H_{UV}+\mathbf H_V+\mathbf H_K\;,} \end{equation} @@ -3895,8 +3372,8 @@ \subsection{The two equivalent final forms of $\mathbf H_4$} exact term by term ($=$ Eq.~\eqref{eq:ep_bernsteinK}), with no equilibrium identity invoked. The compact form $\mathbf H_4=\mu_0p'(\tfrac{\chi''}{\chi'}\mathbf J+\mathbf J')-2\pi f'q'\chi'\mathbf I$ -is the same matrix, obtained from \eqref{eq:WUV}--\eqref{eq:WYV} through the -Grad--Shafranov closure \eqref{eq:gsstep} derived above. The global +is the same matrix, obtained through the +Grad--Shafranov closure \eqref{eq:master} derived above. The global term-to-matrix assignment and the resulting $\mathbf C,\mathbf E,\mathbf H$ matrices are collected in the main text. From d814320b9358d619af94228524ed22bee6764695 Mon Sep 17 00:00:00 2001 From: satelite2517 Date: Tue, 24 Jun 2025 16:25:38 +0900 Subject: [PATCH 44/62] FEATURE - Add sol_num parameter to match routine. Adding sol_num parameter and set the wanted number of solution component then this will make Solution{sol_num}.bin file containing the {sol_num}th solution on Wt. If there aren't any sol_num then this will work just as same as before. (cherry picked from commit 89e45169b93b7be56ce95da73affb99d26dd0304) (cherry picked from commit 92948563d81f696b0318f0bee7e0994b1ce8ce7e) --- match/ideal.f | 21 +++++++++++++++++---- match/match.f | 6 +++--- match/match_mod.f | 1 + 3 files changed, 21 insertions(+), 7 deletions(-) diff --git a/match/ideal.f b/match/ideal.f index deaaa3db3..8b28c8202 100644 --- a/match/ideal.f +++ b/match/ideal.f @@ -305,7 +305,9 @@ END SUBROUTINE ideal_transform c----------------------------------------------------------------------- c declarations. c----------------------------------------------------------------------- - SUBROUTINE ideal_build + SUBROUTINE ideal_build(sol_num) + + INTEGER, INTENT(IN) :: sol_num INTEGER :: istep,ifix,jfix,kfix,ieq,info INTEGER, DIMENSION(mpert) :: ipiv @@ -319,7 +321,8 @@ SUBROUTINE ideal_build uedge=0 uedge(mripple-mlow+1)=1 ELSE - uedge=wt(:,1) + WRITE(*,*)"sol_num = ",sol_num + uedge=wt(:,sol_num) ENDIF temp2=soltype(mstep)%u(:,1:mpert,1) CALL zgetrf(mpert,mpert,temp2,mpert,ipiv,info) @@ -357,12 +360,15 @@ END SUBROUTINE ideal_build c----------------------------------------------------------------------- c declarations. c----------------------------------------------------------------------- - SUBROUTINE ideal_write + SUBROUTINE ideal_write(sol_num) + + INTEGER, INTENT(IN) :: sol_num LOGICAL, PARAMETER :: diagnose=.FALSE. INTEGER :: ipert,istep,m REAL(r8), DIMENSION(mpert) :: singfac COMPLEX(r8), DIMENSION(mpert,0:mstep) :: b + CHARACTER(128) :: outputname c----------------------------------------------------------------------- c compute normal perturbed magnetic field. c----------------------------------------------------------------------- @@ -375,7 +381,14 @@ SUBROUTINE ideal_write c write binary output for graphs. c----------------------------------------------------------------------- WRITE(*,*)"Write binary output for graphs." - CALL bin_open(bin_unit,"solutions.bin","UNKNOWN","REWIND","none") + + IF (sol_num == 1) THEN + outputname = "solutions.bin" + ELSE + WRITE(outputname, '(A,I0,A)') "solutions", sol_num, ".bin" + END IF + + CALL bin_open(bin_unit, outputname, "UNKNOWN", "REWIND", "none") DO ipert=1,mpert DO istep=0,mstep WRITE(bin_unit)REAL(psifac(istep),4),REAL(rho(istep),4), diff --git a/match/match.f b/match/match.f index e73e03f4c..4b5b1b200 100644 --- a/match/match.f +++ b/match/match.f @@ -29,7 +29,7 @@ PROGRAM match_main $ big,small,ns,root,scan_flag,root_flag,contour_flag,full, $ z_level_type,phi_level,transform_flag,poly_form_type, $ poly_test_type,scan0,scan1,nscan,delta0,delta1,condense, - $ ripple_flag,mripple + $ ripple_flag,mripple,sol_num c----------------------------------------------------------------------- c format statements. c----------------------------------------------------------------------- @@ -55,8 +55,8 @@ PROGRAM match_main c----------------------------------------------------------------------- IF(ideal_flag)THEN CALL ideal_transform - CALL ideal_build - CALL ideal_write + CALL ideal_build(sol_num) + CALL ideal_write(sol_num) CALL ideal_chord IF(contour_flag)CALL ideal_contour ENDIF diff --git a/match/match_mod.f b/match/match_mod.f index 501e91bcc..5ff8d20c9 100644 --- a/match/match_mod.f +++ b/match/match_mod.f @@ -42,6 +42,7 @@ MODULE match_mod $ kin_flag=.FALSE.,con_flag=.FALSE. LOGICAL, DIMENSION(:), POINTER :: sing_flag INTEGER :: mfix,mhigh,mlow,mpert,mstep,nn,msing,mmatch,mbit,mterm + INTEGER :: sol_num = 1 INTEGER, DIMENSION(:), POINTER :: fixstep REAL(r8) :: sfac0=1 REAL(r8), DIMENSION(:), POINTER :: psifac,rho,q From 12f50f68b4b8710f94c6a45bc284c967e38bcc2f Mon Sep 17 00:00:00 2001 From: satelite2517 Date: Tue, 24 Jun 2025 17:28:45 +0900 Subject: [PATCH 45/62] FEATURE - Add sol_num parameter to match input file. This change initializes sol_num to 1, allowing for better control of solution components. (cherry picked from commit d9756973653d15ed5f0e27c264a0e7f39f45d803) (cherry picked from commit 3cbd047eb75ce7122f1115466cf9aa2783c23866) --- input/match.in | 2 ++ 1 file changed, 2 insertions(+) diff --git a/input/match.in b/input/match.in index e4b9e15ea..6f2dda0b8 100644 --- a/input/match.in +++ b/input/match.in @@ -5,6 +5,8 @@ ideal_flag=t contour_flag=t + sol_num=1 + res_flag=f ff0=1e6 ff1=1e6 From ccf446cdc62f7665dde016d5617ecf3bda323730 Mon Sep 17 00:00:00 2001 From: satelite2517 Date: Wed, 11 Mar 2026 14:35:26 +0900 Subject: [PATCH 46/62] Clarify comment for sol_num in match.in regarding DCON eigen function index (cherry picked from commit 25ddd6ef05a181148bc33a466e2486280fbe1ee4) (cherry picked from commit b5b3203931408cbf82a3b2f0d0202e7f48f5931b) --- input/match.in | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/input/match.in b/input/match.in index 6f2dda0b8..2998fac2a 100644 --- a/input/match.in +++ b/input/match.in @@ -5,7 +5,7 @@ ideal_flag=t contour_flag=t - sol_num=1 + sol_num=1 !DCON eigen function index (1 is least stable), which will be calculates by MATCH res_flag=f ff0=1e6 From a49c79ab74d4b57f744a94eaf2571f6c5af11555 Mon Sep 17 00:00:00 2001 From: satelite2517 Date: Thu, 25 Jun 2026 12:18:54 +0900 Subject: [PATCH 47/62] MATCH - recon: unify sol_num index wording (1 = most unstable) Match input/match.in comment to match/match.f; sol_num=1 selects the most unstable DCON ideal eigenfunction. Addresses snu_offshoot review Q2. Co-Authored-By: Claude Opus 4.8 (1M context) (cherry picked from commit 311922c01191e14cc5079886b2869f6874a384c9) (cherry picked from commit f998b3b5cf4d9569afcff24864c26f0fa7f73c88) --- input/match.in | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/input/match.in b/input/match.in index 2998fac2a..31acfa658 100644 --- a/input/match.in +++ b/input/match.in @@ -5,7 +5,7 @@ ideal_flag=t contour_flag=t - sol_num=1 !DCON eigen function index (1 is least stable), which will be calculates by MATCH + sol_num=1 !DCON eigen function index (1 is most unstable), which will be calculated by MATCH res_flag=f ff0=1e6 From 2c03f043184827599eca81258850af29684ce313 Mon Sep 17 00:00:00 2001 From: satelite2517 Date: Mon, 20 Jul 2026 14:19:56 +0900 Subject: [PATCH 48/62] MATCH - recon: validate sol_num/mripple, drop debug print - range-check sol_num against mpert (read from euler.bin at runtime) before indexing wt(:,sol_num); out-of-range values previously read past the array and wrote a garbage eigenfunction silently - same check for mripple against mlow..mhigh on the ripple path - remove the unconditional 'sol_num = ' debug write - ripple_flag ignores sol_num, so write solutions.bin rather than a sol_num-labeled filename in that case Co-Authored-By: Claude Opus 4.8 (cherry picked from commit 0bf08bfd350da0a005fc7f562dec77d7b73b8de4) --- match/ideal.f | 12 +++++++++++- match/match.f | 8 +++++++- 2 files changed, 18 insertions(+), 2 deletions(-) diff --git a/match/ideal.f b/match/ideal.f index 8b28c8202..033d3ad5b 100644 --- a/match/ideal.f +++ b/match/ideal.f @@ -313,15 +313,25 @@ SUBROUTINE ideal_build(sol_num) INTEGER, DIMENSION(mpert) :: ipiv COMPLEX(r8), DIMENSION(mpert) :: uedge,temp1 COMPLEX(r8), DIMENSION(mpert,mpert) :: temp2 + CHARACTER(128) :: message c----------------------------------------------------------------------- c construct uedge. c----------------------------------------------------------------------- WRITE(*,*)"Construct ideal eigenfunctions." IF(ripple_flag)THEN + IF(mripple < mlow .OR. mripple > mhigh)THEN + WRITE(message,'(a,i6,a,i6,a,i6)')"mripple = ",mripple, + $ " out of range ",mlow," to ",mhigh + CALL program_stop(message) + ENDIF uedge=0 uedge(mripple-mlow+1)=1 ELSE - WRITE(*,*)"sol_num = ",sol_num + IF(sol_num < 1 .OR. sol_num > mpert)THEN + WRITE(message,'(a,i6,a,i6)')"sol_num = ",sol_num, + $ " out of range 1 to ",mpert + CALL program_stop(message) + ENDIF uedge=wt(:,sol_num) ENDIF temp2=soltype(mstep)%u(:,1:mpert,1) diff --git a/match/match.f b/match/match.f index 4b5b1b200..939f56a50 100644 --- a/match/match.f +++ b/match/match.f @@ -56,7 +56,13 @@ PROGRAM match_main IF(ideal_flag)THEN CALL ideal_transform CALL ideal_build(sol_num) - CALL ideal_write(sol_num) +c ripple_flag builds a unit-vector uedge and ignores sol_num, so +c keep the default output name rather than a sol_num-labeled one. + IF(ripple_flag)THEN + CALL ideal_write(1) + ELSE + CALL ideal_write(sol_num) + ENDIF CALL ideal_chord IF(contour_flag)CALL ideal_contour ENDIF From 94547e95a1243a963b34e4ac42ba7d59d239afd3 Mon Sep 17 00:00:00 2001 From: satelite2517 Date: Tue, 21 Jul 2026 13:08:07 +0900 Subject: [PATCH 49/62] GPEC - recon: factor psi-local C-state setup into gpeq_prep_c gpeq_sol/contra/cova/normal + gpeq_c were repeated inline at every recon call site; bundle them as gpeq_prep_c(psi) and make the recon kernels (gpeq_cveri, gpeq_epf, gpeq_dst, gpeq_epfterms) assume the state is prepared. gpout_recon now calls gpeq_cveri directly instead of carrying an inlined copy of the identity. Also fix a stray minus in the cveri_flag comment of input/gpec.in. Co-Authored-By: Claude Opus 4.8 --- gpec/gpec.f | 2 +- gpec/gpeq.f | 158 +++++++++++++++++++++++------------------------- gpec/gpglobal.F | 2 +- gpec/gpout.f | 101 ++++++++++++------------------- input/gpec.in | 2 +- 5 files changed, 118 insertions(+), 147 deletions(-) diff --git a/gpec/gpec.f b/gpec/gpec.f index 84b467ae0..28a8ec89f 100644 --- a/gpec/gpec.f +++ b/gpec/gpec.f @@ -635,7 +635,7 @@ PROGRAM gpec_main ENDIF IF (recon_flag) THEN CALL gpout_recon(mode,xspmn) - ENDIF + ENDIF IF (recon_flag2) THEN CALL gpout_recon2(mode,xspmn) ENDIF diff --git a/gpec/gpeq.f b/gpec/gpeq.f index 068ca5704..e95e57bbd 100644 --- a/gpec/gpeq.f +++ b/gpec/gpeq.f @@ -14,23 +14,27 @@ c 6. gpeq_parallel c 7. gpeq_rzphi c 8. gpeq_surface -c 9. gpeq_epf (reconstruction: C vector for EPF) -c 10. gpeq_dst (reconstruction: C vector for DST) -c 11. gpeq_shear (reconstruction: magnetic shear) -c 12. gpeq_curvature (reconstruction: curvature) -c 13. gpeq_K (reconstruction: Bernstein K quantity) -c 13b. gpeq_epfterms (reconstruction: |C|^2 decomposition) -c 14. gpeq_fcoords -c 15. gpeq_fcoordsout -c 16. gpeq_bcoords -c 17. gpeq_bcoordsout -c 18. gpeq_weight -c 19. gpeq_rzpgrid -c 20. gpeq_rzpdiv -c 21. gpeq_alloc -c 22. gpeq_dealloc -c 23. gpeq_interp_singsurf -c 24. gpeq_interp_sol +c 9. gpeq_prep_c (reconstruction: build psi-local C state) +c 10. gpeq_c (reconstruction: C vector components) +c 11. gpeq_cveri (reconstruction: (curl C).grad(psi) check) +c 12. gpeq_firstform (reconstruction: first-form energy terms) +c 13. gpeq_epf (reconstruction: |C|^2 surface integral) +c 14. gpeq_dst (reconstruction: K xi_n^2 surface integral) +c 15. gpeq_shear (reconstruction: magnetic shear) +c 16. gpeq_curvature (reconstruction: curvature) +c 17. gpeq_K (reconstruction: Bernstein K quantity) +c 18. gpeq_epfterms (reconstruction: |C|^2 decomposition) +c 19. gpeq_fcoords +c 20. gpeq_fcoordsout +c 21. gpeq_bcoords +c 22. gpeq_bcoordsout +c 23. gpeq_weight +c 24. gpeq_rzpgrid +c 25. gpeq_rzpdiv +c 26. gpeq_alloc +c 27. gpeq_dealloc +c 28. gpeq_interp_singsurf +c 29. gpeq_interp_sol c----------------------------------------------------------------------- c subprogram 0. gpeq_mod. c module declarations. @@ -652,7 +656,30 @@ SUBROUTINE gpeq_surface(psi) RETURN END SUBROUTINE gpeq_surface c----------------------------------------------------------------------- -c subprogram 9. gpeq_c. +c subprogram 9. gpeq_prep_c. +c build the psi-local perturbed equilibrium state and the C vector +c in one pass: gpeq_sol/contra/cova/normal followed by gpeq_c. +c The recon kernels gpeq_cveri, gpeq_epf, gpeq_dst and +c gpeq_epfterms assume this has been called for the current psi. +c----------------------------------------------------------------------- + SUBROUTINE gpeq_prep_c(psi) +c----------------------------------------------------------------------- +c declaration. +c----------------------------------------------------------------------- + REAL(r8), INTENT(IN) :: psi + + CALL gpeq_sol(psi) + CALL gpeq_contra(psi) + CALL gpeq_cova(psi) + CALL gpeq_normal(psi) + CALL gpeq_c(psi, 0) +c----------------------------------------------------------------------- +c terminate. +c----------------------------------------------------------------------- + RETURN + END SUBROUTINE gpeq_prep_c +c----------------------------------------------------------------------- +c subprogram 10. gpeq_c. c compute C vector (covariant + contravariant) for EPF calculation. c----------------------------------------------------------------------- SUBROUTINE gpeq_c(psi, ipsi) @@ -664,18 +691,17 @@ SUBROUTINE gpeq_c(psi, ipsi) INTEGER :: itheta, ipert, jpert, m1, dm - REAL(r8) :: q, q1, f1raw, p1, chi1, jac + REAL(r8) :: q, f1raw, p1, chi1, jac REAL(r8) :: eta, rfac, v21, v22, v23, v33 - REAL(r8), DIMENSION(0:mthsurf) :: jacs, dphi, r_vec, z_vec + REAL(r8), DIMENSION(0:mthsurf) :: jacs, r_vec - COMPLEX(r8), DIMENSION(0:mthsurf) :: xwp_fun, xno_fun, bno_fun + COMPLEX(r8), DIMENSION(0:mthsurf) :: xwp_fun COMPLEX(r8), DIMENSION(0:mthsurf) :: bwp_fun, bmt_fun, bmz_fun COMPLEX(r8), DIMENSION(0:mthsurf) :: bvp_fun, bvt_fun, bvz_fun c Local temporal arrays for computation COMPLEX(r8), DIMENSION(0:mthsurf) :: cwp_fun, cwt_fun, cwz_fun COMPLEX(r8), DIMENSION(0:mthsurf) :: cvp_fun, cvt_fun, cvz_fun - COMPLEX(r8), DIMENSION(0:mthsurf) :: cvp_funp, cvt_funp, cvz_funp c Supporting variables for Fourier reconstruction REAL(r8) :: jwt, jwz @@ -692,7 +718,6 @@ SUBROUTINE gpeq_c(psi, ipsi) CALL spline_eval(sq, psi, 1) CALL cspline_eval(metric%cs, psi, 0) q = sq%f(4) - q1 = sq%f1(4) f1raw = sq%f1(1) p1 = sq%f1(2) / mu0 chi1 = psio * twopi @@ -719,9 +744,7 @@ SUBROUTINE gpeq_c(psi, ipsi) rfac = SQRT(rzphi%f(1)) eta = twopi*(theta(itheta) + rzphi%f(2)) r_vec(itheta) = ro + rfac*COS(eta) - z_vec(itheta) = zo + rfac*SIN(eta) jacs(itheta) = jac - dphi(itheta) = rzphi%f(3) w(1,1) = (1.0+ rzphi%fy(2))*twopi**2*rfac*r_vec(itheta)/jac w(1,2) = -rzphi%fy(1)*pi*r_vec(itheta)/(rfac*jac) @@ -749,9 +772,6 @@ SUBROUTINE gpeq_c(psi, ipsi) g_33(itheta) = (v33**2) g_23(itheta) = (v23*v33) ENDDO - - xno_fun=xwp_fun/(jacs*delpsi) - bno_fun=bwp_fun/(jacs*delpsi) c----------------------------------------------------------------------- c 6) Compute C components. c bwp stores J Q^psi, while bmt/bmz store the modified @@ -850,10 +870,6 @@ SUBROUTINE gpeq_c(psi, ipsi) ENDDO ENDDO - CALL iscdftb(mfac, mpert, cvp_funp, mthsurf, c2vp_mn) - CALL iscdftb(mfac, mpert, cvt_funp, mthsurf, c2vt_mn) - CALL iscdftb(mfac, mpert, cvz_funp, mthsurf, c2vz_mn) - IF(debug_flag) PRINT *, "->Leaving gpeq_c at ipsi=", ipsi c----------------------------------------------------------------------- c terminate. @@ -861,7 +877,7 @@ SUBROUTINE gpeq_c(psi, ipsi) RETURN END SUBROUTINE gpeq_c c----------------------------------------------------------------------- -c subprogram 9c. gpeq_cveri. +c subprogram 11. gpeq_cveri. c verify the C-vector identity c c (curl C) · grad(psi) @@ -881,8 +897,8 @@ END SUBROUTINE gpeq_c c (curl C) · grad(psi) c = (d_theta C_zeta + 2*pi*i*n*C_theta)/J. c -c Self-contained; gpout_recon inlines the same identity to reuse -c gpeq_epf's state. Keep the two in sync. +c Assumes gpeq_prep_c(psi) has been called for this psi, so the +c module cvt_mn/cvz_mn hold the covariant C state. c----------------------------------------------------------------------- SUBROUTINE gpeq_cveri(psi, cveri_fun) c----------------------------------------------------------------------- @@ -897,15 +913,6 @@ SUBROUTINE gpeq_cveri(psi, cveri_fun) IF(debug_flag) PRINT *, "Entering gpeq_cveri" c----------------------------------------------------------------------- -c prepare psi-local equilibrium and reconstruct C. -c----------------------------------------------------------------------- - CALL gpeq_sol(psi) - CALL gpeq_contra(psi) - CALL gpeq_cova(psi) - CALL gpeq_normal(psi) - CALL gpeq_c(psi, 0) - -c----------------------------------------------------------------------- c exact theta/zeta derivatives in mode space. c----------------------------------------------------------------------- DO ipert = 1, mpert @@ -933,7 +940,7 @@ SUBROUTINE gpeq_cveri(psi, cveri_fun) RETURN END SUBROUTINE gpeq_cveri c----------------------------------------------------------------------- -c subprogram 9d. gpeq_firstform. +c subprogram 12. gpeq_firstform. c evaluate the first-form plasma energy density components on one c flux surface with gamma term omitted: c @@ -1067,12 +1074,13 @@ SUBROUTINE gpeq_firstform(psi, q2_int, jqx_int, pdiv_int, RETURN END SUBROUTINE gpeq_firstform c----------------------------------------------------------------------- -c subprogram 9b. gpeq_epf. +c subprogram 13. gpeq_epf. c compute the flux-surface integral of the first EPF kernel, c c \int dtheta dzeta J |C|^2 / mu0 c c and return the theta/zeta integrated value for one psi. +c Assumes gpeq_prep_c(psi) has been called for this psi. c----------------------------------------------------------------------- SUBROUTINE gpeq_epf(psi, epf_int, epf_p, epf_t, epf_z, $ epf_den_fun, epf_p_fun, epf_t_fun, epf_z_fun) @@ -1094,14 +1102,8 @@ SUBROUTINE gpeq_epf(psi, epf_int, epf_p, epf_t, epf_z, IF(debug_flag) PRINT *, "Entering gpeq_epf" c----------------------------------------------------------------------- -c Prepare psi-local perturbed equilibrium and compute C components. +c reconstruct the C components prepared by gpeq_prep_c. c----------------------------------------------------------------------- - CALL gpeq_sol(psi) - CALL gpeq_contra(psi) - CALL gpeq_cova(psi) - CALL gpeq_normal(psi) - CALL gpeq_c(psi, 0) - CALL iscdftb(mfac, mpert, cwp_fun, mthsurf, cwp_mn) CALL iscdftb(mfac, mpert, cwt_fun, mthsurf, cwt_mn) CALL iscdftb(mfac, mpert, cwz_fun, mthsurf, cwz_mn) @@ -1146,12 +1148,13 @@ SUBROUTINE gpeq_epf(psi, epf_int, epf_p, epf_t, epf_z, RETURN END SUBROUTINE gpeq_epf c----------------------------------------------------------------------- -c subprogram 10. gpeq_dst. +c subprogram 14. gpeq_dst. c compute the flux-surface integral of the destabilizing kernel, c c \int dtheta dzeta J * K * xi_n^2 c c and return the theta/zeta integrated value for one psi. +c Assumes gpeq_prep_c(psi) has been called for this psi. c----------------------------------------------------------------------- SUBROUTINE gpeq_dst(psi, dst_int, dst_t1, dst_t2, dst_t3, $ dst1_den_fun, dst2_den_fun, dst3_den_fun) @@ -1171,10 +1174,6 @@ SUBROUTINE gpeq_dst(psi, dst_int, dst_t1, dst_t2, dst_t3, c----------------------------------------------------------------------- c DST(psi) = \int dtheta dzeta J * K * xi_n^2 c----------------------------------------------------------------------- - CALL gpeq_sol(psi) - CALL gpeq_contra(psi) - CALL gpeq_cova(psi) - CALL gpeq_normal(psi) CALL gpeq_K(psi, K_fun, K_term1, K_term2, K_term3) CALL iscdftb(mfac, mpert, xno_fun, mthsurf, xno_mn) dst_int = CMPLX(0.0_r8, 0.0_r8, r8) @@ -1208,7 +1207,7 @@ SUBROUTINE gpeq_dst(psi, dst_int, dst_t1, dst_t2, dst_t3, RETURN END SUBROUTINE gpeq_dst c----------------------------------------------------------------------- -c subprogram 11. gpeq_shear. +c subprogram 15. gpeq_shear. c compute magnetic shear at a single psi level. c approach: compute spatial domain first (theta), then FFT to mode space. c----------------------------------------------------------------------- @@ -1328,7 +1327,7 @@ SUBROUTINE gpeq_shear(psi, shear_fun) RETURN END SUBROUTINE gpeq_shear c----------------------------------------------------------------------- -c subprogram 12. gpeq_curvature. +c subprogram 16. gpeq_curvature. c compute curvature in spatial domain. c κ·∇ψ = (|∇ψ|²/B²)[μ₀p' + (1/2)(∂B²/∂ψ) + (1/2)(∂B²/∂θ)(∇ψ·∇θ)/(∇ψ·∇ψ)] c----------------------------------------------------------------------- @@ -1396,7 +1395,7 @@ SUBROUTINE gpeq_curvature(psi, curv_fun) RETURN END SUBROUTINE gpeq_curvature c----------------------------------------------------------------------- -c subprogram 13. gpeq_K. +c subprogram 17. gpeq_K. c compute Bernstein K quantity (stability indicator). c K = |∇ψ_dcon|^2 * σ * S_dcon c + mu0 * B^2 * σ^2 + 2 p' * κ^psi @@ -1412,7 +1411,7 @@ SUBROUTINE gpeq_K(psi, K_fun, K_term1, K_term2, K_term3, $ shear_out, curv_out INTEGER :: itheta - REAL(r8) :: f1raw, delpsi + REAL(r8) :: f1raw, delpsi, chi1 REAL(r8) :: jwt, jwz, bth, bze, bsq_val, sigma, jdotb_val REAL(r8) :: g22, g23, g33, r_val REAL(r8), DIMENSION(0:mthsurf) :: K_t1, K_t2, K_t3 @@ -1511,7 +1510,7 @@ SUBROUTINE gpeq_K(psi, K_fun, K_term1, K_term2, K_term3, RETURN END SUBROUTINE gpeq_K c----------------------------------------------------------------------- -c subprogram 13b. gpeq_epfterms. +c subprogram 18. gpeq_epfterms. c split the epf surface integral of gpeq_epf into terms of c comparable magnitude, using C = Q + V, V = xi_n mu0 j x n_hat: c A = int |Q|^2 / mu0 B = int 2 Re(V*.Q) / mu0 @@ -1519,6 +1518,7 @@ END SUBROUTINE gpeq_K c Iperp = int mu0 p'^2 |grad psi|^2 xin^2 / B^2 c each on the jac measure, as int (..) J dtheta / mthsurf. The c terms satisfy epf = A + B + Cpar + Iperp to roundoff. +c Assumes gpeq_prep_c(psi) has been called for this psi. c----------------------------------------------------------------------- SUBROUTINE gpeq_epfterms(psi, A_int, B_int, Iperp_int, Cpar_int, $ epf_int, A_fun, B_fun, Iperp_fun, Cpar_fun, surf_extra) @@ -1537,7 +1537,7 @@ SUBROUTINE gpeq_epfterms(psi, A_int, B_int, Iperp_int, Cpar_int, $ surf_extra INTEGER :: itheta - REAL(r8) :: f1raw, p1_local + REAL(r8) :: f1raw, p1_local, chi1 REAL(r8) :: A_density, B_density, Iperp_density, Cpar_density, $ epf_density REAL(r8) :: delpsi_val, bsq_val, sigma_local, jdotb_val @@ -1557,14 +1557,8 @@ SUBROUTINE gpeq_epfterms(psi, A_int, B_int, Iperp_int, Cpar_int, IF(debug_flag) PRINT *, "Entering gpeq_epfterms" c----------------------------------------------------------------------- -c prepare psi-local perturbed equilibrium and C, Q. +c reconstruct the C, Q state prepared by gpeq_prep_c. c----------------------------------------------------------------------- - CALL gpeq_sol(psi) - CALL gpeq_contra(psi) - CALL gpeq_cova(psi) - CALL gpeq_normal(psi) - CALL gpeq_c(psi, 0) - CALL spline_eval(sq, psi, 1) f1raw = sq%f1(1) p1_local = sq%f1(2) / mu0 @@ -1746,7 +1740,7 @@ SUBROUTINE gpeq_epfterms(psi, A_int, B_int, Iperp_int, Cpar_int, RETURN END SUBROUTINE gpeq_epfterms c----------------------------------------------------------------------- -c subprogram 14. gpeq_fcoords. +c subprogram 19. gpeq_fcoords. c transform coordinates to dcon coordinates. c----------------------------------------------------------------------- SUBROUTINE gpeq_fcoords(psi,ftnmn,amf,amp,ri,bpi,bi,rci,ti,ji) @@ -1880,7 +1874,7 @@ SUBROUTINE gpeq_fcoords(psi,ftnmn,amf,amp,ri,bpi,bi,rci,ti,ji) RETURN END SUBROUTINE gpeq_fcoords c----------------------------------------------------------------------- -c subprogram 14. gpeq_fcoordsout. +c subprogram 20. gpeq_fcoordsout. c transform to dcon coordinates. Assumes mpert,lmpert,jac_out c----------------------------------------------------------------------- SUBROUTINE gpeq_fcoordsout(fmo,fmi,psi,ti,ji) @@ -1943,7 +1937,7 @@ SUBROUTINE gpeq_fcoordsout(fmo,fmi,psi,ti,ji) RETURN END SUBROUTINE gpeq_fcoordsout c----------------------------------------------------------------------- -c subprogram 15. gpeq_bcoords. +c subprogram 21. gpeq_bcoords. c transform dcon coordinates to other coordinates. c----------------------------------------------------------------------- SUBROUTINE gpeq_bcoords(psi,ftnmn,amf,amp,ri,bpi,bi,rci,ti,ji) @@ -2082,7 +2076,7 @@ SUBROUTINE gpeq_bcoords(psi,ftnmn,amf,amp,ri,bpi,bi,rci,ti,ji) RETURN END SUBROUTINE gpeq_bcoords c----------------------------------------------------------------------- -c subprogram 16. gpeq_bcoordsout. +c subprogram 22. gpeq_bcoordsout. c transform dcon to other coordinates. Assumes mpert,lmpert,jac_out c----------------------------------------------------------------------- SUBROUTINE gpeq_bcoordsout(fmo,fmi,psi,ti,ji) @@ -2145,7 +2139,7 @@ SUBROUTINE gpeq_bcoordsout(fmo,fmi,psi,ti,ji) RETURN END SUBROUTINE gpeq_bcoordsout c----------------------------------------------------------------------- -c subprogram 17. gpeq_weight. +c subprogram 23. gpeq_weight. c switch between a function and a weighted function. c----------------------------------------------------------------------- SUBROUTINE gpeq_weight(psi,ftnmn,amf,amp,wegt) @@ -2216,7 +2210,7 @@ SUBROUTINE gpeq_weight(psi,ftnmn,amf,amp,wegt) RETURN END SUBROUTINE gpeq_weight c----------------------------------------------------------------------- -c subprogram 18. gpeq_rzpgrid. +c subprogram 24. gpeq_rzpgrid. c find magnetic coordinates for given rz coords. c----------------------------------------------------------------------- SUBROUTINE gpeq_rzpgrid(nr,nz,psixy) @@ -2319,7 +2313,7 @@ SUBROUTINE gpeq_rzpgrid(nr,nz,psixy) RETURN END SUBROUTINE gpeq_rzpgrid c----------------------------------------------------------------------- -c subprogram 19. gpeq_rzpdiv. +c subprogram 25. gpeq_rzpdiv. c make zero divergence of rzphi functions. c----------------------------------------------------------------------- SUBROUTINE gpeq_rzpdiv(nr,nz,rval,zval,fr,fz,fp) @@ -2385,7 +2379,7 @@ SUBROUTINE gpeq_rzpdiv(nr,nz,rval,zval,fr,fz,fp) RETURN END SUBROUTINE gpeq_rzpdiv c----------------------------------------------------------------------- -c subprogram 20. gpeq_alloc. +c subprogram 26. gpeq_alloc. c allocate essential vectors in fourier space c----------------------------------------------------------------------- SUBROUTINE gpeq_alloc @@ -2411,7 +2405,7 @@ SUBROUTINE gpeq_alloc RETURN END SUBROUTINE gpeq_alloc c----------------------------------------------------------------------- -c subprogram 21. gpeq_dealloc. +c subprogram 27. gpeq_dealloc. c deallocate essential vectors in fourier space c----------------------------------------------------------------------- SUBROUTINE gpeq_dealloc @@ -2431,7 +2425,7 @@ SUBROUTINE gpeq_dealloc RETURN END SUBROUTINE gpeq_dealloc c----------------------------------------------------------------------- -c subprogram 22. gpeq_interp_singsurf. +c subprogram 28. gpeq_interp_singsurf. c create spline for interpretation of solution near singular surface. c----------------------------------------------------------------------- SUBROUTINE gpeq_interp_singsurf(fsp_sol,spots,npsi) @@ -2515,7 +2509,7 @@ SUBROUTINE gpeq_interp_singsurf(fsp_sol,spots,npsi) RETURN END SUBROUTINE gpeq_interp_singsurf c----------------------------------------------------------------------- -c subprogram 23. gpeq_interp_sol. +c subprogram 29. gpeq_interp_sol. c get bwn at psi after calling gpeq_interp_singsurf. c----------------------------------------------------------------------- SUBROUTINE gpeq_interp_sol(fsp_sol,psi,interpbwn) diff --git a/gpec/gpglobal.F b/gpec/gpglobal.F index 064a102ba..50c9c57c1 100644 --- a/gpec/gpglobal.F +++ b/gpec/gpglobal.F @@ -157,7 +157,7 @@ SUBROUTINE gpec_dealloc $ plas_indevmats,permeabevmats,chxmats,chwmats, $ mutual_indmats,mutual_indevmats,mutual_indinvmats, $ mutual_indinvevmats) - + CALL spline_dealloc(sq) CALL bicube_dealloc(eqfun) CALL bicube_dealloc(rzphi) diff --git a/gpec/gpout.f b/gpec/gpout.f index a812fbdc5..6c213a881 100644 --- a/gpec/gpout.f +++ b/gpec/gpout.f @@ -6897,7 +6897,7 @@ SUBROUTINE gpout_close_netcdf END SUBROUTINE gpout_close_netcdf c----------------------------------------------------------------------- -c subprogram 20. gpout_recon +c subprogram 21. gpout_recon c reconstruction diagnostics: shear, curvature, K, field C and c the integrals epf, dst giving delta-W_p. c----------------------------------------------------------------------- @@ -6908,9 +6908,14 @@ SUBROUTINE gpout_recon(mode, xspmn) INTEGER, INTENT(IN) :: mode COMPLEX(r8), DIMENSION(:), INTENT(IN) :: xspmn - INTEGER :: ipsi, itheta, ipert, ushear_fun, ucurv, uk, ucveri, - $ uk_sigma, ucw_fun, ucw_mn, ucv_fun, ucv_mn, ucv2_fun, - $ ucv2_mn, uqv_mn, u_int, u_log, u_terms + INTEGER :: ipsi, itheta, ipert +c recon output units: 72-99 are reserved for the recon diagnostics +c (gpout_recon/2/3) and are not opened elsewhere in the GPEC +c executable. + INTEGER, PARAMETER :: ushear_fun=82, ucurv=72, ucveri=74, uk=73, + $ uk_sigma=85, ucw_fun=86, ucw_mn=87, ucv_fun=88, ucv_mn=89, + $ ucv2_fun=90, ucv2_mn=91, u_int=92, u_log=93, u_terms=94, + $ uqv_mn=95 REAL(r8), DIMENSION(0:mthsurf) :: epf_den_fun, epf_p_fun, $ epf_t_fun, epf_z_fun, dst1_den_fun, dst2_den_fun, $ dst3_den_fun @@ -6918,8 +6923,6 @@ SUBROUTINE gpout_recon(mode, xspmn) REAL(r8), DIMENSION(0:mthsurf) :: rvals, zvals REAL(r8) :: epf_int, epf_p_int, epf_t_int, epf_z_int COMPLEX(r8) :: dst_int - COMPLEX(r8), DIMENSION(mpert) :: curv_mn, - $ term_mn COMPLEX(r8), DIMENSION(0:mthsurf) :: shear_fun, curv_fun, K_fun, $ cveri_fun COMPLEX(r8), DIMENSION(0:mthsurf,3) :: cw_fun, cv_fun, cv2_fun @@ -6938,7 +6941,7 @@ SUBROUTINE gpout_recon(mode, xspmn) REAL(r8) :: epf_p_prev, epf_t_prev, epf_z_prev REAL(r8) :: epf_p_curr, epf_t_curr, epf_z_curr REAL(r8) :: epf_int_total_hr, epf_p_total_hr, - $ epf_t_total_hr, epf_z_total_hr, dcon_fac + $ epf_t_total_hr, epf_z_total_hr REAL(r8) :: cveri_abs, cveri_max, cveri_rms, cveri_sumsq, $ cveri_tol COMPLEX(r8) :: dst_prev, dst_curr, dst1_prev, dst2_prev, @@ -6975,22 +6978,6 @@ SUBROUTINE gpout_recon(mode, xspmn) int_file = "gpec_recon_integration_sol"//TRIM(smode)//".out" terms_file = "gpec_recon_terms_sol"//TRIM(smode)//".out" - ushear_fun = 82 - ucurv = 72 - ucveri = 74 - uk = 73 - uk_sigma = 85 - ucw_fun = 86 - ucw_mn = 87 - ucv_fun = 88 - ucv_mn = 89 - ucv2_fun = 90 - ucv2_mn = 91 - u_int = 92 - u_log = 93 - u_terms = 94 - uqv_mn = 95 - IF (recon_out) THEN OPEN(UNIT=ushear_fun, FILE=shear_fun_file, STATUS="UNKNOWN") OPEN(UNIT=ucurv, FILE=curv_file, STATUS="UNKNOWN") @@ -7073,15 +7060,15 @@ SUBROUTINE gpout_recon(mode, xspmn) psi = rzphi%xs(ipsi) IF (psi > psilim) EXIT -c Compute the J|C|^2/mu0 state once so C fields below use -c the current psi. This keeps the psi-local reconstruction path -c identical to the original logic. +c Build the psi-local perturbed equilibrium and C state once; +c gpeq_epf, gpeq_cveri and gpeq_dst below all reuse it. + CALL gpeq_prep_c(psi) CALL gpeq_epf(psi, epf_int, epf_den_fun=epf_den_fun, $ epf_p_fun=epf_p_fun, epf_t_fun=epf_t_fun, $ epf_z_fun=epf_z_fun) c Capture covariant bare-Q components (Q_i) set by gpeq_cova -c inside gpeq_epf, before gpeq_K/gpeq_dst run. These are the +c inside gpeq_prep_c, before gpeq_K/gpeq_dst run. These are the c genuine perturbed-field covariant components delta-B_i; the c effective field is cvmn = C_i = Q_i + V_i. Writing qvmn lets c (curl Q).grad(psi) be formed from covariant components, the @@ -7096,22 +7083,10 @@ SUBROUTINE gpout_recon(mode, xspmn) c the original path so recon terminal totals remain unchanged. CALL gpeq_K(psi, K_fun, K_term1, K_term2, K_term3, $ sigma_vals, jdotb_vals, shear_fun, curv_fun) -c Verify (curl C).grad(psi)=0 using the same psi-local C state -c already prepared by gpeq_epf. This avoids rebuilding the -c full equilibrium/C reconstruction a second time at each psi. -c Same identity as gpeq_cveri, inlined; keep the two in sync. +c Verify (curl C).grad(psi)=0 using the C state prepared above. IF (cveri_flag) THEN - DO ipert = 1, mpert - curv_mn(ipert) = twopi * ifac * mfac(ipert) - $ * cvz_mn(ipert) - term_mn(ipert) = curv_mn(ipert) + - $ twopi * ifac * nn * cvt_mn(ipert) - ENDDO - CALL iscdftb(mfac, mpert, cveri_fun, mthsurf, term_mn) + CALL gpeq_cveri(psi, cveri_fun) DO itheta = 0, mthsurf - CALL bicube_eval(rzphi, psi, theta(itheta), 0) - jac = rzphi%f(4) - cveri_fun(itheta) = cveri_fun(itheta) / jac cveri_abs = ABS(cveri_fun(itheta)) cveri_max = MAX(cveri_max, cveri_abs) cveri_sumsq = cveri_sumsq + cveri_abs**2 @@ -7219,7 +7194,6 @@ SUBROUTINE gpout_recon(mode, xspmn) c Perform the energy check on the DCON solution grid. Do not use c rzphi%xs for this comparison; it is a coarse geometry grid. c----------------------------------------------------------------------- - dcon_fac = (mu0*2.0_r8) / psio**2 / (chi1*1.0e-3_r8)**2 epf_int_total_hr = 0.0_r8 epf_p_total_hr = 0.0_r8 epf_t_total_hr = 0.0_r8 @@ -7229,6 +7203,7 @@ SUBROUTINE gpout_recon(mode, xspmn) dst2_total_hr = CMPLX(0.0_r8, 0.0_r8, r8) dst3_total_hr = CMPLX(0.0_r8, 0.0_r8, r8) psi_prev = MAX(psifac(0), rzphi%xs(0)) + CALL gpeq_prep_c(psi_prev) CALL gpeq_epf(psi_prev, epf_prev, epf_p_prev, epf_t_prev, $ epf_z_prev) CALL gpeq_dst(psi_prev, dst_prev, dst1_prev, dst2_prev, @@ -7266,6 +7241,7 @@ SUBROUTINE gpout_recon(mode, xspmn) psi_curr = psifac(istep+1) IF (psi_curr < rzphi%xs(0)) CYCLE IF (psi_curr > rzphi%xs(mpsi)) EXIT + CALL gpeq_prep_c(psi_curr) CALL gpeq_epf(psi_curr, epf_curr, epf_p_curr, $ epf_t_curr, epf_z_curr) CALL gpeq_dst(psi_curr, dst_curr, dst1_curr, dst2_curr, @@ -7371,7 +7347,8 @@ SUBROUTINE gpout_recon(mode, xspmn) $ epf_z_vals, dst_vals, dst1_vals, dst2_vals, dst3_vals) dw_raw_k_hr = 0.5_r8 * $ (CMPLX(epf_int_total_hr, 0.0_r8, r8) - dst_int_total_k_hr) - dw_dcon_k_hr = dw_raw_k_hr * dcon_fac + dw_dcon_k_hr = dw_raw_k_hr * + $ (mu0*2.0_r8) / psio**2 / (chi1*1.0e-3_r8)**2 IF (recon_out) THEN WRITE(u_int,*) @@ -7418,7 +7395,7 @@ SUBROUTINE gpout_recon(mode, xspmn) WRITE(*,'(a,a,a,es17.8e3)') " GPEC ep(", TRIM(smode), ") = ", $ ep_selected WRITE(*,'(a,a,a,es17.8e3)') " DCON ep(", TRIM(smode), ") = ", - $ ep_selected*dcon_fac + $ ep_selected * (mu0*2.0_r8) / psio**2 / (chi1*1.0e-3_r8)**2 IF (cveri_flag) THEN cveri_stat = "PASS" IF (cveri_count > 0) THEN @@ -7465,7 +7442,8 @@ SUBROUTINE gpout_recon(mode, xspmn) WRITE(u_log,'(a,a,a,es17.8e3)') " GPEC ep(", TRIM(smode), $ ") = ", ep_selected WRITE(u_log,'(a,a,a,es17.8e3)') " DCON ep(", TRIM(smode), - $ ") = ", ep_selected*dcon_fac + $ ") = ", ep_selected * + $ (mu0*2.0_r8) / psio**2 / (chi1*1.0e-3_r8)**2 IF (cveri_flag) THEN WRITE(u_log,'(a,a)') " C verify: ", TRIM(cveri_stat) WRITE(u_log,'(a,es17.8e3)') " max = ", cveri_max @@ -7515,7 +7493,9 @@ SUBROUTINE gpout_recon2(mode, xspmn) INTEGER, INTENT(IN) :: mode COMPLEX(r8), DIMENSION(:), INTENT(IN) :: xspmn - INTEGER :: ipsi, itheta, usurf, u_int, u_log + INTEGER :: ipsi, itheta +c recon2 output units, within the reserved recon range 72-99. + INTEGER, PARAMETER :: usurf=94, u_int=95, u_log=96 INTEGER :: istep, nint_pts, iint REAL(r8) :: psi, eta, rfac, dpsi_local, q2_hr REAL(r8), DIMENSION(0:mthsurf) :: rvals, zvals @@ -7525,7 +7505,6 @@ SUBROUTINE gpout_recon2(mode, xspmn) $ total_fun CHARACTER(8) :: smode CHARACTER(128) :: surf_file, int_file - REAL(r8) :: dcon_fac INTEGER :: ep_index REAL(r8) :: ep_selected, ep_dcon REAL(r8), DIMENSION(:), ALLOCATABLE :: psi_int_pts, q2_vals_r @@ -7542,9 +7521,6 @@ SUBROUTINE gpout_recon2(mode, xspmn) smode = ADJUSTL(smode) surf_file = "gpec_recon2_terms_sol"//TRIM(smode)//".out" int_file = "gpec_recon2_integration_sol"//TRIM(smode)//".out" - usurf = 94 - u_int = 95 - u_log = 96 IF (recon_out) THEN OPEN(UNIT=usurf, FILE=surf_file, STATUS="UNKNOWN") @@ -7591,9 +7567,9 @@ SUBROUTINE gpout_recon2(mode, xspmn) ENDIF ENDDO - dcon_fac = (mu0*2.0_r8) / psio**2 / (chi1*1.0e-3_r8)**2 ep_selected = REAL(ep(ep_index)) - ep_dcon = ep_selected * dcon_fac + ep_dcon = ep_selected * + $ (mu0*2.0_r8) / psio**2 / (chi1*1.0e-3_r8)**2 q2_hr = 0.0_r8 jqx_hr = CMPLX(0.0_r8, 0.0_r8, r8) pdiv_hr = CMPLX(0.0_r8, 0.0_r8, r8) @@ -7684,7 +7660,8 @@ SUBROUTINE gpout_recon2(mode, xspmn) ENDIF dw_raw_hr = 0.5_r8 * total_hr - dw_dcon_hr = dw_raw_hr * dcon_fac + dw_dcon_hr = dw_raw_hr * + $ (mu0*2.0_r8) / psio**2 / (chi1*1.0e-3_r8)**2 IF (recon_out) THEN WRITE(u_int,*) @@ -7778,7 +7755,9 @@ SUBROUTINE gpout_recon3(mode, xspmn) INTEGER, INTENT(IN) :: mode COMPLEX(r8), DIMENSION(:), INTENT(IN) :: xspmn - INTEGER :: ipsi, itheta, usurf, u_int, u_log + INTEGER :: ipsi, itheta +c recon3 output units, within the reserved recon range 72-99. + INTEGER, PARAMETER :: usurf=97, u_int=98, u_log=99 INTEGER :: istep, nint_pts, iint REAL(r8) :: psi, dpsi_local REAL(r8) :: A_hr, B_hr, Iperp_hr, Cpar_hr, epf_hr @@ -7795,7 +7774,6 @@ SUBROUTINE gpout_recon3(mode, xspmn) INTEGER :: kcol CHARACTER(8) :: smode CHARACTER(128) :: surf_file, int_file - REAL(r8) :: dcon_fac REAL(r8), DIMENSION(:), ALLOCATABLE :: psi_int_pts REAL(r8), DIMENSION(:), ALLOCATABLE :: A_vals, B_vals, $ Iperp_vals, Cpar_vals, epf_vals, dst1_vals, dst3_vals @@ -7809,9 +7787,6 @@ SUBROUTINE gpout_recon3(mode, xspmn) smode = ADJUSTL(smode) surf_file = "gpec_recon3_terms_sol"//TRIM(smode)//".out" int_file = "gpec_recon3_integration_sol"//TRIM(smode)//".out" - usurf = 97 - u_int = 98 - u_log = 99 IF (recon_out) THEN OPEN(UNIT=usurf, FILE=surf_file, STATUS="UNKNOWN") @@ -7840,6 +7815,7 @@ SUBROUTINE gpout_recon3(mode, xspmn) DO ipsi = 0, mpsi psi = rzphi%xs(ipsi) IF (psi > psilim) EXIT + CALL gpeq_prep_c(psi) CALL gpeq_epfterms(psi, A_hr, B_hr, Iperp_hr, Cpar_hr, epf_hr, $ A_fun, B_fun, Iperp_fun, Cpar_fun, surf_extra) IF (recon_out) THEN @@ -7858,8 +7834,6 @@ SUBROUTINE gpout_recon3(mode, xspmn) ENDIF ENDDO - dcon_fac = (mu0*2.0_r8) / psio**2 / (chi1*1.0e-3_r8)**2 - c integrate on psifac points inside the spline domain; points c below rzphi%xs(0) are skipped (gpout_recon clamps instead). nint_pts = 0 @@ -7876,6 +7850,7 @@ SUBROUTINE gpout_recon3(mode, xspmn) psi = psifac(istep) IF (psi < rzphi%xs(0)) CYCLE IF (psi > rzphi%xs(mpsi)) EXIT + CALL gpeq_prep_c(psi) CALL gpeq_epfterms(psi, A_hr, B_hr, Iperp_hr, Cpar_hr, epf_hr) c dst1 (=K1 xi_n^2) and dst3 (=K3 xi_n^2) for the C-free dW form c 2 dW_p = A + B + Iperp - dst1 - dst3 (dst2 = Cpar cancels). @@ -7974,9 +7949,11 @@ SUBROUTINE gpout_recon3(mode, xspmn) c (the parallel-current piece dst2 = Cpar cancels identically). dw_raw3 = 0.5_r8 * (A_total + B_total + Iperp_total $ - dst1_total - dst3_total) - dw_dcon3 = dw_raw3 * dcon_fac + dw_dcon3 = dw_raw3 * + $ (mu0*2.0_r8) / psio**2 / (chi1*1.0e-3_r8)**2 ep_selected = REAL(ep(ep_index)) - ep_dcon = ep_selected * dcon_fac + ep_dcon = ep_selected * + $ (mu0*2.0_r8) / psio**2 / (chi1*1.0e-3_r8)**2 IF (recon_out) THEN WRITE(u_int,*) diff --git a/input/gpec.in b/input/gpec.in index f06c19867..9adf1c7d5 100644 --- a/input/gpec.in +++ b/input/gpec.in @@ -93,7 +93,7 @@ recon_flag=f ! Calculate each contribution of destabilizing term and effective perturbed field [Bernstein, Handbook of Plasma Physics, 1983]. recon_flag2=f ! Calculate the first-form plasma energy terms from Eq. (36) with the gamma|div xi|^2 term omitted. recon_flag3=f ! Bernstein |C|^2 decomposition: |C|^2 = |Q|^2 + 2Re(V*.Q) + |V|^2, reported as A, B, Cpar, Iperp with the identity check epf = A+B+Cpar+Iperp. - cveri_flag=f ! Under recon_flag, verify (curl C).grad(psi-)=0 and write gpec_recon_cveri_sol*.out. + cveri_flag=f ! Under recon_flag, verify (curl C).grad(psi)=0 and write gpec_recon_cveri_sol*.out. recon_out=t ! Under recon_flag/recon_flag2/recon_flag3, write recon diagnostic files and gpec.log entries. If false, keep terminal summary only. recon_int="spline" ! recon_flag radial integration on psifac grid. Options: "spline" or "trapezoid". ! For DCON eigenmode reconstruction set coil_flag=f, mode_flag=t, choose mode as needed, and keep reg_flag=f. From 58173ef1135c4fc9fbee1927480c5c144925d0f7 Mon Sep 17 00:00:00 2001 From: satelite2517 Date: Mon, 27 Jul 2026 14:06:00 +0900 Subject: [PATCH 50/62] GPEC - recon: keep p1/q scratch local to recon kernels gpeq_shear, gpeq_curvature and gpeq_K assigned the gpglobal module variables p1/q/q1 through host association. p1 in particular was stored as p' while the rest of GPEC keeps mu0*p' there (idcon.f, gpdiag.f). No reader consumes the stale values today, but shadow them with routine-local declarations so the recon diagnostics leave module state untouched. Results are bit-identical. Also note in gpeq_c that the removed xno/bno and theta-space c2v* fields were development-time verification aids. Co-Authored-By: Claude Opus 5 --- gpec/gpeq.f | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) diff --git a/gpec/gpeq.f b/gpec/gpeq.f index e95e57bbd..c6bd1395a 100644 --- a/gpec/gpeq.f +++ b/gpec/gpeq.f @@ -869,6 +869,7 @@ SUBROUTINE gpeq_c(psi, ipsi) $ g23(dm)*cwt_mn(jpert)+g33(dm)*cwz_mn(jpert) ENDDO ENDDO +c (xno/bno and theta-space c2v* were dev-time checks; removed) IF(debug_flag) PRINT *, "->Leaving gpeq_c at ipsi=", ipsi c----------------------------------------------------------------------- @@ -1216,7 +1217,7 @@ SUBROUTINE gpeq_shear(psi, shear_fun) COMPLEX(r8), DIMENSION(0:mthsurf), INTENT(OUT) :: shear_fun INTEGER :: itheta - REAL(r8) :: r_val, theta_val + REAL(r8) :: r_val, theta_val, q, q1 REAL(r8) :: dpdp, dpdt, dpdz, shear_deriv REAL(r8) :: shear_contra TYPE(spline_type) :: shear_temp @@ -1336,7 +1337,7 @@ SUBROUTINE gpeq_curvature(psi, curv_fun) COMPLEX(r8), DIMENSION(0:mthsurf), INTENT(OUT) :: curv_fun INTEGER :: itheta - REAL(r8) :: r_val, theta_val + REAL(r8) :: r_val, theta_val, p1 REAL(r8) :: delpsi REAL(r8) :: bsq_val, bsq_psi, bsq_theta REAL(r8) :: dpdt , kappa_psi @@ -1411,7 +1412,7 @@ SUBROUTINE gpeq_K(psi, K_fun, K_term1, K_term2, K_term3, $ shear_out, curv_out INTEGER :: itheta - REAL(r8) :: f1raw, delpsi, chi1 + REAL(r8) :: f1raw, delpsi, chi1, p1, q REAL(r8) :: jwt, jwz, bth, bze, bsq_val, sigma, jdotb_val REAL(r8) :: g22, g23, g33, r_val REAL(r8), DIMENSION(0:mthsurf) :: K_t1, K_t2, K_t3 From 3f2d03fc44f633a77aac78c5b4e3b9ff463ce1aa Mon Sep 17 00:00:00 2001 From: satelite2517 Date: Mon, 27 Jul 2026 14:06:00 +0900 Subject: [PATCH 51/62] MATCH - MINOR - Header comment reflects sol_num selection Co-Authored-By: Claude Opus 5 --- match/match.f | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/match/match.f b/match/match.f index 939f56a50..5654ee673 100644 --- a/match/match.f +++ b/match/match.f @@ -51,7 +51,7 @@ PROGRAM match_main CALL timer(0,out_unit) CALL ideal_read(filename) c----------------------------------------------------------------------- -c reconstruct most unstable ideal solution. +c reconstruct the ideal solution selected by sol_num. c----------------------------------------------------------------------- IF(ideal_flag)THEN CALL ideal_transform From c27437c36dc6c6e97e753021661104a3c9a20455 Mon Sep 17 00:00:00 2001 From: satelite2517 Date: Thu, 15 Oct 2026 14:05:27 -0400 Subject: [PATCH 52/62] GPEC - recon: add input guards and rename flags to effective_field/standard_form --- docs/tex/recon/main.tex | 18 ++++---- gpec/gpec.f | 37 ++++++++++++----- gpec/gpeq.f | 91 +++++++++++++++++++++-------------------- gpec/gpglobal.F | 3 +- gpec/gpout.f | 25 +++++------ input/gpec.in | 12 +++--- input/match.in | 2 +- 7 files changed, 103 insertions(+), 85 deletions(-) diff --git a/docs/tex/recon/main.tex b/docs/tex/recon/main.tex index 80d812db5..fa36a55b9 100644 --- a/docs/tex/recon/main.tex +++ b/docs/tex/recon/main.tex @@ -15,7 +15,7 @@ \usepackage{pdflscape} \numberwithin{equation}{section} -\title{DCON \texttt{recon\_flag} document} +\title{DCON \texttt{effective\_field\_flag} document} \author{Sunjae Lee} \date{\today} @@ -2205,9 +2205,9 @@ \section{Log-output quantities and their exact integrands} This section gives the precise mathematical definition of every scalar printed to the terminal and to \texttt{gpec.log} by the three reconstruction diagnostics. The three blocks correspond to the input flags -\texttt{recon\_flag} (\texttt{GPEC\_RECON}, driver \texttt{gpout\_recon}), -\texttt{recon\_flag2} (\texttt{GPEC\_RECON2}, driver \texttt{gpout\_recon2} -$\to$ \texttt{gpeq\_firstform}), and \texttt{recon\_flag3} +\texttt{effective\_field\_flag} (\texttt{GPEC\_RECON}, driver \texttt{gpout\_recon}), +\texttt{standard\_form\_flag} (\texttt{GPEC\_RECON2}, driver \texttt{gpout\_recon2} +$\to$ \texttt{gpeq\_firstform}), and \texttt{effective\_field\_terms\_flag} (\texttt{GPEC\_RECON3}, driver \texttt{gpout\_recon3} $\to$ \texttt{gpeq\_recon3}). @@ -2225,9 +2225,9 @@ \section{Log-output quantities and their exact integrands} $\delta W_p$ total reported below is built with this scheme, so the choice affects the reported numbers at the level of the quadrature error. -\item \texttt{cveri\_flag} (default \texttt{.FALSE.}) enables the +\item \texttt{curl\_check\_flag} (default \texttt{.FALSE.}) enables the $(\nabla\times\vec C)\cdot\nabla\psi=0$ verification of - \S\ref{par:cveri} alongside \texttt{recon\_flag}. The pointwise + \S\ref{par:cveri} alongside \texttt{effective\_field\_flag}. The pointwise residual is accumulated over all surfaces and reported as a status of \texttt{PASS}, \texttt{WARN} or \texttt{SKIP} against a fixed tolerance of $10^{-10}$, together with its maximum and rms. @@ -2242,7 +2242,7 @@ \section{Log-output quantities and their exact integrands} \chi'=2\pi\psi_o . \end{equation} -\subsection{\texttt{GPEC\_RECON} (\texttt{recon\_flag})} +\subsection{\texttt{GPEC\_RECON} (\texttt{effective\_field\_flag})} This route reconstructs the closed Bernstein form \eqref{eq:ep_bernsteinK}, \begin{equation} @@ -2313,7 +2313,7 @@ \subsection{\texttt{GPEC\_RECON} (\texttt{recon\_flag})} (\partial_\theta C_\zeta-\partial_\zeta C_\theta)$, which must vanish to \texttt{tol}. -\subsection{\texttt{GPEC\_RECON2} (\texttt{recon\_flag2})} +\subsection{\texttt{GPEC\_RECON2} (\texttt{standard\_form\_flag})} This route reconstructs the original ``first form'' of $\delta W_p$, Eq.~\eqref{eq:ep_first}, \begin{equation} @@ -2380,7 +2380,7 @@ \subsection{\texttt{GPEC\_RECON2} (\texttt{recon\_flag2})} Each line is printed as a complex pair (real, imaginary); the imaginary part is a roundoff diagnostic and should vanish. -\subsection{\texttt{GPEC\_RECON3} (\texttt{recon\_flag3})} +\subsection{\texttt{GPEC\_RECON3} (\texttt{effective\_field\_terms\_flag})} This route keeps the same closed form as recon1, Eq.~\eqref{eq:dWp_recon1}, but expands the cross-energy density $|\vec C|^2$ term by term using diff --git a/gpec/gpec.f b/gpec/gpec.f index 28a8ec89f..3a8cc5cfc 100644 --- a/gpec/gpec.f +++ b/gpec/gpec.f @@ -39,7 +39,8 @@ PROGRAM gpec_main $ arbsurf_flag,angles_flag,surfmode_flag,rzpgrid_flag, $ singcurs_flag,m3d_flag,cas3d_flag,test_flag,nrzeq_flag, $ arzphifun_flag,xbrzphifun_flag,pmodbmn_flag,xclebsch_flag, - $ filter_flag,gal_flag,delpsi_flag,recon_flag,use_res_spot, + $ filter_flag,gal_flag,delpsi_flag,effective_field_flag, + $ use_res_spot, $ singthresh_callen_flag,singthresh_slayer_flag,singthresh_flag LOGICAL, DIMENSION(100) :: ss_flag COMPLEX(r8), DIMENSION(:), POINTER :: finmn,foutmn,xspmn, @@ -74,8 +75,8 @@ PROGRAM gpec_main $ netcdf_flag,ascii_flag,singthresh_flag, $ singthresh_callen_flag,singthresh_slayer_flag, $ singthresh_slayer_inpr,singthresh_slayer_inpr_prof, - $ recon_flag,recon_int,cveri_flag,recon_out, - $ recon_flag2,recon_flag3 + $ effective_field_flag,recon_int,curl_check_flag,recon_out, + $ standard_form_flag,effective_field_terms_flag NAMELIST/gpec_diagnose/singcurs_flag,xbcontra_flag, $ xbnobo_flag,d3_flag,div_flag,xbst_flag,jacfac_flag, $ pmodbmn_flag,rzphibx_flag,radvar_flag,eigen_flag,magpot_flag, @@ -201,11 +202,11 @@ PROGRAM gpec_main test_flag=.FALSE. eigm_flag=.FALSE. mutual_test_flag=.FALSE. - recon_flag=.FALSE. - recon_flag2=.FALSE. - recon_flag3=.FALSE. + effective_field_flag=.FALSE. + standard_form_flag=.FALSE. + effective_field_terms_flag=.FALSE. recon_int="spline" - cveri_flag=.FALSE. + curl_check_flag=.FALSE. recon_out=.TRUE. majr=10.0 @@ -243,6 +244,22 @@ PROGRAM gpec_main CALL gpec_stop("gpec_output recon_int must be spline or "// $ "trapezoid") END SELECT + ! recon diagnostics compare against ep(mode), so they need the + ! bare, unregularized DCON eigenmode selected by mode_flag. + IF (effective_field_flag .OR. standard_form_flag .OR. + $ effective_field_terms_flag) THEN + IF (.NOT. mode_flag .OR. reg_flag .OR. coil_flag .OR. + $ data_flag .OR. harmonic_flag) THEN + CALL gpec_stop("effective_field_flag/standard_form_flag/"// + $ "effective_field_terms_flag "// + $ "require mode_flag=t, reg_flag=f, and "// + $ "coil_flag=data_flag=harmonic_flag=f") + ENDIF + ENDIF + IF (curl_check_flag .AND. .NOT. effective_field_flag) THEN + PRINT *,"!! WARNING: curl_check_flag has no effect without "// + $ "effective_field_flag" + ENDIF galsol%gal_flag=gal_flag IF(timeit) CALL gpec_timer(0) c----------------------------------------------------------------------- @@ -633,13 +650,13 @@ PROGRAM gpec_main IF (arzphifun_flag) THEN CALL gpout_arzphifun(mode,xspmn) ENDIF - IF (recon_flag) THEN + IF (effective_field_flag) THEN CALL gpout_recon(mode,xspmn) ENDIF - IF (recon_flag2) THEN + IF (standard_form_flag) THEN CALL gpout_recon2(mode,xspmn) ENDIF - IF (recon_flag3) THEN + IF (effective_field_terms_flag) THEN CALL gpout_recon3(mode,xspmn) ENDIF c----------------------------------------------------------------------- diff --git a/gpec/gpeq.f b/gpec/gpeq.f index c6bd1395a..fb6b44fc6 100644 --- a/gpec/gpeq.f +++ b/gpec/gpeq.f @@ -46,6 +46,9 @@ MODULE gpeq_mod USE idcon_mod IMPLICIT NONE +c floor for recon divisors (rfac, |grad psi|^2, B^2) so the +c recon kernels stay finite if called on the magnetic axis. + REAL(r8), PARAMETER, PRIVATE :: recon_tiny = 1.0e-30_r8 CONTAINS c----------------------------------------------------------------------- @@ -692,7 +695,7 @@ SUBROUTINE gpeq_c(psi, ipsi) INTEGER :: itheta, ipert, jpert, m1, dm REAL(r8) :: q, f1raw, p1, chi1, jac - REAL(r8) :: eta, rfac, v21, v22, v23, v33 + REAL(r8) :: eta, rfac, v21, v22, v23, v33, dpsq REAL(r8), DIMENSION(0:mthsurf) :: jacs, r_vec COMPLEX(r8), DIMENSION(0:mthsurf) :: xwp_fun @@ -741,7 +744,7 @@ SUBROUTINE gpeq_c(psi, ipsi) DO itheta = 0, mthsurf CALL bicube_eval(rzphi, psi, theta(itheta), 1) jac = rzphi%f(4) - rfac = SQRT(rzphi%f(1)) + rfac = MAX(SQRT(MAX(rzphi%f(1), 0.0_r8)), recon_tiny) eta = twopi*(theta(itheta) + rzphi%f(2)) r_vec(itheta) = ro + rfac*COS(eta) jacs(itheta) = jac @@ -791,6 +794,7 @@ SUBROUTINE gpeq_c(psi, ipsi) jac = jacs(itheta) jwt = - f1raw / jac jwz = - p1 * mu0 / chi1 - f1raw * q / jac + dpsq = MAX(delpsi(itheta)**2, recon_tiny) c J C^psi = J Q^psi cwp_fun(itheta)= bwp_fun(itheta) @@ -799,20 +803,20 @@ SUBROUTINE gpeq_c(psi, ipsi) c * [mu0 j^theta g_theta_zeta + mu0 j^zeta g_zeta_zeta] c = J Q^theta + xwp_fun/(J |grad psi|^2) * [...] cwt_fun(itheta) = bmt_fun(itheta) + xwp_fun(itheta) - $ / ((delpsi(itheta)**2) * jac )* + $ / (dpsq * jac )* $ (jwt * g_23(itheta) + jwz * g_33(itheta)) c J C^zeta = J Q^zeta - xi^psi/|grad psi|^2 c * [mu0 j^theta g_theta_theta + mu0 j^zeta g_theta_zeta] c = J Q^zeta - xwp_fun/(J |grad psi|^2) * [...] cwz_fun(itheta) = bmz_fun(itheta) - xwp_fun(itheta) - $ / ((delpsi(itheta)**2) * jac )* + $ / (dpsq * jac )* $ (jwt * g_22(itheta) + jwz * g_23(itheta)) c C_psi = Q_psi + (J xi^psi)/|grad psi|^2 c * [mu0 j^theta (grad psi.grad zeta) - mu0 j^zeta (grad psi.grad theta)] cvp_fun(itheta) = bvp_fun(itheta) + - $ xwp_fun(itheta) / (delpsi(itheta)**2) * + $ xwp_fun(itheta) / dpsq * $ (jwt * dpdz(itheta) - jwz * dpdt(itheta)) c C_theta = Q_theta + (J xi^psi) mu0 j^zeta @@ -869,8 +873,6 @@ SUBROUTINE gpeq_c(psi, ipsi) $ g23(dm)*cwt_mn(jpert)+g33(dm)*cwz_mn(jpert) ENDDO ENDDO -c (xno/bno and theta-space c2v* were dev-time checks; removed) - IF(debug_flag) PRINT *, "->Leaving gpeq_c at ipsi=", ipsi c----------------------------------------------------------------------- c terminate. @@ -881,7 +883,7 @@ END SUBROUTINE gpeq_c c subprogram 11. gpeq_cveri. c verify the C-vector identity c -c (curl C) · grad(psi) +c (curl C).grad(psi) c = (d C_zeta / d theta - d C_theta / d zeta) / J c c using the single-n Fourier convention @@ -895,7 +897,7 @@ END SUBROUTINE gpeq_c c c and c -c (curl C) · grad(psi) +c (curl C).grad(psi) c = (d_theta C_zeta + 2*pi*i*n*C_theta)/J. c c Assumes gpeq_prep_c(psi) has been called for this psi, so the @@ -926,7 +928,7 @@ SUBROUTINE gpeq_cveri(psi, cveri_fun) c----------------------------------------------------------------------- c divide by Jacobian pointwise: -c (curl C) · grad(psi) = (d_theta C_zeta - d_zeta C_theta)/J +c (curl C).grad(psi) = (d_theta C_zeta - d_zeta C_theta)/J c----------------------------------------------------------------------- DO itheta = 0, mthsurf CALL bicube_eval(rzphi, psi, theta(itheta), 0) @@ -1210,7 +1212,7 @@ END SUBROUTINE gpeq_dst c----------------------------------------------------------------------- c subprogram 15. gpeq_shear. c compute magnetic shear at a single psi level. -c approach: compute spatial domain first (theta), then FFT to mode space. +c evaluated on the theta grid and returned in real space. c----------------------------------------------------------------------- SUBROUTINE gpeq_shear(psi, shear_fun) REAL(r8), INTENT(IN) :: psi @@ -1231,10 +1233,10 @@ SUBROUTINE gpeq_shear(psi, shear_fun) c----------------------------------------------------------------------- c Allocate spline for shear_temp with 5 components: -c 1: legacy covariant numerator term +c 1: covariant-form numerator (kept for reference, unused below) c 2: (q*dpdt - dpdz) numerator c 3: g_psi_g_psi denominator -c 4: legacy covariant denominator +c 4: covariant-form denominator (kept for reference, unused below) c 5: DCON shear geometry term (component 2 / component 3) c----------------------------------------------------------------------- CALL spline_alloc(shear_temp, mthsurf, 5) @@ -1249,7 +1251,7 @@ SUBROUTINE gpeq_shear(psi, shear_fun) CALL bicube_eval(rzphi, psi, theta(itheta), 1) jac = rzphi%f(4) - rfac = SQRT(MAX(rzphi%f(1), 0.0_r8)) + rfac = MAX(SQRT(MAX(rzphi%f(1), 0.0_r8)), recon_tiny) eta = twopi*(theta_val + rzphi%f(2)) r_val = ro + rfac*COS(eta) @@ -1267,8 +1269,7 @@ SUBROUTINE gpeq_shear(psi, shear_fun) w(3,2) = (r_val/(2.0_r8*rfac*jac))* $ (rzphi%fx(3)*rzphi%fy(1) - rzphi%fx(1)*rzphi%fy(3)) -c Compute covariant basis v_ij = ∂r/∂ξ_j (Cartesian components) -c From recon_metric: +c Compute covariant basis v_ij = dr/dxi_j (Cartesian components) v(1,1) = rzphi%fx(1)/(2.0_r8*rfac*jac) v(1,2) = rzphi%fx(2)*twopi*rfac/jac v(1,3) = rzphi%fx(3)*r_val/jac @@ -1280,7 +1281,7 @@ SUBROUTINE gpeq_shear(psi, shear_fun) c Component 33 of covariant basis v(3,3) = twopi*r_val/jac -c Contravariant dot products: dpdp = ∇ψ·∇ψ, etc. +c Contravariant dot products: dpdp = grad psi.grad psi, etc. dpdp = w(1,1)**2 + w(1,2)**2 dpdt = w(1,1)*w(2,1) + w(1,2)*w(2,2) dpdz = w(1,1)*w(3,1) + w(1,2)*w(3,2) @@ -1294,8 +1295,8 @@ SUBROUTINE gpeq_shear(psi, shear_fun) $ twopi**2 * r_val**2 * (v(2,1)**2 + v(2,2)**2) - shear_temp%fs(itheta, 5) = - $ shear_temp%fs(itheta, 2) / shear_temp%fs(itheta, 3) + shear_temp%fs(itheta, 5) = shear_temp%fs(itheta, 2) / + $ MAX(shear_temp%fs(itheta, 3), recon_tiny) ENDDO c----------------------------------------------------------------------- @@ -1321,7 +1322,7 @@ SUBROUTINE gpeq_shear(psi, shear_fun) ENDDO c----------------------------------------------------------------------- -c Step 4: Transform to mode space via FFT. +c Step 4: Release the theta spline. c----------------------------------------------------------------------- CALL spline_dealloc(shear_temp) c----------------------------------------------------------------------- @@ -1330,7 +1331,8 @@ END SUBROUTINE gpeq_shear c----------------------------------------------------------------------- c subprogram 16. gpeq_curvature. c compute curvature in spatial domain. -c κ·∇ψ = (|∇ψ|²/B²)[μ₀p' + (1/2)(∂B²/∂ψ) + (1/2)(∂B²/∂θ)(∇ψ·∇θ)/(∇ψ·∇ψ)] +c kappa.grad psi = (|grad psi|^2/B^2)[mu0 p' + (1/2) dB^2/dpsi +c + (1/2)(dB^2/dtheta)(grad psi.grad theta)/|grad psi|^2] c----------------------------------------------------------------------- SUBROUTINE gpeq_curvature(psi, curv_fun) REAL(r8), INTENT(IN) :: psi @@ -1349,14 +1351,14 @@ SUBROUTINE gpeq_curvature(psi, curv_fun) p1 = sq%f1(2) / mu0 c----------------------------------------------------------------------- -c Step 3: Compute curvature at all theta points. +c Compute curvature at all theta points. c----------------------------------------------------------------------- DO itheta = 0, mthsurf theta_val = theta(itheta) CALL bicube_eval(rzphi, psi, theta_val, 1) jac = rzphi%f(4) - rfac = SQRT(rzphi%f(1)) + rfac = MAX(SQRT(MAX(rzphi%f(1), 0.0_r8)), recon_tiny) eta = twopi*(theta_val + rzphi%f(2)) r_val = ro + rfac*COS(eta) @@ -1373,21 +1375,21 @@ SUBROUTINE gpeq_curvature(psi, curv_fun) w(3,2) = (r_val/(2.0_r8*rfac*jac))* $ (rzphi%fx(3)*rzphi%fy(1) - rzphi%fx(1)*rzphi%fy(3)) -c Compute |∇ψ|² and ∇ψ·∇θ +c Compute |grad psi|^2 and grad psi.grad theta delpsi = SQRT(w(1,1)**2 + w(1,2)**2) dpdt = w(1,1)*w(2,1) + w(1,2)*w(2,2) CALL bicube_eval(eqfun, psi, theta_val, 1) -c Retrieve B² and derivatives - bsq_val = eqfun%f(1) ** 2 +c Retrieve B^2 and derivatives + bsq_val = MAX(eqfun%f(1)**2, recon_tiny) bsq_psi = eqfun%fx(1) * 2 * eqfun%f(1) bsq_theta = eqfun%fy(1) * 2 * eqfun%f(1) -c Compute κ·∇ψ safely +c Compute kappa.grad psi kappa_psi = (delpsi**2 / bsq_val) * $ (p1*mu0 + 0.5_r8*bsq_psi + - $ 0.5_r8*bsq_theta*dpdt/(delpsi**2)) + $ 0.5_r8*bsq_theta*dpdt/MAX(delpsi**2, recon_tiny)) curv_fun(itheta) = CMPLX(kappa_psi, 0.0_r8, r8) @@ -1398,8 +1400,8 @@ END SUBROUTINE gpeq_curvature c----------------------------------------------------------------------- c subprogram 17. gpeq_K. c compute Bernstein K quantity (stability indicator). -c K = |∇ψ_dcon|^2 * σ * S_dcon -c + mu0 * B^2 * σ^2 + 2 p' * κ^psi +c K = |grad psi_dcon|^2 * sigma * S_dcon +c + mu0 * B^2 * sigma^2 + 2 p' * kappa^psi c Uses pre-computed metric from idcon_metric c----------------------------------------------------------------------- SUBROUTINE gpeq_K(psi, K_fun, K_term1, K_term2, K_term3, @@ -1440,11 +1442,11 @@ SUBROUTINE gpeq_K(psi, K_fun, K_term1, K_term2, K_term3, DO itheta = 0, mthsurf CALL bicube_eval(rzphi, psi, theta(itheta), 1) jac = rzphi%f(4) - rfac = SQRT(rzphi%f(1)) + rfac = MAX(SQRT(MAX(rzphi%f(1), 0.0_r8)), recon_tiny) eta = twopi*(theta(itheta) + rzphi%f(2)) r_val = ro + rfac*COS(eta) -c |∇ψ| magnitude +c |grad psi| magnitude w(1,1)=(1+rzphi%fy(2))*twopi**2*rfac*r_val/jac w(1,2)=-rzphi%fy(1)*pi*r_val/(rfac*jac) delpsi=SQRT(w(1,1)**2+w(1,2)**2) @@ -1469,9 +1471,9 @@ SUBROUTINE gpeq_K(psi, K_fun, K_term1, K_term2, K_term3, g33 = (v(3,3)**2) g23 = (v(2,3)*v(3,3)) -c j·B and σ = (j·B)/B² +c j.B and sigma = (j.B)/B^2 CALL bicube_eval(eqfun, psi, theta(itheta), 0) - bsq_val = eqfun%f(1)**2 + bsq_val = MAX(eqfun%f(1)**2, recon_tiny) jdotb_val = g22*bth*jwt + g33*bze*jwz + $ g23*(bth*jwz + bze*jwt) @@ -1479,13 +1481,13 @@ SUBROUTINE gpeq_K(psi, K_fun, K_term1, K_term2, K_term3, sigma_vals(itheta) = sigma jdotb_vals(itheta) = jdotb_val -c Term1: |∇ψ_dcon|^2 * σ * S_dcon +c Term1: |grad psi_dcon|^2 * sigma * S_dcon K_t1(itheta) = (delpsi**2) * sigma * REAL(shear_fun(itheta)) -c Term2: mu0 * B^2 * σ^2 +c Term2: mu0 * B^2 * sigma^2 K_t2(itheta) = bsq_val * sigma**2 * mu0 -c Term3: 2 p' * κ^psi +c Term3: 2 p' * kappa^psi K_t3(itheta) = 2.0_r8 * REAL(curv_fun(itheta)) * p1 ENDDO @@ -1541,7 +1543,7 @@ SUBROUTINE gpeq_epfterms(psi, A_int, B_int, Iperp_int, Cpar_int, REAL(r8) :: f1raw, p1_local, chi1 REAL(r8) :: A_density, B_density, Iperp_density, Cpar_density, $ epf_density - REAL(r8) :: delpsi_val, bsq_val, sigma_local, jdotb_val + REAL(r8) :: delpsi_val, dpsq, bsq_val, sigma_local, jdotb_val REAL(r8) :: jwt, jwz, bth, bze, g22, g33, g23, r_val REAL(r8) :: xin2, mu0jwt, mu0jwz REAL(r8) :: mu0jpar_t, mu0jpar_z, mu0jper_t, mu0jper_z @@ -1598,15 +1600,16 @@ SUBROUTINE gpeq_epfterms(psi, A_int, B_int, Iperp_int, Cpar_int, CALL bicube_eval(rzphi, psi, theta(itheta), 1) CALL bicube_eval(eqfun, psi, theta(itheta), 0) jac = rzphi%f(4) - rfac = SQRT(rzphi%f(1)) + rfac = MAX(SQRT(MAX(rzphi%f(1), 0.0_r8)), recon_tiny) eta = twopi*(theta(itheta) + rzphi%f(2)) r_val = ro + rfac*COS(eta) - bsq_val = eqfun%f(1)**2 + bsq_val = MAX(eqfun%f(1)**2, recon_tiny) c |grad psi| w(1,1)=(1+rzphi%fy(2))*twopi**2*rfac*r_val/jac w(1,2)=-rzphi%fy(1)*pi*r_val/(rfac*jac) delpsi_val=SQRT(w(1,1)**2+w(1,2)**2) + dpsq = MAX(delpsi_val**2, recon_tiny) c currents and B (idcon_metric convention, same as gpeq_K). jwt = -f1raw/(jac*mu0) @@ -1650,9 +1653,9 @@ SUBROUTINE gpeq_epfterms(psi, A_int, B_int, Iperp_int, Cpar_int, c mu0 j^i = mu0 * (physical j^i); jwt,jwz already hold physical j^i. mu0jwt = mu0 * jwt mu0jwz = mu0 * jwz - jvt_loc = xwp_fun(itheta) / (delpsi_val**2 * jac) * + jvt_loc = xwp_fun(itheta) / (dpsq * jac) * $ (mu0jwt * g23 + mu0jwz * g33) - jvz_loc = -xwp_fun(itheta) / (delpsi_val**2 * jac) * + jvz_loc = -xwp_fun(itheta) / (dpsq * jac) * $ (mu0jwt * g22 + mu0jwz * g23) c V is contravariant (J V^i); pair with covariant Q_i (bvt,bvz). B_density = 2.0_r8 * REAL( @@ -1678,9 +1681,9 @@ SUBROUTINE gpeq_epfterms(psi, A_int, B_int, Iperp_int, Cpar_int, mu0jpar_z = mu0 * sigma_local * bze mu0jper_t = mu0jwt - mu0jpar_t mu0jper_z = mu0jwz - mu0jpar_z - jvt_cur = xwp_fun(itheta) / (delpsi_val**2 * jac) * + jvt_cur = xwp_fun(itheta) / (dpsq * jac) * $ (mu0jpar_t * g23 + mu0jpar_z * g33) - jvz_cur = -xwp_fun(itheta) / (delpsi_val**2 * jac) * + jvz_cur = -xwp_fun(itheta) / (dpsq * jac) * $ (mu0jpar_t * g22 + mu0jpar_z * g23) jvt_pre = jvt_loc - jvt_cur jvz_pre = jvz_loc - jvz_cur diff --git a/gpec/gpglobal.F b/gpec/gpglobal.F index 50c9c57c1..bc9732e4f 100644 --- a/gpec/gpglobal.F +++ b/gpec/gpglobal.F @@ -19,7 +19,8 @@ MODULE gpglobal_mod $ chebyshev_flag,coil_flag,eigm_flag,bwp_pest_flag,verbose, $ debug_flag,timeit,kin_flag,con_flag,resp_induct_flag, $ netcdf_flag,ascii_flag,wv_farwall_flag,mutual_test_flag, - $ cveri_flag,recon_out,recon_flag2,recon_flag3 + $ curl_check_flag,recon_out,standard_form_flag, + $ effective_field_terms_flag INTEGER :: mr,mz,mpsi,mstep,mpert,mband,mtheta,mthvac,mthsurf, $ mfix,mhigh,mlow,msing,nfm2,nths,nths2,lmpert,lmlow,lmhigh, diff --git a/gpec/gpout.f b/gpec/gpout.f index 6c213a881..7d9eb231f 100644 --- a/gpec/gpout.f +++ b/gpec/gpout.f @@ -6981,7 +6981,7 @@ SUBROUTINE gpout_recon(mode, xspmn) IF (recon_out) THEN OPEN(UNIT=ushear_fun, FILE=shear_fun_file, STATUS="UNKNOWN") OPEN(UNIT=ucurv, FILE=curv_file, STATUS="UNKNOWN") - IF (cveri_flag) THEN + IF (curl_check_flag) THEN OPEN(UNIT=ucveri, FILE=cveri_file, STATUS="UNKNOWN") ENDIF OPEN(UNIT=uk, FILE=k_file, STATUS="UNKNOWN") @@ -6999,7 +6999,7 @@ SUBROUTINE gpout_recon(mode, xspmn) $ "psi","theta","r","z","shear_re","shear_im" WRITE(ucurv,'(6(1x,a16))') $ "psi","theta","r","z","curv_re","curv_im" - IF (cveri_flag) WRITE(ucveri,'(6(1x,a16))') + IF (curl_check_flag) WRITE(ucveri,'(6(1x,a16))') $ "psi","theta","r","z","cveri_re","cveri_im" WRITE(uk,'(9(1x,a16))') $ "psi","theta","r","z","K_re","K_im", @@ -7038,8 +7038,7 @@ SUBROUTINE gpout_recon(mode, xspmn) $ "c2_theta_den","c2_zeta_den","dst1_den","dst2_den", $ "dst3_den" ENDIF - ep_index = 1 - IF (mode_flag) ep_index = mode + ep_index = mode IF (ep_index < 1 .OR. ep_index > mpert) THEN CALL gpec_stop("gpout_recon selected mode is out of range") ENDIF @@ -7084,7 +7083,7 @@ SUBROUTINE gpout_recon(mode, xspmn) CALL gpeq_K(psi, K_fun, K_term1, K_term2, K_term3, $ sigma_vals, jdotb_vals, shear_fun, curv_fun) c Verify (curl C).grad(psi)=0 using the C state prepared above. - IF (cveri_flag) THEN + IF (curl_check_flag) THEN CALL gpeq_cveri(psi, cveri_fun) DO itheta = 0, mthsurf cveri_abs = ABS(cveri_fun(itheta)) @@ -7119,7 +7118,7 @@ SUBROUTINE gpout_recon(mode, xspmn) $ rvals(itheta), zvals(itheta), $ REAL(curv_fun(itheta)), $ AIMAG(curv_fun(itheta)) - IF (cveri_flag) WRITE(ucveri,'(6(es17.8e3))') psi, + IF (curl_check_flag) WRITE(ucveri,'(6(es17.8e3))') psi, $ theta(itheta), rvals(itheta), zvals(itheta), $ REAL(cveri_fun(itheta)), AIMAG(cveri_fun(itheta)) WRITE(uk,'(9(es17.8e3))') psi, theta(itheta), @@ -7134,7 +7133,7 @@ SUBROUTINE gpout_recon(mode, xspmn) WRITE(u_terms,*) WRITE(ushear_fun,*) WRITE(ucurv,*) - IF (cveri_flag) WRITE(ucveri,*) + IF (curl_check_flag) WRITE(ucveri,*) WRITE(uk,*) WRITE(uk_sigma,*) @@ -7396,7 +7395,7 @@ SUBROUTINE gpout_recon(mode, xspmn) $ ep_selected WRITE(*,'(a,a,a,es17.8e3)') " DCON ep(", TRIM(smode), ") = ", $ ep_selected * (mu0*2.0_r8) / psio**2 / (chi1*1.0e-3_r8)**2 - IF (cveri_flag) THEN + IF (curl_check_flag) THEN cveri_stat = "PASS" IF (cveri_count > 0) THEN cveri_rms = SQRT(cveri_sumsq / REAL(cveri_count, r8)) @@ -7444,7 +7443,7 @@ SUBROUTINE gpout_recon(mode, xspmn) WRITE(u_log,'(a,a,a,es17.8e3)') " DCON ep(", TRIM(smode), $ ") = ", ep_selected * $ (mu0*2.0_r8) / psio**2 / (chi1*1.0e-3_r8)**2 - IF (cveri_flag) THEN + IF (curl_check_flag) THEN WRITE(u_log,'(a,a)') " C verify: ", TRIM(cveri_stat) WRITE(u_log,'(a,es17.8e3)') " max = ", cveri_max WRITE(u_log,'(a,es17.8e3)') " rms = ", cveri_rms @@ -7458,7 +7457,7 @@ SUBROUTINE gpout_recon(mode, xspmn) IF (recon_out) THEN CLOSE(ushear_fun) CLOSE(ucurv) - IF (cveri_flag) CLOSE(ucveri) + IF (curl_check_flag) CLOSE(ucveri) CLOSE(uk) CLOSE(uk_sigma) CLOSE(u_int) @@ -7534,8 +7533,7 @@ SUBROUTINE gpout_recon2(mode, xspmn) ENDIF c fail fast on an out-of-range mode selection. - ep_index = 1 - IF (mode_flag) ep_index = mode + ep_index = mode IF (ep_index < 1 .OR. ep_index > mpert) THEN CALL gpec_stop("gpout_recon2 selected mode is out of range") ENDIF @@ -7803,8 +7801,7 @@ SUBROUTINE gpout_recon3(mode, xspmn) ENDIF c fail fast on an out-of-range mode selection. - ep_index = 1 - IF (mode_flag) ep_index = mode + ep_index = mode IF (ep_index < 1 .OR. ep_index > mpert) THEN CALL gpec_stop("gpout_recon3 selected mode is out of range") ENDIF diff --git a/input/gpec.in b/input/gpec.in index 9adf1c7d5..64cf42861 100644 --- a/input/gpec.in +++ b/input/gpec.in @@ -90,12 +90,12 @@ verbose=t ! Print run log to terminal - recon_flag=f ! Calculate each contribution of destabilizing term and effective perturbed field [Bernstein, Handbook of Plasma Physics, 1983]. - recon_flag2=f ! Calculate the first-form plasma energy terms from Eq. (36) with the gamma|div xi|^2 term omitted. - recon_flag3=f ! Bernstein |C|^2 decomposition: |C|^2 = |Q|^2 + 2Re(V*.Q) + |V|^2, reported as A, B, Cpar, Iperp with the identity check epf = A+B+Cpar+Iperp. - cveri_flag=f ! Under recon_flag, verify (curl C).grad(psi)=0 and write gpec_recon_cveri_sol*.out. - recon_out=t ! Under recon_flag/recon_flag2/recon_flag3, write recon diagnostic files and gpec.log entries. If false, keep terminal summary only. - recon_int="spline" ! recon_flag radial integration on psifac grid. Options: "spline" or "trapezoid". + effective_field_flag=f ! Calculate each contribution of destabilizing term and effective perturbed field [Bernstein, Handbook of Plasma Physics, 1983]. + standard_form_flag=f ! Calculate the first-form plasma energy terms from Eq. (36) with the gamma|div xi|^2 term omitted. + effective_field_terms_flag=f ! Bernstein |C|^2 decomposition: |C|^2 = |Q|^2 + 2Re(V*.Q) + |V|^2, reported as A, B, Cpar, Iperp with the identity check epf = A+B+Cpar+Iperp. + curl_check_flag=f ! Under effective_field_flag, verify (curl C).grad(psi)=0 and write gpec_recon_cveri_sol*.out. + recon_out=t ! Under effective_field_flag/standard_form_flag/effective_field_terms_flag, write recon diagnostic files and gpec.log entries. If false, keep terminal summary only. + recon_int="spline" ! effective_field_flag radial integration on psifac grid. Options: "spline" or "trapezoid". ! For DCON eigenmode reconstruction set coil_flag=f, mode_flag=t, choose mode as needed, and keep reg_flag=f. / &GPEC_DIAGNOSE diff --git a/input/match.in b/input/match.in index 31acfa658..c35d54f61 100644 --- a/input/match.in +++ b/input/match.in @@ -5,7 +5,7 @@ ideal_flag=t contour_flag=t - sol_num=1 !DCON eigen function index (1 is most unstable), which will be calculated by MATCH + sol_num=1 !DCON eigenfunction index for MATCH (1 = most unstable); sol_num=n>1 writes solutions.bin res_flag=f ff0=1e6 From 4a70b919072f312a5978360195ac6cf34542a858 Mon Sep 17 00:00:00 2001 From: satelite2517 Date: Thu, 15 Oct 2026 15:40:16 -0400 Subject: [PATCH 53/62] GPEC - recon: keep geometry scratch and chi1 local to recon kernels --- gpec/gpeq.f | 21 +++++++++++++++------ gpec/gpout.f | 2 +- 2 files changed, 16 insertions(+), 7 deletions(-) diff --git a/gpec/gpeq.f b/gpec/gpeq.f index fb6b44fc6..41670b9ed 100644 --- a/gpec/gpeq.f +++ b/gpec/gpeq.f @@ -696,6 +696,7 @@ SUBROUTINE gpeq_c(psi, ipsi) REAL(r8) :: q, f1raw, p1, chi1, jac REAL(r8) :: eta, rfac, v21, v22, v23, v33, dpsq + REAL(r8), DIMENSION(3,3) :: w REAL(r8), DIMENSION(0:mthsurf) :: jacs, r_vec COMPLEX(r8), DIMENSION(0:mthsurf) :: xwp_fun @@ -911,6 +912,7 @@ SUBROUTINE gpeq_cveri(psi, cveri_fun) COMPLEX(r8), DIMENSION(0:mthsurf), INTENT(OUT) :: cveri_fun INTEGER :: itheta, ipert + REAL(r8) :: jac COMPLEX(r8), DIMENSION(mpert) :: dth_cvz_mn, dzt_cvt_mn COMPLEX(r8), DIMENSION(mpert) :: curlpsi_mn @@ -971,7 +973,7 @@ SUBROUTINE gpeq_firstform(psi, q2_int, jqx_int, pdiv_int, $ q2_fun, jqx_fun, pdiv_fun, total_fun INTEGER :: itheta - REAL(r8) :: f1raw, p1 + REAL(r8) :: f1raw, p1, chi1, jac, jac1 REAL(r8) :: q2_density REAL(r8) :: mu0jtheta, mu0jzeta COMPLEX(r8) :: jqx_density, total_density, pdiv_density @@ -993,6 +995,7 @@ SUBROUTINE gpeq_firstform(psi, q2_int, jqx_int, pdiv_int, CALL spline_eval(sq, psi, 1) f1raw = sq%f1(1) p1 = sq%f1(2) / mu0 + chi1 = psio * twopi CALL iscdftb(mfac, mpert, xsp_fun, mthsurf, xsp_mn) CALL iscdftb(mfac, mpert, xmp1_fun, mthsurf, xmp1_mn) @@ -1101,7 +1104,7 @@ SUBROUTINE gpeq_epf(psi, epf_int, epf_p, epf_t, epf_z, COMPLEX(r8), DIMENSION(0:mthsurf) :: cwp_fun, cwt_fun, cwz_fun COMPLEX(r8), DIMENSION(0:mthsurf) :: cvp_fun, cvt_fun, cvz_fun REAL(r8) :: epf_psi_int, epf_theta_int, epf_zeta_int - REAL(r8) :: dpsi_d, dthe_d, dzet_d + REAL(r8) :: dpsi_d, dthe_d, dzet_d, jac IF(debug_flag) PRINT *, "Entering gpeq_epf" c----------------------------------------------------------------------- @@ -1171,7 +1174,7 @@ SUBROUTINE gpeq_dst(psi, dst_int, dst_t1, dst_t2, dst_t3, INTEGER :: itheta COMPLEX(r8), DIMENSION(0:mthsurf) :: K_fun, xno_fun REAL(r8), DIMENSION(0:mthsurf) :: K_term1, K_term2, K_term3 - REAL(r8) :: xin2_fac, xin2_loc, d1, d2, d3 + REAL(r8) :: xin2_fac, xin2_loc, d1, d2, d3, jac COMPLEX(r8) :: dst1_int, dst2_int, dst3_int c----------------------------------------------------------------------- @@ -1219,8 +1222,9 @@ SUBROUTINE gpeq_shear(psi, shear_fun) COMPLEX(r8), DIMENSION(0:mthsurf), INTENT(OUT) :: shear_fun INTEGER :: itheta - REAL(r8) :: r_val, theta_val, q, q1 + REAL(r8) :: r_val, theta_val, q, q1, chi1, jac, rfac, eta REAL(r8) :: dpdp, dpdt, dpdz, shear_deriv + REAL(r8), DIMENSION(3,3) :: w, v REAL(r8) :: shear_contra TYPE(spline_type) :: shear_temp @@ -1230,6 +1234,7 @@ SUBROUTINE gpeq_shear(psi, shear_fun) CALL spline_eval(sq, psi, 1) q = sq%f(4) q1 = sq%f1(4) + chi1 = psio * twopi c----------------------------------------------------------------------- c Allocate spline for shear_temp with 5 components: @@ -1339,8 +1344,9 @@ SUBROUTINE gpeq_curvature(psi, curv_fun) COMPLEX(r8), DIMENSION(0:mthsurf), INTENT(OUT) :: curv_fun INTEGER :: itheta - REAL(r8) :: r_val, theta_val, p1 + REAL(r8) :: r_val, theta_val, p1, jac, rfac, eta REAL(r8) :: delpsi + REAL(r8), DIMENSION(3,3) :: w REAL(r8) :: bsq_val, bsq_psi, bsq_theta REAL(r8) :: dpdt , kappa_psi @@ -1416,7 +1422,8 @@ SUBROUTINE gpeq_K(psi, K_fun, K_term1, K_term2, K_term3, INTEGER :: itheta REAL(r8) :: f1raw, delpsi, chi1, p1, q REAL(r8) :: jwt, jwz, bth, bze, bsq_val, sigma, jdotb_val - REAL(r8) :: g22, g23, g33, r_val + REAL(r8) :: g22, g23, g33, r_val, jac, rfac, eta + REAL(r8), DIMENSION(3,3) :: w, v REAL(r8), DIMENSION(0:mthsurf) :: K_t1, K_t2, K_t3 REAL(r8), DIMENSION(0:mthsurf) :: sigma_vals, jdotb_vals COMPLEX(r8), DIMENSION(0:mthsurf) :: shear_fun, curv_fun @@ -1545,6 +1552,8 @@ SUBROUTINE gpeq_epfterms(psi, A_int, B_int, Iperp_int, Cpar_int, $ epf_density REAL(r8) :: delpsi_val, dpsq, bsq_val, sigma_local, jdotb_val REAL(r8) :: jwt, jwz, bth, bze, g22, g33, g23, r_val + REAL(r8) :: jac, rfac, eta + REAL(r8), DIMENSION(3,3) :: w, v REAL(r8) :: xin2, mu0jwt, mu0jwz REAL(r8) :: mu0jpar_t, mu0jpar_z, mu0jper_t, mu0jper_z REAL(r8) :: jsq_val, jpar_val, bmod_val diff --git a/gpec/gpout.f b/gpec/gpout.f index 7d9eb231f..ae43a7210 100644 --- a/gpec/gpout.f +++ b/gpec/gpout.f @@ -7757,7 +7757,7 @@ SUBROUTINE gpout_recon3(mode, xspmn) c recon3 output units, within the reserved recon range 72-99. INTEGER, PARAMETER :: usurf=97, u_int=98, u_log=99 INTEGER :: istep, nint_pts, iint - REAL(r8) :: psi, dpsi_local + REAL(r8) :: psi, dpsi_local, rfac, eta REAL(r8) :: A_hr, B_hr, Iperp_hr, Cpar_hr, epf_hr REAL(r8) :: A_total, B_total, Iperp_total, Cpar_total, epf_total REAL(r8) :: dst1_total, dst3_total From 47be71b78158a70474b2346c0dc391bb4642c7cf Mon Sep 17 00:00:00 2001 From: satelite2517 Date: Thu, 15 Oct 2026 15:40:16 -0400 Subject: [PATCH 54/62] GPEC - recon: open recon output files with NEWUNIT --- gpec/gpout.f | 75 +++++++++++++++++++++++++--------------------------- 1 file changed, 36 insertions(+), 39 deletions(-) diff --git a/gpec/gpout.f b/gpec/gpout.f index ae43a7210..204ba9ac2 100644 --- a/gpec/gpout.f +++ b/gpec/gpout.f @@ -6909,13 +6909,10 @@ SUBROUTINE gpout_recon(mode, xspmn) COMPLEX(r8), DIMENSION(:), INTENT(IN) :: xspmn INTEGER :: ipsi, itheta, ipert -c recon output units: 72-99 are reserved for the recon diagnostics -c (gpout_recon/2/3) and are not opened elsewhere in the GPEC -c executable. - INTEGER, PARAMETER :: ushear_fun=82, ucurv=72, ucveri=74, uk=73, - $ uk_sigma=85, ucw_fun=86, ucw_mn=87, ucv_fun=88, ucv_mn=89, - $ ucv2_fun=90, ucv2_mn=91, u_int=92, u_log=93, u_terms=94, - $ uqv_mn=95 +c recon output units, assigned by OPEN(NEWUNIT=...). + INTEGER :: ushear_fun, ucurv, ucveri, uk, uk_sigma, ucw_fun, + $ ucw_mn, ucv_fun, ucv_mn, ucv2_fun, ucv2_mn, u_int, u_log, + $ u_terms, uqv_mn REAL(r8), DIMENSION(0:mthsurf) :: epf_den_fun, epf_p_fun, $ epf_t_fun, epf_z_fun, dst1_den_fun, dst2_den_fun, $ dst3_den_fun @@ -6979,22 +6976,22 @@ SUBROUTINE gpout_recon(mode, xspmn) terms_file = "gpec_recon_terms_sol"//TRIM(smode)//".out" IF (recon_out) THEN - OPEN(UNIT=ushear_fun, FILE=shear_fun_file, STATUS="UNKNOWN") - OPEN(UNIT=ucurv, FILE=curv_file, STATUS="UNKNOWN") + OPEN(NEWUNIT=ushear_fun, FILE=shear_fun_file, STATUS="UNKNOWN") + OPEN(NEWUNIT=ucurv, FILE=curv_file, STATUS="UNKNOWN") IF (curl_check_flag) THEN - OPEN(UNIT=ucveri, FILE=cveri_file, STATUS="UNKNOWN") + OPEN(NEWUNIT=ucveri, FILE=cveri_file, STATUS="UNKNOWN") ENDIF - OPEN(UNIT=uk, FILE=k_file, STATUS="UNKNOWN") - OPEN(UNIT=uk_sigma, FILE=k_sigma_file, STATUS="UNKNOWN") - CALL ascii_open(ucw_fun, cw_fun_file, "UNKNOWN") - CALL ascii_open(ucw_mn, cw_mn_file, "UNKNOWN") - CALL ascii_open(ucv_fun, cv_fun_file, "UNKNOWN") - CALL ascii_open(ucv_mn, cv_mn_file, "UNKNOWN") - CALL ascii_open(ucv2_fun, cv2_fun_file, "UNKNOWN") - CALL ascii_open(ucv2_mn, cv2_mn_file, "UNKNOWN") - CALL ascii_open(uqv_mn, qv_mn_file, "UNKNOWN") - OPEN(UNIT=u_int, FILE=int_file, STATUS="UNKNOWN") - OPEN(UNIT=u_terms, FILE=terms_file, STATUS="UNKNOWN") + OPEN(NEWUNIT=uk, FILE=k_file, STATUS="UNKNOWN") + OPEN(NEWUNIT=uk_sigma, FILE=k_sigma_file, STATUS="UNKNOWN") + OPEN(NEWUNIT=ucw_fun, FILE=cw_fun_file, STATUS="UNKNOWN") + OPEN(NEWUNIT=ucw_mn, FILE=cw_mn_file, STATUS="UNKNOWN") + OPEN(NEWUNIT=ucv_fun, FILE=cv_fun_file, STATUS="UNKNOWN") + OPEN(NEWUNIT=ucv_mn, FILE=cv_mn_file, STATUS="UNKNOWN") + OPEN(NEWUNIT=ucv2_fun, FILE=cv2_fun_file, STATUS="UNKNOWN") + OPEN(NEWUNIT=ucv2_mn, FILE=cv2_mn_file, STATUS="UNKNOWN") + OPEN(NEWUNIT=uqv_mn, FILE=qv_mn_file, STATUS="UNKNOWN") + OPEN(NEWUNIT=u_int, FILE=int_file, STATUS="UNKNOWN") + OPEN(NEWUNIT=u_terms, FILE=terms_file, STATUS="UNKNOWN") WRITE(ushear_fun,'(6(1x,a16))') $ "psi","theta","r","z","shear_re","shear_im" WRITE(ucurv,'(6(1x,a16))') @@ -7410,7 +7407,7 @@ SUBROUTINE gpout_recon(mode, xspmn) ENDIF IF (recon_out) THEN - OPEN(UNIT=u_log, FILE="gpec.log", STATUS="UNKNOWN", + OPEN(NEWUNIT=u_log, FILE="gpec.log", STATUS="UNKNOWN", $ POSITION="APPEND") WRITE(u_log,'(a)') "GPEC_RECON final results:" WRITE(u_log,'(a,I8)') " mode = ", mode @@ -7462,13 +7459,13 @@ SUBROUTINE gpout_recon(mode, xspmn) CLOSE(uk_sigma) CLOSE(u_int) CLOSE(u_terms) - CALL ascii_close(ucw_fun) - CALL ascii_close(ucw_mn) - CALL ascii_close(ucv_fun) - CALL ascii_close(ucv_mn) - CALL ascii_close(ucv2_fun) - CALL ascii_close(ucv2_mn) - CALL ascii_close(uqv_mn) + CLOSE(ucw_fun) + CLOSE(ucw_mn) + CLOSE(ucv_fun) + CLOSE(ucv_mn) + CLOSE(ucv2_fun) + CLOSE(ucv2_mn) + CLOSE(uqv_mn) ENDIF c----------------------------------------------------------------------- c terminate. @@ -7493,8 +7490,8 @@ SUBROUTINE gpout_recon2(mode, xspmn) COMPLEX(r8), DIMENSION(:), INTENT(IN) :: xspmn INTEGER :: ipsi, itheta -c recon2 output units, within the reserved recon range 72-99. - INTEGER, PARAMETER :: usurf=94, u_int=95, u_log=96 +c recon2 output units, assigned by OPEN(NEWUNIT=...). + INTEGER :: usurf, u_int, u_log INTEGER :: istep, nint_pts, iint REAL(r8) :: psi, eta, rfac, dpsi_local, q2_hr REAL(r8), DIMENSION(0:mthsurf) :: rvals, zvals @@ -7522,8 +7519,8 @@ SUBROUTINE gpout_recon2(mode, xspmn) int_file = "gpec_recon2_integration_sol"//TRIM(smode)//".out" IF (recon_out) THEN - OPEN(UNIT=usurf, FILE=surf_file, STATUS="UNKNOWN") - OPEN(UNIT=u_int, FILE=int_file, STATUS="UNKNOWN") + OPEN(NEWUNIT=usurf, FILE=surf_file, STATUS="UNKNOWN") + OPEN(NEWUNIT=u_int, FILE=int_file, STATUS="UNKNOWN") WRITE(usurf,'(12(1x,a16))') $ "psi","theta","r","z","q2_re","q2_im","jqx_re", $ "jqx_im","pdiv_re","pdiv_im","total_re","total_im" @@ -7693,7 +7690,7 @@ SUBROUTINE gpout_recon2(mode, xspmn) $ ep_dcon IF (recon_out) THEN - OPEN(UNIT=u_log, FILE="gpec.log", STATUS="UNKNOWN", + OPEN(NEWUNIT=u_log, FILE="gpec.log", STATUS="UNKNOWN", $ POSITION="APPEND") WRITE(u_log,'(a)') "GPEC_RECON2 final results:" WRITE(u_log,'(a,I8)') " mode = ", mode @@ -7754,8 +7751,8 @@ SUBROUTINE gpout_recon3(mode, xspmn) COMPLEX(r8), DIMENSION(:), INTENT(IN) :: xspmn INTEGER :: ipsi, itheta -c recon3 output units, within the reserved recon range 72-99. - INTEGER, PARAMETER :: usurf=97, u_int=98, u_log=99 +c recon3 output units, assigned by OPEN(NEWUNIT=...). + INTEGER :: usurf, u_int, u_log INTEGER :: istep, nint_pts, iint REAL(r8) :: psi, dpsi_local, rfac, eta REAL(r8) :: A_hr, B_hr, Iperp_hr, Cpar_hr, epf_hr @@ -7787,8 +7784,8 @@ SUBROUTINE gpout_recon3(mode, xspmn) int_file = "gpec_recon3_integration_sol"//TRIM(smode)//".out" IF (recon_out) THEN - OPEN(UNIT=usurf, FILE=surf_file, STATUS="UNKNOWN") - OPEN(UNIT=u_int, FILE=int_file, STATUS="UNKNOWN") + OPEN(NEWUNIT=usurf, FILE=surf_file, STATUS="UNKNOWN") + OPEN(NEWUNIT=u_int, FILE=int_file, STATUS="UNKNOWN") WRITE(usurf,'(30(1x,a16))') $ "psi","theta","r","z","A_den","B_den","Iperp_den", $ "Cpar_den","VdotQ_re","VdotQ_im","Bcur_den","Bpre_den", @@ -7988,7 +7985,7 @@ SUBROUTINE gpout_recon3(mode, xspmn) $ ep_dcon IF (recon_out) THEN - OPEN(UNIT=u_log, FILE="gpec.log", STATUS="UNKNOWN", + OPEN(NEWUNIT=u_log, FILE="gpec.log", STATUS="UNKNOWN", $ POSITION="APPEND") WRITE(u_log,'(a)') "GPEC_RECON3 final results:" WRITE(u_log,'(a,I8)') " mode = ", mode From fe40fed88d7cf81d812c442059f1985c5f4969c7 Mon Sep 17 00:00:00 2001 From: satelite2517 Date: Thu, 15 Oct 2026 15:40:16 -0400 Subject: [PATCH 55/62] GPEC - recon: judge curl check on residual relative to the cancelling terms --- docs/tex/recon/main.tex | 14 +++++++++++--- gpec/gpeq.f | 16 +++++++++++++++- gpec/gpout.f | 38 ++++++++++++++++++++++++++++---------- 3 files changed, 54 insertions(+), 14 deletions(-) diff --git a/docs/tex/recon/main.tex b/docs/tex/recon/main.tex index fa36a55b9..bee70334e 100644 --- a/docs/tex/recon/main.tex +++ b/docs/tex/recon/main.tex @@ -2228,9 +2228,17 @@ \section{Log-output quantities and their exact integrands} \item \texttt{curl\_check\_flag} (default \texttt{.FALSE.}) enables the $(\nabla\times\vec C)\cdot\nabla\psi=0$ verification of \S\ref{par:cveri} alongside \texttt{effective\_field\_flag}. The pointwise - residual is accumulated over all surfaces and reported as a status - of \texttt{PASS}, \texttt{WARN} or \texttt{SKIP} against a fixed - tolerance of $10^{-10}$, together with its maximum and rms. + residual is accumulated over all surfaces. Because the identity is + a cancellation between $\partial_\theta C_\zeta$ and + $\partial_\zeta C_\theta$, the verdict uses the relative residual + \begin{equation*} + \texttt{rel}=\frac{\max|(\nabla\times\vec C)\cdot\nabla\psi|} + {\max\big(|\partial_\theta C_\zeta|+|\partial_\zeta C_\theta|\big)/|J|}, + \end{equation*} + with both maxima taken over all $(\psi,\theta)$ points. It is + reported as \texttt{PASS} or \texttt{WARN} against a tolerance of + $10^{-8}$ (\texttt{SKIP} if no points were checked), together with + the absolute maximum and rms, the scale, and \texttt{rel}. \end{itemize} The DCON normalization factor that converts the GPEC energy to the diff --git a/gpec/gpeq.f b/gpec/gpeq.f index 41670b9ed..bf32414d7 100644 --- a/gpec/gpeq.f +++ b/gpec/gpeq.f @@ -903,18 +903,25 @@ END SUBROUTINE gpeq_c c c Assumes gpeq_prep_c(psi) has been called for this psi, so the c module cvt_mn/cvz_mn hold the covariant C state. +c +c cveri_scale (optional) returns the size of the two terms that +c must cancel, (|d_theta C_zeta| + |d_zeta C_theta|)/|J|, so the +c residual can be judged relative to them. c----------------------------------------------------------------------- - SUBROUTINE gpeq_cveri(psi, cveri_fun) + SUBROUTINE gpeq_cveri(psi, cveri_fun, cveri_scale) c----------------------------------------------------------------------- c declaration. c----------------------------------------------------------------------- REAL(r8), INTENT(IN) :: psi COMPLEX(r8), DIMENSION(0:mthsurf), INTENT(OUT) :: cveri_fun + REAL(r8), DIMENSION(0:mthsurf), OPTIONAL, INTENT(OUT) :: + $ cveri_scale INTEGER :: itheta, ipert REAL(r8) :: jac COMPLEX(r8), DIMENSION(mpert) :: dth_cvz_mn, dzt_cvt_mn COMPLEX(r8), DIMENSION(mpert) :: curlpsi_mn + COMPLEX(r8), DIMENSION(0:mthsurf) :: dth_cvz_fun, dzt_cvt_fun IF(debug_flag) PRINT *, "Entering gpeq_cveri" c----------------------------------------------------------------------- @@ -927,6 +934,10 @@ SUBROUTINE gpeq_cveri(psi, cveri_fun) ENDDO CALL iscdftb(mfac, mpert, cveri_fun, mthsurf, curlpsi_mn) + IF (PRESENT(cveri_scale)) THEN + CALL iscdftb(mfac, mpert, dth_cvz_fun, mthsurf, dth_cvz_mn) + CALL iscdftb(mfac, mpert, dzt_cvt_fun, mthsurf, dzt_cvt_mn) + ENDIF c----------------------------------------------------------------------- c divide by Jacobian pointwise: @@ -936,6 +947,9 @@ SUBROUTINE gpeq_cveri(psi, cveri_fun) CALL bicube_eval(rzphi, psi, theta(itheta), 0) jac = rzphi%f(4) cveri_fun(itheta) = cveri_fun(itheta) / jac + IF (PRESENT(cveri_scale)) cveri_scale(itheta) = + $ (ABS(dth_cvz_fun(itheta)) + ABS(dzt_cvt_fun(itheta))) + $ / ABS(jac) ENDDO IF(debug_flag) PRINT *, "->Leaving gpeq_cveri" diff --git a/gpec/gpout.f b/gpec/gpout.f index 204ba9ac2..24d0d3a7f 100644 --- a/gpec/gpout.f +++ b/gpec/gpout.f @@ -6940,7 +6940,8 @@ SUBROUTINE gpout_recon(mode, xspmn) REAL(r8) :: epf_int_total_hr, epf_p_total_hr, $ epf_t_total_hr, epf_z_total_hr REAL(r8) :: cveri_abs, cveri_max, cveri_rms, cveri_sumsq, - $ cveri_tol + $ cveri_tol, cveri_scale_max, cveri_rel + REAL(r8), DIMENSION(0:mthsurf) :: cveri_scale COMPLEX(r8) :: dst_prev, dst_curr, dst1_prev, dst2_prev, $ dst3_prev, dst1_curr, dst2_curr, dst3_curr, $ dst_int_total_k_hr, dst1_total_hr, dst2_total_hr, @@ -7043,7 +7044,13 @@ SUBROUTINE gpout_recon(mode, xspmn) cveri_max = 0.0_r8 cveri_rms = 0.0_r8 cveri_sumsq = 0.0_r8 - cveri_tol = 1.0e-10_r8 + cveri_scale_max = 0.0_r8 + cveri_rel = 0.0_r8 +c curl check is judged on max|residual| relative to the largest +c (|d_theta C_zeta| + |d_zeta C_theta|)/|J|: the identity is a +c cancellation of these two terms, so their size is the natural +c amplitude- and unit-free reference. + cveri_tol = 1.0e-8_r8 cveri_count = 0 c----------------------------------------------------------------------- c main loop over all psi levels. @@ -7081,10 +7088,12 @@ SUBROUTINE gpout_recon(mode, xspmn) $ sigma_vals, jdotb_vals, shear_fun, curv_fun) c Verify (curl C).grad(psi)=0 using the C state prepared above. IF (curl_check_flag) THEN - CALL gpeq_cveri(psi, cveri_fun) + CALL gpeq_cveri(psi, cveri_fun, cveri_scale) DO itheta = 0, mthsurf cveri_abs = ABS(cveri_fun(itheta)) cveri_max = MAX(cveri_max, cveri_abs) + cveri_scale_max = MAX(cveri_scale_max, + $ cveri_scale(itheta)) cveri_sumsq = cveri_sumsq + cveri_abs**2 cveri_count = cveri_count + 1 ENDDO @@ -7396,14 +7405,21 @@ SUBROUTINE gpout_recon(mode, xspmn) cveri_stat = "PASS" IF (cveri_count > 0) THEN cveri_rms = SQRT(cveri_sumsq / REAL(cveri_count, r8)) + IF (cveri_scale_max > 0.0_r8) THEN + cveri_rel = cveri_max / cveri_scale_max + ELSE + cveri_rel = cveri_max + ENDIF + IF (cveri_rel > cveri_tol) cveri_stat = "WARN" ELSE cveri_stat = "SKIP" ENDIF - IF (cveri_max > cveri_tol) cveri_stat = "WARN" WRITE(*,'(a,a)') "GPEC_RECON C verify: ", TRIM(cveri_stat) - WRITE(*,'(a,es17.8e3)') " max = ", cveri_max - WRITE(*,'(a,es17.8e3)') " rms = ", cveri_rms - WRITE(*,'(a,es17.8e3)') " tol = ", cveri_tol + WRITE(*,'(a,es17.8e3)') " max = ", cveri_max + WRITE(*,'(a,es17.8e3)') " rms = ", cveri_rms + WRITE(*,'(a,es17.8e3)') " scale = ", cveri_scale_max + WRITE(*,'(a,es17.8e3)') " rel = ", cveri_rel + WRITE(*,'(a,es17.8e3)') " tol = ", cveri_tol ENDIF IF (recon_out) THEN @@ -7442,9 +7458,11 @@ SUBROUTINE gpout_recon(mode, xspmn) $ (mu0*2.0_r8) / psio**2 / (chi1*1.0e-3_r8)**2 IF (curl_check_flag) THEN WRITE(u_log,'(a,a)') " C verify: ", TRIM(cveri_stat) - WRITE(u_log,'(a,es17.8e3)') " max = ", cveri_max - WRITE(u_log,'(a,es17.8e3)') " rms = ", cveri_rms - WRITE(u_log,'(a,es17.8e3)') " tol = ", cveri_tol + WRITE(u_log,'(a,es17.8e3)') " max = ", cveri_max + WRITE(u_log,'(a,es17.8e3)') " rms = ", cveri_rms + WRITE(u_log,'(a,es17.8e3)') " scale = ", cveri_scale_max + WRITE(u_log,'(a,es17.8e3)') " rel = ", cveri_rel + WRITE(u_log,'(a,es17.8e3)') " tol = ", cveri_tol ENDIF WRITE(u_log,*) CLOSE(u_log) From 13b97d81b8ad34ad9d1c925b4c7aec3bf975300b Mon Sep 17 00:00:00 2001 From: satelite2517 Date: Fri, 16 Oct 2026 13:38:59 -0400 Subject: [PATCH 56/62] DOCS - recon: retitle the theory note after the Bernstein-Chance decomposition --- docs/tex/recon/main.tex | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/tex/recon/main.tex b/docs/tex/recon/main.tex index bee70334e..d795829c0 100644 --- a/docs/tex/recon/main.tex +++ b/docs/tex/recon/main.tex @@ -15,7 +15,7 @@ \usepackage{pdflscape} \numberwithin{equation}{section} -\title{DCON \texttt{effective\_field\_flag} document} +\title{Bernstein--Chance decomposition of the perturbed potential energy in GPEC} \author{Sunjae Lee} \date{\today} From b57c4f179974f75b362694daa71967835ce7143c Mon Sep 17 00:00:00 2001 From: satelite2517 Date: Fri, 16 Oct 2026 13:42:15 -0400 Subject: [PATCH 57/62] GPEC - MINOR - recon: state the input guard and the equation source in gpec.in comments --- input/gpec.in | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/input/gpec.in b/input/gpec.in index 64cf42861..9b5fe3612 100644 --- a/input/gpec.in +++ b/input/gpec.in @@ -91,12 +91,12 @@ verbose=t ! Print run log to terminal effective_field_flag=f ! Calculate each contribution of destabilizing term and effective perturbed field [Bernstein, Handbook of Plasma Physics, 1983]. - standard_form_flag=f ! Calculate the first-form plasma energy terms from Eq. (36) with the gamma|div xi|^2 term omitted. + standard_form_flag=f ! Calculate the first-form plasma energy terms of Eq. (3.1) in docs/tex/recon/main.tex with the gamma|div xi|^2 term omitted. effective_field_terms_flag=f ! Bernstein |C|^2 decomposition: |C|^2 = |Q|^2 + 2Re(V*.Q) + |V|^2, reported as A, B, Cpar, Iperp with the identity check epf = A+B+Cpar+Iperp. curl_check_flag=f ! Under effective_field_flag, verify (curl C).grad(psi)=0 and write gpec_recon_cveri_sol*.out. recon_out=t ! Under effective_field_flag/standard_form_flag/effective_field_terms_flag, write recon diagnostic files and gpec.log entries. If false, keep terminal summary only. recon_int="spline" ! effective_field_flag radial integration on psifac grid. Options: "spline" or "trapezoid". - ! For DCON eigenmode reconstruction set coil_flag=f, mode_flag=t, choose mode as needed, and keep reg_flag=f. + ! effective_field_flag, standard_form_flag and effective_field_terms_flag require mode_flag=t (choose mode) with coil_flag, data_flag, harmonic_flag and reg_flag all f; GPEC stops at input otherwise. / &GPEC_DIAGNOSE timeit=f ! Print timer splits for major subroutines From df990fce2e3ead6c47b200c80651e6e7b8202ff3 Mon Sep 17 00:00:00 2001 From: satelite2517 Date: Fri, 16 Oct 2026 14:04:38 -0400 Subject: [PATCH 58/62] GPEC - recon: print the integrated psi range beside the DCON comparison --- docs/tex/recon/main.tex | 5 ++++- gpec/gpout.f | 38 +++++++++++++++++++++++++++++++++++++- input/gpec.in | 2 +- 3 files changed, 42 insertions(+), 3 deletions(-) diff --git a/docs/tex/recon/main.tex b/docs/tex/recon/main.tex index d795829c0..670e190bb 100644 --- a/docs/tex/recon/main.tex +++ b/docs/tex/recon/main.tex @@ -2224,7 +2224,10 @@ \section{Log-output quantities and their exact integrands} $\psi$ integration on the \texttt{psifac} grid. Every $\delta W_p$ total reported below is built with this scheme, so the choice affects the reported numbers at the level of the quadrature - error. + error. Each route prints the $\psi$ range it integrated over + (\texttt{recon psi range}) next to the DCON range + $[\psi_{\rm low},\psi_{\rm lim}]$ (\texttt{DCON psi range}), so a + truncated integration is visible beside the $\delta W_p$ comparison. \item \texttt{curl\_check\_flag} (default \texttt{.FALSE.}) enables the $(\nabla\times\vec C)\cdot\nabla\psi=0$ verification of \S\ref{par:cveri} alongside \texttt{effective\_field\_flag}. The pointwise diff --git a/gpec/gpout.f b/gpec/gpout.f index 24d0d3a7f..853a4737e 100644 --- a/gpec/gpout.f +++ b/gpec/gpout.f @@ -6935,6 +6935,7 @@ SUBROUTINE gpout_recon(mode, xspmn) REAL(r8) :: dpsi_local INTEGER :: istep, nint_pts, iint, ep_index REAL(r8) :: psi_prev, psi_curr, epf_prev, epf_curr, ep_selected + REAL(r8) :: psi_lo, psi_hi REAL(r8) :: epf_p_prev, epf_t_prev, epf_z_prev REAL(r8) :: epf_p_curr, epf_t_curr, epf_z_curr REAL(r8) :: epf_int_total_hr, epf_p_total_hr, @@ -7348,6 +7349,8 @@ SUBROUTINE gpout_recon(mode, xspmn) $ REAL(dst3_vals(iint)) ENDDO ENDIF + psi_lo = psi_int_pts(1) + psi_hi = psi_int_pts(nint_pts) DEALLOCATE(psi_int_pts, epf_vals, epf_p_vals, epf_t_vals, $ epf_z_vals, dst_vals, dst1_vals, dst2_vals, dst3_vals) dw_raw_k_hr = 0.5_r8 * @@ -7401,6 +7404,10 @@ SUBROUTINE gpout_recon(mode, xspmn) $ ep_selected WRITE(*,'(a,a,a,es17.8e3)') " DCON ep(", TRIM(smode), ") = ", $ ep_selected * (mu0*2.0_r8) / psio**2 / (chi1*1.0e-3_r8)**2 + WRITE(*,'(a,2es17.8e3)') " recon psi range = ", + $ psi_lo, psi_hi + WRITE(*,'(a,2es17.8e3)') " DCON psi range = ", + $ psilow, psilim IF (curl_check_flag) THEN cveri_stat = "PASS" IF (cveri_count > 0) THEN @@ -7456,6 +7463,10 @@ SUBROUTINE gpout_recon(mode, xspmn) WRITE(u_log,'(a,a,a,es17.8e3)') " DCON ep(", TRIM(smode), $ ") = ", ep_selected * $ (mu0*2.0_r8) / psio**2 / (chi1*1.0e-3_r8)**2 + WRITE(u_log,'(a,2es17.8e3)') " recon psi range = ", + $ psi_lo, psi_hi + WRITE(u_log,'(a,2es17.8e3)') " DCON psi range = ", + $ psilow, psilim IF (curl_check_flag) THEN WRITE(u_log,'(a,a)') " C verify: ", TRIM(cveri_stat) WRITE(u_log,'(a,es17.8e3)') " max = ", cveri_max @@ -7520,7 +7531,7 @@ SUBROUTINE gpout_recon2(mode, xspmn) CHARACTER(8) :: smode CHARACTER(128) :: surf_file, int_file INTEGER :: ep_index - REAL(r8) :: ep_selected, ep_dcon + REAL(r8) :: ep_selected, ep_dcon, psi_lo, psi_hi REAL(r8), DIMENSION(:), ALLOCATABLE :: psi_int_pts, q2_vals_r COMPLEX(r8), DIMENSION(:), ALLOCATABLE :: q2_vals, jqx_vals, $ pdiv_vals, total_vals @@ -7591,10 +7602,14 @@ SUBROUTINE gpout_recon2(mode, xspmn) c integrate on psifac points inside the spline domain; points c below rzphi%xs(0) are skipped (gpout_recon clamps instead). nint_pts = 0 + psi_lo = 0.0_r8 + psi_hi = 0.0_r8 DO istep = 0, mstep IF (psifac(istep) < rzphi%xs(0)) CYCLE IF (psifac(istep) > rzphi%xs(mpsi)) EXIT nint_pts = nint_pts + 1 + IF (nint_pts == 1) psi_lo = psifac(istep) + psi_hi = psifac(istep) ENDDO ALLOCATE(psi_int_pts(nint_pts), q2_vals_r(nint_pts), $ q2_vals(nint_pts), jqx_vals(nint_pts), pdiv_vals(nint_pts), @@ -7706,6 +7721,10 @@ SUBROUTINE gpout_recon2(mode, xspmn) $ ep_selected WRITE(*,'(a,a,a,es17.8e3)') " DCON ep(", TRIM(smode), ") = ", $ ep_dcon + WRITE(*,'(a,2es17.8e3)') " recon psi range = ", + $ psi_lo, psi_hi + WRITE(*,'(a,2es17.8e3)') " DCON psi range = ", + $ psilow, psilim IF (recon_out) THEN OPEN(NEWUNIT=u_log, FILE="gpec.log", STATUS="UNKNOWN", @@ -7728,6 +7747,10 @@ SUBROUTINE gpout_recon2(mode, xspmn) $ ") = ", ep_selected WRITE(u_log,'(a,a,a,es17.8e3)') " DCON ep(", TRIM(smode), $ ") = ", ep_dcon + WRITE(u_log,'(a,2es17.8e3)') " recon psi range = ", + $ psi_lo, psi_hi + WRITE(u_log,'(a,2es17.8e3)') " DCON psi range = ", + $ psilow, psilim WRITE(u_log,*) CLOSE(u_log) ENDIF @@ -7778,6 +7801,7 @@ SUBROUTINE gpout_recon3(mode, xspmn) REAL(r8) :: dst1_total, dst3_total REAL(r8) :: identity_residual REAL(r8) :: dw_raw3, dw_dcon3, ep_selected, ep_dcon + REAL(r8) :: psi_lo, psi_hi INTEGER :: ep_index COMPLEX(r8) :: dst_int_c, dst1_c, dst2_c, dst3_c REAL(r8), DIMENSION(0:mthsurf) :: rvals, zvals @@ -7849,10 +7873,14 @@ SUBROUTINE gpout_recon3(mode, xspmn) c integrate on psifac points inside the spline domain; points c below rzphi%xs(0) are skipped (gpout_recon clamps instead). nint_pts = 0 + psi_lo = 0.0_r8 + psi_hi = 0.0_r8 DO istep = 0, mstep IF (psifac(istep) < rzphi%xs(0)) CYCLE IF (psifac(istep) > rzphi%xs(mpsi)) EXIT nint_pts = nint_pts + 1 + IF (nint_pts == 1) psi_lo = psifac(istep) + psi_hi = psifac(istep) ENDDO ALLOCATE(psi_int_pts(nint_pts), A_vals(nint_pts), $ B_vals(nint_pts), Iperp_vals(nint_pts), Cpar_vals(nint_pts), @@ -8001,6 +8029,10 @@ SUBROUTINE gpout_recon3(mode, xspmn) $ ep_selected WRITE(*,'(a,a,a,es17.8e3)') " DCON ep(", TRIM(smode), ") = ", $ ep_dcon + WRITE(*,'(a,2es17.8e3)') " recon psi range = ", + $ psi_lo, psi_hi + WRITE(*,'(a,2es17.8e3)') " DCON psi range = ", + $ psilow, psilim IF (recon_out) THEN OPEN(NEWUNIT=u_log, FILE="gpec.log", STATUS="UNKNOWN", @@ -8026,6 +8058,10 @@ SUBROUTINE gpout_recon3(mode, xspmn) $ ") = ", ep_selected WRITE(u_log,'(a,a,a,es17.8e3)') " DCON ep(", TRIM(smode), $ ") = ", ep_dcon + WRITE(u_log,'(a,2es17.8e3)') " recon psi range = ", + $ psi_lo, psi_hi + WRITE(u_log,'(a,2es17.8e3)') " DCON psi range = ", + $ psilow, psilim WRITE(u_log,*) CLOSE(u_log) ENDIF diff --git a/input/gpec.in b/input/gpec.in index 9b5fe3612..a4b43aff5 100644 --- a/input/gpec.in +++ b/input/gpec.in @@ -95,7 +95,7 @@ effective_field_terms_flag=f ! Bernstein |C|^2 decomposition: |C|^2 = |Q|^2 + 2Re(V*.Q) + |V|^2, reported as A, B, Cpar, Iperp with the identity check epf = A+B+Cpar+Iperp. curl_check_flag=f ! Under effective_field_flag, verify (curl C).grad(psi)=0 and write gpec_recon_cveri_sol*.out. recon_out=t ! Under effective_field_flag/standard_form_flag/effective_field_terms_flag, write recon diagnostic files and gpec.log entries. If false, keep terminal summary only. - recon_int="spline" ! effective_field_flag radial integration on psifac grid. Options: "spline" or "trapezoid". + recon_int="spline" ! Radial quadrature of all three routes on the psifac grid: "spline" (default) or "trapezoid". The integrated psi range is printed beside the DCON psilow-psilim range. ! effective_field_flag, standard_form_flag and effective_field_terms_flag require mode_flag=t (choose mode) with coil_flag, data_flag, harmonic_flag and reg_flag all f; GPEC stops at input otherwise. / &GPEC_DIAGNOSE From aa88e640db1469c5f96f4949baf19ee9979f5f43 Mon Sep 17 00:00:00 2001 From: satelite2517 Date: Fri, 16 Oct 2026 14:04:40 -0400 Subject: [PATCH 59/62] DOCS - recon: document energy decomposition outputs and MATCH sol_num --- docs/namelists.rst | 8 ++++++++ docs/outputs.rst | 38 ++++++++++++++++++++++++++++++++++++++ 2 files changed, 46 insertions(+) diff --git a/docs/namelists.rst b/docs/namelists.rst index b04b1d7f6..4629dade7 100644 --- a/docs/namelists.rst +++ b/docs/namelists.rst @@ -29,6 +29,14 @@ This namelist sets the inputs, controls the behavior, and determines the outputs .. include:: ../input/gpec.in :literal: +The MATCH Namelist +================== + +This namelist controls the MATCH code, including which DCON eigenfunction (sol_num) it reconstructs. + +.. include:: ../input/match.in + :literal: + The PENTRC Namelist ==================== diff --git a/docs/outputs.rst b/docs/outputs.rst index 22bce6bf7..ddec2b51a 100644 --- a/docs/outputs.rst +++ b/docs/outputs.rst @@ -208,6 +208,44 @@ A number of output files have a similar structure. Here the * in the file name i **Info** The false perturbed magnetic field in the vacuum region on the \left(r,z,\phi\right) grid calculated using the GPEC boundary surface current from the external fields alone. +Energy Decomposition Outputs + +These outputs reconstruct the ideal plasma energy :math:`\delta W_p` of a single DCON eigenmode on every flux surface and break it into physically distinct terms. They require a pure DCON eigenmode: set mode_flag=t, choose mode (1 is the least stable eigenmode), and keep reg_flag=f and coil_flag=data_flag=harmonic_flag=f. GPEC stops at input if any of the three decomposition flags is set otherwise. The derivations, integrands and the meaning of every printed quantity are documented in :download:`docs/tex/recon/main.tex ` (build with pdflatex and bibtex). + +Each route prints a summary to the terminal that ends with its :math:`\delta W_p` total, the same total in DCON normalization (dW_p(recon-normalize) and its analogues), the DCON eigenvalue ep(mode) it should reproduce, and the :math:`\psi` range it integrated over beside the DCON range psilow to psilim. In the files below is the selected mode. recon_out=f keeps only the terminal summary, and recon_int ("spline", the default, or "trapezoid") selects the radial quadrature. + +gpec_recon_*_sol.out + + **Flag** effective_field_flag + + **Info** Bernstein effective-field form :math:`2\delta W_p = \int |\mathbf{C}|^2/\mu_0 - \int K \xi_n^2`. integration: radial integrands and running totals. terms: per-(psi,theta) densities of the C and K terms. k, k_sigma_check, shear_fun, curvature: the K kernel and its shear, parallel-current and curvature parts on the (psi,theta,R,Z) grid. cwfun/cwmn, cvfun/cvmn, cv2fun/cv2mn: contravariant and covariant components of C in real and mode space. qvmn: covariant components of the bare perturbed field Q. A summary block is appended to gpec.log. + +gpec_recon_cveri_sol.out + + **Flag** curl_check_flag (with effective_field_flag) + + **Info** Pointwise residual of :math:`(\nabla\times\mathbf{C})\cdot\nabla\psi = 0` on the (psi,theta,R,Z) grid. The terminal and gpec.log report PASS or WARN for the maximum residual relative to the size of the two cancelling terms :math:`(|\partial_\theta C_\zeta|+|\partial_\zeta C_\theta|)/|J|`, together with the absolute maximum and rms. + +gpec_recon2_terms_sol.out, gpec_recon2_integration_sol.out + + **Flag** standard_form_flag + + **Info** Standard (first) form of the energy with the :math:`\gamma|\nabla\cdot\xi|^2` term omitted: :math:`|Q|^2/\mu_0`, :math:`\mathbf{j}\cdot(\mathbf{Q}\times\xi^*)`, and :math:`(\nabla\cdot\xi)^*(\xi\cdot\nabla p)` densities per surface (terms) and their radial integrals (integration). + +gpec_recon3_terms_sol.out, gpec_recon3_integration_sol.out + + **Flag** effective_field_terms_flag + + **Info** Split of :math:`|\mathbf{C}|^2 = |\mathbf{Q}|^2 + 2\mathrm{Re}(\mathbf{V}^*\cdot\mathbf{Q}) + |\mathbf{V}|^2` into A, B, Cpar and Iperp, with the identity check epf = A + B + Cpar + Iperp, per surface (terms) and integrated (integration). + +MATCH Outputs + +solutions.bin, solutions.bin + + **Flag** sol_num (match.in) + + **Info** Ideal Euler-Lagrange solution built from DCON eigenfunction sol_num (1 is the most unstable). sol_num=1 writes solutions.bin; sol_num=n>1 writes solutions.bin so several eigenfunctions can be kept side by side. + Binary File Outputs ------------------- From 2616e3f9e77c33123de1689375e939fbeb78615e Mon Sep 17 00:00:00 2001 From: satelite2517 Date: Fri, 16 Oct 2026 14:04:42 -0400 Subject: [PATCH 60/62] GPEC - recon: add Soloviev energy decomposition regression example --- .github/workflows/make_test.yml | 18 ++++ .../regression_solovev_recon_example/README | 27 +++++ .../check_recon.py | 66 +++++++++++++ .../regression_solovev_recon_example/dcon.in | 61 ++++++++++++ .../regression_solovev_recon_example/equil.in | 30 ++++++ .../regression_solovev_recon_example/gpec.in | 92 +++++++++++++++++ .../regression_solovev_recon_example/sol.in | 14 +++ .../regression_solovev_recon_example/vac.in | 99 +++++++++++++++++++ 8 files changed, 407 insertions(+) create mode 100644 docs/examples/regression_solovev_recon_example/README create mode 100755 docs/examples/regression_solovev_recon_example/check_recon.py create mode 100644 docs/examples/regression_solovev_recon_example/dcon.in create mode 100644 docs/examples/regression_solovev_recon_example/equil.in create mode 100644 docs/examples/regression_solovev_recon_example/gpec.in create mode 100644 docs/examples/regression_solovev_recon_example/sol.in create mode 100644 docs/examples/regression_solovev_recon_example/vac.in diff --git a/.github/workflows/make_test.yml b/.github/workflows/make_test.yml index d8077abcf..0e5044617 100644 --- a/.github/workflows/make_test.yml +++ b/.github/workflows/make_test.yml @@ -231,6 +231,14 @@ jobs: ulimit -s unlimited ../../../bin/rdcon && ../../../bin/rmatch && ../../../bin/gpec && ../../../bin/stride + - name: Run Soloviev energy decomposition example + run: | + export GPECHOME=$(pwd) + export LD_LIBRARY_PATH=$PREFIX/lib:$LD_LIBRARY_PATH + cd docs/examples/regression_solovev_recon_example + ulimit -s unlimited + ../../../bin/dcon && ../../../bin/gpec && python3 check_recon.py + make_gpec_ifort: runs-on: ubuntu-latest needs: build-netcdf-ifort @@ -310,3 +318,13 @@ jobs: cd docs/examples/regression_solovev_resistive_example ulimit -s unlimited ../../../bin/rdcon && ../../../bin/rmatch && ../../../bin/gpec && ../../../bin/stride + + - name: Run Soloviev energy decomposition example + run: | + source /opt/intel/oneapi/setvars.sh + export GPECHOME=$(pwd) + export LD_LIBRARY_PATH=$PREFIX/lib:$LD_LIBRARY_PATH + export FOR_DISABLE_STACK_TRACE=TRUE + cd docs/examples/regression_solovev_recon_example + ulimit -s unlimited + ../../../bin/dcon && ../../../bin/gpec && python3 check_recon.py diff --git a/docs/examples/regression_solovev_recon_example/README b/docs/examples/regression_solovev_recon_example/README new file mode 100644 index 000000000..4bcd606d9 --- /dev/null +++ b/docs/examples/regression_solovev_recon_example/README @@ -0,0 +1,27 @@ +Soloviev Energy Decomposition Regression Example +================================================ + +This example checks the GPEC ideal energy decomposition (effective_field_flag) against the DCON eigenvalue it reconstructs. It reuses the Soloviev equilibrium of regression_solovev_ideal_example (sol.in, equil.in, vac.in are copies). dcon.in differs only in delta_mlow=delta_mhigh=8: the decomposition is built in real space and Fourier truncated, so the default 8 poloidal harmonics leave a ~21% error, while 32 harmonics bring it to 0.4%. + +gpec.in selects the least stable eigenmode (mode_flag=t, mode=1) with reg_flag=f and no external field, turns off the usual outputs, and sets effective_field_flag=t and curl_check_flag=t. + +Run from this directory:: + + ../../../bin/dcon + ../../../bin/gpec + python3 check_recon.py + +check_recon.py reads the last GPEC_RECON block of gpec.log (gpec.log is appended to, so delete it before re-running by hand) and passes when + +- the recon psi range equals the DCON psi range (psilow to psilim), +- dW_p(recon-normalize) matches DCON ep(1) within 2% relative, and +- the curl check reports PASS. + +Reference values (gfortran 15, macOS arm64):: + + recon psi range = 1.0E-04 9.9999E-01 (same as DCON psi range) + dW_p(recon-normalize) = -1.04353063E+001 + DCON ep(1) = -1.03926066E+001 (relative difference 4.1E-03) + C verify: PASS (rel 2.8E-13 against tol 1E-08) + +The 2% tolerance leaves room for compiler and optimization differences while still catching a broken decomposition: the truncated 8-harmonic run above misses by 21%. diff --git a/docs/examples/regression_solovev_recon_example/check_recon.py b/docs/examples/regression_solovev_recon_example/check_recon.py new file mode 100755 index 000000000..55570eb87 --- /dev/null +++ b/docs/examples/regression_solovev_recon_example/check_recon.py @@ -0,0 +1,66 @@ +#!/usr/bin/env python3 +""" +Regression check for the GPEC energy decomposition (effective_field_flag). + +Run after ``dcon`` and ``gpec`` in this directory. Reads the last +GPEC_RECON block of gpec.log and checks that + + * the recon psi range covers the DCON psi range (psilow to psilim), + * dW_p(recon-normalize) matches DCON ep(mode) within REL_TOL, and + * the curl check reports PASS. + +Exits 0 on success and 1 on failure, so it can be chained in CI. +""" + +import sys + +REL_TOL = 0.02 # reference run agrees to 0.4%; see README +RANGE_TOL = 1e-6 + + +def last_recon_block(path): + with open(path) as f: + lines = f.read().splitlines() + starts = [i for i, l in enumerate(lines) + if l.startswith("GPEC_RECON final results:")] + if not starts: + sys.exit("FAIL: no GPEC_RECON block in " + path) + block = [] + for l in lines[starts[-1] + 1:]: + if l.startswith("GPEC_RECON"): + break + block.append(l) + return block + + +def values(block, key): + for l in block: + if key in l: + return [float(v) for v in l.split("=")[-1].split()] + sys.exit("FAIL: '{}' not found in GPEC_RECON block".format(key)) + + +def main(): + block = last_recon_block("gpec.log") + dw = values(block, "dW_p(recon-normalize)")[0] + ep = values(block, "DCON ep(")[0] + rlo, rhi = values(block, "recon psi range") + dlo, dhi = values(block, "DCON psi range") + rel = abs(dw - ep) / abs(ep) + verdict = [l.split(":")[-1].strip() for l in block if "C verify" in l] + range_ok = abs(rlo - dlo) <= RANGE_TOL and abs(rhi - dhi) <= RANGE_TOL + print("recon psi range = {:.6e} {:.6e}".format(rlo, rhi)) + print("DCON psi range = {:.6e} {:.6e}".format(dlo, dhi)) + print("dW_p(recon-normalize) = {: .8e}".format(dw)) + print("DCON ep = {: .8e}".format(ep)) + print("relative difference = {:.3e} (tol {:.1e})".format(rel, REL_TOL)) + print("curl check = {}".format(verdict[-1] if verdict + else "not run")) + ok = (range_ok and rel <= REL_TOL and bool(verdict) + and verdict[-1] == "PASS") + print("PASS" if ok else "FAIL") + return 0 if ok else 1 + + +if __name__ == "__main__": + sys.exit(main()) diff --git a/docs/examples/regression_solovev_recon_example/dcon.in b/docs/examples/regression_solovev_recon_example/dcon.in new file mode 100644 index 000000000..2b6b12189 --- /dev/null +++ b/docs/examples/regression_solovev_recon_example/dcon.in @@ -0,0 +1,61 @@ +&DCON_CONTROL + bal_flag=f ! Ideal MHD ballooning criterion for short wavelengths + mat_flag=t ! Construct coefficient matrices for diagnostic purposes + ode_flag=t ! Integrate ODE's for determining stability of internal long-wavelength mode (must be true for GPEC) + vac_flag=t ! Compute plasma, vacuum, and total energies for free-boundary modes + mer_flag=t ! Evaluate the Mercier criterian + + sas_flag=f ! Safety factor (q) limit determined as q_ir+dmlim where q_ir is the equil outermost rational + dmlim=0.2 ! See sas_flag + qlow=1.02 ! Integration initiated at q determined by minimum of qlow and q0 from equil + qhigh=1e3 ! Integration terminated at q limit determined by minimum of qhigh and qa from equil + sing_start=0 ! Start integration at the sing_start'th rational from the axis (psilow) + + nn=1 ! Toroidal mode number + delta_mlow=8 ! Expands lower bound of Fourier harmonics + delta_mhigh=8 ! Expands upper bound of Fourier harmonics + delta_mband=0 ! Integration keeps only this wide a band of solutions along the diagonal in m,m' + mthvac=64 ! Number of points used in splines over poloidal angle at plasma-vacuum interface. Overrides vac.in mth. + thmax0=1 ! Linear multiplier on the automatic choice of theta integration bounds for high-n ideal ballooning stability computation (strictly, -inf to -inf) + + kin_flag = f ! Kinetic EL equation (default: false) + con_flag = f ! Continue integration through layers (default: false) + kinfac1 = 1.0 ! Scale factor for energy contribution (default : 1.0) + kinfac2 = 1.0 ! Scale factor for torque contribution (default : 1.0) + kingridtype = 0 ! Regular grid method (default : 0) + passing_flag = f ! Includes passing particle effects (default: false) + ktanh_flag = t ! Ignore kinetic effects in the core smoothly (default: false) + ktc = 0.1 ! Parameter activated by ktanh_flag: roughly corresponds to core width ignored (default: 0.1) + ktw = 50.0 ! Parameter activated by ktanh_flag: width of hyper-tangential functions (default: 50.0) + ion_flag = t ! Include ion dW_k when kin_flag is true (summed with electron contribution if electron_flag true) + electron_flag = f ! Include electron dW_k when kin_flag is true (summed with ion contribution if ion_flag true) + + tol_nr=1e-6 ! Relative tolerance of dynamic integration steps away from rationals + tol_r=1e-7 ! Relative tolerance of dynamic integration steps near rationals + crossover=1e-2 ! Fractional distance from rational q at which tolerance is switched to tol_r + singfac_min=1e-4 ! Fractional distance from rational q at which ideal jump condition is enforced + ucrit=1e3 ! Maximum fraction of solutions allowed before re-normalized + + wv_farwall_flag = f ! Force nowall gpec calculations while calculating mutual inductance with the wall, when set true. + termbycross_flag = f ! Terminate ODE solver in the event of a zero crossing + + use_classic_splines = f ! Use a classical cubic spline instead of tri-diagonal solution for splines with extrapolation boundary conditions +/ +&DCON_OUTPUT + crit_break=t ! Color of the crit curve changes when crossing a singular surface + + ahb_flag=f ! Output normal magnetic field eigenvalues and eigenfunctons at plasma-vacuum interface (must be false for GPEC) + msol_ahb=1 ! Number of eigenfunctions output by ahb_flag=t ? + mthsurf0=1 ! Linear multiplier on number of boundary points used to display surface eigenfunctions for ahgb_flag=t + + bin_euler=t ! Output M psi-by-M euler-lagrange solutions to binary file euler.bin + bin_vac=f ! Output deprecated binary vacuum.bin containing vacuum energy matrices + euler_stride=1 ! Output only every euler_stride'th psi step to binary file + + out_bal1=f ! Ascii output for bal_flag poloidal functions + bin_bal1=f ! Binary output for bal_flag poloidal functions + out_bal2=f ! Ascii output for bal_flag functions + bin_bal2=f ! Binary output for bal_flag functions + + netcdf_out=t ! Replicate ascii dcon.out information in a netcdf file +/ diff --git a/docs/examples/regression_solovev_recon_example/equil.in b/docs/examples/regression_solovev_recon_example/equil.in new file mode 100644 index 000000000..994a522b4 --- /dev/null +++ b/docs/examples/regression_solovev_recon_example/equil.in @@ -0,0 +1,30 @@ +&EQUIL_CONTROL + eq_type="soloviev" ! Type of the input 2D equilibrium file. Accepts efit, chease, fluxgrid, transp, jsolver, lar, sol, etc. + eq_filename = "sol.in" ! Path to input file + + jac_type="pest" ! Working coordinate system for all DCON and GPEC calculations. Overrides individual powers. Accepts hamada, pest, boozer, equal_arc + power_bp=0 ! del.B ~ B_p**power_bp * B**power_b / R**power_r + power_b=0 ! del.B ~ B_p**power_bp * B**power_b / R**power_r + power_r=0 ! del.B ~ B_p**power_bp * B**power_b / R**power_r + + grid_type="ldp" ! Radial grid packing of equilibrium quantities. Accepts rho, ldp, pow1, pow2, or original. ldp packs points near the core and edge. pow* packs near the edge. + psilow=1e-4 ! Minimum value of psi, normalized from 0 to 1 + psihigh=0.99999 ! Maximum value of psi, normalized from 0 to 1 + mpsi=16 ! Number of radial grid intervals for equilibrium quantities + mtheta=256 ! Number of equally spaced poloidal grid intervals for all splines + newq0=0 ! Grad-Shafranov solution invariant adjustment of the q profile to give the specified value of q at the axis. Default 0 uses input file value. + use_classic_splines = f ! Use a classical cubic spline instead of tri-diagonal solution for splines with extrapolation boundary conditions + + input_only=f ! Generate information about the input and then quit with no further calculation +/ +&EQUIL_OUTPUT + gse_flag=f ! Produces diagnostic output for accuracy of solution to Grad-Shafranov equation + out_eq_1d=f ! Ascii output of 1D equilibrium file data + bin_eq_1d=f ! Binary output of 1D equilibrium file data + out_eq_2d=f ! Ascii output of 2D equilibrium file data + bin_eq_2d=t ! Binary output of 2D equilibrium file data (set true for GPEC) + out_2d=f ! Ascii output of processed 2D data + bin_2d=f ! Binary output of processed 2D data + dump_flag=f ! Binary dump of basic equilibrium data and 2D rzphi spline + out_ahg2msc=f ! Output deprecated ahg2msc.out files. This is used to communicate with vacuum, but is now done through memory. +/ diff --git a/docs/examples/regression_solovev_recon_example/gpec.in b/docs/examples/regression_solovev_recon_example/gpec.in new file mode 100644 index 000000000..b4ff8b6e4 --- /dev/null +++ b/docs/examples/regression_solovev_recon_example/gpec.in @@ -0,0 +1,92 @@ +&GPEC_INPUT + dcon_dir = './' ! Path to DCON outputs. Individual file paths are appended to this + idconfile = 'euler.bin' ! Eigenfunctions output by DCON run + ieqfile = 'psi_in.bin' ! Flux surfaces output by DCON run + rdconfile = 'globalsol.bin' ! Galerkin eigenfunctions output by resistive DCON run + + gal_flag = f ! Use the Galerkin eigenfunctions from resistive DCON instead of the ideal DCON shooting method solutions + + jac_in="pest" ! Coordinate system of external perturbation (affects data_flag and harmonic_flag). Options include: pest,boozer,hamada + jsurf_in=0 ! True(1) if external perturbation is area weighted (i.e. flux) + tmag_in =0 ! True(1) if external perturbation has toroidal angle defined by jac_in. False(0) if machine angle. + mthsurf =0 ! Number of poloidal angle gridpoints. Minimum of twice the Nyquist condition from DCON m limits is enforced. + + coil_flag=f ! Calculate external perturbation from coils in coil.in + + data_flag=f ! Apply perturbation from thrid party code output + data_type="surfmn" ! Name of said code. Choose: surfmn,?? + infile="path/to/file" ! Path to said output + nmin=0 ! Extra parameters needed to read surfmn files. + nmax=64 ! Extra parameters needed to read surfmn files. + mmin=-64 ! Extra parameters needed to read surfmn files. + mmax=64 ! Extra parameters needed to read surfmn files. + + harmonic_flag=f ! Apply self-defined perturbations + cosmn(3)=1e-4 ! Real part of m=3 component (n defined by DCON run). + sinmn(6)=1e-4 ! Imaginary part of m=6 component. etc. + + displacement_flag=f ! Perturbations are displacement (m). Default is field (T). + fixed_boundary_flag=f ! Total perturbation = external perturbation + + mode_flag = t ! Return only a single DCON eigenfunction defined by mode (ignores external pert.) + mode = 1 ! DCON eigen function index (1 is least stable) + filter_types = 'w' ! Isolate the filter_modes of energy (w), reluctance (r), permiability (p) or singular coupling (s) eigenvectors/singular-vectors + filter_modes = 0 ! Number of modes isolated, negative values isolate backwards from the last mode +/ +&GPEC_CONTROL + resp_index=0 ! Integer 0-4, determining method of inductance matrix formation. 0 uses energy identity, and is recommended. + sing_spot=5e-4 ! Minimum distance to singular surface in (m-nq) space + sing_resspot=1.0 ! If use_res_spot=t, use inverse cube root of lundquist number scaled by sing_resspot in psi space as spot size + use_res_spot=f ! Use resistive singular layer width instead of fixed sing_spot + sing_interpspot=1.0 ! Scaling of the interpolation width, in units of spot size, for smoothed outputs of singular surface quantities + sing_npsi=100 ! Number of points between rational surfaces used for b-normal splines across sin_spot + reg_flag=f ! Regularize the solution near resonant surfaces + reg_spot=5e-2 ! Regularize by (m-nq)^2/((m-nq)^2+reg_spot^2) + chebyshev_flag=f ! Fit Chebyshev polynomials to the displacement. + nche=20 ! Number of Chebyshev polynomials used + use_classic_splines = f ! Use a classical cubic spline instead of tri-diagonal solution for splines with extrapolation boundary conditions +/ +&GPEC_OUTPUT + effective_field_flag=t ! Bernstein effective-field reconstruction of dW_p (needs mode_flag=t, reg_flag=f, coil_flag=f) + curl_check_flag=t ! Check (curl C).grad(psi)=0 and report PASS/WARN + recon_out=t ! Write recon files and the gpec.log summary read by check_recon.py + jac_out="pest" ! Coordinate system of outputs + jsurf_out=0 ! True(1) for area weighted outputs (only appends standard gpec_control output) + tmag_out=1 ! True(1) for magnetic toroidal angle outputs (affects singcoup and singfld, appends gpec_control) + mlim_out=64 ! If positive, Fourier decomposed outputs will span -mlim_out<=m<=mlim_out. Default (<=0) outputs on internal m range. + + resp_flag=f ! Output energy, reluctance, inductance, and permeability eigenvalues, eigenvectors, and matrices + filter_flag=f ! Outputs energy, reluctance, permeability, and (optionally) the singular-coupling eigenmodes on the control surface + singcoup_flag=f ! Calculate coupling of each m to resonant surfaces + singfld_flag=f ! Output of resonant surface quantities (flux,current,etc.) + vsingfld_flag=f ! Output of vacuum resonant surface quantities + + pmodb_flag=f ! Outputs delta-B_Lagrangian + xbnormal_flag=f ! Outputs normal displacement and field in plasma + vbnormal_flag=f ! Outputs vacuum normal displacement and field in plasma + xclebsch_flag=f ! Outputs clebsch coordinate displacement for PENT + dw_flag=f ! Outputs self-consistent energy and torque profiles (when kin_flag=t from DCON) + + eqbrzphi_flag=f ! Outputs equilibrium field on regular (r,z) grid + brzphi_flag=f ! Outputs perturbed field on regular (r,z) grid + xrzphi_flag=f ! Outputs displacement on regular (r,z) grid + vbrzphi_flag=f ! Outputs field on regular (r,z) grid due to total boundary surface current (not a real field) + vvbrzphi_flag=f ! Outputs field on regular (r,z) grid due to external perturbation surface current (not a real field) + vsbrzphi_flag=f ! Outputs the field on regular (r,z) grid due to singular surface currents + ss_flag(3)=f ! Outputs the field on regular (r,z) grid due to the 3rd singular surface current, etc. + xbrzphifun_flag=f ! Outputs r,z, and perturbation vectors on psi,theta grid + arzphifun_flag=f ! Outputs r,z, and vector potential on psi,theta grid + + nr = 3 ! Number of radial grid points in rzphi outputs + nz = 3 ! Number of vertical grid points in rzphi outputs + fun_flag=f ! Write outputs to (r,z) in addition to default (psi,m) + flux_flag=f ! Write outputs to (psi,theta) in addition to default (psi,m) + bin_flag=f ! Write binary outputs for use with xdraw + bin_2d_flag=f ! Write 2D binary outputs for use with xdraw + max_linesout=0 ! Maximum length of ascii data tables enforced by increasing radial step size (iff .gt. 0). + verbose=t ! Print run log to terminal +/ +&GPEC_DIAGNOSE + timeit=t ! Print timer splits for major subroutines + radvar_flag=f ! Map various radial variables (rho,psi_tor) on psi_n grid +/ diff --git a/docs/examples/regression_solovev_recon_example/sol.in b/docs/examples/regression_solovev_recon_example/sol.in new file mode 100644 index 000000000..e7aba88fe --- /dev/null +++ b/docs/examples/regression_solovev_recon_example/sol.in @@ -0,0 +1,14 @@ +! Construct Soloviev equilibrium +&SOL_INPUT + mr = 128 ! number of radial grid zones + mz = 128 ! number of axial grid zones + ma = 128 ! number of flux grid zones + e = 1.6 ! elongation + a = 0.33 ! minor radius + r0 = 1.0 ! major radius + q0 = 1.9 ! safety factor at the o-point + p0fac=1 ! scale on-axis pressure (P-> P+P0*p0fac. beta changes. Phi,q constant) + b0fac=1 ! scale toroidal field at constant beta (s*Phi,s*f,s^2*P. bt changes. Shape,beta constant) + f0fac=1 ! scale toroidal field at constant pressure (s*f. beta,q changes. Phi,p,bp constant) +/ + diff --git a/docs/examples/regression_solovev_recon_example/vac.in b/docs/examples/regression_solovev_recon_example/vac.in new file mode 100644 index 000000000..7be7c808d --- /dev/null +++ b/docs/examples/regression_solovev_recon_example/vac.in @@ -0,0 +1,99 @@ +! **** Running DCON's input *** + +&MODES + mth = 32 + xiin(1:9) = 0 0 0 0 0 0 0 1 0 + lsymz = .TRUE. + leqarcw = 1 + lzio = 0 + lgato = 0 + lrgato = 0 +/ +&DEBUGS + checkd = .FALSE. + check1 = .FALSE. + check2 = .FALSE. + checke = .FALSE. + checks = .FALSE. + wall = .FALSE. + lkplt = 0 +/ +&VACDAT + ishape = 6 + aw = 0.05 + bw = 1.5 + cw = 0 + dw = 0.5 + tw = 0.05 + nsing = 500 + epsq = 1e-05 + noutv = 37 + idgt = 6 + idot = 0 + idsk = 0 + delg = 15.01 + delfac = 0.001 + cn0 = 1 +/ +&SHAPE + ipshp = 0 + xpl = 100 + apl = 1 + a = 0.2415 + b = 170 + bpl = 1 + dpl = 0 + r = 1 + abulg = 0.932 + bbulg = 17.0 + tbulg = 0.02 + qain = 2.5 +/ +&DIAGNS + lkdis = .FALSE. + ieig = 0 + iloop = 0 + lpsub = 1 + nloop = 128 + nloopr = 0 + nphil = 3 + nphse = 1 + xofsl = 0 + ntloop = 32 + aloop = 0.01 + bloop = 1.6 + dloop = 0.5 + rloop = 1.0 + deloop = 0.001 + mx = 21 + mz = 21 + nph = 0 + nxlpin = 6 + nzlpin = 11 + epslp = 0.02 + xlpmin = 0.7 + xlpmax = 2.7 + zlpmin = -1.5 + zlpmax = 1.5 + linterior = 2 +/ +&SPRK + nminus = 0 + nplus = 0 + mphi = 16 + lwrt11 = 0 + civ = 0.0 + sp2sgn1 = 1 + sp2sgn2 = 1 + sp2sgn3 = 1 + sp2sgn4 = 1 + sp2sgn5 = 1 + sp3sgn1 = -1 + sp3sgn2 = -1 + sp3sgn3 = -1 + sp3sgn4 = 1 + sp3sgn5 = 1 + lff = 0 + ff = 1.6 + fv = 1.6 1.6 1.6 1.6 1.6 1.0 1.6 1.6 1.6 1.6 1.6 1.6 1.6 1.6 1.6 1.6 1.6 1.6 1.6 1.6 1.6 1.6 1.6 1.6 1.6 1.6 1.6 1.6 1.6 1.6 1.6 1.6 1.6 1.6 1.6 +/ From 93770922dc135f0771785ae3c6c33d4fd8f1c82e Mon Sep 17 00:00:00 2001 From: satelite2517 Date: Fri, 16 Oct 2026 14:43:51 -0400 Subject: [PATCH 61/62] GPEC - MINOR - recon: guard the R,Z sqrt and fix a stale routine name in the theory note --- docs/tex/recon/main.tex | 2 +- gpec/gpeq.f | 4 ++-- gpec/gpout.f | 6 +++--- 3 files changed, 6 insertions(+), 6 deletions(-) diff --git a/docs/tex/recon/main.tex b/docs/tex/recon/main.tex index 670e190bb..e66099b3c 100644 --- a/docs/tex/recon/main.tex +++ b/docs/tex/recon/main.tex @@ -2209,7 +2209,7 @@ \section{Log-output quantities and their exact integrands} \texttt{standard\_form\_flag} (\texttt{GPEC\_RECON2}, driver \texttt{gpout\_recon2} $\to$ \texttt{gpeq\_firstform}), and \texttt{effective\_field\_terms\_flag} (\texttt{GPEC\_RECON3}, driver \texttt{gpout\_recon3} $\to$ -\texttt{gpeq\_recon3}). +\texttt{gpeq\_epfterms}). Three further switches in \texttt{\&GPEC\_OUTPUT} control how these diagnostics run: diff --git a/gpec/gpeq.f b/gpec/gpeq.f index bf32414d7..c55091b60 100644 --- a/gpec/gpeq.f +++ b/gpec/gpeq.f @@ -46,8 +46,8 @@ MODULE gpeq_mod USE idcon_mod IMPLICIT NONE -c floor for recon divisors (rfac, |grad psi|^2, B^2) so the -c recon kernels stay finite if called on the magnetic axis. +c floor for the recon divisors rfac, |grad psi|^2 and B^2, which +c vanish on the magnetic axis; the Jacobian is assumed nonzero. REAL(r8), PARAMETER, PRIVATE :: recon_tiny = 1.0e-30_r8 CONTAINS diff --git a/gpec/gpout.f b/gpec/gpout.f index 853a4737e..7b9e3a583 100644 --- a/gpec/gpout.f +++ b/gpec/gpout.f @@ -7108,7 +7108,7 @@ SUBROUTINE gpout_recon(mode, xspmn) $ dst2_den_fun=dst2_den_fun, dst3_den_fun=dst3_den_fun) DO itheta = 0, mthsurf CALL bicube_eval(rzphi, psi, theta(itheta), 1) - rfac = SQRT(rzphi%f(1)) + rfac = SQRT(MAX(rzphi%f(1), 0.0_r8)) eta = twopi*(theta(itheta) + rzphi%f(2)) rvals(itheta) = ro + rfac*COS(eta) zvals(itheta) = zo + rfac*SIN(eta) @@ -7576,7 +7576,7 @@ SUBROUTINE gpout_recon2(mode, xspmn) IF (recon_out) THEN DO itheta = 0, mthsurf CALL bicube_eval(rzphi, psi, theta(itheta), 1) - rfac = SQRT(rzphi%f(1)) + rfac = SQRT(MAX(rzphi%f(1), 0.0_r8)) eta = twopi*(theta(itheta) + rzphi%f(2)) rvals(itheta) = ro + rfac*COS(eta) zvals(itheta) = zo + rfac*SIN(eta) @@ -7857,7 +7857,7 @@ SUBROUTINE gpout_recon3(mode, xspmn) IF (recon_out) THEN DO itheta = 0, mthsurf CALL bicube_eval(rzphi, psi, theta(itheta), 1) - rfac = SQRT(rzphi%f(1)) + rfac = SQRT(MAX(rzphi%f(1), 0.0_r8)) eta = twopi*(theta(itheta) + rzphi%f(2)) rvals(itheta) = ro + rfac*COS(eta) zvals(itheta) = zo + rfac*SIN(eta) From c033ec13b20467ec3e1fb4be5866b55fd4a01f9e Mon Sep 17 00:00:00 2001 From: logan-nc Date: Mon, 19 Oct 2026 04:21:00 -0400 Subject: [PATCH 62/62] GPEC - MINOR - recon: docs headings, truncation wording, _r8 literals - docs/outputs.rst: give "Energy Decomposition Outputs" a section underline and move the MATCH solutions.bin entry under Binary File Outputs. - Describe identity_res as the Fourier truncation error rather than roundoff (gpeq_epfterms header, recon3 terminal/log/file notes). - Document that the standard form matches the DCON eigenvalue at any truncation, while the effective-field forms need extra harmonics, and that a curl-check PASS does not by itself confirm the energy. - 1.0 -> 1.0_r8 in gpeq_c and gpeq_curvature. Co-Authored-By: Claude Opus 5.5 --- .../regression_solovev_recon_example/README | 4 ++-- docs/outputs.rst | 16 ++++++++-------- gpec/gpeq.f | 10 ++++++---- gpec/gpout.f | 10 +++++----- 4 files changed, 21 insertions(+), 19 deletions(-) diff --git a/docs/examples/regression_solovev_recon_example/README b/docs/examples/regression_solovev_recon_example/README index 4bcd606d9..58b42f60c 100644 --- a/docs/examples/regression_solovev_recon_example/README +++ b/docs/examples/regression_solovev_recon_example/README @@ -1,7 +1,7 @@ Soloviev Energy Decomposition Regression Example ================================================ -This example checks the GPEC ideal energy decomposition (effective_field_flag) against the DCON eigenvalue it reconstructs. It reuses the Soloviev equilibrium of regression_solovev_ideal_example (sol.in, equil.in, vac.in are copies). dcon.in differs only in delta_mlow=delta_mhigh=8: the decomposition is built in real space and Fourier truncated, so the default 8 poloidal harmonics leave a ~21% error, while 32 harmonics bring it to 0.4%. +This example checks the GPEC ideal energy decomposition (effective_field_flag) against the DCON eigenvalue it reconstructs. It reuses the Soloviev equilibrium of regression_solovev_ideal_example (sol.in, equil.in, vac.in are copies). dcon.in differs only in delta_mlow=delta_mhigh=8: the effective-field form relies on identities that hold only for untruncated fields, so the default band leaves a ~21% error, while 8 extra harmonics on each side bring it to 0.4%. (standard_form_flag matches ep(1) to 0.02% even with the default band.) gpec.in selects the least stable eigenmode (mode_flag=t, mode=1) with reg_flag=f and no external field, turns off the usual outputs, and sets effective_field_flag=t and curl_check_flag=t. @@ -15,7 +15,7 @@ check_recon.py reads the last GPEC_RECON block of gpec.log (gpec.log is appended - the recon psi range equals the DCON psi range (psilow to psilim), - dW_p(recon-normalize) matches DCON ep(1) within 2% relative, and -- the curl check reports PASS. +- the curl check reports PASS (a consistency check on C; it passes even when the truncated run misses the energy). Reference values (gfortran 15, macOS arm64):: diff --git a/docs/outputs.rst b/docs/outputs.rst index ddec2b51a..d11f74c1d 100644 --- a/docs/outputs.rst +++ b/docs/outputs.rst @@ -209,11 +209,14 @@ A number of output files have a similar structure. Here the * in the file name i **Info** The false perturbed magnetic field in the vacuum region on the \left(r,z,\phi\right) grid calculated using the GPEC boundary surface current from the external fields alone. Energy Decomposition Outputs +---------------------------- These outputs reconstruct the ideal plasma energy :math:`\delta W_p` of a single DCON eigenmode on every flux surface and break it into physically distinct terms. They require a pure DCON eigenmode: set mode_flag=t, choose mode (1 is the least stable eigenmode), and keep reg_flag=f and coil_flag=data_flag=harmonic_flag=f. GPEC stops at input if any of the three decomposition flags is set otherwise. The derivations, integrands and the meaning of every printed quantity are documented in :download:`docs/tex/recon/main.tex ` (build with pdflatex and bibtex). Each route prints a summary to the terminal that ends with its :math:`\delta W_p` total, the same total in DCON normalization (dW_p(recon-normalize) and its analogues), the DCON eigenvalue ep(mode) it should reproduce, and the :math:`\psi` range it integrated over beside the DCON range psilow to psilim. In the files below is the selected mode. recon_out=f keeps only the terminal summary, and recon_int ("spline", the default, or "trapezoid") selects the radial quadrature. +The three routes converge differently with the number of poloidal harmonics. The standard form (standard_form_flag) reproduces the DCON eigenvalue at any truncation, because it evaluates the same Galerkin energy DCON minimizes. The two effective-field forms rely on identities that hold only for the untruncated fields, so they need extra harmonics: in the Soloviev regression example they miss ep(1) by about 20% with the default band and agree to 0.4% with delta_mlow=delta_mhigh=8. The curl check and the identity residual measure this truncation; a PASS on the curl check does not by itself confirm the energy. + gpec_recon_*_sol.out **Flag** effective_field_flag @@ -238,14 +241,6 @@ gpec_recon3_terms_sol.out, gpec_recon3_integration_sol.out **Info** Split of :math:`|\mathbf{C}|^2 = |\mathbf{Q}|^2 + 2\mathrm{Re}(\mathbf{V}^*\cdot\mathbf{Q}) + |\mathbf{V}|^2` into A, B, Cpar and Iperp, with the identity check epf = A + B + Cpar + Iperp, per surface (terms) and integrated (integration). -MATCH Outputs - -solutions.bin, solutions.bin - - **Flag** sol_num (match.in) - - **Info** Ideal Euler-Lagrange solution built from DCON eigenfunction sol_num (1 is the most unstable). sol_num=1 writes solutions.bin; sol_num=n>1 writes solutions.bin so several eigenfunctions can be kept side by side. - Binary File Outputs ------------------- @@ -275,3 +270,8 @@ bnormal_spectrum.bin **Info** Surfmn type contours of the normal perturbed magnetic fields as a function of poloidal harmonic number and \Psi_{N}. +solutions.bin, solutions.bin + + **Flag** sol_num (match.in, MATCH) + + **Info** Ideal Euler-Lagrange solution built from DCON eigenfunction sol_num (1 is the most unstable). sol_num=1 writes solutions.bin; sol_num=n>1 writes solutions.bin so several eigenfunctions can be kept side by side. diff --git a/gpec/gpeq.f b/gpec/gpeq.f index c55091b60..04498bb72 100644 --- a/gpec/gpeq.f +++ b/gpec/gpeq.f @@ -750,7 +750,7 @@ SUBROUTINE gpeq_c(psi, ipsi) r_vec(itheta) = ro + rfac*COS(eta) jacs(itheta) = jac - w(1,1) = (1.0+ rzphi%fy(2))*twopi**2*rfac*r_vec(itheta)/jac + w(1,1) = (1.0_r8+ rzphi%fy(2))*twopi**2*rfac*r_vec(itheta)/jac w(1,2) = -rzphi%fy(1)*pi*r_vec(itheta)/(rfac*jac) w(2,1) = -twopi**2*rfac*r_vec(itheta)*rzphi%fx(2)/jac @@ -1383,7 +1383,7 @@ SUBROUTINE gpeq_curvature(psi, curv_fun) r_val = ro + rfac*COS(eta) c Compute contravariant metrics - w(1,1) = (1.0+ rzphi%fy(2))*(twopi**2)*rfac*r_val/jac + w(1,1) = (1.0_r8+ rzphi%fy(2))*(twopi**2)*rfac*r_val/jac w(1,2) = -rzphi%fy(1)*pi*r_val/(rfac*jac) w(2,1) = -(twopi**2)*rfac*r_val*rzphi%fx(2)/jac @@ -1540,8 +1540,10 @@ END SUBROUTINE gpeq_K c A = int |Q|^2 / mu0 B = int 2 Re(V*.Q) / mu0 c Cpar = int mu0 sigma^2 B^2 xin^2 (= gpeq_dst's dst2) c Iperp = int mu0 p'^2 |grad psi|^2 xin^2 / B^2 -c each on the jac measure, as int (..) J dtheta / mthsurf. The -c terms satisfy epf = A + B + Cpar + Iperp to roundoff. +c each on the jac measure, as int (..) J dtheta / mthsurf. epf +c uses the Fourier-truncated C while the four terms are built +c pointwise, so epf - (A + B + Cpar + Iperp) measures the +c truncation error and shrinks as harmonics are added. c Assumes gpeq_prep_c(psi) has been called for this psi. c----------------------------------------------------------------------- SUBROUTINE gpeq_epfterms(psi, A_int, B_int, Iperp_int, Cpar_int, diff --git a/gpec/gpout.f b/gpec/gpout.f index 7b9e3a583..bacaea13c 100644 --- a/gpec/gpout.f +++ b/gpec/gpout.f @@ -7910,7 +7910,7 @@ SUBROUTINE gpout_recon3(mode, xspmn) WRITE(u_int,'(a)') "c Bernstein |C|^2 decomposition (direct)" WRITE(u_int,'(a)') "c identity: epf = A + B + Cpar + Iperp" WRITE(u_int,'(a)') "c identity_res = epf - A - B - Cpar"// - $ " - Iperp (should be near zero)" + $ " - Iperp (Fourier truncation error)" WRITE(u_int,'(a)') "c Cpar should equal dst2 from recon1"// $ " (compare against gpec_recon_integration_sol*.out)" WRITE(u_int,'(a,a)') "c recon_int = ", TRIM(recon_int) @@ -8021,8 +8021,8 @@ SUBROUTINE gpout_recon3(mode, xspmn) WRITE(*,'(a,es17.8e3)') " Iperp_total = ", Iperp_total WRITE(*,'(a,es17.8e3)') " epf_total = ", epf_total WRITE(*,'(a,es17.8e3)') " identity_res = ", identity_residual - WRITE(*,'(a)') " (identity_res should be ~ 0. Cpar = dst2"// - $ " from recon1, not checked here.)" + WRITE(*,'(a)') " (identity_res is the Fourier truncation"// + $ " error; it shrinks as harmonics are added.)" WRITE(*,'(a,es17.8e3)') " dW_p(recon3) = ", dw_raw3 WRITE(*,'(a,es17.8e3)') " dW_p(recon3-normalize)= ", dw_dcon3 WRITE(*,'(a,a,a,es17.8e3)') " GPEC ep(", TRIM(smode), ") = ", @@ -8048,8 +8048,8 @@ SUBROUTINE gpout_recon3(mode, xspmn) WRITE(u_log,'(a,es17.8e3)') " epf_total = ", epf_total WRITE(u_log,'(a,es17.8e3)') " identity_res = ", $ identity_residual - WRITE(u_log,'(a)') " (identity_res should be ~0;"// - $ " Cpar should match dst2 from recon1.)" + WRITE(u_log,'(a)') " (identity_res is the Fourier"// + $ " truncation error; Cpar should match dst2.)" WRITE(u_log,'(a,es17.8e3)') " dW_p(recon3) = ", $ dw_raw3 WRITE(u_log,'(a,es17.8e3)') " dW_p(recon3-normalize)= ",