From b1a5c81d0d28d92694106e3a1aaf7f81caf0a52d Mon Sep 17 00:00:00 2001 From: unalmis Date: Thu, 3 Oct 2024 14:42:08 -0400 Subject: [PATCH 01/60] write eps_eff compute function with bounce2d --- desc/compute/_neoclassical.py | 179 +++++++++++++++++++++++++++--- desc/integrals/bounce_integral.py | 2 +- tests/test_neoclassical.py | 33 +++++- 3 files changed, 197 insertions(+), 17 deletions(-) diff --git a/desc/compute/_neoclassical.py b/desc/compute/_neoclassical.py index e5b8fb1841..a504df7d77 100644 --- a/desc/compute/_neoclassical.py +++ b/desc/compute/_neoclassical.py @@ -16,7 +16,7 @@ from desc.backend import imap, jit, jnp -from ..integrals.bounce_integral import Bounce1D +from ..integrals.bounce_integral import Bounce1D, Bounce2D from ..integrals.bounce_utils import get_pitch_inv_quad, interp_to_argmin from ..integrals.quad_utils import ( automorphism_sin, @@ -97,6 +97,34 @@ def for_each_rho(x): return grid.expand(_alpha_mean(out)) if reduce else out +def _compute_2d(fun, interp_data, data, grid, num_pitch): + """Compute ``fun`` for each α and ρ value iteratively to reduce memory usage. + + Parameters + ---------- + fun : callable + Function to compute. + interp_data : dict[str, jnp.ndarray] + Data to provide to ``fun``. + Names in ``Bounce2D.required_names`` will be overridden. + Reshaped automatically. + data : dict[str, jnp.ndarray] + DESC data dict. + + """ + for name in Bounce2D.required_names: + interp_data[name] = data[name] + interp_data = dict( + zip(interp_data.keys(), Bounce2D.reshape_data(grid, *interp_data.values())) + ) + interp_data["pitch_inv"], interp_data["pitch_inv weight"] = get_pitch_inv_quad( + grid.compress(data["min_tz |B|"]), + grid.compress(data["max_tz |B|"]), + num_pitch, + ) + return grid.expand(imap(fun, interp_data)) + + @register_compute_fun( name="", label="\\int_{\\zeta_{\\mathrm{min}}}^{\\zeta_{\\mathrm{max}}}" @@ -181,20 +209,6 @@ def _G_ra_fsa(data, transforms, profiles, **kwargs): resolution_requirement="z", source_grid_requirement={"coordinates": "raz", "is_meshgrid": True}, **_bounce_doc, - # Some notes on choosing the resolution hyperparameters: - # The default settings were chosen such that the effective ripple profile on - # the W7-X stellarator looks similar to the profile computed at higher resolution, - # indicating convergence. The parameters ``num_transit`` and ``knots_per_transit`` - # have a stronger effect on the result. As a reference for W7-X, when computing the - # effective ripple by tracing a single field line on each flux surface, a density of - # 100 knots per toroidal transit accurately reconstructs the ripples along the field - # line. After 10 toroidal transits convergence is apparent (after 15 the returns - # diminish). Dips in the resulting profile indicates insufficient ``num_transit``. - # Unreasonably high values indicates insufficient ``knots_per_transit``. - # One can plot the field line with ``Bounce1D.plot`` to see if the number of knots - # was sufficient to reconstruct the field line. - # TODO: Improve performance... see GitHub issue #1045. - # Need more efficient function approximation of |B|(α, ζ). ) @partial(jit, static_argnames=["num_quad", "num_pitch", "num_well", "batch"]) def _epsilon_32(params, transforms, profiles, data, **kwargs): @@ -260,6 +274,123 @@ def eps_32(data): return data +@register_compute_fun( + name="effective ripple 3/2_2d", + label=( + # ε¹ᐧ⁵ = π/(8√2) R₀²〈|∇ψ|〉⁻² B₀⁻¹ ∫dλ λ⁻² 〈 ∑ⱼ Hⱼ²/Iⱼ 〉 + "\\epsilon_{\\mathrm{eff}}^{3/2} = \\frac{\\pi}{8 \\sqrt{2}} " + "R_0^2 \\langle \\vert\\nabla \\psi\\vert \\rangle^{-2} " + "B_0^{-1} \\int d\\lambda \\lambda^{-2} " + "\\langle \\sum_j H_j^2 / I_j \\rangle" + ), + units="~", + units_long="None", + description="Effective ripple modulation amplitude to 3/2 power", + dim=1, + params=[], + transforms={"grid": []}, + profiles=[], + coordinates="r", + data=[ + "min_tz |B|", + "max_tz |B|", + "|grad(rho)|", + "kappa_g", + # TODO: Need a tiny bit more infrastructure to compute this. + # 1. Add bounce.interpolate_uniform method which + # interpolates some function g(theta, zeta) + # to uniformly spaced nodes along the field lines. + # (Use FFT in forward direction and DCT in inverse). + # See the logic in bounce.integrate and transform_to_clebsch_1d. + # Then use simpson's rule to integrate output as + # is done in the compute fun for . Again since + # B^zeta is smooth simpson's rule will work fine. + "", + "R0", + "<|grad(rho)|>", + ] + + Bounce2D.required_names, + resolution_requirement="z", + # TODO: Add requirement for FFT points on (0, 2pi) (0, 2pi/NFP). + grid_requirement={"coordinates": "rtz", "is_meshgrid": True, "sym": False}, + theta="jnp.ndarray : DESC coordinates θ of (α,ζ) Fourier Chebyshev basis nodes.", + num_transit="int : Number of toroidal transits to follow field line.", + **_bounce_doc, +) +@partial(jit, static_argnames=["num_quad", "num_pitch", "num_well", "batch"]) +def _epsilon_32_2d(params, transforms, profiles, data, **kwargs): + """https://doi.org/10.1063/1.873749. + + Evaluation of 1/ν neoclassical transport in stellarators. + V. V. Nemov, S. V. Kasilov, W. Kernbichler, M. F. Heyn. + Phys. Plasmas 1 December 1999; 6 (12): 4622–4632. + """ + # noqa: unused dependency + if "quad" in kwargs: + quad = kwargs["quad"] + else: + quad = chebgauss2(kwargs.get("num_quad", 32)) + num_well = kwargs.get("num_well", None) + num_transit = kwargs.get("num_transit", 20) + grid = transforms["grid"] + + def dH(grad_rho_norm_kappa_g, B, pitch, zeta): + # Integrand of Nemov eq. 30 with |∂ψ/∂ρ| (λB₀)¹ᐧ⁵ removed. + return ( + jnp.sqrt(jnp.abs(1 - pitch * B)) + * (4 / (pitch * B) - 1) + * grad_rho_norm_kappa_g + / B + ) + + def dI(B, pitch, zeta): + # Integrand of Nemov eq. 31. + return jnp.sqrt(jnp.abs(1 - pitch * B)) / B + + def eps_32(data): + """(∂ψ/∂ρ)⁻² B₀⁻² ∫ dλ λ⁻² ∑ⱼ Hⱼ²/Iⱼ.""" + # B₀ has units of λ⁻¹. + # Nemov's ∑ⱼ Hⱼ²/Iⱼ = (∂ψ/∂ρ)² (λB₀)³ ``(H**2 / I).sum(axis=-1)``. + # (λB₀)³ d(λB₀)⁻¹ = B₀² λ³ d(λ⁻¹) = -B₀² λ dλ. + bounce = Bounce2D( + grid=grid, + data=data, + theta=data["theta"], + num_transit=num_transit, + quad=quad, + automorphism=None, + is_reshaped=True, + ) + points = bounce.points(data["pitch_inv"], num_well=num_well) + H = bounce.integrate( + dH, + data["pitch_inv"], + data["|grad(rho)|*kappa_g"], + points=points, + ) + I = bounce.integrate(dI, data["pitch_inv"], points=points) + return ( + safediv(H**2, I).sum(axis=-1) + * data["pitch_inv"] ** (-3) + * data["pitch_inv weight"] + ).sum(axis=-1) + + # Interpolate |∇ρ| κ_g since it is smoother than κ_g alone. + interp_data = { + "|grad(rho)|*kappa_g": data["|grad(rho)|"] * data["kappa_g"], + "theta": kwargs["theta"], + } + B0 = data["max_tz |B|"] + data["effective ripple 3/2_2d"] = ( + jnp.pi + / (8 * 2**0.5) + * (B0 * data["R0"] / data["<|grad(rho)|>"]) ** 2 + * _compute_2d(eps_32, interp_data, data, grid, kwargs.get("num_pitch", 50)) + / data[""] + ) + return data + + @register_compute_fun( name="effective ripple", label="\\epsilon_{\\mathrm{eff}}", @@ -278,6 +409,24 @@ def _effective_ripple(params, transforms, profiles, data, **kwargs): return data +@register_compute_fun( + name="effective ripple_2d", + label="\\epsilon_{\\mathrm{eff}}", + units="~", + units_long="None", + description="Effective ripple modulation amplitude", + dim=1, + params=[], + transforms={}, + profiles=[], + coordinates="r", + data=["effective ripple 3/2_2d"], +) +def _effective_ripple_2d(params, transforms, profiles, data, **kwargs): + data["effective ripple_2d"] = data["effective ripple 3/2_2d"] ** (2 / 3) + return data + + @register_compute_fun( name="Gamma_c Velasco", label=( diff --git a/desc/integrals/bounce_integral.py b/desc/integrals/bounce_integral.py index 7f4664066b..05281da32e 100644 --- a/desc/integrals/bounce_integral.py +++ b/desc/integrals/bounce_integral.py @@ -510,7 +510,7 @@ def __init__( @staticmethod def compute_theta(eq, M=16, N=32, rho=1.0, clebsch=None, **kwargs): - """Return DESC coordinates θ of Fourier Chebyshev basis nodes. + """Return DESC coordinates θ of (α,ζ) Fourier Chebyshev basis nodes. Parameters ---------- diff --git a/tests/test_neoclassical.py b/tests/test_neoclassical.py index f65657d9c5..5a36016554 100644 --- a/tests/test_neoclassical.py +++ b/tests/test_neoclassical.py @@ -9,7 +9,9 @@ from desc.equilibrium.coords import get_rtz_grid from desc.examples import get -from desc.grid import LinearGrid +from desc.grid import Grid, LinearGrid +from desc.integrals import Bounce2D +from desc.integrals.interp_utils import fourier_pts from desc.utils import errorif, setdefault from desc.vmec import VMECIO @@ -69,6 +71,35 @@ def test_effective_ripple(): return fig +@pytest.mark.unit +# @pytest.mark.mpl_image_compare(remove_text=True, tolerance=tol_1d) +def test_effective_ripple_2d(): + """Test effective ripple 2d with W7-X.""" + eq = get("W7-X") + rho = np.linspace(0, 1, 10) + grid = Grid.create_meshgrid( + [rho, fourier_pts(eq.M_grid), fourier_pts(eq.N_grid) / eq.NFP], + period=(np.inf, 2 * np.pi, 2 * np.pi / eq.NFP), + NFP=eq.NFP, + ) + theta = Bounce2D.compute_theta(eq, M=8, N=64, rho=rho) + data = eq.compute("effective ripple_2d", grid=grid, theta=theta, num_transit=10) + assert np.isfinite(data["effective ripple_2d"]).all() + np.testing.assert_allclose( + data["effective ripple 3/2_2d"] ** (2 / 3), + data["effective ripple_2d"], + err_msg="Bug in source grid logic in eq.compute.", + ) + eps_32 = grid.compress(data["effective ripple 3/2_2d"]) + fig, ax = plt.subplots() + ax.plot(rho, eps_32, marker="o") + plt.show() + + neo_rho, neo_eps_32 = NeoIO.read("tests/inputs/neo_out.w7x") + np.testing.assert_allclose(eps_32, np.interp(rho, neo_rho, neo_eps_32), rtol=0.16) + return fig + + @pytest.mark.unit @pytest.mark.mpl_image_compare(remove_text=True, tolerance=tol_1d) def test_Gamma_c_Velasco(): From 15875d9829c612d8de4a92dcd08b0e143576c46b Mon Sep 17 00:00:00 2001 From: unalmis Date: Sun, 6 Oct 2024 01:41:50 -0400 Subject: [PATCH 02/60] Debugging JAX issues --- desc/compute/_neoclassical.py | 56 ++++++++++++++++++++++++------- desc/integrals/basis.py | 3 +- desc/integrals/bounce_integral.py | 20 ++++------- desc/integrals/bounce_utils.py | 3 +- tests/test_integrals.py | 9 ++++- tests/test_neoclassical.py | 4 +-- 6 files changed, 63 insertions(+), 32 deletions(-) diff --git a/desc/compute/_neoclassical.py b/desc/compute/_neoclassical.py index dc0c2a2bc2..286892f818 100644 --- a/desc/compute/_neoclassical.py +++ b/desc/compute/_neoclassical.py @@ -45,6 +45,25 @@ ), "batch": "bool : Whether to vectorize part of the computation. Default is true.", } +_bounce2d_doc = { + "num_transit": "int : Number of toroidal transits to follow field line.", + "theta": "jnp.ndarray : DESC coordinates θ of (α,ζ) Fourier Chebyshev basis nodes.", + "N_B": ( + "int : Desired Chebyshev spectral resolution for |B|. " + "Default is to double the resolution of ``theta``." + ), + "length_quad": ( + "tuple[jnp.ndarray] : Quadrature points xₖ and weights wₖ for the " + "approximate evaluation of the integral ∫₋₁¹ f(x) dx ≈ ∑ₖ wₖ f(xₖ). " + "Used to compute the proper length of the field line ∫ dℓ / |B|. " + "Should not use more points than half Chebyshev resolution of |B|. " + "Default is Gauss-Legendre quadrature at resolution ``N_B // 2``." + ), + "quad": _bounce_doc["quad"], + "num_quad": _bounce_doc["num_quad"], + "num_pitch": _bounce_doc["num_pitch"], + "num_well": _bounce_doc["num_well"], +} def _alpha_mean(f): @@ -97,7 +116,7 @@ def for_each_rho(x): return grid.expand(_alpha_mean(out)) if reduce else out -def _compute_2d(fun, interp_data, data, grid, num_pitch): +def _compute_2d(fun, interp_data, data, theta, grid, num_pitch): """Compute ``fun`` for each α and ρ value iteratively to reduce memory usage. Parameters @@ -110,6 +129,10 @@ def _compute_2d(fun, interp_data, data, grid, num_pitch): Reshaped automatically. data : dict[str, jnp.ndarray] DESC data dict. + theta : jnp.ndarray + Shape (L, M, N). + DESC coordinates θ sourced from the Clebsch coordinates + ``FourierChebyshevSeries.nodes(M,N,L,domain=(0,2*jnp.pi))``. """ for name in Bounce2D.required_names: @@ -117,11 +140,14 @@ def _compute_2d(fun, interp_data, data, grid, num_pitch): interp_data = dict( zip(interp_data.keys(), Bounce2D.reshape_data(grid, *interp_data.values())) ) + # These already have expected shape with num_rho along first axis. interp_data["pitch_inv"], interp_data["pitch_inv weight"] = get_pitch_inv_quad( grid.compress(data["min_tz |B|"]), grid.compress(data["max_tz |B|"]), num_pitch, ) + interp_data["iota"] = grid.compress(data["iota"]) + interp_data["theta"] = theta return grid.expand(imap(fun, interp_data)) @@ -296,11 +322,11 @@ def eps_32(data): resolution_requirement="z", # TODO: Add requirement for FFT points on (0, 2pi) (0, 2pi/NFP). grid_requirement={"coordinates": "rtz", "is_meshgrid": True, "sym": False}, - theta="jnp.ndarray : DESC coordinates θ of (α,ζ) Fourier Chebyshev basis nodes.", - num_transit="int : Number of toroidal transits to follow field line.", - **_bounce_doc, + **_bounce2d_doc, +) +@partial( + jit, static_argnames=["num_transit", "N_B", "num_quad", "num_pitch", "num_well"] ) -@partial(jit, static_argnames=["num_quad", "num_pitch", "num_well", "batch"]) def _epsilon_32_2d(params, transforms, profiles, data, **kwargs): """https://doi.org/10.1063/1.873749. @@ -309,10 +335,16 @@ def _epsilon_32_2d(params, transforms, profiles, data, **kwargs): Phys. Plasmas 1 December 1999; 6 (12): 4622–4632. """ # noqa: unused dependency + theta = kwargs["theta"] + N_B = kwargs.get("N_B", theta.shape[-1] * 2) if "quad" in kwargs: quad = kwargs["quad"] else: quad = chebgauss2(kwargs.get("num_quad", 32)) + if "length_quad" in kwargs: + length_quad = kwargs["length_quad"] + else: + length_quad = leggauss(N_B // 2) num_well = kwargs.get("num_well", None) num_transit = kwargs.get("num_transit", 20) grid = transforms["grid"] @@ -338,7 +370,9 @@ def eps_32(data): bounce = Bounce2D( grid=grid, data=data, + iota=data["iota"], theta=data["theta"], + N_B=N_B, num_transit=num_transit, quad=quad, automorphism=None, @@ -356,20 +390,18 @@ def eps_32(data): safediv(H**2, I).sum(axis=-1) * data["pitch_inv"] ** (-3) * data["pitch_inv weight"] - ).sum(axis=-1) + ).sum(axis=-1) / bounce.compute_length(length_quad) # Interpolate |∇ρ| κ_g since it is smoother than κ_g alone. - interp_data = { - "|grad(rho)|*kappa_g": data["|grad(rho)|"] * data["kappa_g"], - "theta": kwargs["theta"], - } + interp_data = {"|grad(rho)|*kappa_g": data["|grad(rho)|"] * data["kappa_g"]} B0 = data["max_tz |B|"] data["effective ripple 3/2_2d"] = ( jnp.pi / (8 * 2**0.5) * (B0 * data["R0"] / data["<|grad(rho)|>"]) ** 2 - * _compute_2d(eps_32, interp_data, data, grid, kwargs.get("num_pitch", 50)) - / data[""] + * _compute_2d( + eps_32, interp_data, data, theta, grid, kwargs.get("num_pitch", 50) + ) ) return data diff --git a/desc/integrals/basis.py b/desc/integrals/basis.py index 8369ce5835..18379fc342 100644 --- a/desc/integrals/basis.py +++ b/desc/integrals/basis.py @@ -208,13 +208,12 @@ def evaluate(self, M, N): ``FourierChebyshevSeries.nodes(M,N,L,self.domain,self.lobatto)``. """ - fq = idct( + return idct( irfft(self._c, n=M, axis=-2, norm="forward"), type=2 - self.lobatto, n=N, axis=-1, ) * (N - self.lobatto) - return fq def harmonics(self): """Spectral coefficients aₘₙ of the interpolating trigonometric polynomial. diff --git a/desc/integrals/bounce_integral.py b/desc/integrals/bounce_integral.py index 53ce4f5de1..04f144af7d 100644 --- a/desc/integrals/bounce_integral.py +++ b/desc/integrals/bounce_integral.py @@ -1,10 +1,9 @@ """Methods for computing bounce integrals (singular or otherwise).""" from interpax import CubicHermiteSpline, PPoly -from numpy.fft import rfft2 from orthax.legendre import leggauss -from desc.backend import dct, jnp +from desc.backend import dct, jnp, rfft2 from desc.integrals.basis import FourierChebyshevSeries, PiecewiseChebyshevSeries from desc.integrals.bounce_utils import ( _bounce_quadrature, @@ -396,6 +395,7 @@ def __init__( self, grid, data, + iota, theta, N_B=None, num_transit=16, @@ -430,6 +430,9 @@ def __init__( data : dict[str, jnp.ndarray] Data evaluated on ``grid``. Must include names in ``Bounce2D.required_names``. + iota : jnp.ndarray + Shape (L, ). + Rotational transform. theta : jnp.ndarray Shape (L, M, N). DESC coordinates θ sourced from the Clebsch coordinates @@ -488,18 +491,7 @@ def __init__( self._x, self._w = get_quadrature(quad, automorphism) # peel off field lines - iota = data["iota"].ravel() - alpha = get_alpha( - alpha, - iota=( - grid.compress(iota) - if iota.size == grid.num_nodes - # assume passed in reshaped data over flux surface - else jnp.array(iota[0]) - ), - num_transit=num_transit, - period=2 * jnp.pi, - ) + alpha = get_alpha(alpha, iota=iota, num_transit=num_transit, period=2 * jnp.pi) # Compute spectral coefficients. self._T, self._B = _transform_to_clebsch_1d( grid, alpha, theta, data["|B|"] / Bref, N_B, is_reshaped diff --git a/desc/integrals/bounce_utils.py b/desc/integrals/bounce_utils.py index d85220a4ff..1f4ea20491 100644 --- a/desc/integrals/bounce_utils.py +++ b/desc/integrals/bounce_utils.py @@ -51,7 +51,8 @@ def get_alpha(alpha_0, iota, num_transit, period): """ # Δϕ (∂α/∂ϕ) = Δϕ ι̅ = Δϕ ι/2π = Δϕ data["iota"] - alpha = alpha_0 + period * iota[:, jnp.newaxis] * jnp.arange(num_transit) + # FIXME: Looks innocent, but JAX doesn't like this... + alpha = alpha_0 + period * jnp.expand_dims(iota, -1) * jnp.arange(num_transit) return alpha diff --git a/tests/test_integrals.py b/tests/test_integrals.py index 8d129751c3..86cb5b5758 100644 --- a/tests/test_integrals.py +++ b/tests/test_integrals.py @@ -1578,7 +1578,13 @@ def test_bounce2d_checks(self): theta = Bounce2D.compute_theta(eq, M=8, N=64, rho=rho) # 5. Make the bounce integration operator. bounce = Bounce2D( - grid, data, theta, num_transit=2, quad=leggauss(3), check=True + grid, + data, + iota=grid.compress(data["iota"]), + theta=theta, + num_transit=2, + quad=leggauss(3), + check=True, ) pitch_inv, _ = bounce.get_pitch_inv_quad( min_B=grid.compress(data["min_tz |B|"]), @@ -1686,6 +1692,7 @@ def test_binormal_drift_bounce2d(self): bounce = Bounce2D( grid=grid, data=grid_data, + iota=data["iota"], theta=Bounce2D.compute_theta( eq, M, diff --git a/tests/test_neoclassical.py b/tests/test_neoclassical.py index 5a36016554..3924e89628 100644 --- a/tests/test_neoclassical.py +++ b/tests/test_neoclassical.py @@ -72,7 +72,7 @@ def test_effective_ripple(): @pytest.mark.unit -# @pytest.mark.mpl_image_compare(remove_text=True, tolerance=tol_1d) +@pytest.mark.mpl_image_compare(remove_text=True, tolerance=tol_1d) def test_effective_ripple_2d(): """Test effective ripple 2d with W7-X.""" eq = get("W7-X") @@ -82,7 +82,7 @@ def test_effective_ripple_2d(): period=(np.inf, 2 * np.pi, 2 * np.pi / eq.NFP), NFP=eq.NFP, ) - theta = Bounce2D.compute_theta(eq, M=8, N=64, rho=rho) + theta = Bounce2D.compute_theta(eq, M=16, N=64, rho=rho) data = eq.compute("effective ripple_2d", grid=grid, theta=theta, num_transit=10) assert np.isfinite(data["effective ripple_2d"]).all() np.testing.assert_allclose( From 5a58582c82c30d4405b808b55b68b7a28678d532 Mon Sep 17 00:00:00 2001 From: unalmis Date: Sun, 20 Oct 2024 06:15:18 -0400 Subject: [PATCH 03/60] Writing new compute funs with Bounce2D --- desc/compute/_neoclassical.py | 474 +++++++++++++----- desc/integrals/bounce_integral.py | 61 ++- desc/objectives/_neoclassical.py | 12 +- .../{test_Gamma_c.png => test_Gamma_c_1D.png} | Bin 17271 -> 17271 bytes tests/baseline/test_Gamma_c_2D.png | Bin 0 -> 16992 bytes ...elasco.png => test_Gamma_c_Velasco_1D.png} | Bin 13992 -> 13992 bytes tests/baseline/test_effective_ripple.png | Bin 13908 -> 0 bytes tests/baseline/test_effective_ripple_1D.png | Bin 0 -> 23872 bytes tests/baseline/test_effective_ripple_2D.png | Bin 0 -> 23969 bytes tests/test_integrals.py | 6 +- tests/test_neoclassical.py | 152 ++++-- 11 files changed, 491 insertions(+), 214 deletions(-) rename tests/baseline/{test_Gamma_c.png => test_Gamma_c_1D.png} (99%) create mode 100644 tests/baseline/test_Gamma_c_2D.png rename tests/baseline/{test_Gamma_c_Velasco.png => test_Gamma_c_Velasco_1D.png} (99%) delete mode 100644 tests/baseline/test_effective_ripple.png create mode 100644 tests/baseline/test_effective_ripple_1D.png create mode 100644 tests/baseline/test_effective_ripple_2D.png diff --git a/desc/compute/_neoclassical.py b/desc/compute/_neoclassical.py index 286892f818..bf49febcd2 100644 --- a/desc/compute/_neoclassical.py +++ b/desc/compute/_neoclassical.py @@ -1,12 +1,18 @@ """Compute functions for neoclassical transport. -Notes ------ -Some quantities require additional work to compute at the magnetic axis. -A Python lambda function is used to lazily compute the magnetic axis limits -of these quantities. These lambda functions are evaluated only when the -computational grid has a node on the magnetic axis to avoid potentially -expensive computations. +Performance will improve significantly by resolving these GitHub issues. + +* ``1154`` Improve coordinate mapping performance +* ``1294`` Nonuniform fast transforms +* ``1303`` Patch for differentiable code with dynamic shapes +* ``1206`` Upsample data above midplane to full grid assuming stellarator symmetry +* ``1034`` Optimizers/objectives with auxilary output + +If memory is still an issue, consider computing one pitch at a time. This +can be done by copy-pasting the code given at +https://github.com/PlasmaControl/DESC/pull/1003#discussion_r1780459450. +Note that imap supports computing in batches, so that can also be used. +Make sure to benchmark whether this reduces memory in an optimization. """ from functools import partial @@ -17,17 +23,22 @@ from desc.backend import imap, jit, jnp from ..integrals.bounce_integral import Bounce1D, Bounce2D -from ..integrals.bounce_utils import get_pitch_inv_quad, interp_to_argmin +from ..integrals.bounce_utils import ( + get_pitch_inv_quad, + interp_fft_to_argmin, + interp_to_argmin, +) +from ..integrals.interp_utils import polyder_vec from ..integrals.quad_utils import ( automorphism_sin, chebgauss2, get_quadrature, grad_automorphism_sin, ) -from ..utils import cross, dot, safediv +from ..utils import cross, dot, errorif, safediv from .data_index import register_compute_fun -_bounce_doc = { +_Bounce1D_doc = { "quad": ( "tuple[jnp.ndarray] : Quadrature points and weights for bounce integrals. " "Default option is well tested." @@ -45,24 +56,24 @@ ), "batch": "bool : Whether to vectorize part of the computation. Default is true.", } -_bounce2d_doc = { - "num_transit": "int : Number of toroidal transits to follow field line.", +_Bounce2D_doc = { + "spline": "bool : Whether to use cubic splines to compute bounce points.", "theta": "jnp.ndarray : DESC coordinates θ of (α,ζ) Fourier Chebyshev basis nodes.", - "N_B": ( - "int : Desired Chebyshev spectral resolution for |B|. " + "Y_B": ( + "int : Desired resolution for |B| along field lines to compute bounce points. " "Default is to double the resolution of ``theta``." ), - "length_quad": ( + "num_transit": "int : Number of toroidal transits to follow field line.", + "fieldline_quad": ( "tuple[jnp.ndarray] : Quadrature points xₖ and weights wₖ for the " "approximate evaluation of the integral ∫₋₁¹ f(x) dx ≈ ∑ₖ wₖ f(xₖ). " "Used to compute the proper length of the field line ∫ dℓ / |B|. " - "Should not use more points than half Chebyshev resolution of |B|. " - "Default is Gauss-Legendre quadrature at resolution ``N_B // 2``." + "Default is Gauss-Legendre quadrature." ), - "quad": _bounce_doc["quad"], - "num_quad": _bounce_doc["num_quad"], - "num_pitch": _bounce_doc["num_pitch"], - "num_well": _bounce_doc["num_well"], + "quad": _Bounce1D_doc["quad"], + "num_quad": _Bounce1D_doc["num_quad"], + "num_pitch": _Bounce1D_doc["num_pitch"], + "num_well": _Bounce1D_doc["num_well"], } @@ -77,14 +88,14 @@ def _alpha_mean(f): return f.mean(axis=0) -def _compute(fun, interp_data, data, grid, num_pitch, reduce=True): +def _compute_1D(fun, fun_data, data, grid, num_pitch, reduce=True): """Compute ``fun`` for each α and ρ value iteratively to reduce memory usage. Parameters ---------- fun : callable Function to compute. - interp_data : dict[str, jnp.ndarray] + fun_data : dict[str, jnp.ndarray] Data to provide to ``fun``. Names in ``Bounce1D.required_names`` will be overridden. Reshaped automatically. @@ -108,51 +119,51 @@ def for_each_rho(x): return imap(fun, x) for name in Bounce1D.required_names: - interp_data[name] = data[name] - interp_data = dict( - zip(interp_data.keys(), Bounce1D.reshape_data(grid, *interp_data.values())) + fun_data[name] = data[name] + fun_data = dict( + zip(fun_data.keys(), Bounce1D.reshape_data(grid, *fun_data.values())) ) - out = imap(for_each_rho, interp_data) + out = imap(for_each_rho, fun_data) return grid.expand(_alpha_mean(out)) if reduce else out -def _compute_2d(fun, interp_data, data, theta, grid, num_pitch): - """Compute ``fun`` for each α and ρ value iteratively to reduce memory usage. +def _compute_2D(fun, fun_data, data, theta, grid, num_pitch): + """Compute ``fun`` for each ρ value iteratively to reduce memory usage. Parameters ---------- fun : callable Function to compute. - interp_data : dict[str, jnp.ndarray] + fun_data : dict[str, jnp.ndarray] Data to provide to ``fun``. Names in ``Bounce2D.required_names`` will be overridden. Reshaped automatically. data : dict[str, jnp.ndarray] DESC data dict. theta : jnp.ndarray - Shape (L, M, N). + Shape (num rho, X, Y). DESC coordinates θ sourced from the Clebsch coordinates - ``FourierChebyshevSeries.nodes(M,N,L,domain=(0,2*jnp.pi))``. + ``FourierChebyshevSeries.nodes(X,Y,rho,domain=(0,2*jnp.pi))``. """ for name in Bounce2D.required_names: - interp_data[name] = data[name] - interp_data = dict( - zip(interp_data.keys(), Bounce2D.reshape_data(grid, *interp_data.values())) + fun_data[name] = data[name] + fun_data = dict( + zip(fun_data.keys(), Bounce2D.reshape_data(grid, *fun_data.values())) ) - # These already have expected shape with num_rho along first axis. - interp_data["pitch_inv"], interp_data["pitch_inv weight"] = get_pitch_inv_quad( + # These already have expected shape with num rho along first axis. + fun_data["pitch_inv"], fun_data["pitch_inv weight"] = get_pitch_inv_quad( grid.compress(data["min_tz |B|"]), grid.compress(data["max_tz |B|"]), num_pitch, ) - interp_data["iota"] = grid.compress(data["iota"]) - interp_data["theta"] = theta - return grid.expand(imap(fun, interp_data)) + fun_data["iota"] = grid.compress(data["iota"]) + fun_data["theta"] = theta + return grid.expand(imap(fun, fun_data)) @register_compute_fun( - name="", + name="fieldline length", label="\\int_{\\zeta_{\\mathrm{min}}}^{\\zeta_{\\mathrm{max}}}" " \\frac{d\\zeta}{|B^{\\zeta}|}", units="m / T", @@ -167,19 +178,19 @@ def _compute_2d(fun, interp_data, data, theta, grid, num_pitch): resolution_requirement="z", source_grid_requirement={"coordinates": "raz", "is_meshgrid": True}, ) -def _L_ra_fsa(data, transforms, profiles, **kwargs): +def _fieldline_length(data, transforms, profiles, **kwargs): grid = transforms["grid"].source_grid L_ra = simpson( y=grid.meshgrid_reshape(1 / data["B^zeta"], "arz"), x=grid.compress(grid.nodes[:, 2], surface_label="zeta"), axis=-1, ) - data[""] = grid.expand(jnp.abs(_alpha_mean(L_ra))) + data["fieldline length"] = grid.expand(jnp.abs(_alpha_mean(L_ra))) return data @register_compute_fun( - name="", + name="fieldline length/volume", label="\\int_{\\zeta_{\\mathrm{min}}}^{\\zeta_{\\mathrm{max}}}" " \\frac{d\\zeta}{|B^{\\zeta} \\sqrt g|}", units="1 / Wb", @@ -194,19 +205,19 @@ def _L_ra_fsa(data, transforms, profiles, **kwargs): resolution_requirement="z", source_grid_requirement={"coordinates": "raz", "is_meshgrid": True}, ) -def _G_ra_fsa(data, transforms, profiles, **kwargs): +def _fieldline_length_over_volume(data, transforms, profiles, **kwargs): grid = transforms["grid"].source_grid G_ra = simpson( y=grid.meshgrid_reshape(1 / (data["B^zeta"] * data["sqrt(g)"]), "arz"), x=grid.compress(grid.nodes[:, 2], surface_label="zeta"), axis=-1, ) - data[""] = grid.expand(jnp.abs(_alpha_mean(G_ra))) + data["fieldline length/volume"] = grid.expand(jnp.abs(_alpha_mean(G_ra))) return data @register_compute_fun( - name="effective ripple 3/2", + name="effective ripple 3/2*", label=( # ε¹ᐧ⁵ = π/(8√2) R₀²〈|∇ψ|〉⁻² B₀⁻¹ ∫dλ λ⁻² 〈 ∑ⱼ Hⱼ²/Iⱼ 〉 "\\epsilon_{\\mathrm{eff}}^{3/2} = \\frac{\\pi}{8 \\sqrt{2}} " @@ -216,7 +227,8 @@ def _G_ra_fsa(data, transforms, profiles, **kwargs): ), units="~", units_long="None", - description="Effective ripple modulation amplitude to 3/2 power", + description="Effective ripple modulation amplitude to 3/2 power. " + "Uses numerical methods of the Bounce1D class.", dim=1, params=[], transforms={"grid": []}, @@ -225,19 +237,19 @@ def _G_ra_fsa(data, transforms, profiles, **kwargs): data=[ "min_tz |B|", "max_tz |B|", - "|grad(rho)|", "kappa_g", - "", "R0", + "|grad(rho)|", "<|grad(rho)|>", + "fieldline length", ] + Bounce1D.required_names, resolution_requirement="z", source_grid_requirement={"coordinates": "raz", "is_meshgrid": True}, - **_bounce_doc, + **_Bounce1D_doc, ) @partial(jit, static_argnames=["num_quad", "num_pitch", "num_well", "batch"]) -def _epsilon_32(params, transforms, profiles, data, **kwargs): +def _epsilon_32_1D(params, transforms, profiles, data, **kwargs): """https://doi.org/10.1063/1.873749. Evaluation of 1/ν neoclassical transport in stellarators. @@ -283,25 +295,44 @@ def eps_32(data): I = bounce.integrate(dI, data["pitch_inv"], points=points, batch=batch) return ( safediv(H**2, I).sum(axis=-1) - * data["pitch_inv"] ** (-3) * data["pitch_inv weight"] + / data["pitch_inv"] ** 3 ).sum(axis=-1) # Interpolate |∇ρ| κ_g since it is smoother than κ_g alone. - interp_data = {"|grad(rho)|*kappa_g": data["|grad(rho)|"] * data["kappa_g"]} + fun_data = {"|grad(rho)|*kappa_g": data["|grad(rho)|"] * data["kappa_g"]} B0 = data["max_tz |B|"] - data["effective ripple 3/2"] = ( + data["effective ripple 3/2*"] = ( jnp.pi / (8 * 2**0.5) * (B0 * data["R0"] / data["<|grad(rho)|>"]) ** 2 - * _compute(eps_32, interp_data, data, grid, kwargs.get("num_pitch", 50)) - / data[""] + * _compute_1D(eps_32, fun_data, data, grid, kwargs.get("num_pitch", 50)) + / data["fieldline length"] ) return data @register_compute_fun( - name="effective ripple 3/2_2d", + name="effective ripple*", + label="\\epsilon_{\\mathrm{eff}}", + units="~", + units_long="None", + description="Effective ripple modulation amplitude. " + "Uses numerical methods of the Bounce1D class.", + dim=1, + params=[], + transforms={}, + profiles=[], + coordinates="r", + data=["effective ripple 3/2*"], +) +def _effective_ripple_1D(params, transforms, profiles, data, **kwargs): + data["effective ripple*"] = data["effective ripple 3/2*"] ** (2 / 3) + return data + + +@register_compute_fun( + name="effective ripple 3/2", label=( # ε¹ᐧ⁵ = π/(8√2) R₀²〈|∇ψ|〉⁻² B₀⁻¹ ∫dλ λ⁻² 〈 ∑ⱼ Hⱼ²/Iⱼ 〉 "\\epsilon_{\\mathrm{eff}}^{3/2} = \\frac{\\pi}{8 \\sqrt{2}} " @@ -311,23 +342,32 @@ def eps_32(data): ), units="~", units_long="None", - description="Effective ripple modulation amplitude to 3/2 power", + description="Effective ripple modulation amplitude to 3/2 power. " + "Uses numerical methods of the Bounce2D class.", dim=1, params=[], transforms={"grid": []}, profiles=[], coordinates="r", - data=["min_tz |B|", "max_tz |B|", "|grad(rho)|", "kappa_g", "R0", "<|grad(rho)|>"] + data=["min_tz |B|", "max_tz |B|", "kappa_g", "R0", "|grad(rho)|", "<|grad(rho)|>"] + Bounce2D.required_names, - resolution_requirement="z", - # TODO: Add requirement for FFT points on (0, 2pi) (0, 2pi/NFP). + resolution_requirement="z", # FIXME: GitHub issue #1312. Should be "tz". + # TODO: Uniformly spaced points on (θ, ζ) ∈ [0, 2π) × [0, 2π/NFP) are required. grid_requirement={"coordinates": "rtz", "is_meshgrid": True, "sym": False}, - **_bounce2d_doc, + **_Bounce2D_doc, ) @partial( - jit, static_argnames=["num_transit", "N_B", "num_quad", "num_pitch", "num_well"] + jit, + static_argnames=[ + "spline", + "Y_B", + "num_transit", + "num_quad", + "num_pitch", + "num_well", + ], ) -def _epsilon_32_2d(params, transforms, profiles, data, **kwargs): +def _epsilon_32_2D(params, transforms, profiles, data, **kwargs): """https://doi.org/10.1063/1.873749. Evaluation of 1/ν neoclassical transport in stellarators. @@ -336,17 +376,18 @@ def _epsilon_32_2d(params, transforms, profiles, data, **kwargs): """ # noqa: unused dependency theta = kwargs["theta"] - N_B = kwargs.get("N_B", theta.shape[-1] * 2) + spline = kwargs.get("spline", True) + Y_B = kwargs.get("Y_B", theta.shape[-1] * 2) + num_transit = kwargs.get("num_transit", 20) if "quad" in kwargs: quad = kwargs["quad"] else: quad = chebgauss2(kwargs.get("num_quad", 32)) - if "length_quad" in kwargs: - length_quad = kwargs["length_quad"] + if "fieldline_quad" in kwargs: + fieldline_quad = kwargs["fieldline_quad"] else: - length_quad = leggauss(N_B // 2) - num_well = kwargs.get("num_well", None) - num_transit = kwargs.get("num_transit", 20) + fieldline_quad = leggauss(Y_B // 2) + num_well = kwargs.get("num_well", Y_B * num_transit) grid = transforms["grid"] def dH(grad_rho_norm_kappa_g, B, pitch, zeta): @@ -368,15 +409,16 @@ def eps_32(data): # Nemov's ∑ⱼ Hⱼ²/Iⱼ = (∂ψ/∂ρ)² (λB₀)³ ``(H**2 / I).sum(axis=-1)``. # (λB₀)³ d(λB₀)⁻¹ = B₀² λ³ d(λ⁻¹) = -B₀² λ dλ. bounce = Bounce2D( - grid=grid, - data=data, - iota=data["iota"], - theta=data["theta"], - N_B=N_B, - num_transit=num_transit, + grid, + data, + data["iota"], + data["theta"], + Y_B, + num_transit, quad=quad, automorphism=None, is_reshaped=True, + spline=spline, ) points = bounce.points(data["pitch_inv"], num_well=num_well) H = bounce.integrate( @@ -388,20 +430,18 @@ def eps_32(data): I = bounce.integrate(dI, data["pitch_inv"], points=points) return ( safediv(H**2, I).sum(axis=-1) - * data["pitch_inv"] ** (-3) * data["pitch_inv weight"] - ).sum(axis=-1) / bounce.compute_length(length_quad) + / data["pitch_inv"] ** 3 + ).sum(axis=-1) / bounce.compute_fieldline_length(fieldline_quad) # Interpolate |∇ρ| κ_g since it is smoother than κ_g alone. - interp_data = {"|grad(rho)|*kappa_g": data["|grad(rho)|"] * data["kappa_g"]} + fun_data = {"|grad(rho)|*kappa_g": data["|grad(rho)|"] * data["kappa_g"]} B0 = data["max_tz |B|"] - data["effective ripple 3/2_2d"] = ( + data["effective ripple 3/2"] = ( jnp.pi / (8 * 2**0.5) * (B0 * data["R0"] / data["<|grad(rho)|>"]) ** 2 - * _compute_2d( - eps_32, interp_data, data, theta, grid, kwargs.get("num_pitch", 50) - ) + * _compute_2D(eps_32, fun_data, data, theta, grid, kwargs.get("num_pitch", 50)) ) return data @@ -411,7 +451,8 @@ def eps_32(data): label="\\epsilon_{\\mathrm{eff}}", units="~", units_long="None", - description="Effective ripple modulation amplitude", + description="Effective ripple modulation amplitude. " + "Uses numerical methods of the Bounce2D class.", dim=1, params=[], transforms={}, @@ -419,31 +460,13 @@ def eps_32(data): coordinates="r", data=["effective ripple 3/2"], ) -def _effective_ripple(params, transforms, profiles, data, **kwargs): +def _effective_ripple_2D(params, transforms, profiles, data, **kwargs): data["effective ripple"] = data["effective ripple 3/2"] ** (2 / 3) return data @register_compute_fun( - name="effective ripple_2d", - label="\\epsilon_{\\mathrm{eff}}", - units="~", - units_long="None", - description="Effective ripple modulation amplitude", - dim=1, - params=[], - transforms={}, - profiles=[], - coordinates="r", - data=["effective ripple 3/2_2d"], -) -def _effective_ripple_2d(params, transforms, profiles, data, **kwargs): - data["effective ripple_2d"] = data["effective ripple 3/2_2d"] ** (2 / 3) - return data - - -@register_compute_fun( - name="Gamma_c Velasco", + name="Gamma_c Velasco*", label=( # Γ_c = π/(8√2) ∫dλ 〈 ∑ⱼ [v τ γ_c²]ⱼ 〉 "\\Gamma_c = \\frac{\\pi}{8 \\sqrt{2}} " @@ -451,19 +474,20 @@ def _effective_ripple_2d(params, transforms, profiles, data, **kwargs): ), units="~", units_long="None", - description="Energetic ion confinement proxy", + description="Energetic ion confinement proxy. " + "Uses the numerical methods of the Bounce1D class.", dim=1, params=[], transforms={"grid": []}, profiles=[], coordinates="r", - data=["min_tz |B|", "max_tz |B|", "cvdrift0", "gbdrift", ""] + data=["min_tz |B|", "max_tz |B|", "cvdrift0", "gbdrift", "fieldline length"] + Bounce1D.required_names, source_grid_requirement={"coordinates": "raz", "is_meshgrid": True}, - **_bounce_doc, + **_Bounce1D_doc, ) @partial(jit, static_argnames=["num_quad", "num_pitch", "num_well", "batch"]) -def _Gamma_c_Velasco(params, transforms, profiles, data, **kwargs): +def _Gamma_c_Velasco_1D(params, transforms, profiles, data, **kwargs): """Energetic ion confinement proxy as defined by Velasco et al. A model for the fast evaluation of prompt losses of energetic ions in stellarators. @@ -489,7 +513,7 @@ def d_v_tau(B, pitch): def drift(f, B, pitch): return safediv(f * (1 - 0.5 * pitch * B), jnp.sqrt(jnp.abs(1 - pitch * B))) - def Gamma_c_Velasco(data): + def Gamma_c(data): """∫ dλ ∑ⱼ [v τ γ_c²]ⱼ.""" bounce = Bounce1D(grid, data, quad, automorphism=None, is_reshaped=True) points = bounce.points(data["pitch_inv"], num_well=num_well) @@ -512,26 +536,23 @@ def Gamma_c_Velasco(data): ), ) ) - return (4 / jnp.pi**2) * ( + return ( (v_tau * gamma_c**2).sum(axis=-1) - * data["pitch_inv"] ** (-2) * data["pitch_inv weight"] + / data["pitch_inv"] ** 2 ).sum(axis=-1) - interp_data = {"cvdrift0": data["cvdrift0"], "gbdrift": data["gbdrift"]} - data["Gamma_c Velasco"] = ( - jnp.pi - / (8 * 2**0.5) - * _compute( - Gamma_c_Velasco, interp_data, data, grid, kwargs.get("num_pitch", 64) - ) - / data[""] + fun_data = {"cvdrift0": data["cvdrift0"], "gbdrift": data["gbdrift"]} + data["Gamma_c Velasco*"] = ( + _compute_1D(Gamma_c, fun_data, data, grid, kwargs.get("num_pitch", 64)) + / data["fieldline length"] + / (2**1.5 * jnp.pi) ) return data @register_compute_fun( - name="Gamma_c", + name="Gamma_c*", label=( # Γ_c = π/(8√2) ∫dλ 〈 ∑ⱼ [v τ γ_c²]ⱼ 〉 "\\Gamma_c = \\frac{\\pi}{8 \\sqrt{2}} " @@ -539,7 +560,8 @@ def Gamma_c_Velasco(data): ), units="~", units_long="None", - description="Energetic ion confinement proxy, Nemov et al.", + description="Energetic ion confinement proxy, Nemov et al. " + "Uses the numerical methods of the Bounce1D class.", dim=1, params=[], transforms={"grid": []}, @@ -552,7 +574,6 @@ def Gamma_c_Velasco(data): "B^phi_r|v,p", "b", "|B|_r|v,p", - "", "iota_r", "grad(phi)", "e^rho", @@ -560,14 +581,15 @@ def Gamma_c_Velasco(data): "|e_alpha|r,p|", "kappa_g", "psi_r", + "fieldline length", ] + Bounce1D.required_names, source_grid_requirement={"coordinates": "raz", "is_meshgrid": True}, - **_bounce_doc, + **_Bounce1D_doc, quad2="Same as ``quad`` for the weak singular integrals in particular.", ) @partial(jit, static_argnames=["num_quad", "num_pitch", "num_well", "batch"]) -def _Gamma_c(params, transforms, profiles, data, **kwargs): +def _Gamma_c_1D(params, transforms, profiles, data, **kwargs): """Energetic ion confinement proxy as defined by Nemov et al. Poloidal motion of trapped particle orbits in real-space coordinates. @@ -663,24 +685,24 @@ def Gamma_c(data): ), ) ) - return (4 / jnp.pi**2) * ( + return ( (v_tau * gamma_c**2).sum(axis=-1) - * data["pitch_inv"] ** (-2) * data["pitch_inv weight"] + / data["pitch_inv"] ** 2 ).sum(axis=-1) # We rewrite equivalents of Nemov et al.'s expression's using single-valued # maps of a physical coordinates. This avoids the computational issues of # multivalued maps. It further enables use of more efficient methods, such as # fast transforms and fixed computational grids throughout optimization, which - # are used in the ``Bounce2D`` operator on a developer branch. Also, Nemov + # are used in the numerical methods of the ``Bounce2D`` class. Also, Nemov # assumes B^ϕ > 0 in some comments; this is not true in DESC, but the # computations done here are invariant to the sign. # It is assumed the grid is sufficiently dense to reconstruct |B|, # so anything smoother than |B| may be captured accurately as a single # spline rather than splining each component. - interp_data = { + fun_data = { "|grad(rho)|*kappa_g": data["|grad(rho)|"] * data["kappa_g"], "|grad(rho)|*|e_alpha|r,p|": data["|grad(rho)|"] * data["|e_alpha|r,p|"], "|B|_psi|v,p": data["|B|_r|v,p"] / data["psi_r"], @@ -691,10 +713,194 @@ def Gamma_c(data): - (2 * data["|B|_r|v,p"] - data["|B|"] * data["B^phi_r|v,p"] / data["B^phi"]) / data["psi_r"], } - data["Gamma_c"] = ( - jnp.pi - / (8 * 2**0.5) - * _compute(Gamma_c, interp_data, data, grid, kwargs.get("num_pitch", 64)) - / data[""] + data["Gamma_c*"] = ( + _compute_1D(Gamma_c, fun_data, data, grid, kwargs.get("num_pitch", 64)) + / data["fieldline length"] + / (2**1.5 * jnp.pi) ) return data + + +@register_compute_fun( + name="Gamma_c", + label=( + # Γ_c = π/(8√2) ∫dλ 〈 ∑ⱼ [v τ γ_c²]ⱼ 〉 + "\\Gamma_c = \\frac{\\pi}{8 \\sqrt{2}} " + "\\int d\\lambda \\langle \\sum_j (v \\tau \\gamma_c^2)_j \\rangle" + ), + units="~", + units_long="None", + description="Energetic ion confinement proxy, Nemov et al. " + "Uses the numerical methods of the Bounce2D class.", + dim=1, + params=[], + transforms={"grid": []}, + profiles=[], + coordinates="r", + data=[ + "min_tz |B|", + "max_tz |B|", + "B^phi", + "B^phi_r|v,p", + "b", + "|B|_r|v,p", + "iota_r", + "grad(phi)", + "e^rho", + "|grad(rho)|", + "|e_alpha|r,p|", + "kappa_g", + "psi_r", + ] + + Bounce2D.required_names, + resolution_requirement="z", # FIXME: GitHub issue #1312. Should be "tz". + # TODO: Uniformly spaced points on (θ, ζ) ∈ [0, 2π) × [0, 2π/NFP) are required. + grid_requirement={"coordinates": "rtz", "is_meshgrid": True, "sym": False}, + **_Bounce2D_doc, + quad2="Same as ``quad`` for the weak singular integrals in particular.", +) +@partial( + jit, + static_argnames=[ + "spline", + "Y_B", + "num_transit", + "num_quad", + "num_pitch", + "num_well", + ], +) +def _Gamma_c_2D(params, transforms, profiles, data, **kwargs): + """Energetic ion confinement proxy as defined by Nemov et al. + + Poloidal motion of trapped particle orbits in real-space coordinates. + V. V. Nemov, S. V. Kasilov, W. Kernbichler, G. O. Leitold. + Phys. Plasmas 1 May 2008; 15 (5): 052501. + https://doi.org/10.1063/1.2912456. + Equation 61. + + The radial electric field has a negligible effect on alpha particle confinement, + so it is assumed to be zero. + """ + # noqa: unused dependency + theta = kwargs["theta"] + spline = kwargs.get("spline", True) + errorif(not spline, NotImplementedError) + Y_B = kwargs.get("Y_B", theta.shape[-1] * 2) + num_transit = kwargs.get("num_transit", 20) + if "quad" in kwargs: + quad = kwargs["quad"] + else: + quad = chebgauss2(kwargs.get("num_quad", 32)) + quad2 = kwargs["quad2"] if "quad2" in kwargs else chebgauss2(quad[0].size) + if "fieldline_quad" in kwargs: + fieldline_quad = kwargs["fieldline_quad"] + else: + fieldline_quad = leggauss(Y_B // 2) + num_well = kwargs.get("num_well", Y_B * num_transit) + grid = transforms["grid"] + + # The derivative (∂/∂ψ)|ϑ,ϕ belongs to flux coordinates which satisfy + # α = ϑ − χ(ψ) ϕ where α is the poloidal label of ψ,α Clebsch coordinates. + # Choosing χ = ι implies ϑ, ϕ are PEST angles. + # ∂G/∂((λB₀)⁻¹) = λ²B₀ ∫ dℓ (1 − λ|B|/2) / √(1 − λ|B|) ∂|B|/∂ψ / |B| + # ∂V/∂((λB₀)⁻¹) = 3/2 λ²B₀ ∫ dℓ √(1 − λ|B|) K / |B| + # ∂g/∂((λB₀)⁻¹) = λ²B₀² ∫ dℓ (1 − λ|B|/2) / √(1 − λ|B|) |∇ψ| κ_g / |B| + # tan(π/2 γ_c) = + # ∫ dℓ (1 − λ|B|/2) / √(1 − λ|B|) |∇ρ| κ_g / |B| + # ---------------------------------------------- + # (|∇ρ| ‖e_α|ρ,ϕ‖)ᵢ ∫ dℓ [ (1 − λ|B|/2)/√(1 − λ|B|) ∂|B|/∂ψ + √(1 − λ|B|) K ] / |B| + + def d_v_tau(B, pitch, zeta): + return safediv(2.0, jnp.sqrt(jnp.abs(1 - pitch * B))) + + def drift1(grad_rho_norm_kappa_g, B, pitch, zeta): + return ( + safediv(1 - 0.5 * pitch * B, jnp.sqrt(jnp.abs(1 - pitch * B))) + * grad_rho_norm_kappa_g + / B + ) + + def drift2(B_psi, B, pitch, zeta): + return ( + safediv(1 - 0.5 * pitch * B, jnp.sqrt(jnp.abs(1 - pitch * B))) * B_psi / B + ) + + def drift3(K, B, pitch, zeta): + return jnp.sqrt(jnp.abs(1 - pitch * B)) * K / B + + def Gamma_c(data): + """∫ dλ ∑ⱼ [v τ γ_c²]ⱼ.""" + bounce = Bounce2D( + grid, + data, + data["iota"], + data["theta"], + Y_B, + num_transit, + quad=quad, + automorphism=None, + is_reshaped=True, + spline=spline, + ) + points = bounce.points(data["pitch_inv"], num_well=num_well) + v_tau = bounce.integrate(d_v_tau, data["pitch_inv"], points=points) + gamma_c = jnp.arctan( + safediv( + bounce.integrate( + drift1, + data["pitch_inv"], + data["|grad(rho)|*kappa_g"], + points=points, + ), + ( + bounce.integrate( + drift2, data["pitch_inv"], data["|B|_psi|v,p"], points=points + ) + + bounce.integrate( + drift3, data["pitch_inv"], data["K"], points=points, quad=quad2 + ) + ) + * interp_fft_to_argmin( + bounce._NFP, + bounce._c["T(z)"], + data["|grad(rho)|*|e_alpha|r,p|"], + points, + bounce._c["knots"], + bounce._c["B(z)"], + polyder_vec(bounce._c["B(z)"]), + ), + ) + ) + return ( + (v_tau * gamma_c**2).sum(axis=-1) + * data["pitch_inv weight"] + / data["pitch_inv"] ** 2 + ).sum(axis=-1) / bounce.compute_fieldline_length(fieldline_quad) + + # We rewrite equivalents of Nemov et al.'s expression's using single-valued + # maps of a physical coordinates. This avoids the computational issues of + # multivalued maps. It further enables use of more efficient methods, such as + # fast transforms and fixed computational grids throughout optimization, which + # are used in the numerical methods of the ``Bounce2D`` class. Also, Nemov + # assumes B^ϕ > 0 in some comments; this is not true in DESC, but the + # computations done here are invariant to the sign. + + # It is assumed the grid is sufficiently dense to reconstruct |B|, + # so anything smoother than |B| may be captured accurately as a single + # Fourier series rather than transforming each component. + fun_data = { + "|grad(rho)|*kappa_g": data["|grad(rho)|"] * data["kappa_g"], + "|grad(rho)|*|e_alpha|r,p|": data["|grad(rho)|"] * data["|e_alpha|r,p|"], + "|B|_psi|v,p": data["|B|_r|v,p"] / data["psi_r"], + "K": data["iota_r"] * dot(cross(data["e^rho"], data["b"]), data["grad(phi)"]) + # Behaves as ∂log(|B|²/B^ϕ)/∂ψ |B| if one ignores the issue of a log argument + # with units. Smoothness determined by positive lower bound of log argument, + # and hence behaves as ∂log(|B|)/∂ψ |B| = ∂|B|/∂ψ. + - (2 * data["|B|_r|v,p"] - data["|B|"] * data["B^phi_r|v,p"] / data["B^phi"]) + / data["psi_r"], + } + data["Gamma_c"] = _compute_2D( + Gamma_c, fun_data, data, theta, grid, kwargs.get("num_pitch", 64) + ) / (2**1.5 * jnp.pi) + return data diff --git a/desc/integrals/bounce_integral.py b/desc/integrals/bounce_integral.py index 7a5c4d8cf9..c14b94978f 100644 --- a/desc/integrals/bounce_integral.py +++ b/desc/integrals/bounce_integral.py @@ -53,7 +53,9 @@ def check_points(self, points, pitch_inv, *, plot=True, **kwargs): """Check that bounce points are computed correctly.""" @abstractmethod - def integrate(self, integrand, pitch_inv, f=None, weight=None, points=None): + def integrate( + self, integrand, pitch_inv, f=None, weight=None, points=None, *, quad=None + ): """Bounce integrate ∫ f(λ, ℓ) dℓ.""" @@ -82,8 +84,9 @@ class Bounce2D(Bounce): the particle's guiding center trajectory traveling in the direction of increasing field-line-following coordinate ζ. - Brief description of algorithm - ------------------------------ + + Overview + -------- Magnetic field line with label α, defined by B = ∇ρ × ∇α, is determined from α : ρ, θ, ζ ↦ θ + λ(ρ,θ,ζ) − ι(ρ) [ζ + ω(ρ,θ,ζ)] Interpolate Fourier-Chebyshev series to DESC poloidal coordinate. @@ -102,8 +105,8 @@ class Bounce2D(Bounce): In that case, supply the single valued parts, which will be interpolated with FFTs, and use the provided coordinates θ,ζ ∈ ℝ to compose G. - Notes for developers - -------------------- + Notes + ----- For applications which reduce to computing a nonlinear function of distance along field lines between bounce points, it is required to identify these points with field-line-following coordinates. (In the special case of a linear @@ -234,8 +237,8 @@ class Bounce2D(Bounce): * 2D interpolation enables tracing the field line for many toroidal transits. * The drawback is that evaluating a Fourier series with resolution F at Q non-uniform quadrature points takes 𝒪([F+Q] log[F] log[1/ε]) time - whereas cubic splines take 𝒪(C Q) time. Still, F decreases as - NFP increases whereas C increases, and Q >> F and C. + whereas cubic splines take 𝒪(C Q) time. However, as NFP increases, + F decreases whereas C increases. Also, Q >> F and Q >> C. Attributes ---------- @@ -288,7 +291,7 @@ def __init__( theta : jnp.ndarray Shape (num rho, X, Y). DESC coordinates θ sourced from the Clebsch coordinates - ``FourierChebyshevSeries.nodes(M,N,L,domain=(0,2*jnp.pi))``. + ``FourierChebyshevSeries.nodes(X,Y,rho,domain=(0,2*jnp.pi))``. Y_B : int Desired Chebyshev spectral resolution for |B|. Default is to double the resolution of ``theta``. @@ -325,8 +328,11 @@ def __init__( Flag for debugging. Must be false for JAX transformations. spline : bool Whether to use cubic splines to compute bounce points. - Default is true. This is useful since the efficient root-finding - on Chebyshev series algorithm is not yet implemented. + Default is true, because the algorithm for efficient root-finding on + Chebyshev series algorithm is not yet implemented. + When using splines, it is recommended to reduce the ``num_well`` + parameter in the ``points`` method from ``3*Y_B*num_transit`` to + ``Y_B*num_transit``. """ errorif(grid.sym, NotImplementedError, msg="Need grid that works with FFTs.") @@ -413,9 +419,8 @@ def compute_theta(eq, X=16, Y=32, rho=1.0, clebsch=None, **kwargs): rho : float or jnp.ndarray Flux surfaces labels in [0, 1] on which to compute. clebsch : jnp.ndarray - Optional, Clebsch coordinate tensor-product grid (ρ, α, ζ). - ``FourierChebyshevSeries.nodes(M,N,L,domain=(0,2*jnp.pi))``. - If given, ``rho`` is ignored. + Optional, precomputed Clebsch coordinate tensor-product grid (ρ, α, ζ). + ``FourierChebyshevSeries.nodes(X,Y,rho,domain=(0,2*jnp.pi))``. kwargs Additional parameters to supply to the coordinate mapping function. See ``desc.equilibrium.Equilibrium.map_coordinates``. @@ -559,6 +564,7 @@ def integrate( *, check=False, plot=False, + quad=None, ): """Bounce integrate ∫ f(λ, ℓ) dℓ. @@ -607,6 +613,9 @@ def integrate( plot : bool Whether to plot the quantities in the integrand interpolated to the quadrature points of each integral. Ignored if ``check`` is false. + quad : tuple[jnp.ndarray] + Optional quadrature points and weights. If given this overrides + the quadrature chosen when this object was made. Returns ------- @@ -626,7 +635,15 @@ def integrate( pitch_inv = atleast_nd(self._c["T(z)"].cheb.ndim - 1, pitch_inv).T result = self._integrate( - integrand, pitch_inv, setdefault(f, []), z1, z2, check, plot + self._x if quad is None else quad[0], + self._w if quad is None else quad[1], + integrand, + pitch_inv, + setdefault(f, []), + z1, + z2, + check, + plot, ) if weight is not None: errorif( @@ -645,7 +662,7 @@ def integrate( ) return _swap_pl(result) - def _integrate(self, integrand, pitch_inv, f, z1, z2, check, plot): + def _integrate(self, x, w, integrand, pitch_inv, f, z1, z2, check, plot): """Bounce integrate ∫ f(λ, ℓ) dℓ. Parameters @@ -665,10 +682,10 @@ def _integrate(self, integrand, pitch_inv, f, z1, z2, check, plot): """ if not isinstance(f, (list, tuple)): f = [f] - shape = [*z1.shape, self._x.size] # num pitch, num rho, num well, num quad + shape = [*z1.shape, x.size] # num pitch, num rho, num well, num quad # ζ ∈ ℝ and θ ∈ ℝ coordinates of quadrature points zeta = flatten_matrix( - bijection_from_disc(self._x, z1[..., jnp.newaxis], z2[..., jnp.newaxis]) + bijection_from_disc(x, z1[..., jnp.newaxis], z2[..., jnp.newaxis]) ) theta = self._c["T(z)"].eval1d(zeta) @@ -708,7 +725,7 @@ def _integrate(self, integrand, pitch_inv, f, z1, z2, check, plot): integrand(*f, B=B, pitch=1 / pitch_inv[..., jnp.newaxis], zeta=zeta) * B / B_sup_z - ).reshape(shape).dot(self._w) * grad_bijection_from_disc(z1, z2) + ).reshape(shape).dot(w) * grad_bijection_from_disc(z1, z2) if check: shape[-3], shape[0] = shape[0], shape[-3] @@ -722,7 +739,7 @@ def _integrate(self, integrand, pitch_inv, f, z1, z2, check, plot): return result - def compute_length(self, quad=None): + def compute_fieldline_length(self, quad=None): """Compute the proper length of the field line ∫ dℓ / |B|. Parameters @@ -730,7 +747,7 @@ def compute_length(self, quad=None): quad : tuple[jnp.ndarray] Quadrature points xₖ and weights wₖ for the approximate evaluation of the integral ∫₋₁¹ f(x) dx ≈ ∑ₖ wₖ f(xₖ). - Number of points equal to half the Chebyshev resolution of |B| works well. + Resolution equal to half the Chebyshev resolution of |B| works well. Returns ------- @@ -876,8 +893,8 @@ class Bounce1D(Bounce): the particle's guiding center trajectory traveling in the direction of increasing field-line-following coordinate ζ. - Notes for developers - -------------------- + Notes + ----- For applications which reduce to computing a nonlinear function of distance along field lines between bounce points, it is required to identify these points with field-line-following coordinates. (In the special case of a linear diff --git a/desc/objectives/_neoclassical.py b/desc/objectives/_neoclassical.py index 7f537143ed..7806c65c77 100644 --- a/desc/objectives/_neoclassical.py +++ b/desc/objectives/_neoclassical.py @@ -202,7 +202,7 @@ def build(self, use_jit=True, verbose=1): self._keys_1dr, eq, self._grid_1dr ) self._constants["profiles"] = get_profiles( - self._keys_1dr + ["effective ripple"], eq, self._grid_1dr + self._keys_1dr + ["effective ripple*"], eq, self._grid_1dr ) timer.stop("Precomputing transforms") @@ -259,15 +259,15 @@ def compute(self, params, constants=None): } data = compute_fun( eq, - "effective ripple", + "effective ripple*", params, - get_transforms("effective ripple", eq, grid, jitable=True), + get_transforms("effective ripple*", eq, grid, jitable=True), constants["profiles"], data=data, quad=constants["quad"], **self._hyperparameters, ) - return grid.compress(data["effective ripple"]) + return grid.compress(data["effective ripple*"]) class GammaC(_Objective): @@ -416,10 +416,10 @@ def __init__( } self._keys_1dr = ["iota", "iota_r", "min_tz |B|", "max_tz |B|"] if Nemov: - self._key = "Gamma_c" + self._key = "Gamma_c*" self._constants["quad2"] = chebgauss2(num_quad) else: - self._key = "Gamma_c Velasco" + self._key = "Gamma_c Velasco*" super().__init__( things=eq, diff --git a/tests/baseline/test_Gamma_c.png b/tests/baseline/test_Gamma_c_1D.png similarity index 99% rename from tests/baseline/test_Gamma_c.png rename to tests/baseline/test_Gamma_c_1D.png index 0c0179993166ef5600833bcba783c283ec662e09..1fd76f6248e8c1f040abeb80ed9757c4461915e6 100644 GIT binary patch delta 43 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 diff --git a/tests/baseline/test_effective_ripple.png b/tests/baseline/test_effective_ripple.png deleted file mode 100644 index 13a13596ff18b957a58a5d96bcfb4d336b18bea7..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 13908 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 diff --git a/tests/baseline/test_effective_ripple_1D.png b/tests/baseline/test_effective_ripple_1D.png new file mode 100644 index 0000000000000000000000000000000000000000..6f08cb6be8ea57ef0f244d2bdf27ebd754274319 GIT binary patch literal 23872 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 Gum2tVKs5>g literal 0 HcmV?d00001 diff --git a/tests/test_integrals.py b/tests/test_integrals.py index f8fec9b624..63f4d820f6 100644 --- a/tests/test_integrals.py +++ b/tests/test_integrals.py @@ -1060,7 +1060,6 @@ def test_quad_compare(self, is_strong, B): """Compare quadratures in W-shaped wells.""" x = np.linspace(-1, 1, 1000) plt.plot(x, B(x)) - plt.show() def func(x): w1 = jnp.sqrt(jnp.clip(2 - B(x), 0, jnp.inf)) @@ -1069,7 +1068,6 @@ def func(x): return w1 plt.plot(x, func(x)) - plt.show() truth, info = quadax.quadts(func, interval=(-1, 1)) print("\n" + 50 * "---" + f"\nTrue value: {truth}, neval: {info[1]}") @@ -1760,8 +1758,8 @@ def test_bounce2d_checks(self): print("ρ:", rho[l]) np.testing.assert_allclose( - bounce.compute_length(), - # Computed data below through with Simpson's rule at 800 nodes. + bounce.compute_fieldline_length(), + # Computed below through "fieldline length" with Simpson's rule 800 points. # The difference is likely due to interpolation and floating point error. # (On the version of JAX on which rtol was set, there is a bug with DCT # and FFT that limit the accuracy to something comparable to 32 bit). diff --git a/tests/test_neoclassical.py b/tests/test_neoclassical.py index 3924e89628..88d634b769 100644 --- a/tests/test_neoclassical.py +++ b/tests/test_neoclassical.py @@ -17,8 +17,8 @@ @pytest.mark.unit -def test_field_line_average(): - """Test that field line average converges to surface average.""" +def test_fieldline_average(): + """Test that fieldline average converges to surface average.""" rho = np.array([1]) alpha = np.array([0]) eq = get("DSHAPE") @@ -27,54 +27,70 @@ def test_field_line_average(): # For axisymmetric devices, one poloidal transit must be exact. zeta = np.linspace(0, 2 * np.pi / iota, 25) grid = get_rtz_grid(eq, rho, alpha, zeta, coordinates="raz") - data = eq.compute(["", "", "V_r(r)"], grid=grid) + data = eq.compute( + ["fieldline length", "fieldline length/volume", "V_r(r)"], grid=grid + ) np.testing.assert_allclose( - data[""] / data[""], data["V_r(r)"] / (4 * np.pi**2), rtol=1e-3 + data["fieldline length"] / data["fieldline length/volume"], + data["V_r(r)"] / (4 * np.pi**2), + rtol=1e-3, ) - assert np.all(np.sign(data[""]) > 0) - assert np.all(np.sign(data[""]) > 0) + assert np.all(data["fieldline length"] > 0) + assert np.all(data["fieldline length/volume"] > 0) # Otherwise, many toroidal transits are necessary to sample surface. eq = get("W7-X") zeta = np.linspace(0, 40 * np.pi, 300) grid = get_rtz_grid(eq, rho, alpha, zeta, coordinates="raz") - data = eq.compute(["", "", "V_r(r)"], grid=grid) + data = eq.compute( + ["fieldline length", "fieldline length/volume", "V_r(r)"], grid=grid + ) np.testing.assert_allclose( - data[""] / data[""], data["V_r(r)"] / (4 * np.pi**2), rtol=1e-3 + data["fieldline length"] / data["fieldline length/volume"], + data["V_r(r)"] / (4 * np.pi**2), + rtol=1e-3, ) - assert np.all(np.sign(data[""]) > 0) - assert np.all(np.sign(data[""]) > 0) + assert np.all(data["fieldline length"] > 0) + assert np.all(data["fieldline length/volume"] > 0) @pytest.mark.unit @pytest.mark.mpl_image_compare(remove_text=True, tolerance=tol_1d) -def test_effective_ripple(): - """Test effective ripple with W7-X.""" +def test_effective_ripple_1D(): + """Test effective ripple 1D with W7-X against NEO.""" + Y_B = 100 + num_transit = 10 eq = get("W7-X") rho = np.linspace(0, 1, 10) - alpha = np.array([0]) - zeta = np.linspace(0, 20 * np.pi, 1000) - grid = get_rtz_grid(eq, rho, alpha, zeta, coordinates="raz") - data = eq.compute("effective ripple", grid=grid) - assert np.isfinite(data["effective ripple"]).all() + grid = get_rtz_grid( + eq, + rho, + poloidal=np.array([0]), + toroidal=np.linspace(0, num_transit * 2 * np.pi, num_transit * Y_B), + coordinates="raz", + ) + data = eq.compute("effective ripple*", grid=grid) + + assert np.isfinite(data["effective ripple*"]).all() np.testing.assert_allclose( - data["effective ripple 3/2"] ** (2 / 3), - data["effective ripple"], + data["effective ripple 3/2*"] ** (2 / 3), + data["effective ripple*"], err_msg="Bug in source grid logic in eq.compute.", ) - eps_32 = grid.compress(data["effective ripple 3/2"]) - fig, ax = plt.subplots() - ax.plot(rho, eps_32, marker="o") - + eps_32 = grid.compress(data["effective ripple 3/2*"]) neo_rho, neo_eps_32 = NeoIO.read("tests/inputs/neo_out.w7x") np.testing.assert_allclose(eps_32, np.interp(rho, neo_rho, neo_eps_32), rtol=0.16) + + fig, ax = plt.subplots() + ax.plot(rho, eps_32, marker="o") + ax.plot(neo_rho, neo_eps_32) return fig @pytest.mark.unit @pytest.mark.mpl_image_compare(remove_text=True, tolerance=tol_1d) -def test_effective_ripple_2d(): - """Test effective ripple 2d with W7-X.""" +def test_effective_ripple_2D(): + """Test effective ripple 2D with W7-X against NEO.""" eq = get("W7-X") rho = np.linspace(0, 1, 10) grid = Grid.create_meshgrid( @@ -82,50 +98,90 @@ def test_effective_ripple_2d(): period=(np.inf, 2 * np.pi, 2 * np.pi / eq.NFP), NFP=eq.NFP, ) - theta = Bounce2D.compute_theta(eq, M=16, N=64, rho=rho) - data = eq.compute("effective ripple_2d", grid=grid, theta=theta, num_transit=10) - assert np.isfinite(data["effective ripple_2d"]).all() - np.testing.assert_allclose( - data["effective ripple 3/2_2d"] ** (2 / 3), - data["effective ripple_2d"], - err_msg="Bug in source grid logic in eq.compute.", + data = eq.compute( + "effective ripple 3/2", + grid=grid, + theta=Bounce2D.compute_theta(eq, X=16, Y=64, rho=rho), + Y_B=100, + num_transit=10, + num_quad=33, + spline=True, ) - eps_32 = grid.compress(data["effective ripple 3/2_2d"]) + + assert np.isfinite(data["effective ripple 3/2"]).all() + eps_32 = grid.compress(data["effective ripple 3/2"]) + neo_rho, neo_eps_32 = NeoIO.read("tests/inputs/neo_out.w7x") + np.testing.assert_allclose(eps_32, np.interp(rho, neo_rho, neo_eps_32), rtol=0.06) + fig, ax = plt.subplots() ax.plot(rho, eps_32, marker="o") - plt.show() + ax.plot(neo_rho, neo_eps_32) + return fig - neo_rho, neo_eps_32 = NeoIO.read("tests/inputs/neo_out.w7x") - np.testing.assert_allclose(eps_32, np.interp(rho, neo_rho, neo_eps_32), rtol=0.16) + +@pytest.mark.unit +@pytest.mark.mpl_image_compare(remove_text=True, tolerance=tol_1d) +def test_Gamma_c_Velasco_1D(): + """Test Γ_c Velasco 1D with W7-X.""" + Y_B = 100 + num_transit = 10 + eq = get("W7-X") + rho = np.linspace(0, 1, 10) + grid = get_rtz_grid( + eq, + rho, + poloidal=np.array([0]), + toroidal=np.linspace(0, num_transit * 2 * np.pi, num_transit * Y_B), + coordinates="raz", + ) + data = eq.compute("Gamma_c Velasco*", grid=grid) + assert np.isfinite(data["Gamma_c Velasco*"]).all() + fig, ax = plt.subplots() + ax.plot(rho, grid.compress(data["Gamma_c Velasco*"]), marker="o") return fig @pytest.mark.unit @pytest.mark.mpl_image_compare(remove_text=True, tolerance=tol_1d) -def test_Gamma_c_Velasco(): - """Test Γ_c with W7-X.""" +def test_Gamma_c_1D(): + """Test Γ_c Nemov 1D with W7-X.""" + Y_B = 100 + num_transit = 10 eq = get("W7-X") rho = np.linspace(0, 1, 10) - grid = eq._get_rtz_grid( - rho, np.array([0]), np.linspace(0, 20 * np.pi, 1000), coordinates="raz" + grid = get_rtz_grid( + eq, + rho, + poloidal=np.array([0]), + toroidal=np.linspace(0, num_transit * 2 * np.pi, num_transit * Y_B), + coordinates="raz", ) - data = eq.compute("Gamma_c Velasco", grid=grid) - assert np.isfinite(data["Gamma_c Velasco"]).all() + data = eq.compute("Gamma_c*", grid=grid) + assert np.isfinite(data["Gamma_c*"]).all() fig, ax = plt.subplots() - ax.plot(rho, grid.compress(data["Gamma_c Velasco"]), marker="o") + ax.plot(rho, grid.compress(data["Gamma_c*"]), marker="o") return fig @pytest.mark.unit @pytest.mark.mpl_image_compare(remove_text=True, tolerance=tol_1d) -def test_Gamma_c(): - """Test Γ_c Nemov with W7-X.""" +def test_Gamma_c_2D(): + """Test Γ_c Nemov 2D with W7-X.""" eq = get("W7-X") rho = np.linspace(0, 1, 10) - grid = eq._get_rtz_grid( - rho, np.array([0]), np.linspace(0, 20 * np.pi, 1000), coordinates="raz" + grid = Grid.create_meshgrid( + [rho, fourier_pts(eq.M_grid), fourier_pts(eq.N_grid) / eq.NFP], + period=(np.inf, 2 * np.pi, 2 * np.pi / eq.NFP), + NFP=eq.NFP, + ) + data = eq.compute( + "Gamma_c", + grid=grid, + theta=Bounce2D.compute_theta(eq, X=16, Y=64, rho=rho), + Y_B=100, + num_transit=10, + spline=True, ) - data = eq.compute("Gamma_c", grid=grid) assert np.isfinite(data["Gamma_c"]).all() fig, ax = plt.subplots() ax.plot(rho, grid.compress(data["Gamma_c"]), marker="o") From 8a8e8f2ec9df4640f3d9964d1570795f1cc49d9d Mon Sep 17 00:00:00 2001 From: unalmis Date: Sun, 20 Oct 2024 10:48:23 -0400 Subject: [PATCH 04/60] Updating epsilon and gamma objectives with Bounce2D --- desc/compute/_neoclassical.py | 12 +- desc/equilibrium/coords.py | 12 +- desc/equilibrium/equilibrium.py | 10 +- desc/grid.py | 19 +- desc/integrals/bounce_integral.py | 11 +- desc/objectives/_neoclassical.py | 309 ++++++++++++++++-------------- tests/test_integrals.py | 7 +- tests/test_objective_funs.py | 2 +- 8 files changed, 207 insertions(+), 175 deletions(-) diff --git a/desc/compute/_neoclassical.py b/desc/compute/_neoclassical.py index bf49febcd2..0e83a21182 100644 --- a/desc/compute/_neoclassical.py +++ b/desc/compute/_neoclassical.py @@ -1,18 +1,18 @@ """Compute functions for neoclassical transport. Performance will improve significantly by resolving these GitHub issues. - -* ``1154`` Improve coordinate mapping performance -* ``1294`` Nonuniform fast transforms -* ``1303`` Patch for differentiable code with dynamic shapes -* ``1206`` Upsample data above midplane to full grid assuming stellarator symmetry -* ``1034`` Optimizers/objectives with auxilary output + * ``1154`` Improve coordinate mapping performance + * ``1294`` Nonuniform fast transforms + * ``1303`` Patch for differentiable code with dynamic shapes + * ``1206`` Upsample data above midplane to full grid assuming stellarator symmetry + * ``1034`` Optimizers/objectives with auxiliary output If memory is still an issue, consider computing one pitch at a time. This can be done by copy-pasting the code given at https://github.com/PlasmaControl/DESC/pull/1003#discussion_r1780459450. Note that imap supports computing in batches, so that can also be used. Make sure to benchmark whether this reduces memory in an optimization. + """ from functools import partial diff --git a/desc/equilibrium/coords.py b/desc/equilibrium/coords.py index 39200abf23..b4bc5adce4 100644 --- a/desc/equilibrium/coords.py +++ b/desc/equilibrium/coords.py @@ -105,7 +105,11 @@ def map_coordinates( # noqa: C901 f"don't have recipe to compute partial derivative {key}", ) - profiles = get_profiles(inbasis + basis_derivs, eq) + profiles = ( + kwargs["profiles"] + if "profiles" in kwargs + else get_profiles(inbasis + basis_derivs, eq) + ) # TODO: make this work for permutations of in/out basis if outbasis == ("rho", "theta", "zeta"): @@ -114,7 +118,9 @@ def map_coordinates( # noqa: C901 iota = kwargs.pop("iota") else: if profiles["iota"] is None: - profiles["iota"] = eq.get_profile(["iota", "iota_r"], params=params) + profiles["iota"] = eq.get_profile( + ["iota", "iota_r"], params=params, **kwargs + ) iota = profiles["iota"].compute(Grid(coords, sort=False, jitable=True)) return _map_clebsch_coordinates( coords=coords, @@ -143,7 +149,7 @@ def map_coordinates( # noqa: C901 # do surface average to get iota once if "iota" in profiles and profiles["iota"] is None: - profiles["iota"] = eq.get_profile(["iota", "iota_r"], params=params) + profiles["iota"] = eq.get_profile(["iota", "iota_r"], params=params, **kwargs) params["i_l"] = profiles["iota"].params rhomin = kwargs.pop("rhomin", tol / 10) diff --git a/desc/equilibrium/equilibrium.py b/desc/equilibrium/equilibrium.py index cccd4b23ac..cb1415050f 100644 --- a/desc/equilibrium/equilibrium.py +++ b/desc/equilibrium/equilibrium.py @@ -909,13 +909,13 @@ def need_src(name): # the compute logic assume input data is evaluated on those coordinates. # We exclude these from the depXdx sets below since the grids we will # use to compute those dependencies are coordinate-blind. - # Example, "" has coordinates="r", but requires computing on - # field line following source grid. + # Example, "fieldline length" has coordinates="r", but requires computing + # on field line following source grid. return bool(data_index[p][name]["source_grid_requirement"]) - # Need to call _grow_seeds so that some other quantity like K = 2 * , - # which does not need a source grid to evaluate, does not compute on a - # grid that does not follow field lines. + # Need to call _grow_seeds so that e.g. "effective ripple*" which does not + # need a source grid to evaluate, still computes "effective ripple 3/2*" + # on a grid whose source grid follows field lines. # Maybe this can help explain: # https://github.com/PlasmaControl/DESC/pull/1024#discussion_r1664918897. need_src_deps = _grow_seeds(p, set(filter(need_src, deps)), deps) diff --git a/desc/grid.py b/desc/grid.py index e0eeac8444..9cd2b143fe 100644 --- a/desc/grid.py +++ b/desc/grid.py @@ -646,6 +646,13 @@ def meshgrid_reshape(self, x, order): x = jnp.transpose(x, newax) return x + def to_numpy(self): + """Convert all jax array attributes to numpy arrays.""" + for attr in self.__dict__: + value = getattr(self, attr) + if isinstance(value, jnp.ndarray): + setattr(self, attr, np.array(value)) + class Grid(_Grid): """Collocation grid with custom node placement. @@ -808,9 +815,9 @@ def create_meshgrid( a, b, c = jnp.atleast_1d(*nodes) if spacing is None: errorif(coordinates[0] != "r", NotImplementedError) - da = _midpoint_spacing(a) - db = _periodic_spacing(b, period[1])[1] - dc = _periodic_spacing(c, period[2])[1] * NFP + da = _midpoint_spacing(a, jnp=jnp) + db = _periodic_spacing(b, period[1], jnp=jnp)[1] + dc = _periodic_spacing(c, period[2], jnp=jnp)[1] * NFP else: da, db, dc = spacing @@ -839,10 +846,7 @@ def create_meshgrid( repeat(unique_a_idx // b.size, b.size, total_repeat_length=a.size * b.size), c.size, ) - inverse_b_idx = jnp.tile( - unique_b_idx, - a.size * c.size, - ) + inverse_b_idx = jnp.tile(unique_b_idx, a.size * c.size) inverse_c_idx = repeat(unique_c_idx // (a.size * b.size), (a.size * b.size)) return Grid( nodes=nodes, @@ -853,7 +857,6 @@ def create_meshgrid( NFP=NFP, sort=False, is_meshgrid=True, - jitable=True, _unique_rho_idx=unique_a_idx, _unique_poloidal_idx=unique_b_idx, _unique_zeta_idx=unique_c_idx, diff --git a/desc/integrals/bounce_integral.py b/desc/integrals/bounce_integral.py index c14b94978f..91a325e7d5 100644 --- a/desc/integrals/bounce_integral.py +++ b/desc/integrals/bounce_integral.py @@ -403,7 +403,7 @@ def reshape_data(grid, *arys): # θ(α, ζ) since these are related to lambda. @staticmethod - def compute_theta(eq, X=16, Y=32, rho=1.0, clebsch=None, **kwargs): + def compute_theta(eq, X=16, Y=32, rho=1.0, iota=None, clebsch=None, **kwargs): """Return DESC coordinates θ of (α,ζ) Fourier Chebyshev basis nodes. Parameters @@ -417,10 +417,16 @@ def compute_theta(eq, X=16, Y=32, rho=1.0, clebsch=None, **kwargs): Grid resolution in toroidal direction for Clebsch coordinate grid. Preferably power of 2. rho : float or jnp.ndarray + Shape (num rho, ). Flux surfaces labels in [0, 1] on which to compute. + iota : float or jnp.ndarray + Shape (num rho, ). + Optional, rotational transform on the flux surfaces to compute on. clebsch : jnp.ndarray + Shape (num rho * X * Y, 3). Optional, precomputed Clebsch coordinate tensor-product grid (ρ, α, ζ). ``FourierChebyshevSeries.nodes(X,Y,rho,domain=(0,2*jnp.pi))``. + If supplied ``rho`` is ignored. kwargs Additional parameters to supply to the coordinate mapping function. See ``desc.equilibrium.Equilibrium.map_coordinates``. @@ -435,6 +441,9 @@ def compute_theta(eq, X=16, Y=32, rho=1.0, clebsch=None, **kwargs): """ if clebsch is None: clebsch = FourierChebyshevSeries.nodes(X, Y, rho, domain=(0, 2 * jnp.pi)) + if iota is not None: + iota = jnp.atleast_1d(iota) + kwargs["iota"] = jnp.broadcast_to(iota, shape=(Y, X, iota.size)).T.ravel() return eq.map_coordinates( coords=clebsch, inbasis=("rho", "alpha", "zeta"), diff --git a/desc/objectives/_neoclassical.py b/desc/objectives/_neoclassical.py index 7806c65c77..025cfee955 100644 --- a/desc/objectives/_neoclassical.py +++ b/desc/objectives/_neoclassical.py @@ -1,13 +1,27 @@ -"""Objectives for targeting neoclassical transport.""" +"""Objectives for targeting neoclassical transport. + +Notes +----- +Performance will improve significantly by resolving these GitHub issues. + * ``1154`` Improve coordinate mapping performance + * ``1294`` Nonuniform fast transforms + * ``1303`` Patch for differentiable code with dynamic shapes + * ``1206`` Upsample data above midplane to full grid assuming stellarator symmetry + * ``1034`` Optimizers/objectives with auxiliary output + +""" import numpy as np from orthax.legendre import leggauss from desc.compute import get_profiles, get_transforms from desc.compute.utils import _compute as compute_fun -from desc.grid import LinearGrid -from desc.utils import Timer +from desc.grid import Grid +from desc.utils import Timer, setdefault +from ..integrals import Bounce2D +from ..integrals.basis import FourierChebyshevSeries +from ..integrals.interp_utils import fourier_pts from ..integrals.quad_utils import ( automorphism_sin, chebgauss2, @@ -69,13 +83,20 @@ class EffectiveRipple(_Objective): "auto" selects forward or reverse mode based on the size of the input and output of the objective. Has no effect on self.grad or self.hess which always use reverse mode and forward over reverse mode respectively. - rho : ndarray - Unique coordinate values specifying flux surfaces to compute on. - alpha : ndarray - Unique coordinate values specifying field line labels to compute on. - knots_per_transit : int - Number of points per toroidal transit at which to sample data along field - line. Default is 100. + grid : Grid, optional + Tensor-product grid in (ρ, θ, ζ) with uniformly spaced nodes + [0, 2π) × [0, 2π/NFP). That is, the M, N number of θ, ζ nodes must match + the output of ``fourier_pts(M)``, ``fourier_pts(N)/eq.NFP``, respectively. + ``M`` and ``N`` are preferably power of two. + X : int + Grid resolution in poloidal direction for Clebsch coordinate grid. + Preferably power of 2. + Y : int + Grid resolution in toroidal direction for Clebsch coordinate grid. + Preferably power of 2. + Y_B : int + Desired resolution for |B| along field lines to compute bounce points. + Default is to double ``Y``. num_transit : int Number of toroidal transits to follow field line. For axisymmetric devices, one poloidal transit is sufficient. Otherwise, @@ -84,8 +105,6 @@ class EffectiveRipple(_Objective): Resolution for quadrature of bounce integrals. Default is 32. num_pitch : int Resolution for quadrature over velocity coordinate. Default is 50. - batch : bool - Whether to vectorize part of the computation. Default is true. num_well : int Maximum number of wells to detect for each pitch and field line. Default is to detect all wells, but due to limitations in JAX this option @@ -121,14 +140,15 @@ def __init__( normalize_target=True, loss_function=None, deriv_mode="auto", - rho=1.0, - alpha=0.0, + grid=None, *, - knots_per_transit=100, - num_transit=10, + X=16, # X is cheap to increase. + Y=32, + # Y_B is expensive to increase if one does not fix num well per transit. + Y_B=None, + num_transit=20, num_quad=32, num_pitch=50, - batch=True, num_well=None, name="Effective ripple", jac_chunk_size=None, @@ -136,29 +156,15 @@ def __init__( if target is None and bounds is None: target = 0.0 - rho, alpha = np.atleast_1d(rho, alpha) - self._dim_f = rho.size - self._keys_1dr = [ - "iota", - "iota_r", - "<|grad(rho)|>", - "min_tz |B|", - "max_tz |B|", - "R0", # TODO: GitHub PR #1094 - ] - self._constants = { - "quad_weights": 1, - "rho": rho, - "alpha": alpha, - "zeta": np.linspace( - 0, 2 * np.pi * num_transit, knots_per_transit * num_transit - ), - "quad": chebgauss2(num_quad), - } - self._hyperparameters = { + self._grid = grid + self._X = X + self._Y = Y + self._constants = {"quad_weights": 1, "quad": chebgauss2(num_quad)} + self._hyperparam = { + "Y_B": setdefault(Y_B, 2 * Y), + "num_transit": num_transit, "num_pitch": num_pitch, - "batch": batch, - "num_well": num_well, + "num_well": setdefault(num_well, Y_B * num_transit), } super().__init__( @@ -186,23 +192,38 @@ def build(self, use_jit=True, verbose=1): """ eq = self.things[0] - self._grid_1dr = LinearGrid( - rho=self._constants["rho"], M=eq.M_grid, N=eq.N_grid, NFP=eq.NFP, sym=eq.sym - ) + if self._grid is None: + self._grid = Grid.create_meshgrid( + # Multiply equilibrium resolution by 2 instead of using eq.*_grid + # because the eq.*_grid integers are odd, and we'd like them to be + # powers of two or at least even. + [1.0, fourier_pts(eq.M * 2), fourier_pts(max(1, eq.N) * 2) / eq.NFP], + period=(np.inf, 2 * np.pi, 2 * np.pi / eq.NFP), + NFP=eq.NFP, + ) + # Should we call self._grid.to_numpy()? + self._dim_f = self._grid.num_rho self._target, self._bounds = _parse_callable_target_bounds( - self._target, self._bounds, self._constants["rho"] + self._target, self._bounds, self._grid.compress(self._grid.nodes[:, 0]) + ) + self._constants["clebsch"] = FourierChebyshevSeries.nodes( + self._X, + self._Y, + self._grid.compress(self._grid.nodes[:, 0]), + domain=(0, 2 * np.pi), ) + self._constants["fieldline_quad"] = leggauss(self._hyperparam["Y_B"] // 2) timer = Timer() if verbose > 0: print("Precomputing transforms") timer.start("Precomputing transforms") - self._constants["transforms_1dr"] = get_transforms( - self._keys_1dr, eq, self._grid_1dr + self._constants["transforms"] = get_transforms( + "effective ripple", eq, grid=self._grid ) self._constants["profiles"] = get_profiles( - self._keys_1dr + ["effective ripple*"], eq, self._grid_1dr + "effective ripple", eq, grid=self._grid ) timer.stop("Precomputing transforms") @@ -218,56 +239,47 @@ def compute(self, params, constants=None): ---------- params : dict Dictionary of equilibrium degrees of freedom, e.g. - ``Equilibrium.params_dict`` + ``Equilibrium.params_dict``. constants : dict Dictionary of constant data, e.g. transforms, profiles etc. Defaults to ``self.constants``. Returns ------- - result : ndarray + eps_eff : ndarray Effective ripple as a function of the flux surface label. """ + # TODO: GitHub pull request #1094. if constants is None: constants = self.constants eq = self.things[0] - # TODO: compute all deps of effective ripple here data = compute_fun( - eq, - self._keys_1dr, - params, - constants["transforms_1dr"], - constants["profiles"], - ) - # TODO: interpolate all deps to this grid with fft utilities from fourier bounce - grid = eq._get_rtz_grid( - constants["rho"], - constants["alpha"], - constants["zeta"], - coordinates="raz", - iota=self._grid_1dr.compress(data["iota"]), - params=params, + eq, "iota", params, constants["transforms"], constants["profiles"] ) - data = { - key: ( - grid.copy_data_from_other(data[key], self._grid_1dr) - if key != "R0" - else data[key] - ) - for key in self._keys_1dr - } data = compute_fun( eq, - "effective ripple*", + "effective ripple", params, - get_transforms("effective ripple*", eq, grid, jitable=True), + constants["transforms"], constants["profiles"], - data=data, + data, + # TODO: GitHub issue #1034. Use old values as initial guess. + theta=Bounce2D.compute_theta( + eq, + self._X, + self._Y, + iota=constants["transforms"]["grid"].compress(data["iota"]), + clebsch=constants["clebsch"], + # Pass in params so that root finding is done with the new + # perturbed λ coefficients and not the original equilibrium's. + params=params, + ), + fieldline_quad=constants["fieldline_quad"], quad=constants["quad"], - **self._hyperparameters, + **self._hyperparam, ) - return grid.compress(data["effective ripple*"]) + return constants["transforms"]["grid"].compress(data["effective ripple"]) class GammaC(_Objective): @@ -318,23 +330,28 @@ class GammaC(_Objective): "auto" selects forward or reverse mode based on the size of the input and output of the objective. Has no effect on self.grad or self.hess which always use reverse mode and forward over reverse mode respectively. - rho : ndarray - Unique coordinate values specifying flux surfaces to compute on. - alpha : ndarray - Unique coordinate values specifying field line labels to compute on. + grid : Grid, optional + Tensor-product grid in (ρ, θ, ζ) with uniformly spaced nodes + [0, 2π) × [0, 2π/NFP). That is, the M, N number of θ, ζ nodes must match + the output of ``fourier_pts(M)``, ``fourier_pts(N)/eq.NFP``, respectively. + ``M`` and ``N`` are preferably power of two. + X : int + Grid resolution in poloidal direction for Clebsch coordinate grid. + Preferably power of 2. + Y : int + Grid resolution in toroidal direction for Clebsch coordinate grid. + Preferably power of 2. + Y_B : int + Desired resolution for |B| along field lines to compute bounce points. + Default is to double ``Y``. num_transit : int Number of toroidal transits to follow field line. For axisymmetric devices, one poloidal transit is sufficient. Otherwise, more transits will give more accurate result, with diminishing returns. - knots_per_transit : int - Number of points per toroidal transit at which to sample data along field - line. Default is 100. num_quad : int Resolution for quadrature of bounce integrals. Default is 32. num_pitch : int Resolution for quadrature over velocity coordinate. Default is 64. - batch : bool - Whether to vectorize part of the computation. Default is true. num_well : int Maximum number of wells to detect for each pitch and field line. Default is to detect all wells, but due to limitations in JAX this option @@ -382,14 +399,15 @@ def __init__( normalize_target=True, loss_function=None, deriv_mode="auto", - rho=np.linspace(0.5, 1, 3), - alpha=np.array([0]), + grid=None, *, - num_transit=10, - knots_per_transit=100, + X=16, # X is cheap to increase. + Y=32, + # Y_B is expensive to increase if one does not fix num well per transit. + Y_B=None, + num_transit=20, num_quad=32, num_pitch=64, - batch=True, num_well=None, Nemov=True, name="Gamma_c", @@ -398,28 +416,23 @@ def __init__( if target is None and bounds is None: target = 0.0 - rho, alpha = np.atleast_1d(rho, alpha) - self._dim_f = rho.size - self._constants = { - "quad_weights": 1, - "rho": rho, - "alpha": alpha, - "zeta": np.linspace( - 0, 2 * np.pi * num_transit, knots_per_transit * num_transit - ), - } - self._hyperparameters = { + self._grid = grid + self._X = X + self._Y = Y + self._constants = {"quad_weights": 1} + self._hyperparam = { + "Y_B": setdefault(Y_B, 2 * Y), + "num_transit": num_transit, "num_quad": num_quad, "num_pitch": num_pitch, - "batch": batch, - "num_well": num_well, + "num_well": setdefault(num_well, Y_B * num_transit), } - self._keys_1dr = ["iota", "iota_r", "min_tz |B|", "max_tz |B|"] if Nemov: - self._key = "Gamma_c*" + self._key = "Gamma_c" self._constants["quad2"] = chebgauss2(num_quad) else: - self._key = "Gamma_c Velasco*" + self._key = "Gamma_c Velasco" + raise NotImplementedError super().__init__( things=eq, @@ -446,28 +459,39 @@ def build(self, use_jit=True, verbose=1): """ eq = self.things[0] - self._grid_1dr = LinearGrid( - rho=self._constants["rho"], M=eq.M_grid, N=eq.N_grid, NFP=eq.NFP, sym=eq.sym + if self._grid is None: + self._grid = Grid.create_meshgrid( + # Multiply equilibrium resolution by 2 instead of using eq.*_grid + # because the eq.*_grid integers are odd, and we'd like them to be + # powers of two or at least even. + [1.0, fourier_pts(eq.M * 2), fourier_pts(max(1, eq.N) * 2) / eq.NFP], + period=(np.inf, 2 * np.pi, 2 * np.pi / eq.NFP), + NFP=eq.NFP, + ) + # Should we call self._grid.to_numpy()? + self._dim_f = self._grid.num_rho + self._target, self._bounds = _parse_callable_target_bounds( + self._target, self._bounds, self._grid.compress(self._grid.nodes[:, 0]) ) + self._constants["clebsch"] = FourierChebyshevSeries.nodes( + self._X, + self._Y, + self._grid.compress(self._grid.nodes[:, 0]), + domain=(0, 2 * np.pi), + ) + self._constants["fieldline_quad"] = leggauss(self._hyperparam["Y_B"] // 2) self._constants["quad"] = get_quadrature( - leggauss(self._hyperparameters.pop("num_quad")), + leggauss(self._hyperparam.pop("num_quad")), (automorphism_sin, grad_automorphism_sin), ) - self._target, self._bounds = _parse_callable_target_bounds( - self._target, self._bounds, self._constants["rho"] - ) timer = Timer() if verbose > 0: print("Precomputing transforms") timer.start("Precomputing transforms") - self._constants["transforms_1dr"] = get_transforms( - self._keys_1dr, eq, self._grid_1dr - ) - self._constants["profiles"] = get_profiles( - self._keys_1dr + [self._key], eq, self._grid_1dr - ) + self._constants["transforms"] = get_transforms(self._key, eq, grid=self._grid) + self._constants["profiles"] = get_profiles(self._key, eq, grid=self._grid) timer.stop("Precomputing transforms") if verbose > 1: @@ -489,46 +513,41 @@ def compute(self, params, constants=None): Returns ------- - result : ndarray + Gamma_c : ndarray Γ_c as a function of the flux surface label. """ if constants is None: constants = self.constants - eq = self.things[0] - # TODO: compute all deps of gamma here - data = compute_fun( - eq, - self._keys_1dr, - params, - constants["transforms_1dr"], - constants["profiles"], - ) - # TODO: interpolate all deps to this grid with fft utilities from fourier bounce - grid = eq._get_rtz_grid( - constants["rho"], - constants["alpha"], - constants["zeta"], - coordinates="raz", - iota=self._grid_1dr.compress(data["iota"]), - params=params, - ) - data = { - key: grid.copy_data_from_other(data[key], self._grid_1dr) - for key in self._keys_1dr - } quad2 = {} if "quad2" in constants: quad2["quad2"] = constants["quad2"] + + eq = self.things[0] + data = compute_fun( + eq, "iota", params, constants["transforms"], constants["profiles"] + ) data = compute_fun( eq, self._key, params, - get_transforms(self._key, eq, grid, jitable=True), + constants["transforms"], constants["profiles"], - data=data, + data, + # TODO: GitHub issue #1034. Use old values as initial guess. + theta=Bounce2D.compute_theta( + eq, + self._X, + self._Y, + iota=constants["transforms"]["grid"].compress(data["iota"]), + clebsch=constants["clebsch"], + # Pass in params so that root finding is done with the new + # perturbed λ coefficients and not the original equilibrium's. + params=params, + ), + fieldline_quad=constants["fieldline_quad"], quad=constants["quad"], **quad2, - **self._hyperparameters, + **self._hyperparam, ) - return grid.compress(data[self._key]) + return constants["transforms"]["grid"].compress(data[self._key]) diff --git a/tests/test_integrals.py b/tests/test_integrals.py index 63f4d820f6..58b149f5b9 100644 --- a/tests/test_integrals.py +++ b/tests/test_integrals.py @@ -1827,17 +1827,12 @@ def test_binormal_drift_bounce2d(self): for name in names: grid_data[name] = grid_data[name] * data["normalization"] - X, Y = 8, 8 bounce = Bounce2D( grid=grid, data=grid_data, iota=data["iota"], theta=Bounce2D.compute_theta( - eq, - X=X, - Y=Y, - rho=data["rho"], - iota=jnp.broadcast_to(data["iota"], shape=(X * Y)), + eq, X=8, Y=8, rho=data["rho"], iota=data["iota"] ), num_transit=3, alpha=data["alpha"] - 2.5 * np.pi * data["iota"], diff --git a/tests/test_objective_funs.py b/tests/test_objective_funs.py index e8952d5a17..636f22b1b4 100644 --- a/tests/test_objective_funs.py +++ b/tests/test_objective_funs.py @@ -2255,7 +2255,7 @@ def _reduced_resolution_objective(eq, objective): """Speed up testing suite by defining rules to reduce objective resolution.""" kwargs = {} if objective in {EffectiveRipple, GammaC}: - kwargs["knots_per_transit"] = 50 + kwargs["Y_B"] = 50 kwargs["num_transit"] = 2 kwargs["num_pitch"] = 25 return objective(eq=eq, **kwargs) From f2c3ac1fa408d01d5dd1f08f2f424b417c7a27d0 Mon Sep 17 00:00:00 2001 From: unalmis Date: Sun, 20 Oct 2024 18:32:51 -0400 Subject: [PATCH 05/60] Update docstrings for neoclassical objectives to use new docstring format --- desc/objectives/_neoclassical.py | 167 +++++++++--------------------- desc/objectives/objective_funs.py | 74 ++++++------- 2 files changed, 87 insertions(+), 154 deletions(-) diff --git a/desc/objectives/_neoclassical.py b/desc/objectives/_neoclassical.py index 025cfee955..3484bfdd90 100644 --- a/desc/objectives/_neoclassical.py +++ b/desc/objectives/_neoclassical.py @@ -28,7 +28,7 @@ get_quadrature, grad_automorphism_sin, ) -from .objective_funs import _Objective +from .objective_funs import _Objective, collect_docs from .utils import _parse_callable_target_bounds @@ -53,41 +53,14 @@ class EffectiveRipple(_Objective): Parameters ---------- eq : Equilibrium - Equilibrium that will be optimized to satisfy the Objective. - target : {float, ndarray, callable}, optional - Target value(s) of the objective. Only used if bounds is None. - Must be broadcastable to Objective.dim_f. If a callable, should take a - single argument ``rho`` and return the desired value of the profile at those - locations. Defaults to 0. - bounds : tuple of {float, ndarray, callable}, optional - Lower and upper bounds on the objective. Overrides target. - Both bounds must be broadcastable to Objective.dim_f. - If a callable, each should take a single argument ``rho`` and return the - desired bound (lower or upper) of the profile at those locations. - weight : {float, ndarray}, optional - Weighting to apply to the Objective, relative to other Objectives. - Must be broadcastable to Objective.dim_f - normalize : bool, optional - This quantity is already normalized so this parameter is ignored. - Whether to compute the error in physical units or non-dimensionalize. - normalize_target : bool, optional - Whether target and bounds should be normalized before comparing to computed - values. If `normalize` is ``True`` and the target is in physical units, - this should also be set to True. - loss_function : {None, 'mean', 'min', 'max'}, optional - Loss function to apply to the objective values once computed. This loss function - is called on the raw compute value, before any shifting, scaling, or - normalization. - deriv_mode : {"auto", "fwd", "rev"} - Specify how to compute Jacobian matrix, either forward mode or reverse mode AD. - "auto" selects forward or reverse mode based on the size of the input and output - of the objective. Has no effect on self.grad or self.hess which always use - reverse mode and forward over reverse mode respectively. - grid : Grid, optional - Tensor-product grid in (ρ, θ, ζ) with uniformly spaced nodes - [0, 2π) × [0, 2π/NFP). That is, the M, N number of θ, ζ nodes must match - the output of ``fourier_pts(M)``, ``fourier_pts(N)/eq.NFP``, respectively. - ``M`` and ``N`` are preferably power of two. + ``Equilibrium`` to be optimized. + grid : Grid + Optional, tensor-product grid in (ρ, θ, ζ) with uniformly spaced nodes + (θ, ζ) ∈ [0, 2π) × [0, 2π/NFP). That is, + ``grid.num_theta``, ``grid.num_zeta`` must match the output of + ``desc.integrals.interp_utils.fourier_pts(grid.num_theta)``, + ``desc.integrals.interp_utils.fourier_pts(grid.num_zeta)/grid.NFP``, + respectively. Powers of two are preferable. X : int Grid resolution in poloidal direction for Clebsch coordinate grid. Preferably power of 2. @@ -104,28 +77,22 @@ class EffectiveRipple(_Objective): num_quad : int Resolution for quadrature of bounce integrals. Default is 32. num_pitch : int - Resolution for quadrature over velocity coordinate. Default is 50. + Resolution for quadrature over velocity coordinate. Default is 64. num_well : int Maximum number of wells to detect for each pitch and field line. Default is to detect all wells, but due to limitations in JAX this option may consume more memory. Specifying a number that tightly upper bounds the number of wells will increase performance. - name : str, optional - Name of the objective function. - jac_chunk_size : int , optional - Will calculate the Jacobian for this objective ``jac_chunk_size`` - columns at a time, instead of all at once. The memory usage of the - Jacobian calculation is roughly ``memory usage = m0 + m1*jac_chunk_size``: - the smaller the chunk size, the less memory the Jacobian calculation - will require (with some baseline memory usage). The time to compute the - Jacobian is roughly ``t=t0 +t1/jac_chunk_size``, so the larger the - ``jac_chunk_size``, the faster the calculation takes, at the cost of - requiring more memory. A ``jac_chunk_size`` of 1 corresponds to the least - memory intensive, but slowest method of calculating the Jacobian. - If None, it will use the largest size i.e ``obj.dim_x``. """ + __doc__ = __doc__.rstrip() + collect_docs( + target_default="``target=0``.", + bounds_default="``target=0``.", + normalize_detail=" Note: Has no effect for this objective.", + normalize_target_detail=" Note: Has no effect for this objective.", + ) + _coordinates = "r" _units = "~" _print_value_fmt = "Effective ripple ε: " @@ -141,6 +108,8 @@ def __init__( loss_function=None, deriv_mode="auto", grid=None, + name="Effective ripple", + jac_chunk_size=None, *, X=16, # X is cheap to increase. Y=32, @@ -150,8 +119,6 @@ def __init__( num_quad=32, num_pitch=50, num_well=None, - name="Effective ripple", - jac_chunk_size=None, ): if target is None and bounds is None: target = 0.0 @@ -159,10 +126,11 @@ def __init__( self._grid = grid self._X = X self._Y = Y - self._constants = {"quad_weights": 1, "quad": chebgauss2(num_quad)} + self._constants = {"quad_weights": 1} self._hyperparam = { "Y_B": setdefault(Y_B, 2 * Y), "num_transit": num_transit, + "num_quad": num_quad, "num_pitch": num_pitch, "num_well": setdefault(num_well, Y_B * num_transit), } @@ -202,10 +170,6 @@ def build(self, use_jit=True, verbose=1): NFP=eq.NFP, ) # Should we call self._grid.to_numpy()? - self._dim_f = self._grid.num_rho - self._target, self._bounds = _parse_callable_target_bounds( - self._target, self._bounds, self._grid.compress(self._grid.nodes[:, 0]) - ) self._constants["clebsch"] = FourierChebyshevSeries.nodes( self._X, self._Y, @@ -213,19 +177,23 @@ def build(self, use_jit=True, verbose=1): domain=(0, 2 * np.pi), ) self._constants["fieldline_quad"] = leggauss(self._hyperparam["Y_B"] // 2) + self._constants["quad"] = chebgauss2(self._hyperparam.pop("num_quad")) + + self._dim_f = self._grid.num_rho + self._target, self._bounds = _parse_callable_target_bounds( + self._target, self._bounds, self._grid.compress(self._grid.nodes[:, 0]) + ) timer = Timer() if verbose > 0: print("Precomputing transforms") timer.start("Precomputing transforms") - self._constants["transforms"] = get_transforms( "effective ripple", eq, grid=self._grid ) self._constants["profiles"] = get_profiles( "effective ripple", eq, grid=self._grid ) - timer.stop("Precomputing transforms") if verbose > 1: timer.disp("Precomputing transforms") @@ -301,40 +269,14 @@ class GammaC(_Objective): Parameters ---------- eq : Equilibrium - Equilibrium that will be optimized to satisfy the Objective. - target : {float, ndarray, callable}, optional - Target value(s) of the objective. Only used if bounds is None. - Must be broadcastable to Objective.dim_f. If a callable, should take a - single argument ``rho`` and return the desired value of the profile at those - locations. Defaults to 0. - bounds : tuple of {float, ndarray, callable}, optional - Lower and upper bounds on the objective. Overrides target. - Both bounds must be broadcastable to Objective.dim_f. - If a callable, each should take a single argument ``rho`` and return the - desired bound (lower or upper) of the profile at those locations. - weight : {float, ndarray}, optional - Weighting to apply to the Objective, relative to other Objectives. - Must be broadcastable to Objective.dim_f - normalize : bool, optional - Whether to compute the error in physical units or non-dimensionalize. - normalize_target : bool, optional - Whether target and bounds should be normalized before comparing to computed - values. If `normalize` is `True` and the target is in physical units, - this should also be set to True. - loss_function : {None, 'mean', 'min', 'max'}, optional - Loss function to apply to the objective values once computed. This loss function - is called on the raw compute value, before any shifting, scaling, or - normalization. - deriv_mode : {"auto", "fwd", "rev"} - Specify how to compute Jacobian matrix, either forward mode or reverse mode AD. - "auto" selects forward or reverse mode based on the size of the input and output - of the objective. Has no effect on self.grad or self.hess which always use - reverse mode and forward over reverse mode respectively. - grid : Grid, optional - Tensor-product grid in (ρ, θ, ζ) with uniformly spaced nodes - [0, 2π) × [0, 2π/NFP). That is, the M, N number of θ, ζ nodes must match - the output of ``fourier_pts(M)``, ``fourier_pts(N)/eq.NFP``, respectively. - ``M`` and ``N`` are preferably power of two. + ``Equilibrium`` to be optimized. + grid : Grid + Optional, tensor-product grid in (ρ, θ, ζ) with uniformly spaced nodes + (θ, ζ) ∈ [0, 2π) × [0, 2π/NFP). That is, + ``grid.num_theta``, ``grid.num_zeta`` must match the output of + ``desc.integrals.interp_utils.fourier_pts(grid.num_theta)``, + ``desc.integrals.interp_utils.fourier_pts(grid.num_zeta)/grid.NFP``, + respectively. Powers of two are preferable. X : int Grid resolution in poloidal direction for Clebsch coordinate grid. Preferably power of 2. @@ -369,22 +311,16 @@ class GammaC(_Objective): Therefore, an optimization using Velasco's metric should be evaluated by measuring decrease in Γ_c at a fixed number of toroidal transits until unless an adaptive quadrature is used. - name : str, optional - Name of the objective function. - jac_chunk_size : int , optional - Will calculate the Jacobian for this objective ``jac_chunk_size`` - columns at a time, instead of all at once. The memory usage of the - Jacobian calculation is roughly ``memory usage = m0 + m1*jac_chunk_size``: - the smaller the chunk size, the less memory the Jacobian calculation - will require (with some baseline memory usage). The time to compute the - Jacobian is roughly ``t=t0 +t1/jac_chunk_size``, so the larger the - ``jac_chunk_size``, the faster the calculation takes, at the cost of - requiring more memory. A ``jac_chunk_size`` of 1 corresponds to the least - memory intensive, but slowest method of calculating the Jacobian. - If None, it will use the largest size i.e ``obj.dim_x``. """ + __doc__ = __doc__.rstrip() + collect_docs( + target_default="``target=0``.", + bounds_default="``target=0``.", + normalize_detail=" Note: Has no effect for this objective.", + normalize_target_detail=" Note: Has no effect for this objective.", + ) + _coordinates = "r" _units = "~" _print_value_fmt = "Γ_c: " @@ -400,6 +336,8 @@ def __init__( loss_function=None, deriv_mode="auto", grid=None, + name="Gamma_c", + jac_chunk_size=None, *, X=16, # X is cheap to increase. Y=32, @@ -410,8 +348,6 @@ def __init__( num_pitch=64, num_well=None, Nemov=True, - name="Gamma_c", - jac_chunk_size=None, ): if target is None and bounds is None: target = 0.0 @@ -469,10 +405,6 @@ def build(self, use_jit=True, verbose=1): NFP=eq.NFP, ) # Should we call self._grid.to_numpy()? - self._dim_f = self._grid.num_rho - self._target, self._bounds = _parse_callable_target_bounds( - self._target, self._bounds, self._grid.compress(self._grid.nodes[:, 0]) - ) self._constants["clebsch"] = FourierChebyshevSeries.nodes( self._X, self._Y, @@ -485,14 +417,17 @@ def build(self, use_jit=True, verbose=1): (automorphism_sin, grad_automorphism_sin), ) + self._dim_f = self._grid.num_rho + self._target, self._bounds = _parse_callable_target_bounds( + self._target, self._bounds, self._grid.compress(self._grid.nodes[:, 0]) + ) + timer = Timer() if verbose > 0: print("Precomputing transforms") timer.start("Precomputing transforms") - self._constants["transforms"] = get_transforms(self._key, eq, grid=self._grid) self._constants["profiles"] = get_profiles(self._key, eq, grid=self._grid) - timer.stop("Precomputing transforms") if verbose > 1: timer.disp("Precomputing transforms") @@ -519,9 +454,8 @@ def compute(self, params, constants=None): """ if constants is None: constants = self.constants - quad2 = {} if "quad2" in constants: - quad2["quad2"] = constants["quad2"] + self._hyperparam["quad2"] = constants["quad2"] eq = self.things[0] data = compute_fun( @@ -547,7 +481,6 @@ def compute(self, params, constants=None): ), fieldline_quad=constants["fieldline_quad"], quad=constants["quad"], - **quad2, **self._hyperparam, ) return constants["transforms"]["grid"].compress(data[self._key]) diff --git a/desc/objectives/objective_funs.py b/desc/objectives/objective_funs.py index 9f0ca3945f..1362a577a0 100644 --- a/desc/objectives/objective_funs.py +++ b/desc/objectives/objective_funs.py @@ -1,11 +1,9 @@ """Base classes for objectives.""" import functools -import warnings from abc import ABC, abstractmethod import numpy as np -from termcolor import colored from desc.backend import ( desc_config, @@ -31,22 +29,23 @@ isposint, setdefault, unique_list, + warnif, ) doc_target = """ target : {float, ndarray}, optional - Target value(s) of the objective. Only used if bounds is None. - Must be broadcastable to Objective.dim_f. + Target value(s) of the objective. Only used if ``bounds`` is ``None``. + Must be broadcastable to ``Objective.dim_f``. """ doc_bounds = """ bounds : tuple of {float, ndarray}, optional - Lower and upper bounds on the objective. Overrides target. - Both bounds must be broadcastable to Objective.dim_f + Lower and upper bounds on the objective. Overrides ``target``. + Both bounds must be broadcastable to ``Objective.dim_f``. """ doc_weight = """ weight : {float, ndarray}, optional Weighting to apply to the Objective, relative to other Objectives. - Must be broadcastable to Objective.dim_f + Must be broadcastable to ``Objective.dim_f``. """ doc_normalize = """ normalize : bool, optional @@ -55,8 +54,8 @@ doc_normalize_target = """ normalize_target : bool, optional Whether target and bounds should be normalized before comparing to computed - values. If `normalize` is `True` and the target is in physical units, - this should also be set to True. + values. If ``normalize`` is ``True`` and the target is in physical units, + this should also be set to ``True``. """ doc_loss_function = """ loss_function : {None, 'mean', 'min', 'max'}, optional @@ -68,8 +67,8 @@ deriv_mode : {"auto", "fwd", "rev"} Specify how to compute Jacobian matrix, either forward mode or reverse mode AD. "auto" selects forward or reverse mode based on the size of the input and output - of the objective. Has no effect on self.grad or self.hess which always use - reverse mode and forward over reverse mode respectively. + of the objective. Has no effect on ``self.grad`` or ``self.hess`` which always + use reverse mode and forward over reverse mode respectively. """ doc_name = """ name : str, optional @@ -80,13 +79,17 @@ Will calculate the Jacobian ``jac_chunk_size`` columns at a time, instead of all at once. The memory usage of the Jacobian calculation is roughly - ``memory usage = m0 + m1*jac_chunk_size``: the smaller the chunk size, + ``memory usage = m0+m1*jac_chunk_size``: the smaller the chunk size, the less memory the Jacobian calculation will require (with some baseline memory usage). The time it takes to compute the Jacobian is roughly - ``t= t0 + t1/jac_chunk_size` so the larger the ``jac_chunk_size``, the faster + ``t = t0+t1/jac_chunk_size`` so the larger the ``jac_chunk_size``, the faster the calculation takes, at the cost of requiring more memory. - If None, it will use the largest size i.e ``obj.dim_x``. + If ``None``, it will use the largest size i.e ``obj.dim_x``. Defaults to ``chunk_size=None``. + Note: When running on a CPU (not a GPU) on a HPC cluster, DESC is unable to + accurately estimate the available device memory, so the "auto" chunk_size + option will yield a larger chunk size than may be needed. It is recommended + to manually choose a chunk_size if an OOM error is experienced in this case. """ docs = { "target": doc_target, @@ -115,23 +118,23 @@ def collect_docs( Parameters ---------- overwrite : dict, optional - Dict of strings to overwrite from the _Objective's docstring. If None, + Dict of strings to overwrite from the ``_Objective``'s docstring. If None, all default parameters are included as they are. Use this argument if you want to specify a special docstring for a specific parameter in your objective definition. target_default : str, optional - Default value for the target parameter. + Default value for the ``target`` parameter. bounds_default : str, optional - Default value for the bounds parameter. + Default value for the ``bounds`` parameter. normalize_detail : str, optional - Additional information about the normalize parameter. + Additional information about the ``normalize`` parameter. normalize_target_detail : str, optional - Additional information about the normalize_target parameter. + Additional information about the ``normalize_target`` parameter. loss_detail : str, optional - Additional information about the loss function. + Additional information about the ``loss`` function. coil : bool, optional - Whether the objective is a coil objective. If True, adds extra docs to - target and loss_function. + Whether the objective is a coil objective. If ``True``, adds extra docs + to ``target`` and ``loss_function``. Returns ------- @@ -203,18 +206,17 @@ class ObjectiveFunction(IOAble): name : str Name of the objective function. jac_chunk_size : int or "auto", optional - If `"batched"` deriv_mode is used, will calculate the Jacobian + Will calculate the Jacobian ``jac_chunk_size`` columns at a time, instead of all at once. The memory usage of the Jacobian calculation is roughly - ``memory usage = m0 + m1*jac_chunk_size``: the smaller the chunk size, + ``memory usage = m0+m1*jac_chunk_size``: the smaller the chunk size, the less memory the Jacobian calculation will require (with some baseline memory usage). The time it takes to compute the Jacobian is roughly - ``t= t0 + t1/jac_chunk_size` so the larger the ``jac_chunk_size``, the faster + ``t = t0+t1/jac_chunk_size`` so the larger the ``jac_chunk_size``, the faster the calculation takes, at the cost of requiring more memory. - If None, it will use the largest size i.e ``obj.dim_x``. - Defaults to ``chunk_size="auto"`` which will use a conservative - chunk size based off of a heuristic estimate of the memory usage. - NOTE: When running on a CPU (not a GPU) on a HPC cluster, DESC is unable to + If ``None``, it will use the largest size i.e ``obj.dim_x``. + Defaults to ``chunk_size=None``. + Note: When running on a CPU (not a GPU) on a HPC cluster, DESC is unable to accurately estimate the available device memory, so the "auto" chunk_size option will yield a larger chunk size than may be needed. It is recommended to manually choose a chunk_size if an OOM error is experienced in this case. @@ -239,16 +241,14 @@ def __init__( assert use_jit in {True, False} if deriv_mode == "looped": # overwrite the user inputs if deprecated "looped" was given - deriv_mode = "batched" - jac_chunk_size = 1 - warnings.warn( - colored( - '``deriv_mode="looped"`` is deprecated in favor of' - ' ``deriv_mode="batched"`` with ``jac_chunk_size=1``.', - "yellow", - ), + warnif( + True, DeprecationWarning, + '``deriv_mode="looped"`` is deprecated in favor of' + ' ``deriv_mode="batched"`` with ``jac_chunk_size=1``.', ) + deriv_mode = "batched" + jac_chunk_size = 1 assert deriv_mode in {"auto", "batched", "blocked"} assert jac_chunk_size in ["auto", None] or isposint(jac_chunk_size) From 89e63f7d228aefd71bef3e49675fa90a82e06078 Mon Sep 17 00:00:00 2001 From: unalmis Date: Sun, 20 Oct 2024 18:55:49 -0400 Subject: [PATCH 06/60] Add jitable flag to create meshgrid --- desc/equilibrium/coords.py | 5 ++++- desc/grid.py | 16 +++++++++++----- tests/test_examples.py | 7 +++++-- 3 files changed, 20 insertions(+), 8 deletions(-) diff --git a/desc/equilibrium/coords.py b/desc/equilibrium/coords.py index b4bc5adce4..b05bedaa50 100644 --- a/desc/equilibrium/coords.py +++ b/desc/equilibrium/coords.py @@ -717,7 +717,10 @@ def get_rtz_grid( """ grid = Grid.create_meshgrid( - [radial, poloidal, toroidal], coordinates=coordinates, period=period + [radial, poloidal, toroidal], + coordinates=coordinates, + period=period, + jitable=jitable, ) if "iota" in kwargs: kwargs["iota"] = grid.expand(jnp.atleast_1d(kwargs["iota"])) diff --git a/desc/grid.py b/desc/grid.py index 9cd2b143fe..af738f9b39 100644 --- a/desc/grid.py +++ b/desc/grid.py @@ -691,8 +691,8 @@ class Grid(_Grid): nodes.reshape((num_poloidal, num_radial, num_toroidal, 3), order="F"). jitable : bool Whether to skip certain checks and conditionals that don't work under jit. - Allows grid to be created on the fly with custom nodes, but weights, symmetry - etc. may be wrong if grid contains duplicate nodes. + Allows grid to be created on the fly with custom nodes, but weights, + symmetry etc. may be wrong if grid contains duplicate nodes. """ def __init__( @@ -778,6 +778,7 @@ def create_meshgrid( coordinates="rtz", period=(np.inf, 2 * np.pi, 2 * np.pi), NFP=1, + jitable=True, **kwargs, ): """Create a tensor-product grid from the given coordinates in a jitable manner. @@ -804,6 +805,10 @@ def create_meshgrid( Only makes sense to change from 1 if last coordinate is periodic with some constant divided by ``NFP`` and the nodes are placed within one field period. + jitable : bool + Whether to skip certain checks and conditionals that don't work under jit. + Allows grid to be created on the fly with custom nodes, but weights, + symmetry etc. may be wrong if grid contains duplicate nodes. Returns ------- @@ -815,9 +820,9 @@ def create_meshgrid( a, b, c = jnp.atleast_1d(*nodes) if spacing is None: errorif(coordinates[0] != "r", NotImplementedError) - da = _midpoint_spacing(a, jnp=jnp) - db = _periodic_spacing(b, period[1], jnp=jnp)[1] - dc = _periodic_spacing(c, period[2], jnp=jnp)[1] * NFP + da = _midpoint_spacing(a) + db = _periodic_spacing(b, period[1])[1] + dc = _periodic_spacing(c, period[2])[1] * NFP else: da, db, dc = spacing @@ -857,6 +862,7 @@ def create_meshgrid( NFP=NFP, sort=False, is_meshgrid=True, + jitable=jitable, _unique_rho_idx=unique_a_idx, _unique_poloidal_idx=unique_b_idx, _unique_zeta_idx=unique_c_idx, diff --git a/tests/test_examples.py b/tests/test_examples.py index f9830c14a5..caee2aab35 100644 --- a/tests/test_examples.py +++ b/tests/test_examples.py @@ -20,6 +20,7 @@ ) from desc.continuation import solve_continuation_automatic from desc.equilibrium import EquilibriaFamily, Equilibrium +from desc.equilibrium.coords import get_rtz_grid from desc.examples import get from desc.geometry import FourierRZToroidalSurface from desc.grid import LinearGrid @@ -1641,7 +1642,8 @@ def test_ballooning_stability_opt(): for i in range(len(surfaces)): rho = surfaces[i] - grid = eq._get_rtz_grid( + grid = get_rtz_grid( + eq, rho, alpha, zeta, @@ -1721,7 +1723,8 @@ def test_ballooning_stability_opt(): for i in range(len(surfaces)): rho = surfaces[i] - grid = eq._get_rtz_grid( + grid = get_rtz_grid( + eq, rho, alpha, zeta, From 695ebac51a732baf05657b980dd3b343723e39a5 Mon Sep 17 00:00:00 2001 From: unalmis Date: Mon, 21 Oct 2024 01:06:39 -0400 Subject: [PATCH 07/60] Removing redundant parameter when constructing bounce2d --- desc/compute/_neoclassical.py | 23 ++++++++++------------- desc/objectives/_neoclassical.py | 1 - 2 files changed, 10 insertions(+), 14 deletions(-) diff --git a/desc/compute/_neoclassical.py b/desc/compute/_neoclassical.py index 0e83a21182..61787bf6b5 100644 --- a/desc/compute/_neoclassical.py +++ b/desc/compute/_neoclassical.py @@ -6,15 +6,14 @@ * ``1303`` Patch for differentiable code with dynamic shapes * ``1206`` Upsample data above midplane to full grid assuming stellarator symmetry * ``1034`` Optimizers/objectives with auxiliary output - -If memory is still an issue, consider computing one pitch at a time. This -can be done by copy-pasting the code given at -https://github.com/PlasmaControl/DESC/pull/1003#discussion_r1780459450. -Note that imap supports computing in batches, so that can also be used. -Make sure to benchmark whether this reduces memory in an optimization. - """ +# If memory is still an issue, consider computing one pitch at a time. This +# can be done by copy-pasting the code given at +# https://github.com/PlasmaControl/DESC/pull/1003#discussion_r1780459450. +# Note that imap supports computing in batches, so that can also be used. +# Make sure to benchmark whether this reduces memory in an optimization. + from functools import partial from orthax.legendre import leggauss @@ -411,7 +410,6 @@ def eps_32(data): bounce = Bounce2D( grid, data, - data["iota"], data["theta"], Y_B, num_transit, @@ -572,14 +570,14 @@ def Gamma_c(data): "max_tz |B|", "B^phi", "B^phi_r|v,p", - "b", "|B|_r|v,p", - "iota_r", + "b", "grad(phi)", "e^rho", "|grad(rho)|", "|e_alpha|r,p|", "kappa_g", + "iota_r", "psi_r", "fieldline length", ] @@ -742,14 +740,14 @@ def Gamma_c(data): "max_tz |B|", "B^phi", "B^phi_r|v,p", - "b", "|B|_r|v,p", - "iota_r", + "b", "grad(phi)", "e^rho", "|grad(rho)|", "|e_alpha|r,p|", "kappa_g", + "iota_r", "psi_r", ] + Bounce2D.required_names, @@ -834,7 +832,6 @@ def Gamma_c(data): bounce = Bounce2D( grid, data, - data["iota"], data["theta"], Y_B, num_transit, diff --git a/desc/objectives/_neoclassical.py b/desc/objectives/_neoclassical.py index 3484bfdd90..08aacb83a4 100644 --- a/desc/objectives/_neoclassical.py +++ b/desc/objectives/_neoclassical.py @@ -8,7 +8,6 @@ * ``1303`` Patch for differentiable code with dynamic shapes * ``1206`` Upsample data above midplane to full grid assuming stellarator symmetry * ``1034`` Optimizers/objectives with auxiliary output - """ import numpy as np From 365b55d80ec2b82718126d95c84b5817d7bf5993 Mon Sep 17 00:00:00 2001 From: unalmis Date: Mon, 21 Oct 2024 02:47:26 -0400 Subject: [PATCH 08/60] Making changes that arise from Rory's suggested naming changes --- desc/compute/_neoclassical.py | 8 ++++---- desc/objectives/_neoclassical.py | 6 +++--- tests/test_neoclassical.py | 2 +- 3 files changed, 8 insertions(+), 8 deletions(-) diff --git a/desc/compute/_neoclassical.py b/desc/compute/_neoclassical.py index 61787bf6b5..978ee92771 100644 --- a/desc/compute/_neoclassical.py +++ b/desc/compute/_neoclassical.py @@ -21,19 +21,19 @@ from desc.backend import imap, jit, jnp -from ..integrals.bounce_integral import Bounce1D, Bounce2D -from ..integrals.bounce_utils import ( +from ..integrals._bounce_utils import ( get_pitch_inv_quad, interp_fft_to_argmin, interp_to_argmin, ) -from ..integrals.interp_utils import polyder_vec -from ..integrals.quad_utils import ( +from ..integrals._interp_utils import polyder_vec +from ..integrals._quad_utils import ( automorphism_sin, chebgauss2, get_quadrature, grad_automorphism_sin, ) +from ..integrals.bounce_integral import Bounce1D, Bounce2D from ..utils import cross, dot, errorif, safediv from .data_index import register_compute_fun diff --git a/desc/objectives/_neoclassical.py b/desc/objectives/_neoclassical.py index 08aacb83a4..fabc93a974 100644 --- a/desc/objectives/_neoclassical.py +++ b/desc/objectives/_neoclassical.py @@ -19,14 +19,14 @@ from desc.utils import Timer, setdefault from ..integrals import Bounce2D -from ..integrals.basis import FourierChebyshevSeries -from ..integrals.interp_utils import fourier_pts -from ..integrals.quad_utils import ( +from ..integrals._interp_utils import fourier_pts +from ..integrals._quad_utils import ( automorphism_sin, chebgauss2, get_quadrature, grad_automorphism_sin, ) +from ..integrals.basis import FourierChebyshevSeries from .objective_funs import _Objective, collect_docs from .utils import _parse_callable_target_bounds diff --git a/tests/test_neoclassical.py b/tests/test_neoclassical.py index 88d634b769..cb0c185c26 100644 --- a/tests/test_neoclassical.py +++ b/tests/test_neoclassical.py @@ -11,7 +11,7 @@ from desc.examples import get from desc.grid import Grid, LinearGrid from desc.integrals import Bounce2D -from desc.integrals.interp_utils import fourier_pts +from desc.integrals._interp_utils import fourier_pts from desc.utils import errorif, setdefault from desc.vmec import VMECIO From f7220a0ff425fb3d1d85de15c930d9f413dc3269 Mon Sep 17 00:00:00 2001 From: unalmis Date: Mon, 21 Oct 2024 19:50:33 -0400 Subject: [PATCH 09/60] Review inspired changes --- desc/compute/_neoclassical.py | 60 +++++++++++++----------- desc/grid.py | 17 ++++--- desc/integrals/_bounce_utils.py | 21 +++++---- desc/integrals/_interp_utils.py | 2 +- desc/integrals/bounce_integral.py | 42 ++++++++++------- desc/objectives/_neoclassical.py | 78 +++++++++++++++---------------- tests/test_neoclassical.py | 15 ++---- 7 files changed, 122 insertions(+), 113 deletions(-) diff --git a/desc/compute/_neoclassical.py b/desc/compute/_neoclassical.py index 978ee92771..ceda410039 100644 --- a/desc/compute/_neoclassical.py +++ b/desc/compute/_neoclassical.py @@ -38,37 +38,43 @@ from .data_index import register_compute_fun _Bounce1D_doc = { - "quad": ( - "tuple[jnp.ndarray] : Quadrature points and weights for bounce integrals. " - "Default option is well tested." - ), - "num_quad": ( - "int : Resolution for quadrature of bounce integrals. " - "Default is 32. This option is ignored if given ``quad``." - ), + "quad": """tuple[jnp.ndarray] : + Quadrature points and weights for bounce integrals. + """, + "num_quad": """int : + Resolution for quadrature of bounce integrals. + Default is 32. This option is ignored if given ``quad``. + """, "num_pitch": "int : Resolution for quadrature over velocity coordinate.", - "num_well": ( - "int : Maximum number of wells to detect for each pitch and field line. " - "Default is to detect all wells, but due to limitations in JAX this option " - "may consume more memory. Specifying a number that tightly upper bounds " - "the number of wells will increase performance." - ), + "num_well": """int : + Maximum number of wells to detect for each pitch and field line. + Giving ``None`` will detect all wells but due to current limitations in + JAX this will have worse performance. + Specifying a number that tightly upper bounds the number of wells will + increase performance. In general, an upper bound on the number of wells + per toroidal transit is ``Aι+B`` where ``A``,``B`` are the poloidal and + toroidal Fourier resolution of |B|, respectively, in straight-field line + PEST coordinates, and ι is the rotational transform normalized by 2π. + A tighter upper bound than ``num_well=(Aι+B)*num_transit`` is preferable. + The ``check_points`` or ``plot`` methods in ``desc.integrals.Bounce2D`` + are useful to select a reasonable value. + """, "batch": "bool : Whether to vectorize part of the computation. Default is true.", } _Bounce2D_doc = { "spline": "bool : Whether to use cubic splines to compute bounce points.", "theta": "jnp.ndarray : DESC coordinates θ of (α,ζ) Fourier Chebyshev basis nodes.", - "Y_B": ( - "int : Desired resolution for |B| along field lines to compute bounce points. " - "Default is to double the resolution of ``theta``." - ), + "Y_B": """int : + Desired resolution for |B| along field lines to compute bounce points. + Default is to double the resolution of ``theta``. + """, "num_transit": "int : Number of toroidal transits to follow field line.", - "fieldline_quad": ( - "tuple[jnp.ndarray] : Quadrature points xₖ and weights wₖ for the " - "approximate evaluation of the integral ∫₋₁¹ f(x) dx ≈ ∑ₖ wₖ f(xₖ). " - "Used to compute the proper length of the field line ∫ dℓ / |B|. " - "Default is Gauss-Legendre quadrature." - ), + "fieldline_quad": """tuple[jnp.ndarray] : + Quadrature points xₖ and weights wₖ for the + approximate evaluation of the integral ∫₋₁¹ f(x) dx ≈ ∑ₖ wₖ f(xₖ). + Used to compute the proper length of the field line ∫ dℓ / |B|. + Default is Gauss-Legendre quadrature. + """, "quad": _Bounce1D_doc["quad"], "num_quad": _Bounce1D_doc["num_quad"], "num_pitch": _Bounce1D_doc["num_pitch"], @@ -351,8 +357,7 @@ def _effective_ripple_1D(params, transforms, profiles, data, **kwargs): data=["min_tz |B|", "max_tz |B|", "kappa_g", "R0", "|grad(rho)|", "<|grad(rho)|>"] + Bounce2D.required_names, resolution_requirement="z", # FIXME: GitHub issue #1312. Should be "tz". - # TODO: Uniformly spaced points on (θ, ζ) ∈ [0, 2π) × [0, 2π/NFP) are required. - grid_requirement={"coordinates": "rtz", "is_meshgrid": True, "sym": False}, + grid_requirement={"coordinates": "rtz", "can_fft": True}, **_Bounce2D_doc, ) @partial( @@ -752,8 +757,7 @@ def Gamma_c(data): ] + Bounce2D.required_names, resolution_requirement="z", # FIXME: GitHub issue #1312. Should be "tz". - # TODO: Uniformly spaced points on (θ, ζ) ∈ [0, 2π) × [0, 2π/NFP) are required. - grid_requirement={"coordinates": "rtz", "is_meshgrid": True, "sym": False}, + grid_requirement={"coordinates": "rtz", "can_fft": True}, **_Bounce2D_doc, quad2="Same as ``quad`` for the weak singular integrals in particular.", ) diff --git a/desc/grid.py b/desc/grid.py index af738f9b39..07026e482c 100644 --- a/desc/grid.py +++ b/desc/grid.py @@ -220,6 +220,16 @@ def is_meshgrid(self): """ return self.__dict__.setdefault("_is_meshgrid", False) + @property + def can_fft(self): + """bool: Whether this grid is compatible with FFT. + + Tensor product grid with uniformly spaced points on + (θ, ζ) ∈ [0, 2π) × [0, 2π/NFP). + """ + # TODO: GitHub issue 1243? + return self.__dict__.setdefault("_can_fft", self.is_meshgrid and not self.sym) + @property def coordinates(self): """Coordinates specified by the nodes. @@ -646,13 +656,6 @@ def meshgrid_reshape(self, x, order): x = jnp.transpose(x, newax) return x - def to_numpy(self): - """Convert all jax array attributes to numpy arrays.""" - for attr in self.__dict__: - value = getattr(self, attr) - if isinstance(value, jnp.ndarray): - setattr(self, attr, np.array(value)) - class Grid(_Grid): """Collocation grid with custom node placement. diff --git a/desc/integrals/_bounce_utils.py b/desc/integrals/_bounce_utils.py index f988e89fd2..d13d733a6d 100644 --- a/desc/integrals/_bounce_utils.py +++ b/desc/integrals/_bounce_utils.py @@ -145,14 +145,19 @@ def bounce_points( last axis enumerates the polynomials that compose a particular spline. num_well : int or None Specify to return the first ``num_well`` pairs of bounce points for each - pitch along each field line. This is useful if ``num_well`` tightly - bounds the actual number. As a reference, there are typically 20 wells - per toroidal transit for a given pitch. You can check this by plotting - the field lines with the ``_check_bounce_points`` method. - - If not specified, then all bounce points are returned. If there were fewer - wells detected along a field line than the size of the last axis of the - returned arrays, then that axis is padded with zero. + pitch and field line. Default is ``None``, which will detect all wells, + but due to current limitations in JAX this will have worse performance. + Specifying a number that tightly upper bounds the number of wells will + increase performance. In general, an upper bound on the number of wells + per toroidal transit is ``Aι+B`` where ``A``,``B`` are the poloidal and + toroidal Fourier resolution of |B|, respectively, in straight-field line + PEST coordinates, and ι is the rotational transform normalized by 2π. + A tighter upper bound than ``num_well=(Aι+B)*num_transit`` is preferable. + The ``check_points`` or ``plot`` method is useful to select a reasonable + value. + + If there were fewer wells detected along a field line than the size of the + last axis of the returned arrays, then that axis is padded with zero. check : bool Flag for debugging. Must be false for JAX transformations. plot : bool diff --git a/desc/integrals/_interp_utils.py b/desc/integrals/_interp_utils.py index 489b28a251..067ab456d7 100644 --- a/desc/integrals/_interp_utils.py +++ b/desc/integrals/_interp_utils.py @@ -73,7 +73,7 @@ def cheb_pts(n, domain=(-1, 1), lobatto=False): def fourier_pts(n): """Get ``n`` Fourier points in [0, 2π).""" - # [0, 2π] instead of [-π, π] required to match our definition of α. + # [0, 2π) instead of [-π, π) required to match our definition of α. return 2 * jnp.pi * jnp.arange(n) / n diff --git a/desc/integrals/bounce_integral.py b/desc/integrals/bounce_integral.py index 788a69d429..ffcf9fe6be 100644 --- a/desc/integrals/bounce_integral.py +++ b/desc/integrals/bounce_integral.py @@ -471,14 +471,19 @@ def points(self, pitch_inv, *, num_well=None): as the indices that correspond to that field line. num_well : int or None Specify to return the first ``num_well`` pairs of bounce points for each - pitch along each field line. This is useful if ``num_well`` tightly - bounds the actual number. As a reference, there are typically 20 wells - per toroidal transit for a given pitch. You can check this by plotting - the field lines with the ``check_points`` method. - - If not specified, then all bounce points are returned. If there were fewer - wells detected along a field line than the size of the last axis of the - returned arrays, then that axis is padded with zero. + pitch and field line. Default is ``None``, which will detect all wells, + but due to current limitations in JAX this will have worse performance. + Specifying a number that tightly upper bounds the number of wells will + increase performance. In general, an upper bound on the number of wells + per toroidal transit is ``Aι+B`` where ``A``,``B`` are the poloidal and + toroidal Fourier resolution of |B|, respectively, in straight-field line + PEST coordinates, and ι is the rotational transform normalized by 2π. + A tighter upper bound than ``num_well=(Aι+B)*num_transit`` is preferable. + The ``check_points`` or ``plot`` method is useful to select a reasonable + value. + + If there were fewer wells detected along a field line than the size of the + last axis of the returned arrays, then that axis is padded with zero. Returns ------- @@ -1104,14 +1109,19 @@ def points(self, pitch_inv, *, num_well=None): are interpreted as the indices that correspond to that field line. num_well : int or None Specify to return the first ``num_well`` pairs of bounce points for each - pitch along each field line. This is useful if ``num_well`` tightly - bounds the actual number. As a reference, there are typically 20 wells - per toroidal transit for a given pitch. You can check this by plotting - the field lines with the ``check_points`` method. - - If not specified, then all bounce points are returned. If there were fewer - wells detected along a field line than the size of the last axis of the - returned arrays, then that axis is padded with zero. + pitch and field line. Default is ``None``, which will detect all wells, + but due to current limitations in JAX this will have worse performance. + Specifying a number that tightly upper bounds the number of wells will + increase performance. In general, an upper bound on the number of wells + per toroidal transit is ``Aι+B`` where ``A``,``B`` are the poloidal and + toroidal Fourier resolution of |B|, respectively, in straight-field line + PEST coordinates, and ι is the rotational transform normalized by 2π. + A tighter upper bound than ``num_well=(Aι+B)*num_transit`` is preferable. + The ``check_points`` or ``plot`` method is useful to select a reasonable + value. + + If there were fewer wells detected along a field line than the size of the + last axis of the returned arrays, then that axis is padded with zero. Returns ------- diff --git a/desc/objectives/_neoclassical.py b/desc/objectives/_neoclassical.py index fabc93a974..329c859451 100644 --- a/desc/objectives/_neoclassical.py +++ b/desc/objectives/_neoclassical.py @@ -15,11 +15,10 @@ from desc.compute import get_profiles, get_transforms from desc.compute.utils import _compute as compute_fun -from desc.grid import Grid +from desc.grid import LinearGrid from desc.utils import Timer, setdefault from ..integrals import Bounce2D -from ..integrals._interp_utils import fourier_pts from ..integrals._quad_utils import ( automorphism_sin, chebgauss2, @@ -55,11 +54,7 @@ class EffectiveRipple(_Objective): ``Equilibrium`` to be optimized. grid : Grid Optional, tensor-product grid in (ρ, θ, ζ) with uniformly spaced nodes - (θ, ζ) ∈ [0, 2π) × [0, 2π/NFP). That is, - ``grid.num_theta``, ``grid.num_zeta`` must match the output of - ``desc.integrals.interp_utils.fourier_pts(grid.num_theta)``, - ``desc.integrals.interp_utils.fourier_pts(grid.num_zeta)/grid.NFP``, - respectively. Powers of two are preferable. + (θ, ζ) ∈ [0, 2π) × [0, 2π/NFP). Powers of two are preferable. X : int Grid resolution in poloidal direction for Clebsch coordinate grid. Preferably power of 2. @@ -79,9 +74,16 @@ class EffectiveRipple(_Objective): Resolution for quadrature over velocity coordinate. Default is 64. num_well : int Maximum number of wells to detect for each pitch and field line. - Default is to detect all wells, but due to limitations in JAX this option - may consume more memory. Specifying a number that tightly upper bounds - the number of wells will increase performance. + Giving ``None`` will detect all wells but due to current limitations in + JAX this will have worse performance. + Specifying a number that tightly upper bounds the number of wells will + increase performance. In general, an upper bound on the number of wells + per toroidal transit is ``Aι+B`` where ``A``,``B`` are the poloidal and + toroidal Fourier resolution of |B|, respectively, in straight-field line + PEST coordinates, and ι is the rotational transform normalized by 2π. + A tighter upper bound than ``num_well=(Aι+B)*num_transit`` is preferable. + The ``check_points`` or ``plot`` methods in ``desc.integrals.Bounce2D`` + are useful to select a reasonable value. """ @@ -123,9 +125,9 @@ def __init__( target = 0.0 self._grid = grid + self._constants = {"quad_weights": 1} self._X = X self._Y = Y - self._constants = {"quad_weights": 1} self._hyperparam = { "Y_B": setdefault(Y_B, 2 * Y), "num_transit": num_transit, @@ -160,15 +162,10 @@ def build(self, use_jit=True, verbose=1): """ eq = self.things[0] if self._grid is None: - self._grid = Grid.create_meshgrid( - # Multiply equilibrium resolution by 2 instead of using eq.*_grid - # because the eq.*_grid integers are odd, and we'd like them to be - # powers of two or at least even. - [1.0, fourier_pts(eq.M * 2), fourier_pts(max(1, eq.N) * 2) / eq.NFP], - period=(np.inf, 2 * np.pi, 2 * np.pi / eq.NFP), - NFP=eq.NFP, + self._grid = LinearGrid( + theta=eq.M_grid, zeta=eq.N_grid, NFP=eq.NFP, sym=False ) - # Should we call self._grid.to_numpy()? + assert self._grid.can_fft self._constants["clebsch"] = FourierChebyshevSeries.nodes( self._X, self._Y, @@ -224,6 +221,7 @@ def compute(self, params, constants=None): data = compute_fun( eq, "iota", params, constants["transforms"], constants["profiles"] ) + # TODO: GitHub issue #1034. Use old theta values as initial guess. data = compute_fun( eq, "effective ripple", @@ -231,7 +229,6 @@ def compute(self, params, constants=None): constants["transforms"], constants["profiles"], data, - # TODO: GitHub issue #1034. Use old values as initial guess. theta=Bounce2D.compute_theta( eq, self._X, @@ -271,11 +268,7 @@ class GammaC(_Objective): ``Equilibrium`` to be optimized. grid : Grid Optional, tensor-product grid in (ρ, θ, ζ) with uniformly spaced nodes - (θ, ζ) ∈ [0, 2π) × [0, 2π/NFP). That is, - ``grid.num_theta``, ``grid.num_zeta`` must match the output of - ``desc.integrals.interp_utils.fourier_pts(grid.num_theta)``, - ``desc.integrals.interp_utils.fourier_pts(grid.num_zeta)/grid.NFP``, - respectively. Powers of two are preferable. + (θ, ζ) ∈ [0, 2π) × [0, 2π/NFP). Powers of two are preferable. X : int Grid resolution in poloidal direction for Clebsch coordinate grid. Preferably power of 2. @@ -295,9 +288,16 @@ class GammaC(_Objective): Resolution for quadrature over velocity coordinate. Default is 64. num_well : int Maximum number of wells to detect for each pitch and field line. - Default is to detect all wells, but due to limitations in JAX this option - may consume more memory. Specifying a number that tightly upper bounds - the number of wells will increase performance. + Giving ``None`` will detect all wells but due to current limitations in + JAX this will have worse performance. + Specifying a number that tightly upper bounds the number of wells will + increase performance. In general, an upper bound on the number of wells + per toroidal transit is ``Aι+B`` where ``A``,``B`` are the poloidal and + toroidal Fourier resolution of |B|, respectively, in straight-field line + PEST coordinates, and ι is the rotational transform normalized by 2π. + A tighter upper bound than ``num_well=(Aι+B)*num_transit`` is preferable. + The ``check_points`` or ``plot`` methods in ``desc.integrals.Bounce2D`` + are useful to select a reasonable value. Nemov : bool Whether to use the Γ_c as defined by Nemov et al. or Velasco et al. Default is Nemov. Set to ``False`` to use Velascos's. @@ -352,9 +352,9 @@ def __init__( target = 0.0 self._grid = grid + self._constants = {"quad_weights": 1} self._X = X self._Y = Y - self._constants = {"quad_weights": 1} self._hyperparam = { "Y_B": setdefault(Y_B, 2 * Y), "num_transit": num_transit, @@ -364,7 +364,6 @@ def __init__( } if Nemov: self._key = "Gamma_c" - self._constants["quad2"] = chebgauss2(num_quad) else: self._key = "Gamma_c Velasco" raise NotImplementedError @@ -395,15 +394,10 @@ def build(self, use_jit=True, verbose=1): """ eq = self.things[0] if self._grid is None: - self._grid = Grid.create_meshgrid( - # Multiply equilibrium resolution by 2 instead of using eq.*_grid - # because the eq.*_grid integers are odd, and we'd like them to be - # powers of two or at least even. - [1.0, fourier_pts(eq.M * 2), fourier_pts(max(1, eq.N) * 2) / eq.NFP], - period=(np.inf, 2 * np.pi, 2 * np.pi / eq.NFP), - NFP=eq.NFP, + self._grid = LinearGrid( + theta=eq.M_grid, zeta=eq.N_grid, NFP=eq.NFP, sym=False ) - # Should we call self._grid.to_numpy()? + assert self._grid.can_fft self._constants["clebsch"] = FourierChebyshevSeries.nodes( self._X, self._Y, @@ -411,10 +405,12 @@ def build(self, use_jit=True, verbose=1): domain=(0, 2 * np.pi), ) self._constants["fieldline_quad"] = leggauss(self._hyperparam["Y_B"] // 2) + num_quad = self._hyperparam.pop("num_quad") self._constants["quad"] = get_quadrature( - leggauss(self._hyperparam.pop("num_quad")), + leggauss(num_quad), (automorphism_sin, grad_automorphism_sin), ) + self._constants["quad2"] = chebgauss2(num_quad) self._dim_f = self._grid.num_rho self._target, self._bounds = _parse_callable_target_bounds( @@ -440,7 +436,7 @@ def compute(self, params, constants=None): ---------- params : dict Dictionary of equilibrium degrees of freedom, e.g. - ``Equilibrium.params_dict`` + ``Equilibrium.params_dict``. constants : dict Dictionary of constant data, e.g. transforms, profiles etc. Defaults to ``self.constants``. @@ -460,6 +456,7 @@ def compute(self, params, constants=None): data = compute_fun( eq, "iota", params, constants["transforms"], constants["profiles"] ) + # TODO: GitHub issue #1034. Use old theta values as initial guess. data = compute_fun( eq, self._key, @@ -467,7 +464,6 @@ def compute(self, params, constants=None): constants["transforms"], constants["profiles"], data, - # TODO: GitHub issue #1034. Use old values as initial guess. theta=Bounce2D.compute_theta( eq, self._X, diff --git a/tests/test_neoclassical.py b/tests/test_neoclassical.py index cb0c185c26..3f33cea62a 100644 --- a/tests/test_neoclassical.py +++ b/tests/test_neoclassical.py @@ -9,9 +9,8 @@ from desc.equilibrium.coords import get_rtz_grid from desc.examples import get -from desc.grid import Grid, LinearGrid +from desc.grid import LinearGrid from desc.integrals import Bounce2D -from desc.integrals._interp_utils import fourier_pts from desc.utils import errorif, setdefault from desc.vmec import VMECIO @@ -93,11 +92,7 @@ def test_effective_ripple_2D(): """Test effective ripple 2D with W7-X against NEO.""" eq = get("W7-X") rho = np.linspace(0, 1, 10) - grid = Grid.create_meshgrid( - [rho, fourier_pts(eq.M_grid), fourier_pts(eq.N_grid) / eq.NFP], - period=(np.inf, 2 * np.pi, 2 * np.pi / eq.NFP), - NFP=eq.NFP, - ) + grid = LinearGrid(rho=rho, theta=eq.M_grid, zeta=eq.N_grid, NFP=eq.NFP, sym=False) data = eq.compute( "effective ripple 3/2", grid=grid, @@ -169,11 +164,7 @@ def test_Gamma_c_2D(): """Test Γ_c Nemov 2D with W7-X.""" eq = get("W7-X") rho = np.linspace(0, 1, 10) - grid = Grid.create_meshgrid( - [rho, fourier_pts(eq.M_grid), fourier_pts(eq.N_grid) / eq.NFP], - period=(np.inf, 2 * np.pi, 2 * np.pi / eq.NFP), - NFP=eq.NFP, - ) + grid = LinearGrid(rho=rho, theta=eq.M_grid, zeta=eq.N_grid, NFP=eq.NFP, sym=False) data = eq.compute( "Gamma_c", grid=grid, From 7b58acfd66f7d8b762a8becbd6471124f7c4a060 Mon Sep 17 00:00:00 2001 From: unalmis Date: Tue, 22 Oct 2024 13:37:51 -0400 Subject: [PATCH 10/60] Improving documentation and fixing bug in objective where Y_B not set properly --- desc/compute/_neoclassical.py | 57 +++++++++++++++++-------------- desc/integrals/bounce_integral.py | 17 ++++----- desc/objectives/_neoclassical.py | 16 +++++---- tests/test_neoclassical.py | 20 +++++++---- 4 files changed, 63 insertions(+), 47 deletions(-) diff --git a/desc/compute/_neoclassical.py b/desc/compute/_neoclassical.py index ceda410039..524fcae7a6 100644 --- a/desc/compute/_neoclassical.py +++ b/desc/compute/_neoclassical.py @@ -8,11 +8,10 @@ * ``1034`` Optimizers/objectives with auxiliary output """ -# If memory is still an issue, consider computing one pitch at a time. This -# can be done by copy-pasting the code given at -# https://github.com/PlasmaControl/DESC/pull/1003#discussion_r1780459450. -# Note that imap supports computing in batches, so that can also be used. -# Make sure to benchmark whether this reduces memory in an optimization. +# TODO: Add ``batch`` kwargs to 2D compute funs to compute ``batch`` pitch values +# at a time. This can be done by copy-pasting the code given at +# https://github.com/PlasmaControl/DESC/pull/1003#discussion_r1780459450. +# add using the ``batch_size`` parameter of ``imap``. from functools import partial @@ -39,11 +38,13 @@ _Bounce1D_doc = { "quad": """tuple[jnp.ndarray] : - Quadrature points and weights for bounce integrals. + Used to compute bounce integrals. + Quadrature points xₖ and weights wₖ for the + approximate evaluation of the integral ∫₋₁¹ f(x) dx ≈ ∑ₖ wₖ f(xₖ). """, "num_quad": """int : Resolution for quadrature of bounce integrals. - Default is 32. This option is ignored if given ``quad``. + Default is 32. This parameter is ignored if given ``quad``. """, "num_pitch": "int : Resolution for quadrature over velocity coordinate.", "num_well": """int : @@ -62,23 +63,33 @@ "batch": "bool : Whether to vectorize part of the computation. Default is true.", } _Bounce2D_doc = { - "spline": "bool : Whether to use cubic splines to compute bounce points.", - "theta": "jnp.ndarray : DESC coordinates θ of (α,ζ) Fourier Chebyshev basis nodes.", + "theta": """jnp.ndarray : + DESC coordinates θ sourced from the Clebsch coordinates + ``FourierChebyshevSeries.nodes(X,Y,rho,domain=(0,2*jnp.pi))``. + Use the ``Bounce2D.compute_theta`` method to obtain this. + """, "Y_B": """int : Desired resolution for |B| along field lines to compute bounce points. - Default is to double the resolution of ``theta``. + Default is double the resolution of ``theta``. """, - "num_transit": "int : Number of toroidal transits to follow field line.", + "num_transit": """int : + Number of toroidal transits to follow field line. + For axisymmetric devices, one poloidal transit is sufficient. Otherwise, + assuming the surface is not near rational, then more transits will + approximate surface averages better, with diminishing returns. + """, + "num_quad": _Bounce1D_doc["num_quad"], + "num_pitch": _Bounce1D_doc["num_pitch"], + "num_well": _Bounce1D_doc["num_well"], "fieldline_quad": """tuple[jnp.ndarray] : + Used to compute the proper length of the field line ∫ dℓ / |B|. Quadrature points xₖ and weights wₖ for the approximate evaluation of the integral ∫₋₁¹ f(x) dx ≈ ∑ₖ wₖ f(xₖ). - Used to compute the proper length of the field line ∫ dℓ / |B|. - Default is Gauss-Legendre quadrature. + Default is Gauss-Legendre quadrature at resolution ``Y_B//2`` + on each toroidal transit. """, "quad": _Bounce1D_doc["quad"], - "num_quad": _Bounce1D_doc["num_quad"], - "num_pitch": _Bounce1D_doc["num_pitch"], - "num_well": _Bounce1D_doc["num_well"], + "spline": "bool : Whether to use cubic splines to compute bounce points.", } @@ -696,11 +707,8 @@ def Gamma_c(data): # We rewrite equivalents of Nemov et al.'s expression's using single-valued # maps of a physical coordinates. This avoids the computational issues of - # multivalued maps. It further enables use of more efficient methods, such as - # fast transforms and fixed computational grids throughout optimization, which - # are used in the numerical methods of the ``Bounce2D`` class. Also, Nemov - # assumes B^ϕ > 0 in some comments; this is not true in DESC, but the - # computations done here are invariant to the sign. + # multivalued maps. Also, Nemov assumes B^ϕ > 0 in some comments; this is + # not true in DESC, but the computations done here are invariant to the sign. # It is assumed the grid is sufficiently dense to reconstruct |B|, # so anything smoother than |B| may be captured accurately as a single @@ -881,11 +889,8 @@ def Gamma_c(data): # We rewrite equivalents of Nemov et al.'s expression's using single-valued # maps of a physical coordinates. This avoids the computational issues of - # multivalued maps. It further enables use of more efficient methods, such as - # fast transforms and fixed computational grids throughout optimization, which - # are used in the numerical methods of the ``Bounce2D`` class. Also, Nemov - # assumes B^ϕ > 0 in some comments; this is not true in DESC, but the - # computations done here are invariant to the sign. + # multivalued maps. Also, Nemov assumes B^ϕ > 0 in some comments; this is + # not true in DESC, but the computations done here are invariant to the sign. # It is assumed the grid is sufficiently dense to reconstruct |B|, # so anything smoother than |B| may be captured accurately as a single diff --git a/desc/integrals/bounce_integral.py b/desc/integrals/bounce_integral.py index 991582c11f..82f01f7839 100644 --- a/desc/integrals/bounce_integral.py +++ b/desc/integrals/bounce_integral.py @@ -290,8 +290,8 @@ def __init__( ``FourierChebyshevSeries.nodes(X,Y,rho,domain=(0,2*jnp.pi))``. Use the ``Bounce2D.compute_theta`` method to obtain this. Y_B : int - Desired Chebyshev spectral resolution for |B|. - Default is to double the resolution of ``theta``. + Desired resolution for |B| along field lines to compute bounce points. + Default is double ``Y``. alpha : float Starting field line poloidal label. num_transit : int @@ -350,7 +350,7 @@ def __init__( # To retain dℓ = (|B|/B^ζ) dζ > 0 after fixing dζ > 0, we require # B^ζ = B⋅∇ζ > 0. This is equivalent to changing the sign of ∇ζ # or (∂ℓ/∂ζ)|ρ,a. Recall dζ = ∇ζ⋅dR ⇔ 1 = ∇ζ⋅(e_ζ|ρ,a). - "B^zeta": _fourier( + "|B^zeta|": _fourier( grid, jnp.abs(data["B^zeta"]) * Lref / Bref, is_reshaped ), "T(z)": fourier_chebyshev( @@ -725,7 +725,7 @@ def _integrate(self, x, w, integrand, pitch_inv, f, z1, z2, check, plot): B_sup_z = irfft2_non_uniform( theta, zeta, - self._c["B^zeta"][..., jnp.newaxis, :, :], + self._c["|B^zeta|"][..., jnp.newaxis, :, :], self._M, self._N, domain1=(0, 2 * jnp.pi / self._NFP), @@ -765,9 +765,10 @@ def compute_fieldline_length(self, quad=None): Parameters ---------- quad : tuple[jnp.ndarray] - Quadrature points xₖ and weights wₖ for the approximate evaluation - of the integral ∫₋₁¹ f(x) dx ≈ ∑ₖ wₖ f(xₖ). - Resolution equal to half the Chebyshev resolution of |B| works well. + Quadrature points xₖ and weights wₖ for the + approximate evaluation of the integral ∫₋₁¹ f(x) dx ≈ ∑ₖ wₖ f(xₖ). + Default is Gauss-Legendre quadrature at resolution ``Y_B//2`` + on each toroidal transit. Returns ------- @@ -801,7 +802,7 @@ def compute_fieldline_length(self, quad=None): B_sup_z = irfft2_non_uniform( theta, zeta, - self._c["B^zeta"][..., jnp.newaxis, :, :], + self._c["|B^zeta|"][..., jnp.newaxis, :, :], self._M, self._N, domain1=(0, 2 * jnp.pi / self._NFP), diff --git a/desc/objectives/_neoclassical.py b/desc/objectives/_neoclassical.py index 329c859451..1f0e2fdd3d 100644 --- a/desc/objectives/_neoclassical.py +++ b/desc/objectives/_neoclassical.py @@ -63,11 +63,12 @@ class EffectiveRipple(_Objective): Preferably power of 2. Y_B : int Desired resolution for |B| along field lines to compute bounce points. - Default is to double ``Y``. + Default is double ``Y``. num_transit : int Number of toroidal transits to follow field line. For axisymmetric devices, one poloidal transit is sufficient. Otherwise, - more transits will give more accurate result, with diminishing returns. + assuming the surface is not near rational, then more transits will + approximate surface averages better, with diminishing returns. num_quad : int Resolution for quadrature of bounce integrals. Default is 32. num_pitch : int @@ -128,8 +129,9 @@ def __init__( self._constants = {"quad_weights": 1} self._X = X self._Y = Y + Y_B = setdefault(Y_B, 2 * Y) self._hyperparam = { - "Y_B": setdefault(Y_B, 2 * Y), + "Y_B": Y_B, "num_transit": num_transit, "num_quad": num_quad, "num_pitch": num_pitch, @@ -277,11 +279,12 @@ class GammaC(_Objective): Preferably power of 2. Y_B : int Desired resolution for |B| along field lines to compute bounce points. - Default is to double ``Y``. + Default is double ``Y``. num_transit : int Number of toroidal transits to follow field line. For axisymmetric devices, one poloidal transit is sufficient. Otherwise, - more transits will give more accurate result, with diminishing returns. + assuming the surface is not near rational, then more transits will + approximate surface averages better, with diminishing returns. num_quad : int Resolution for quadrature of bounce integrals. Default is 32. num_pitch : int @@ -355,8 +358,9 @@ def __init__( self._constants = {"quad_weights": 1} self._X = X self._Y = Y + Y_B = setdefault(Y_B, 2 * Y) self._hyperparam = { - "Y_B": setdefault(Y_B, 2 * Y), + "Y_B": Y_B, "num_transit": num_transit, "num_quad": num_quad, "num_pitch": num_pitch, diff --git a/tests/test_neoclassical.py b/tests/test_neoclassical.py index 3f33cea62a..6a58efb41f 100644 --- a/tests/test_neoclassical.py +++ b/tests/test_neoclassical.py @@ -68,7 +68,7 @@ def test_effective_ripple_1D(): toroidal=np.linspace(0, num_transit * 2 * np.pi, num_transit * Y_B), coordinates="raz", ) - data = eq.compute("effective ripple*", grid=grid) + data = eq.compute("effective ripple*", grid=grid, num_well=20 * num_transit) assert np.isfinite(data["effective ripple*"]).all() np.testing.assert_allclose( @@ -93,14 +93,15 @@ def test_effective_ripple_2D(): eq = get("W7-X") rho = np.linspace(0, 1, 10) grid = LinearGrid(rho=rho, theta=eq.M_grid, zeta=eq.N_grid, NFP=eq.NFP, sym=False) + num_transit = 10 data = eq.compute( "effective ripple 3/2", grid=grid, theta=Bounce2D.compute_theta(eq, X=16, Y=64, rho=rho), Y_B=100, - num_transit=10, + num_transit=num_transit, num_quad=33, - spline=True, + num_well=20 * num_transit, ) assert np.isfinite(data["effective ripple 3/2"]).all() @@ -129,7 +130,7 @@ def test_Gamma_c_Velasco_1D(): toroidal=np.linspace(0, num_transit * 2 * np.pi, num_transit * Y_B), coordinates="raz", ) - data = eq.compute("Gamma_c Velasco*", grid=grid) + data = eq.compute("Gamma_c Velasco*", grid=grid, num_well=20 * num_transit) assert np.isfinite(data["Gamma_c Velasco*"]).all() fig, ax = plt.subplots() ax.plot(rho, grid.compress(data["Gamma_c Velasco*"]), marker="o") @@ -151,7 +152,7 @@ def test_Gamma_c_1D(): toroidal=np.linspace(0, num_transit * 2 * np.pi, num_transit * Y_B), coordinates="raz", ) - data = eq.compute("Gamma_c*", grid=grid) + data = eq.compute("Gamma_c*", grid=grid, num_well=20 * num_transit) assert np.isfinite(data["Gamma_c*"]).all() fig, ax = plt.subplots() ax.plot(rho, grid.compress(data["Gamma_c*"]), marker="o") @@ -165,14 +166,19 @@ def test_Gamma_c_2D(): eq = get("W7-X") rho = np.linspace(0, 1, 10) grid = LinearGrid(rho=rho, theta=eq.M_grid, zeta=eq.N_grid, NFP=eq.NFP, sym=False) + num_transit = 10 data = eq.compute( "Gamma_c", grid=grid, theta=Bounce2D.compute_theta(eq, X=16, Y=64, rho=rho), Y_B=100, - num_transit=10, - spline=True, + num_transit=num_transit, + num_well=20 * num_transit, ) + # FIXME: There is a regression against commit where baseline plot was + # generated because currently gives nan on surface closest to axis. + # Go back to the commit where the baseline plot for this + # test was generated and see what changed. assert np.isfinite(data["Gamma_c"]).all() fig, ax = plt.subplots() ax.plot(rho, grid.compress(data["Gamma_c"]), marker="o") From 5e0bd0d4d8fd66fc16e3e700bc90b267c3d0b799 Mon Sep 17 00:00:00 2001 From: unalmis Date: Tue, 22 Oct 2024 14:43:10 -0400 Subject: [PATCH 11/60] Mark Gamma_c as not implemented axis limit --- tests/test_axis_limits.py | 1 + tests/test_neoclassical.py | 6 +----- 2 files changed, 2 insertions(+), 5 deletions(-) diff --git a/tests/test_axis_limits.py b/tests/test_axis_limits.py index a71fe8d770..3ff21e0a99 100644 --- a/tests/test_axis_limits.py +++ b/tests/test_axis_limits.py @@ -99,6 +99,7 @@ "K_vc", # only defined on surface "iota_num_rrr", "iota_den_rrr", + "Gamma_c", } diff --git a/tests/test_neoclassical.py b/tests/test_neoclassical.py index 6a58efb41f..e68088c47b 100644 --- a/tests/test_neoclassical.py +++ b/tests/test_neoclassical.py @@ -164,7 +164,7 @@ def test_Gamma_c_1D(): def test_Gamma_c_2D(): """Test Γ_c Nemov 2D with W7-X.""" eq = get("W7-X") - rho = np.linspace(0, 1, 10) + rho = np.linspace(1e-12, 1, 10) grid = LinearGrid(rho=rho, theta=eq.M_grid, zeta=eq.N_grid, NFP=eq.NFP, sym=False) num_transit = 10 data = eq.compute( @@ -175,10 +175,6 @@ def test_Gamma_c_2D(): num_transit=num_transit, num_well=20 * num_transit, ) - # FIXME: There is a regression against commit where baseline plot was - # generated because currently gives nan on surface closest to axis. - # Go back to the commit where the baseline plot for this - # test was generated and see what changed. assert np.isfinite(data["Gamma_c"]).all() fig, ax = plt.subplots() ax.plot(rho, grid.compress(data["Gamma_c"]), marker="o") From 15f9278884be71b711f7340daf472c2d373454e2 Mon Sep 17 00:00:00 2001 From: unalmis Date: Tue, 22 Oct 2024 17:46:28 -0400 Subject: [PATCH 12/60] Add Gamma_c axis limit --- desc/compute/_neoclassical.py | 100 +++++++++++++++++----------------- tests/test_axis_limits.py | 5 +- 2 files changed, 52 insertions(+), 53 deletions(-) diff --git a/desc/compute/_neoclassical.py b/desc/compute/_neoclassical.py index 524fcae7a6..e3fe563013 100644 --- a/desc/compute/_neoclassical.py +++ b/desc/compute/_neoclassical.py @@ -374,12 +374,12 @@ def _effective_ripple_1D(params, transforms, profiles, data, **kwargs): @partial( jit, static_argnames=[ - "spline", "Y_B", "num_transit", "num_quad", "num_pitch", "num_well", + "spline", ], ) def _epsilon_32_2D(params, transforms, profiles, data, **kwargs): @@ -589,12 +589,12 @@ def Gamma_c(data): "|B|_r|v,p", "b", "grad(phi)", - "e^rho", + "grad(psi)", + "|grad(psi)|", "|grad(rho)|", "|e_alpha|r,p|", "kappa_g", "iota_r", - "psi_r", "fieldline length", ] + Bounce1D.required_names, @@ -632,27 +632,26 @@ def _Gamma_c_1D(params, transforms, profiles, data, **kwargs): # α = ϑ − χ(ψ) ϕ where α is the poloidal label of ψ,α Clebsch coordinates. # Choosing χ = ι implies ϑ, ϕ are PEST angles. # ∂G/∂((λB₀)⁻¹) = λ²B₀ ∫ dℓ (1 − λ|B|/2) / √(1 − λ|B|) ∂|B|/∂ψ / |B| - # ∂V/∂((λB₀)⁻¹) = 3/2 λ²B₀ ∫ dℓ √(1 − λ|B|) K / |B| + # ∂V/∂((λB₀)⁻¹) = 3/2 λ²B₀ ∫ dℓ √(1 − λ|B|) R / |B| # ∂g/∂((λB₀)⁻¹) = λ²B₀² ∫ dℓ (1 − λ|B|/2) / √(1 − λ|B|) |∇ψ| κ_g / |B| + # K ≝ R dψ/dρ # tan(π/2 γ_c) = - # ∫ dℓ (1 − λ|B|/2) / √(1 − λ|B|) |∇ρ| κ_g / |B| + # ∫ dℓ (1 − λ|B|/2) / √(1 − λ|B|) |∇ψ| κ_g / |B| # ---------------------------------------------- - # (|∇ρ| ‖e_α|ρ,ϕ‖)ᵢ ∫ dℓ [ (1 − λ|B|/2)/√(1 − λ|B|) ∂|B|/∂ψ + √(1 − λ|B|) K ] / |B| + # (|∇ρ| ‖e_α|ρ,ϕ‖)ᵢ ∫ dℓ [ (1 − λ|B|/2)/√(1 − λ|B|) ∂|B|/∂ρ + √(1 − λ|B|) K ] / |B| def d_v_tau(B, pitch): return safediv(2.0, jnp.sqrt(jnp.abs(1 - pitch * B))) - def drift1(grad_rho_norm_kappa_g, B, pitch): + def drift1(grad_psi_norm_kappa_g, B, pitch): return ( safediv(1 - 0.5 * pitch * B, jnp.sqrt(jnp.abs(1 - pitch * B))) - * grad_rho_norm_kappa_g + * grad_psi_norm_kappa_g / B ) - def drift2(B_psi, B, pitch): - return ( - safediv(1 - 0.5 * pitch * B, jnp.sqrt(jnp.abs(1 - pitch * B))) * B_psi / B - ) + def drift2(B_r, B, pitch): + return safediv(1 - 0.5 * pitch * B, jnp.sqrt(jnp.abs(1 - pitch * B))) * B_r / B def drift3(K, B, pitch): return jnp.sqrt(jnp.abs(1 - pitch * B)) * K / B @@ -669,7 +668,7 @@ def Gamma_c(data): bounce.integrate( drift1, data["pitch_inv"], - data["|grad(rho)|*kappa_g"], + data["|grad(psi)|*kappa_g"], points=points, batch=batch, ), @@ -677,7 +676,7 @@ def Gamma_c(data): bounce.integrate( drift2, data["pitch_inv"], - data["|B|_psi|v,p"], + data["|B|_r|v,p"], points=points, batch=batch, ) @@ -705,24 +704,25 @@ def Gamma_c(data): / data["pitch_inv"] ** 2 ).sum(axis=-1) - # We rewrite equivalents of Nemov et al.'s expression's using single-valued - # maps of a physical coordinates. This avoids the computational issues of - # multivalued maps. Also, Nemov assumes B^ϕ > 0 in some comments; this is - # not true in DESC, but the computations done here are invariant to the sign. + # We rewrite equivalents of Nemov et al.'s expressions (21, 22) to resolve + # the indeterminate form of the limit and using single-valued maps of a + # physical coordinates. This avoids the computational issues of multivalued + # maps. Also, Nemov assumes B^ϕ > 0 in some comments; this is not true in DESC, + # but the computations done here are invariant to the sign. # It is assumed the grid is sufficiently dense to reconstruct |B|, # so anything smoother than |B| may be captured accurately as a single # spline rather than splining each component. fun_data = { - "|grad(rho)|*kappa_g": data["|grad(rho)|"] * data["kappa_g"], + "|grad(psi)|*kappa_g": data["|grad(psi)|"] * data["kappa_g"], "|grad(rho)|*|e_alpha|r,p|": data["|grad(rho)|"] * data["|e_alpha|r,p|"], - "|B|_psi|v,p": data["|B|_r|v,p"] / data["psi_r"], - "K": data["iota_r"] * dot(cross(data["e^rho"], data["b"]), data["grad(phi)"]) - # Behaves as ∂log(|B|²/B^ϕ)/∂ψ |B| if one ignores the issue of a log argument + "|B|_r|v,p": data["|B|_r|v,p"], + "K": data["iota_r"] + * dot(cross(data["grad(psi)"], data["b"]), data["grad(phi)"]) + # Behaves as ∂log(|B|²/B^ϕ)/∂ρ |B| if one ignores the issue of a log argument # with units. Smoothness determined by positive lower bound of log argument, - # and hence behaves as ∂log(|B|)/∂ψ |B| = ∂|B|/∂ψ. - - (2 * data["|B|_r|v,p"] - data["|B|"] * data["B^phi_r|v,p"] / data["B^phi"]) - / data["psi_r"], + # and hence behaves as ∂log(|B|)/∂ρ |B| = ∂|B|/∂ρ. + - (2 * data["|B|_r|v,p"] - data["|B|"] * data["B^phi_r|v,p"] / data["B^phi"]), } data["Gamma_c*"] = ( _compute_1D(Gamma_c, fun_data, data, grid, kwargs.get("num_pitch", 64)) @@ -756,12 +756,12 @@ def Gamma_c(data): "|B|_r|v,p", "b", "grad(phi)", - "e^rho", + "grad(psi)", + "|grad(psi)|", "|grad(rho)|", "|e_alpha|r,p|", "kappa_g", "iota_r", - "psi_r", ] + Bounce2D.required_names, resolution_requirement="z", # FIXME: GitHub issue #1312. Should be "tz". @@ -772,12 +772,12 @@ def Gamma_c(data): @partial( jit, static_argnames=[ - "spline", "Y_B", "num_transit", "num_quad", "num_pitch", "num_well", + "spline", ], ) def _Gamma_c_2D(params, transforms, profiles, data, **kwargs): @@ -814,27 +814,26 @@ def _Gamma_c_2D(params, transforms, profiles, data, **kwargs): # α = ϑ − χ(ψ) ϕ where α is the poloidal label of ψ,α Clebsch coordinates. # Choosing χ = ι implies ϑ, ϕ are PEST angles. # ∂G/∂((λB₀)⁻¹) = λ²B₀ ∫ dℓ (1 − λ|B|/2) / √(1 − λ|B|) ∂|B|/∂ψ / |B| - # ∂V/∂((λB₀)⁻¹) = 3/2 λ²B₀ ∫ dℓ √(1 − λ|B|) K / |B| + # ∂V/∂((λB₀)⁻¹) = 3/2 λ²B₀ ∫ dℓ √(1 − λ|B|) R / |B| # ∂g/∂((λB₀)⁻¹) = λ²B₀² ∫ dℓ (1 − λ|B|/2) / √(1 − λ|B|) |∇ψ| κ_g / |B| + # K ≝ R dψ/dρ # tan(π/2 γ_c) = - # ∫ dℓ (1 − λ|B|/2) / √(1 − λ|B|) |∇ρ| κ_g / |B| + # ∫ dℓ (1 − λ|B|/2) / √(1 − λ|B|) |∇ψ| κ_g / |B| # ---------------------------------------------- - # (|∇ρ| ‖e_α|ρ,ϕ‖)ᵢ ∫ dℓ [ (1 − λ|B|/2)/√(1 − λ|B|) ∂|B|/∂ψ + √(1 − λ|B|) K ] / |B| + # (|∇ρ| ‖e_α|ρ,ϕ‖)ᵢ ∫ dℓ [ (1 − λ|B|/2)/√(1 − λ|B|) ∂|B|/∂ρ + √(1 − λ|B|) K ] / |B| def d_v_tau(B, pitch, zeta): return safediv(2.0, jnp.sqrt(jnp.abs(1 - pitch * B))) - def drift1(grad_rho_norm_kappa_g, B, pitch, zeta): + def drift1(grad_psi_norm_kappa_g, B, pitch, zeta): return ( safediv(1 - 0.5 * pitch * B, jnp.sqrt(jnp.abs(1 - pitch * B))) - * grad_rho_norm_kappa_g + * grad_psi_norm_kappa_g / B ) - def drift2(B_psi, B, pitch, zeta): - return ( - safediv(1 - 0.5 * pitch * B, jnp.sqrt(jnp.abs(1 - pitch * B))) * B_psi / B - ) + def drift2(B_r, B, pitch, zeta): + return safediv(1 - 0.5 * pitch * B, jnp.sqrt(jnp.abs(1 - pitch * B))) * B_r / B def drift3(K, B, pitch, zeta): return jnp.sqrt(jnp.abs(1 - pitch * B)) * K / B @@ -859,12 +858,12 @@ def Gamma_c(data): bounce.integrate( drift1, data["pitch_inv"], - data["|grad(rho)|*kappa_g"], + data["|grad(psi)|*kappa_g"], points=points, ), ( bounce.integrate( - drift2, data["pitch_inv"], data["|B|_psi|v,p"], points=points + drift2, data["pitch_inv"], data["|B|_r|v,p"], points=points ) + bounce.integrate( drift3, data["pitch_inv"], data["K"], points=points, quad=quad2 @@ -887,24 +886,25 @@ def Gamma_c(data): / data["pitch_inv"] ** 2 ).sum(axis=-1) / bounce.compute_fieldline_length(fieldline_quad) - # We rewrite equivalents of Nemov et al.'s expression's using single-valued - # maps of a physical coordinates. This avoids the computational issues of - # multivalued maps. Also, Nemov assumes B^ϕ > 0 in some comments; this is - # not true in DESC, but the computations done here are invariant to the sign. + # We rewrite equivalents of Nemov et al.'s expressions (21, 22) to resolve + # the indeterminate form of the limit and using single-valued maps of a + # physical coordinates. This avoids the computational issues of multivalued + # maps. Also, Nemov assumes B^ϕ > 0 in some comments; this is not true in DESC, + # but the computations done here are invariant to the sign. # It is assumed the grid is sufficiently dense to reconstruct |B|, # so anything smoother than |B| may be captured accurately as a single # Fourier series rather than transforming each component. fun_data = { - "|grad(rho)|*kappa_g": data["|grad(rho)|"] * data["kappa_g"], + "|grad(psi)|*kappa_g": data["|grad(psi)|"] * data["kappa_g"], "|grad(rho)|*|e_alpha|r,p|": data["|grad(rho)|"] * data["|e_alpha|r,p|"], - "|B|_psi|v,p": data["|B|_r|v,p"] / data["psi_r"], - "K": data["iota_r"] * dot(cross(data["e^rho"], data["b"]), data["grad(phi)"]) - # Behaves as ∂log(|B|²/B^ϕ)/∂ψ |B| if one ignores the issue of a log argument + "|B|_r|v,p": data["|B|_r|v,p"], + "K": data["iota_r"] + * dot(cross(data["grad(psi)"], data["b"]), data["grad(phi)"]) + # Behaves as ∂log(|B|²/B^ϕ)/∂ρ |B| if one ignores the issue of a log argument # with units. Smoothness determined by positive lower bound of log argument, - # and hence behaves as ∂log(|B|)/∂ψ |B| = ∂|B|/∂ψ. - - (2 * data["|B|_r|v,p"] - data["|B|"] * data["B^phi_r|v,p"] / data["B^phi"]) - / data["psi_r"], + # and hence behaves as ∂log(|B|)/∂ρ |B| = ∂|B|/∂ρ. + - (2 * data["|B|_r|v,p"] - data["|B|"] * data["B^phi_r|v,p"] / data["B^phi"]), } data["Gamma_c"] = _compute_2D( Gamma_c, fun_data, data, theta, grid, kwargs.get("num_pitch", 64) diff --git a/tests/test_axis_limits.py b/tests/test_axis_limits.py index 3ff21e0a99..c15b63849d 100644 --- a/tests/test_axis_limits.py +++ b/tests/test_axis_limits.py @@ -28,8 +28,8 @@ zero_limits = {"rho", "psi", "psi_r", "psi_rrr", "e_theta", "sqrt(g)", "B_t"} # These compute quantities require kinetic profiles, which are not defined for all -# configurations (giving NaN values) -not_continuous_limits = {"current Redl", "P_ISS04", "P_fusion", ""} +# configurations (giving NaN values). Gamma_c is 0 on axis. +not_continuous_limits = {"current Redl", "P_ISS04", "P_fusion", "", "Gamma_c"} not_finite_limits = { "D_Mercier", @@ -99,7 +99,6 @@ "K_vc", # only defined on surface "iota_num_rrr", "iota_den_rrr", - "Gamma_c", } From 62fa06300982379221fdfdde5303c64b644a82df Mon Sep 17 00:00:00 2001 From: unalmis Date: Wed, 23 Oct 2024 01:06:19 -0400 Subject: [PATCH 13/60] Creating new option to reduce memory usage --- desc/compute/__init__.py | 1 + desc/compute/_neoclassical.py | 824 +++++------------- desc/compute/_neoclassical_1D.py | 492 +++++++++++ desc/integrals/_bounce_utils.py | 43 +- desc/integrals/_interp_utils.py | 25 - desc/integrals/bounce_integral.py | 82 +- desc/objectives/_neoclassical.py | 14 +- tests/baseline/test_Gamma_c.png | Bin 0 -> 16440 bytes tests/baseline/test_Gamma_c_2D.png | Bin 16992 -> 0 bytes ...ipple_2D.png => test_effective_ripple.png} | Bin tests/test_integrals.py | 3 +- tests/test_neoclassical.py | 124 +-- tests/test_neoclassical_1D.py | 129 +++ 13 files changed, 947 insertions(+), 790 deletions(-) create mode 100644 desc/compute/_neoclassical_1D.py create mode 100644 tests/baseline/test_Gamma_c.png delete mode 100644 tests/baseline/test_Gamma_c_2D.png rename tests/baseline/{test_effective_ripple_2D.png => test_effective_ripple.png} (100%) create mode 100644 tests/test_neoclassical_1D.py diff --git a/desc/compute/__init__.py b/desc/compute/__init__.py index c926e891b5..b1dc029600 100644 --- a/desc/compute/__init__.py +++ b/desc/compute/__init__.py @@ -36,6 +36,7 @@ _geometry, _metric, _neoclassical, + _neoclassical_1D, _omnigenity, _profiles, _stability, diff --git a/desc/compute/_neoclassical.py b/desc/compute/_neoclassical.py index e3fe563013..4b25142fb0 100644 --- a/desc/compute/_neoclassical.py +++ b/desc/compute/_neoclassical.py @@ -8,23 +8,13 @@ * ``1034`` Optimizers/objectives with auxiliary output """ -# TODO: Add ``batch`` kwargs to 2D compute funs to compute ``batch`` pitch values -# at a time. This can be done by copy-pasting the code given at -# https://github.com/PlasmaControl/DESC/pull/1003#discussion_r1780459450. -# add using the ``batch_size`` parameter of ``imap``. - from functools import partial from orthax.legendre import leggauss -from quadax import simpson from desc.backend import imap, jit, jnp -from ..integrals._bounce_utils import ( - get_pitch_inv_quad, - interp_fft_to_argmin, - interp_to_argmin, -) +from ..integrals._bounce_utils import interp_fft_to_argmin from ..integrals._interp_utils import polyder_vec from ..integrals._quad_utils import ( automorphism_sin, @@ -32,15 +22,25 @@ get_quadrature, grad_automorphism_sin, ) -from ..integrals.bounce_integral import Bounce1D, Bounce2D -from ..utils import cross, dot, errorif, safediv +from ..integrals.bounce_integral import Bounce2D +from ..utils import cross, dot, safediv from .data_index import register_compute_fun -_Bounce1D_doc = { - "quad": """tuple[jnp.ndarray] : - Used to compute bounce integrals. - Quadrature points xₖ and weights wₖ for the - approximate evaluation of the integral ∫₋₁¹ f(x) dx ≈ ∑ₖ wₖ f(xₖ). +_Bounce2D_doc = { + "theta": """jnp.ndarray : + DESC coordinates θ sourced from the Clebsch coordinates + ``FourierChebyshevSeries.nodes(X,Y,rho,domain=(0,2*jnp.pi))``. + Use the ``Bounce2D.compute_theta`` method to obtain this. + """, + "Y_B": """int : + Desired resolution for |B| along field lines to compute bounce points. + Default is double the resolution of ``theta``. + """, + "num_transit": """int : + Number of toroidal transits to follow field line. + For axisymmetric devices, one poloidal transit is sufficient. Otherwise, + assuming the surface is not near rational, more transits will + approximate surface averages better, with diminishing returns. """, "num_quad": """int : Resolution for quadrature of bounce integrals. @@ -60,27 +60,11 @@ The ``check_points`` or ``plot`` methods in ``desc.integrals.Bounce2D`` are useful to select a reasonable value. """, - "batch": "bool : Whether to vectorize part of the computation. Default is true.", -} -_Bounce2D_doc = { - "theta": """jnp.ndarray : - DESC coordinates θ sourced from the Clebsch coordinates - ``FourierChebyshevSeries.nodes(X,Y,rho,domain=(0,2*jnp.pi))``. - Use the ``Bounce2D.compute_theta`` method to obtain this. + "batch_size": """int : + Number of pitch values with which to compute simultaneously. + If given ``None``, then ``batch_size`` defaults to ``num_pitch``. """, - "Y_B": """int : - Desired resolution for |B| along field lines to compute bounce points. - Default is double the resolution of ``theta``. - """, - "num_transit": """int : - Number of toroidal transits to follow field line. - For axisymmetric devices, one poloidal transit is sufficient. Otherwise, - assuming the surface is not near rational, then more transits will - approximate surface averages better, with diminishing returns. - """, - "num_quad": _Bounce1D_doc["num_quad"], - "num_pitch": _Bounce1D_doc["num_pitch"], - "num_well": _Bounce1D_doc["num_well"], + "spline": "bool : Whether to use cubic splines to compute bounce points.", "fieldline_quad": """tuple[jnp.ndarray] : Used to compute the proper length of the field line ∫ dℓ / |B|. Quadrature points xₖ and weights wₖ for the @@ -88,62 +72,15 @@ Default is Gauss-Legendre quadrature at resolution ``Y_B//2`` on each toroidal transit. """, - "quad": _Bounce1D_doc["quad"], - "spline": "bool : Whether to use cubic splines to compute bounce points.", + "quad": """tuple[jnp.ndarray] : + Used to compute bounce integrals. + Quadrature points xₖ and weights wₖ for the + approximate evaluation of the integral ∫₋₁¹ f(x) dx ≈ ∑ₖ wₖ f(xₖ). + """, } -def _alpha_mean(f): - """Simple mean over field lines. - - Simple mean rather than integrating over α and dividing by 2π - (i.e. f.T.dot(dα) / dα.sum()), because when the toroidal angle extends - beyond one transit we need to weight all field lines uniformly, regardless - of their spacing wrt α. - """ - return f.mean(axis=0) - - -def _compute_1D(fun, fun_data, data, grid, num_pitch, reduce=True): - """Compute ``fun`` for each α and ρ value iteratively to reduce memory usage. - - Parameters - ---------- - fun : callable - Function to compute. - fun_data : dict[str, jnp.ndarray] - Data to provide to ``fun``. - Names in ``Bounce1D.required_names`` will be overridden. - Reshaped automatically. - data : dict[str, jnp.ndarray] - DESC data dict. - reduce : bool - Whether to compute mean over α and expand to grid. - Default is true. - - """ - pitch_inv, pitch_inv_weight = get_pitch_inv_quad( - grid.compress(data["min_tz |B|"]), - grid.compress(data["max_tz |B|"]), - num_pitch, - ) - - def for_each_rho(x): - # using same λ values for every field line α on flux surface ρ - x["pitch_inv"] = pitch_inv - x["pitch_inv weight"] = pitch_inv_weight - return imap(fun, x) - - for name in Bounce1D.required_names: - fun_data[name] = data[name] - fun_data = dict( - zip(fun_data.keys(), Bounce1D.reshape_data(grid, *fun_data.values())) - ) - out = imap(for_each_rho, fun_data) - return grid.expand(_alpha_mean(out)) if reduce else out - - -def _compute_2D(fun, fun_data, data, theta, grid, num_pitch): +def _compute(fun, fun_data, data, theta, grid, num_pitch): """Compute ``fun`` for each ρ value iteratively to reduce memory usage. Parameters @@ -168,7 +105,7 @@ def _compute_2D(fun, fun_data, data, theta, grid, num_pitch): zip(fun_data.keys(), Bounce2D.reshape_data(grid, *fun_data.values())) ) # These already have expected shape with num rho along first axis. - fun_data["pitch_inv"], fun_data["pitch_inv weight"] = get_pitch_inv_quad( + fun_data["pitch_inv"], fun_data["pitch_inv weight"] = Bounce2D.get_pitch_inv_quad( grid.compress(data["min_tz |B|"]), grid.compress(data["max_tz |B|"]), num_pitch, @@ -178,175 +115,64 @@ def _compute_2D(fun, fun_data, data, theta, grid, num_pitch): return grid.expand(imap(fun, fun_data)) -@register_compute_fun( - name="fieldline length", - label="\\int_{\\zeta_{\\mathrm{min}}}^{\\zeta_{\\mathrm{max}}}" - " \\frac{d\\zeta}{|B^{\\zeta}|}", - units="m / T", - units_long="Meter / tesla", - description="(Mean) proper length of field line(s)", - dim=1, - params=[], - transforms={"grid": []}, - profiles=[], - coordinates="r", - data=["B^zeta"], - resolution_requirement="z", - source_grid_requirement={"coordinates": "raz", "is_meshgrid": True}, -) -def _fieldline_length(data, transforms, profiles, **kwargs): - grid = transforms["grid"].source_grid - L_ra = simpson( - y=grid.meshgrid_reshape(1 / data["B^zeta"], "arz"), - x=grid.compress(grid.nodes[:, 2], surface_label="zeta"), - axis=-1, - ) - data["fieldline length"] = grid.expand(jnp.abs(_alpha_mean(L_ra))) - return data - - -@register_compute_fun( - name="fieldline length/volume", - label="\\int_{\\zeta_{\\mathrm{min}}}^{\\zeta_{\\mathrm{max}}}" - " \\frac{d\\zeta}{|B^{\\zeta} \\sqrt g|}", - units="1 / Wb", - units_long="Inverse webers", - description="(Mean) proper length over volume of field line(s)", - dim=1, - params=[], - transforms={"grid": []}, - profiles=[], - coordinates="r", - data=["B^zeta", "sqrt(g)"], - resolution_requirement="z", - source_grid_requirement={"coordinates": "raz", "is_meshgrid": True}, -) -def _fieldline_length_over_volume(data, transforms, profiles, **kwargs): - grid = transforms["grid"].source_grid - G_ra = simpson( - y=grid.meshgrid_reshape(1 / (data["B^zeta"] * data["sqrt(g)"]), "arz"), - x=grid.compress(grid.nodes[:, 2], surface_label="zeta"), - axis=-1, - ) - data["fieldline length/volume"] = grid.expand(jnp.abs(_alpha_mean(G_ra))) - return data - +def _foreach_pitch(fun, pitch_inv, batch_size): + """Compute ``fun`` for pitch values iteratively to reduce memory usage. -@register_compute_fun( - name="effective ripple 3/2*", - label=( - # ε¹ᐧ⁵ = π/(8√2) R₀²〈|∇ψ|〉⁻² B₀⁻¹ ∫dλ λ⁻² 〈 ∑ⱼ Hⱼ²/Iⱼ 〉 - "\\epsilon_{\\mathrm{eff}}^{3/2} = \\frac{\\pi}{8 \\sqrt{2}} " - "R_0^2 \\langle \\vert\\nabla \\psi\\vert \\rangle^{-2} " - "B_0^{-1} \\int d\\lambda \\lambda^{-2} " - "\\langle \\sum_j H_j^2 / I_j \\rangle" - ), - units="~", - units_long="None", - description="Effective ripple modulation amplitude to 3/2 power. " - "Uses numerical methods of the Bounce1D class.", - dim=1, - params=[], - transforms={"grid": []}, - profiles=[], - coordinates="r", - data=[ - "min_tz |B|", - "max_tz |B|", - "kappa_g", - "R0", - "|grad(rho)|", - "<|grad(rho)|>", - "fieldline length", - ] - + Bounce1D.required_names, - resolution_requirement="z", - source_grid_requirement={"coordinates": "raz", "is_meshgrid": True}, - **_Bounce1D_doc, -) -@partial(jit, static_argnames=["num_quad", "num_pitch", "num_well", "batch"]) -def _epsilon_32_1D(params, transforms, profiles, data, **kwargs): - """https://doi.org/10.1063/1.873749. + Parameters + ---------- + fun : callable + Function to compute. + pitch_inv : callable + 1/λ values to compute the bounce integrals. + batch_size : int or None + Number of pitch values with which to compute simultaneously. + If given ``None``, then computes everything simultaneously. - Evaluation of 1/ν neoclassical transport in stellarators. - V. V. Nemov, S. V. Kasilov, W. Kernbichler, M. F. Heyn. - Phys. Plasmas 1 December 1999; 6 (12): 4622–4632. """ - # noqa: unused dependency - if "quad" in kwargs: - quad = kwargs["quad"] - else: - quad = chebgauss2(kwargs.get("num_quad", 32)) - num_well = kwargs.get("num_well", None) - batch = kwargs.get("batch", True) - grid = transforms["grid"].source_grid - - def dH(grad_rho_norm_kappa_g, B, pitch): - # Integrand of Nemov eq. 30 with |∂ψ/∂ρ| (λB₀)¹ᐧ⁵ removed. - return ( - jnp.sqrt(jnp.abs(1 - pitch * B)) - * (4 / (pitch * B) - 1) - * grad_rho_norm_kappa_g - / B - ) - - def dI(B, pitch): - # Integrand of Nemov eq. 31. - return jnp.sqrt(jnp.abs(1 - pitch * B)) / B - - def eps_32(data): - """(∂ψ/∂ρ)⁻² B₀⁻² ∫ dλ λ⁻² ∑ⱼ Hⱼ²/Iⱼ.""" - # B₀ has units of λ⁻¹. - # Nemov's ∑ⱼ Hⱼ²/Iⱼ = (∂ψ/∂ρ)² (λB₀)³ ``(H**2 / I).sum(axis=-1)``. - # (λB₀)³ d(λB₀)⁻¹ = B₀² λ³ d(λ⁻¹) = -B₀² λ dλ. - bounce = Bounce1D(grid, data, quad, automorphism=None, is_reshaped=True) - points = bounce.points(data["pitch_inv"], num_well=num_well) - H = bounce.integrate( - dH, - data["pitch_inv"], - data["|grad(rho)|*kappa_g"], - points=points, - batch=batch, - ) - I = bounce.integrate(dI, data["pitch_inv"], points=points, batch=batch) - return ( - safediv(H**2, I).sum(axis=-1) - * data["pitch_inv weight"] - / data["pitch_inv"] ** 3 - ).sum(axis=-1) - - # Interpolate |∇ρ| κ_g since it is smoother than κ_g alone. - fun_data = {"|grad(rho)|*kappa_g": data["|grad(rho)|"] * data["kappa_g"]} - B0 = data["max_tz |B|"] - data["effective ripple 3/2*"] = ( - jnp.pi - / (8 * 2**0.5) - * (B0 * data["R0"] / data["<|grad(rho)|>"]) ** 2 - * _compute_1D(eps_32, fun_data, data, grid, kwargs.get("num_pitch", 50)) - / data["fieldline length"] + # FIXME: Make this work with older JAX versions. + # We don't need to rely on JAX to iteratively vectorize since + # ``fun``` natively supports vectorization. + return ( + fun(pitch_inv) + if batch_size is None + else imap(fun, pitch_inv, batch_size=batch_size).squeeze(axis=-1) ) - return data @register_compute_fun( - name="effective ripple*", + name="effective ripple", label="\\epsilon_{\\mathrm{eff}}", units="~", units_long="None", description="Effective ripple modulation amplitude. " - "Uses numerical methods of the Bounce1D class.", + "Uses numerical methods of the Bounce2D class.", dim=1, params=[], transforms={}, profiles=[], coordinates="r", - data=["effective ripple 3/2*"], + data=["effective ripple 3/2"], ) -def _effective_ripple_1D(params, transforms, profiles, data, **kwargs): - data["effective ripple*"] = data["effective ripple 3/2*"] ** (2 / 3) +def _effective_ripple(params, transforms, profiles, data, **kwargs): + data["effective ripple"] = data["effective ripple 3/2"] ** (2 / 3) return data +def _dH(grad_rho_norm_kappa_g, B, pitch, zeta): + """Integrand of Nemov eq. 30 with |∂ψ/∂ρ| (λB₀)¹ᐧ⁵ removed.""" + return ( + jnp.sqrt(jnp.abs(1 - pitch * B)) + * (4 / (pitch * B) - 1) + * grad_rho_norm_kappa_g + / B + ) + + +def _dI(B, pitch, zeta): + """Integrand of Nemov eq. 31.""" + return jnp.sqrt(jnp.abs(1 - pitch * B)) / B + + @register_compute_fun( name="effective ripple 3/2", label=( @@ -368,7 +194,7 @@ def _effective_ripple_1D(params, transforms, profiles, data, **kwargs): data=["min_tz |B|", "max_tz |B|", "kappa_g", "R0", "|grad(rho)|", "<|grad(rho)|>"] + Bounce2D.required_names, resolution_requirement="z", # FIXME: GitHub issue #1312. Should be "tz". - grid_requirement={"coordinates": "rtz", "can_fft": True}, + grid_requirement={"can_fft": True}, **_Bounce2D_doc, ) @partial( @@ -379,10 +205,11 @@ def _effective_ripple_1D(params, transforms, profiles, data, **kwargs): "num_quad", "num_pitch", "num_well", + "batch_size", "spline", ], ) -def _epsilon_32_2D(params, transforms, profiles, data, **kwargs): +def _epsilon_32(params, transforms, profiles, data, **kwargs): """https://doi.org/10.1063/1.873749. Evaluation of 1/ν neoclassical transport in stellarators. @@ -390,33 +217,23 @@ def _epsilon_32_2D(params, transforms, profiles, data, **kwargs): Phys. Plasmas 1 December 1999; 6 (12): 4622–4632. """ # noqa: unused dependency + grid = transforms["grid"] + theta = kwargs["theta"] - spline = kwargs.get("spline", True) Y_B = kwargs.get("Y_B", theta.shape[-1] * 2) num_transit = kwargs.get("num_transit", 20) - if "quad" in kwargs: - quad = kwargs["quad"] - else: - quad = chebgauss2(kwargs.get("num_quad", 32)) + num_pitch = kwargs.get("num_pitch", 50) + num_well = kwargs.get("num_well", Y_B * num_transit) + batch_size = kwargs.get("batch_size", None) + spline = kwargs.get("spline", True) if "fieldline_quad" in kwargs: fieldline_quad = kwargs["fieldline_quad"] else: fieldline_quad = leggauss(Y_B // 2) - num_well = kwargs.get("num_well", Y_B * num_transit) - grid = transforms["grid"] - - def dH(grad_rho_norm_kappa_g, B, pitch, zeta): - # Integrand of Nemov eq. 30 with |∂ψ/∂ρ| (λB₀)¹ᐧ⁵ removed. - return ( - jnp.sqrt(jnp.abs(1 - pitch * B)) - * (4 / (pitch * B) - 1) - * grad_rho_norm_kappa_g - / B - ) - - def dI(B, pitch, zeta): - # Integrand of Nemov eq. 31. - return jnp.sqrt(jnp.abs(1 - pitch * B)) / B + if "quad" in kwargs: + quad = kwargs["quad"] + else: + quad = chebgauss2(kwargs.get("num_quad", 32)) def eps_32(data): """(∂ψ/∂ρ)⁻² B₀⁻² ∫ dλ λ⁻² ∑ⱼ Hⱼ²/Iⱼ.""" @@ -434,302 +251,80 @@ def eps_32(data): is_reshaped=True, spline=spline, ) - points = bounce.points(data["pitch_inv"], num_well=num_well) - H = bounce.integrate( - dH, - data["pitch_inv"], - data["|grad(rho)|*kappa_g"], - points=points, - ) - I = bounce.integrate(dI, data["pitch_inv"], points=points) + data["|grad(rho)|*kappa_g"] = Bounce2D.fourier(data["|grad(rho)|*kappa_g"]) + + def fun(pitch_inv): + points = bounce.points(pitch_inv, num_well=num_well) + H = bounce.integrate( + _dH, + pitch_inv, + data["|grad(rho)|*kappa_g"], + points=points, + is_fourier=True, + ) + I = bounce.integrate(_dI, pitch_inv, points=points) + return safediv(H**2, I).sum(axis=-1) + return ( - safediv(H**2, I).sum(axis=-1) + _foreach_pitch(fun, data["pitch_inv"], batch_size) * data["pitch_inv weight"] / data["pitch_inv"] ** 3 ).sum(axis=-1) / bounce.compute_fieldline_length(fieldline_quad) - # Interpolate |∇ρ| κ_g since it is smoother than κ_g alone. - fun_data = {"|grad(rho)|*kappa_g": data["|grad(rho)|"] * data["kappa_g"]} B0 = data["max_tz |B|"] data["effective ripple 3/2"] = ( jnp.pi / (8 * 2**0.5) * (B0 * data["R0"] / data["<|grad(rho)|>"]) ** 2 - * _compute_2D(eps_32, fun_data, data, theta, grid, kwargs.get("num_pitch", 50)) - ) - return data - - -@register_compute_fun( - name="effective ripple", - label="\\epsilon_{\\mathrm{eff}}", - units="~", - units_long="None", - description="Effective ripple modulation amplitude. " - "Uses numerical methods of the Bounce2D class.", - dim=1, - params=[], - transforms={}, - profiles=[], - coordinates="r", - data=["effective ripple 3/2"], -) -def _effective_ripple_2D(params, transforms, profiles, data, **kwargs): - data["effective ripple"] = data["effective ripple 3/2"] ** (2 / 3) - return data - - -@register_compute_fun( - name="Gamma_c Velasco*", - label=( - # Γ_c = π/(8√2) ∫dλ 〈 ∑ⱼ [v τ γ_c²]ⱼ 〉 - "\\Gamma_c = \\frac{\\pi}{8 \\sqrt{2}} " - "\\int d\\lambda \\langle \\sum_j (v \\tau \\gamma_c^2)_j \\rangle" - ), - units="~", - units_long="None", - description="Energetic ion confinement proxy. " - "Uses the numerical methods of the Bounce1D class.", - dim=1, - params=[], - transforms={"grid": []}, - profiles=[], - coordinates="r", - data=["min_tz |B|", "max_tz |B|", "cvdrift0", "gbdrift", "fieldline length"] - + Bounce1D.required_names, - source_grid_requirement={"coordinates": "raz", "is_meshgrid": True}, - **_Bounce1D_doc, -) -@partial(jit, static_argnames=["num_quad", "num_pitch", "num_well", "batch"]) -def _Gamma_c_Velasco_1D(params, transforms, profiles, data, **kwargs): - """Energetic ion confinement proxy as defined by Velasco et al. - - A model for the fast evaluation of prompt losses of energetic ions in stellarators. - J.L. Velasco et al. 2021 Nucl. Fusion 61 116059. - https://doi.org/10.1088/1741-4326/ac2994. - Equation 16. - """ - # noqa: unused dependency - if "quad" in kwargs: - quad = kwargs["quad"] - else: - quad = get_quadrature( - leggauss(kwargs.get("num_quad", 32)), - (automorphism_sin, grad_automorphism_sin), - ) - num_well = kwargs.get("num_well", None) - batch = kwargs.get("batch", True) - grid = transforms["grid"].source_grid - - def d_v_tau(B, pitch): - return safediv(2.0, jnp.sqrt(jnp.abs(1 - pitch * B))) - - def drift(f, B, pitch): - return safediv(f * (1 - 0.5 * pitch * B), jnp.sqrt(jnp.abs(1 - pitch * B))) - - def Gamma_c(data): - """∫ dλ ∑ⱼ [v τ γ_c²]ⱼ.""" - bounce = Bounce1D(grid, data, quad, automorphism=None, is_reshaped=True) - points = bounce.points(data["pitch_inv"], num_well=num_well) - v_tau = bounce.integrate(d_v_tau, data["pitch_inv"], points=points, batch=batch) - gamma_c = jnp.arctan( - safediv( - bounce.integrate( - drift, - data["pitch_inv"], - data["cvdrift0"], - points=points, - batch=batch, - ), - bounce.integrate( - drift, - data["pitch_inv"], - data["gbdrift"], - points=points, - batch=batch, - ), - ) + * _compute( + eps_32, + fun_data={"|grad(rho)|*kappa_g": data["|grad(rho)|"] * data["kappa_g"]}, + data=data, + theta=theta, + grid=grid, + num_pitch=num_pitch, ) - return ( - (v_tau * gamma_c**2).sum(axis=-1) - * data["pitch_inv weight"] - / data["pitch_inv"] ** 2 - ).sum(axis=-1) - - fun_data = {"cvdrift0": data["cvdrift0"], "gbdrift": data["gbdrift"]} - data["Gamma_c Velasco*"] = ( - _compute_1D(Gamma_c, fun_data, data, grid, kwargs.get("num_pitch", 64)) - / data["fieldline length"] - / (2**1.5 * jnp.pi) ) return data -@register_compute_fun( - name="Gamma_c*", - label=( - # Γ_c = π/(8√2) ∫dλ 〈 ∑ⱼ [v τ γ_c²]ⱼ 〉 - "\\Gamma_c = \\frac{\\pi}{8 \\sqrt{2}} " - "\\int d\\lambda \\langle \\sum_j (v \\tau \\gamma_c^2)_j \\rangle" - ), - units="~", - units_long="None", - description="Energetic ion confinement proxy, Nemov et al. " - "Uses the numerical methods of the Bounce1D class.", - dim=1, - params=[], - transforms={"grid": []}, - profiles=[], - coordinates="r", - data=[ - "min_tz |B|", - "max_tz |B|", - "B^phi", - "B^phi_r|v,p", - "|B|_r|v,p", - "b", - "grad(phi)", - "grad(psi)", - "|grad(psi)|", - "|grad(rho)|", - "|e_alpha|r,p|", - "kappa_g", - "iota_r", - "fieldline length", - ] - + Bounce1D.required_names, - source_grid_requirement={"coordinates": "raz", "is_meshgrid": True}, - **_Bounce1D_doc, - quad2="Same as ``quad`` for the weak singular integrals in particular.", -) -@partial(jit, static_argnames=["num_quad", "num_pitch", "num_well", "batch"]) -def _Gamma_c_1D(params, transforms, profiles, data, **kwargs): - """Energetic ion confinement proxy as defined by Nemov et al. - - Poloidal motion of trapped particle orbits in real-space coordinates. - V. V. Nemov, S. V. Kasilov, W. Kernbichler, G. O. Leitold. - Phys. Plasmas 1 May 2008; 15 (5): 052501. - https://doi.org/10.1063/1.2912456. - Equation 61. - - The radial electric field has a negligible effect on alpha particle confinement, - so it is assumed to be zero. - """ - # noqa: unused dependency - if "quad" in kwargs: - quad = kwargs["quad"] - else: - quad = get_quadrature( - leggauss(kwargs.get("num_quad", 32)), - (automorphism_sin, grad_automorphism_sin), - ) - quad2 = kwargs["quad2"] if "quad2" in kwargs else chebgauss2(quad[0].size) - num_well = kwargs.get("num_well", None) - batch = kwargs.get("batch", True) - grid = transforms["grid"].source_grid - - # The derivative (∂/∂ψ)|ϑ,ϕ belongs to flux coordinates which satisfy - # α = ϑ − χ(ψ) ϕ where α is the poloidal label of ψ,α Clebsch coordinates. - # Choosing χ = ι implies ϑ, ϕ are PEST angles. - # ∂G/∂((λB₀)⁻¹) = λ²B₀ ∫ dℓ (1 − λ|B|/2) / √(1 − λ|B|) ∂|B|/∂ψ / |B| - # ∂V/∂((λB₀)⁻¹) = 3/2 λ²B₀ ∫ dℓ √(1 − λ|B|) R / |B| - # ∂g/∂((λB₀)⁻¹) = λ²B₀² ∫ dℓ (1 − λ|B|/2) / √(1 − λ|B|) |∇ψ| κ_g / |B| - # K ≝ R dψ/dρ - # tan(π/2 γ_c) = - # ∫ dℓ (1 − λ|B|/2) / √(1 − λ|B|) |∇ψ| κ_g / |B| - # ---------------------------------------------- - # (|∇ρ| ‖e_α|ρ,ϕ‖)ᵢ ∫ dℓ [ (1 − λ|B|/2)/√(1 − λ|B|) ∂|B|/∂ρ + √(1 − λ|B|) K ] / |B| - - def d_v_tau(B, pitch): - return safediv(2.0, jnp.sqrt(jnp.abs(1 - pitch * B))) - - def drift1(grad_psi_norm_kappa_g, B, pitch): - return ( - safediv(1 - 0.5 * pitch * B, jnp.sqrt(jnp.abs(1 - pitch * B))) - * grad_psi_norm_kappa_g - / B - ) +# We rewrite equivalents of Nemov et al.'s expressions (21, 22) to resolve +# the indeterminate form of the limit and using single-valued maps of a +# physical coordinates. This avoids the computational issues of multivalued +# maps. +# The derivative (∂/∂ψ)|ϑ,ϕ belongs to flux coordinates which satisfy +# α = ϑ − χ(ψ) ϕ where α is the poloidal label of ψ,α Clebsch coordinates. +# Choosing χ = ι implies ϑ, ϕ are PEST angles. +# ∂G/∂((λB₀)⁻¹) = λ²B₀ ∫ dℓ (1 − λ|B|/2) / √(1 − λ|B|) ∂|B|/∂ψ / |B| +# ∂V/∂((λB₀)⁻¹) = 3/2 λ²B₀ ∫ dℓ √(1 − λ|B|) R / |B| +# ∂g/∂((λB₀)⁻¹) = λ²B₀² ∫ dℓ (1 − λ|B|/2) / √(1 − λ|B|) |∇ψ| κ_g / |B| +# K ≝ R dψ/dρ +# tan(π/2 γ_c) = +# ∫ dℓ (1 − λ|B|/2) / √(1 − λ|B|) |∇ψ| κ_g / |B| +# ---------------------------------------------- +# (|∇ρ| ‖e_α|ρ,ϕ‖)ᵢ ∫ dℓ [ (1 − λ|B|/2)/√(1 − λ|B|) ∂|B|/∂ρ + √(1 − λ|B|) K ] / |B| + + +def _v_tau(B, pitch, zeta): + # Note v τ = 4λ⁻²B₀⁻¹ ∂I/∂((λB₀)⁻¹) where v is the particle velocity, + # τ is the bounce time, and I is defined in Nemov eq. 36. + return safediv(2.0, jnp.sqrt(jnp.abs(1 - pitch * B))) + + +def _f1(grad_psi_norm_kappa_g, B, pitch, zeta): + return ( + safediv(1 - 0.5 * pitch * B, jnp.sqrt(jnp.abs(1 - pitch * B))) + * grad_psi_norm_kappa_g + / B + ) - def drift2(B_r, B, pitch): - return safediv(1 - 0.5 * pitch * B, jnp.sqrt(jnp.abs(1 - pitch * B))) * B_r / B - def drift3(K, B, pitch): - return jnp.sqrt(jnp.abs(1 - pitch * B)) * K / B +def _f2(B_r, B, pitch, zeta): + return safediv(1 - 0.5 * pitch * B, jnp.sqrt(jnp.abs(1 - pitch * B))) * B_r / B - def Gamma_c(data): - """∫ dλ ∑ⱼ [v τ γ_c²]ⱼ.""" - # Note v τ = 4λ⁻²B₀⁻¹ ∂I/∂((λB₀)⁻¹) where v is the particle velocity, - # τ is the bounce time, and I is defined in Nemov eq. 36. - bounce = Bounce1D(grid, data, quad, automorphism=None, is_reshaped=True) - points = bounce.points(data["pitch_inv"], num_well=num_well) - v_tau = bounce.integrate(d_v_tau, data["pitch_inv"], points=points, batch=batch) - gamma_c = jnp.arctan( - safediv( - bounce.integrate( - drift1, - data["pitch_inv"], - data["|grad(psi)|*kappa_g"], - points=points, - batch=batch, - ), - ( - bounce.integrate( - drift2, - data["pitch_inv"], - data["|B|_r|v,p"], - points=points, - batch=batch, - ) - + bounce.integrate( - drift3, - data["pitch_inv"], - data["K"], - points=points, - batch=batch, - quad=quad2, - ) - ) - * interp_to_argmin( - data["|grad(rho)|*|e_alpha|r,p|"], - points, - bounce.zeta, - bounce.B, - bounce.dB_dz, - ), - ) - ) - return ( - (v_tau * gamma_c**2).sum(axis=-1) - * data["pitch_inv weight"] - / data["pitch_inv"] ** 2 - ).sum(axis=-1) - # We rewrite equivalents of Nemov et al.'s expressions (21, 22) to resolve - # the indeterminate form of the limit and using single-valued maps of a - # physical coordinates. This avoids the computational issues of multivalued - # maps. Also, Nemov assumes B^ϕ > 0 in some comments; this is not true in DESC, - # but the computations done here are invariant to the sign. - - # It is assumed the grid is sufficiently dense to reconstruct |B|, - # so anything smoother than |B| may be captured accurately as a single - # spline rather than splining each component. - fun_data = { - "|grad(psi)|*kappa_g": data["|grad(psi)|"] * data["kappa_g"], - "|grad(rho)|*|e_alpha|r,p|": data["|grad(rho)|"] * data["|e_alpha|r,p|"], - "|B|_r|v,p": data["|B|_r|v,p"], - "K": data["iota_r"] - * dot(cross(data["grad(psi)"], data["b"]), data["grad(phi)"]) - # Behaves as ∂log(|B|²/B^ϕ)/∂ρ |B| if one ignores the issue of a log argument - # with units. Smoothness determined by positive lower bound of log argument, - # and hence behaves as ∂log(|B|)/∂ρ |B| = ∂|B|/∂ρ. - - (2 * data["|B|_r|v,p"] - data["|B|"] * data["B^phi_r|v,p"] / data["B^phi"]), - } - data["Gamma_c*"] = ( - _compute_1D(Gamma_c, fun_data, data, grid, kwargs.get("num_pitch", 64)) - / data["fieldline length"] - / (2**1.5 * jnp.pi) - ) - return data +def _f3(K, B, pitch, zeta): + return jnp.sqrt(jnp.abs(1 - pitch * B)) * K / B @register_compute_fun( @@ -765,7 +360,7 @@ def Gamma_c(data): ] + Bounce2D.required_names, resolution_requirement="z", # FIXME: GitHub issue #1312. Should be "tz". - grid_requirement={"coordinates": "rtz", "can_fft": True}, + grid_requirement={"can_fft": True}, **_Bounce2D_doc, quad2="Same as ``quad`` for the weak singular integrals in particular.", ) @@ -777,10 +372,11 @@ def Gamma_c(data): "num_quad", "num_pitch", "num_well", + "batch_size", "spline", ], ) -def _Gamma_c_2D(params, transforms, profiles, data, **kwargs): +def _Gamma_c(params, transforms, profiles, data, **kwargs): """Energetic ion confinement proxy as defined by Nemov et al. Poloidal motion of trapped particle orbits in real-space coordinates. @@ -793,50 +389,28 @@ def _Gamma_c_2D(params, transforms, profiles, data, **kwargs): so it is assumed to be zero. """ # noqa: unused dependency + grid = transforms["grid"] + theta = kwargs["theta"] - spline = kwargs.get("spline", True) - errorif(not spline, NotImplementedError) Y_B = kwargs.get("Y_B", theta.shape[-1] * 2) num_transit = kwargs.get("num_transit", 20) - if "quad" in kwargs: - quad = kwargs["quad"] - else: - quad = chebgauss2(kwargs.get("num_quad", 32)) - quad2 = kwargs["quad2"] if "quad2" in kwargs else chebgauss2(quad[0].size) + num_pitch = kwargs.get("num_pitch", 64) + num_well = kwargs.get("num_well", Y_B * num_transit) + batch_size = kwargs.get("batch_size", None) + spline = kwargs.get("spline", True) if "fieldline_quad" in kwargs: fieldline_quad = kwargs["fieldline_quad"] else: fieldline_quad = leggauss(Y_B // 2) - num_well = kwargs.get("num_well", Y_B * num_transit) - grid = transforms["grid"] - - # The derivative (∂/∂ψ)|ϑ,ϕ belongs to flux coordinates which satisfy - # α = ϑ − χ(ψ) ϕ where α is the poloidal label of ψ,α Clebsch coordinates. - # Choosing χ = ι implies ϑ, ϕ are PEST angles. - # ∂G/∂((λB₀)⁻¹) = λ²B₀ ∫ dℓ (1 − λ|B|/2) / √(1 − λ|B|) ∂|B|/∂ψ / |B| - # ∂V/∂((λB₀)⁻¹) = 3/2 λ²B₀ ∫ dℓ √(1 − λ|B|) R / |B| - # ∂g/∂((λB₀)⁻¹) = λ²B₀² ∫ dℓ (1 − λ|B|/2) / √(1 − λ|B|) |∇ψ| κ_g / |B| - # K ≝ R dψ/dρ - # tan(π/2 γ_c) = - # ∫ dℓ (1 − λ|B|/2) / √(1 − λ|B|) |∇ψ| κ_g / |B| - # ---------------------------------------------- - # (|∇ρ| ‖e_α|ρ,ϕ‖)ᵢ ∫ dℓ [ (1 − λ|B|/2)/√(1 − λ|B|) ∂|B|/∂ρ + √(1 − λ|B|) K ] / |B| - - def d_v_tau(B, pitch, zeta): - return safediv(2.0, jnp.sqrt(jnp.abs(1 - pitch * B))) - - def drift1(grad_psi_norm_kappa_g, B, pitch, zeta): - return ( - safediv(1 - 0.5 * pitch * B, jnp.sqrt(jnp.abs(1 - pitch * B))) - * grad_psi_norm_kappa_g - / B + if "quad" in kwargs: + quad = kwargs["quad"] + else: + quad = get_quadrature( + leggauss(kwargs.get("num_quad", 32)), + (automorphism_sin, grad_automorphism_sin), ) - - def drift2(B_r, B, pitch, zeta): - return safediv(1 - 0.5 * pitch * B, jnp.sqrt(jnp.abs(1 - pitch * B))) * B_r / B - - def drift3(K, B, pitch, zeta): - return jnp.sqrt(jnp.abs(1 - pitch * B)) * K / B + quad = chebgauss2(quad[0].size) + quad2 = kwargs["quad2"] if "quad2" in kwargs else chebgauss2(quad[0].size) def Gamma_c(data): """∫ dλ ∑ⱼ [v τ γ_c²]ⱼ.""" @@ -851,47 +425,65 @@ def Gamma_c(data): is_reshaped=True, spline=spline, ) - points = bounce.points(data["pitch_inv"], num_well=num_well) - v_tau = bounce.integrate(d_v_tau, data["pitch_inv"], points=points) - gamma_c = jnp.arctan( - safediv( - bounce.integrate( - drift1, - data["pitch_inv"], - data["|grad(psi)|*kappa_g"], - points=points, - ), - ( + + data["|grad(psi)|*kappa_g"] = Bounce2D.fourier(data["|grad(psi)|*kappa_g"]) + data["|B|_r|v,p"] = Bounce2D.fourier(data["|B|_r|v,p"]) + data["K"] = Bounce2D.fourier(data["K"]) + data["|grad(rho)|*|e_alpha|r,p|"] = Bounce2D.fourier( + data["|grad(rho)|*|e_alpha|r,p|"] + ) + + def fun(pitch_inv): + points = bounce.points(pitch_inv, num_well=num_well) + v_tau = bounce.integrate(_v_tau, pitch_inv, points=points) + gamma_c = jnp.arctan( + safediv( bounce.integrate( - drift2, data["pitch_inv"], data["|B|_r|v,p"], points=points - ) - + bounce.integrate( - drift3, data["pitch_inv"], data["K"], points=points, quad=quad2 + _f1, + pitch_inv, + data["|grad(psi)|*kappa_g"], + points=points, + is_fourier=True, + ), + ( + bounce.integrate( + _f2, + pitch_inv, + data["|B|_r|v,p"], + points=points, + is_fourier=True, + ) + + bounce.integrate( + _f3, + pitch_inv, + data["K"], + points=points, + quad=quad2, + is_fourier=True, + ) ) + * interp_fft_to_argmin( + grid.NFP, + bounce._c["T(z)"], + data["|grad(rho)|*|e_alpha|r,p|"], + points, + bounce._c["knots"], + bounce._c["B(z)"], + polyder_vec(bounce._c["B(z)"]), + is_fourier=True, + M=grid.num_theta, + N=grid.num_zeta, + ), ) - * interp_fft_to_argmin( - bounce._NFP, - bounce._c["T(z)"], - data["|grad(rho)|*|e_alpha|r,p|"], - points, - bounce._c["knots"], - bounce._c["B(z)"], - polyder_vec(bounce._c["B(z)"]), - ), ) - ) + return (v_tau * gamma_c**2).sum(axis=-1) + return ( - (v_tau * gamma_c**2).sum(axis=-1) + _foreach_pitch(fun, data["pitch_inv"], batch_size) * data["pitch_inv weight"] / data["pitch_inv"] ** 2 ).sum(axis=-1) / bounce.compute_fieldline_length(fieldline_quad) - # We rewrite equivalents of Nemov et al.'s expressions (21, 22) to resolve - # the indeterminate form of the limit and using single-valued maps of a - # physical coordinates. This avoids the computational issues of multivalued - # maps. Also, Nemov assumes B^ϕ > 0 in some comments; this is not true in DESC, - # but the computations done here are invariant to the sign. - # It is assumed the grid is sufficiently dense to reconstruct |B|, # so anything smoother than |B| may be captured accurately as a single # Fourier series rather than transforming each component. @@ -901,12 +493,12 @@ def Gamma_c(data): "|B|_r|v,p": data["|B|_r|v,p"], "K": data["iota_r"] * dot(cross(data["grad(psi)"], data["b"]), data["grad(phi)"]) - # Behaves as ∂log(|B|²/B^ϕ)/∂ρ |B| if one ignores the issue of a log argument - # with units. Smoothness determined by positive lower bound of log argument, - # and hence behaves as ∂log(|B|)/∂ρ |B| = ∂|B|/∂ρ. - (2 * data["|B|_r|v,p"] - data["|B|"] * data["B^phi_r|v,p"] / data["B^phi"]), } - data["Gamma_c"] = _compute_2D( - Gamma_c, fun_data, data, theta, grid, kwargs.get("num_pitch", 64) - ) / (2**1.5 * jnp.pi) + # Last term behaves as ∂log(|B|²/B^ϕ)/∂ρ |B| if one ignores the issue of a log + # argument with units. Smoothness determined by positive lower bound of log + # argument, and hence behaves as ∂log(|B|)/∂ρ |B| = ∂|B|/∂ρ. + data["Gamma_c"] = _compute(Gamma_c, fun_data, data, theta, grid, num_pitch) / ( + 2**1.5 * jnp.pi + ) return data diff --git a/desc/compute/_neoclassical_1D.py b/desc/compute/_neoclassical_1D.py new file mode 100644 index 0000000000..8f24497a29 --- /dev/null +++ b/desc/compute/_neoclassical_1D.py @@ -0,0 +1,492 @@ +"""Deprecated compute functions for neoclassical transport.""" + +from functools import partial + +from orthax.legendre import leggauss +from quadax import simpson + +from desc.backend import imap, jit, jnp + +from ..integrals._bounce_utils import interp_to_argmin +from ..integrals._quad_utils import ( + automorphism_sin, + chebgauss2, + get_quadrature, + grad_automorphism_sin, +) +from ..integrals.bounce_integral import Bounce1D +from ..utils import cross, dot, safediv +from ._neoclassical import _Bounce2D_doc +from .data_index import register_compute_fun + +_Bounce1D_doc = { + "quad": _Bounce2D_doc["quad"], + "num_quad": _Bounce2D_doc["num_quad"], + "num_pitch": _Bounce2D_doc["num_pitch"], + "num_well": _Bounce2D_doc["num_well"], + "batch": "bool : Whether to vectorize part of the computation. Default is true.", +} + + +def _alpha_mean(f): + """Simple mean over field lines. + + Simple mean rather than integrating over α and dividing by 2π + (i.e. f.T.dot(dα) / dα.sum()), because when the toroidal angle extends + beyond one transit we need to weight all field lines uniformly, regardless + of their spacing wrt α. + """ + return f.mean(axis=0) + + +def _compute(fun, fun_data, data, grid, num_pitch, reduce=True): + """Compute ``fun`` for each α and ρ value iteratively to reduce memory usage. + + Parameters + ---------- + fun : callable + Function to compute. + fun_data : dict[str, jnp.ndarray] + Data to provide to ``fun``. + Names in ``Bounce1D.required_names`` will be overridden. + Reshaped automatically. + data : dict[str, jnp.ndarray] + DESC data dict. + reduce : bool + Whether to compute mean over α and expand to grid. + Default is true. + + """ + pitch_inv, pitch_inv_weight = Bounce1D.get_pitch_inv_quad( + grid.compress(data["min_tz |B|"]), + grid.compress(data["max_tz |B|"]), + num_pitch, + ) + + def foreach_rho(x): + # using same λ values for every field line α on flux surface ρ + x["pitch_inv"] = pitch_inv + x["pitch_inv weight"] = pitch_inv_weight + return imap(fun, x) + + for name in Bounce1D.required_names: + fun_data[name] = data[name] + fun_data = dict( + zip(fun_data.keys(), Bounce1D.reshape_data(grid, *fun_data.values())) + ) + out = imap(foreach_rho, fun_data) + return grid.expand(_alpha_mean(out)) if reduce else out + + +@register_compute_fun( + name="fieldline length", + label="\\int_{\\zeta_{\\mathrm{min}}}^{\\zeta_{\\mathrm{max}}}" + " \\frac{d\\zeta}{|B^{\\zeta}|}", + units="m / T", + units_long="Meter / tesla", + description="(Mean) proper length of field line(s)", + dim=1, + params=[], + transforms={"grid": []}, + profiles=[], + coordinates="r", + data=["B^zeta"], + resolution_requirement="z", + source_grid_requirement={"coordinates": "raz", "is_meshgrid": True}, +) +def _fieldline_length(data, transforms, profiles, **kwargs): + grid = transforms["grid"].source_grid + L_ra = simpson( + y=grid.meshgrid_reshape(1 / data["B^zeta"], "arz"), + x=grid.compress(grid.nodes[:, 2], surface_label="zeta"), + axis=-1, + ) + data["fieldline length"] = grid.expand(jnp.abs(_alpha_mean(L_ra))) + return data + + +@register_compute_fun( + name="fieldline length/volume", + label="\\int_{\\zeta_{\\mathrm{min}}}^{\\zeta_{\\mathrm{max}}}" + " \\frac{d\\zeta}{|B^{\\zeta} \\sqrt g|}", + units="1 / Wb", + units_long="Inverse webers", + description="(Mean) proper length over volume of field line(s)", + dim=1, + params=[], + transforms={"grid": []}, + profiles=[], + coordinates="r", + data=["B^zeta", "sqrt(g)"], + resolution_requirement="z", + source_grid_requirement={"coordinates": "raz", "is_meshgrid": True}, +) +def _fieldline_length_over_volume(data, transforms, profiles, **kwargs): + grid = transforms["grid"].source_grid + G_ra = simpson( + y=grid.meshgrid_reshape(1 / (data["B^zeta"] * data["sqrt(g)"]), "arz"), + x=grid.compress(grid.nodes[:, 2], surface_label="zeta"), + axis=-1, + ) + data["fieldline length/volume"] = grid.expand(jnp.abs(_alpha_mean(G_ra))) + return data + + +def _dH(grad_rho_norm_kappa_g, B, pitch): + """Integrand of Nemov eq. 30 with |∂ψ/∂ρ| (λB₀)¹ᐧ⁵ removed.""" + return ( + jnp.sqrt(jnp.abs(1 - pitch * B)) + * (4 / (pitch * B) - 1) + * grad_rho_norm_kappa_g + / B + ) + + +def _dI(B, pitch): + """Integrand of Nemov eq. 31.""" + return jnp.sqrt(jnp.abs(1 - pitch * B)) / B + + +@register_compute_fun( + name="deprecated(effective ripple 3/2)", + label=( + # ε¹ᐧ⁵ = π/(8√2) R₀²〈|∇ψ|〉⁻² B₀⁻¹ ∫dλ λ⁻² 〈 ∑ⱼ Hⱼ²/Iⱼ 〉 + "\\epsilon_{\\mathrm{eff}}^{3/2} = \\frac{\\pi}{8 \\sqrt{2}} " + "R_0^2 \\langle \\vert\\nabla \\psi\\vert \\rangle^{-2} " + "B_0^{-1} \\int d\\lambda \\lambda^{-2} " + "\\langle \\sum_j H_j^2 / I_j \\rangle" + ), + units="~", + units_long="None", + description="Effective ripple modulation amplitude to 3/2 power. " + "Uses numerical methods of the Bounce1D class.", + dim=1, + params=[], + transforms={"grid": []}, + profiles=[], + coordinates="r", + data=[ + "min_tz |B|", + "max_tz |B|", + "kappa_g", + "R0", + "|grad(rho)|", + "<|grad(rho)|>", + "fieldline length", + ] + + Bounce1D.required_names, + resolution_requirement="z", + source_grid_requirement={"coordinates": "raz", "is_meshgrid": True}, + **_Bounce1D_doc, +) +@partial(jit, static_argnames=["num_quad", "num_pitch", "num_well", "batch"]) +def _epsilon_32_1D(params, transforms, profiles, data, **kwargs): + """https://doi.org/10.1063/1.873749. + + Evaluation of 1/ν neoclassical transport in stellarators. + V. V. Nemov, S. V. Kasilov, W. Kernbichler, M. F. Heyn. + Phys. Plasmas 1 December 1999; 6 (12): 4622–4632. + """ + # noqa: unused dependency + num_pitch = kwargs.get("num_pitch", 50) + num_well = kwargs.get("num_well", None) + batch = kwargs.get("batch", True) + if "quad" in kwargs: + quad = kwargs["quad"] + else: + quad = chebgauss2(kwargs.get("num_quad", 32)) + + def eps_32(data): + """(∂ψ/∂ρ)⁻² B₀⁻² ∫ dλ λ⁻² ∑ⱼ Hⱼ²/Iⱼ.""" + # B₀ has units of λ⁻¹. + # Nemov's ∑ⱼ Hⱼ²/Iⱼ = (∂ψ/∂ρ)² (λB₀)³ ``(H**2 / I).sum(axis=-1)``. + # (λB₀)³ d(λB₀)⁻¹ = B₀² λ³ d(λ⁻¹) = -B₀² λ dλ. + bounce = Bounce1D(grid, data, quad, automorphism=None, is_reshaped=True) + points = bounce.points(data["pitch_inv"], num_well=num_well) + H = bounce.integrate( + _dH, + data["pitch_inv"], + data["|grad(rho)|*kappa_g"], + points=points, + batch=batch, + ) + I = bounce.integrate(_dI, data["pitch_inv"], points=points, batch=batch) + return ( + safediv(H**2, I).sum(axis=-1) + * data["pitch_inv weight"] + / data["pitch_inv"] ** 3 + ).sum(axis=-1) + + grid = transforms["grid"].source_grid + B0 = data["max_tz |B|"] + data["deprecated(effective ripple 3/2)"] = ( + jnp.pi + / (8 * 2**0.5) + * (B0 * data["R0"] / data["<|grad(rho)|>"]) ** 2 + * _compute( + eps_32, + fun_data={"|grad(rho)|*kappa_g": data["|grad(rho)|"] * data["kappa_g"]}, + data=data, + grid=grid, + num_pitch=num_pitch, + ) + / data["fieldline length"] + ) + return data + + +@register_compute_fun( + name="deprecated(effective ripple)", + label="\\epsilon_{\\mathrm{eff}}", + units="~", + units_long="None", + description="Effective ripple modulation amplitude. " + "Uses numerical methods of the Bounce1D class.", + dim=1, + params=[], + transforms={}, + profiles=[], + coordinates="r", + data=["deprecated(effective ripple 3/2)"], +) +def _effective_ripple_1D(params, transforms, profiles, data, **kwargs): + data["deprecated(effective ripple)"] = data["deprecated(effective ripple 3/2)"] ** ( + 2 / 3 + ) + return data + + +def _v_tau(B, pitch): + return safediv(2.0, jnp.sqrt(jnp.abs(1 - pitch * B))) + + +def _f1(grad_psi_norm_kappa_g, B, pitch): + return ( + safediv(1 - 0.5 * pitch * B, jnp.sqrt(jnp.abs(1 - pitch * B))) + * grad_psi_norm_kappa_g + / B + ) + + +def _f2(B_r, B, pitch): + return safediv(1 - 0.5 * pitch * B, jnp.sqrt(jnp.abs(1 - pitch * B))) * B_r / B + + +def _f3(K, B, pitch): + return jnp.sqrt(jnp.abs(1 - pitch * B)) * K / B + + +@register_compute_fun( + name="deprecated(Gamma_c)", + label=( + # Γ_c = π/(8√2) ∫dλ 〈 ∑ⱼ [v τ γ_c²]ⱼ 〉 + "\\Gamma_c = \\frac{\\pi}{8 \\sqrt{2}} " + "\\int d\\lambda \\langle \\sum_j (v \\tau \\gamma_c^2)_j \\rangle" + ), + units="~", + units_long="None", + description="Energetic ion confinement proxy, Nemov et al. " + "Uses the numerical methods of the Bounce1D class.", + dim=1, + params=[], + transforms={"grid": []}, + profiles=[], + coordinates="r", + data=[ + "min_tz |B|", + "max_tz |B|", + "B^phi", + "B^phi_r|v,p", + "|B|_r|v,p", + "b", + "grad(phi)", + "grad(psi)", + "|grad(psi)|", + "|grad(rho)|", + "|e_alpha|r,p|", + "kappa_g", + "iota_r", + "fieldline length", + ] + + Bounce1D.required_names, + source_grid_requirement={"coordinates": "raz", "is_meshgrid": True}, + **_Bounce1D_doc, + quad2="Same as ``quad`` for the weak singular integrals in particular.", +) +@partial(jit, static_argnames=["num_quad", "num_pitch", "num_well", "batch"]) +def _Gamma_c_1D(params, transforms, profiles, data, **kwargs): + """Energetic ion confinement proxy as defined by Nemov et al. + + Poloidal motion of trapped particle orbits in real-space coordinates. + V. V. Nemov, S. V. Kasilov, W. Kernbichler, G. O. Leitold. + Phys. Plasmas 1 May 2008; 15 (5): 052501. + https://doi.org/10.1063/1.2912456. + Equation 61. + + The radial electric field has a negligible effect on alpha particle confinement, + so it is assumed to be zero. + """ + # noqa: unused dependency + num_pitch = kwargs.get("num_pitch", 64) + num_well = kwargs.get("num_well", None) + batch = kwargs.get("batch", True) + if "quad" in kwargs: + quad = kwargs["quad"] + else: + quad = get_quadrature( + leggauss(kwargs.get("num_quad", 32)), + (automorphism_sin, grad_automorphism_sin), + ) + quad2 = kwargs["quad2"] if "quad2" in kwargs else chebgauss2(quad[0].size) + + def Gamma_c(data): + """∫ dλ ∑ⱼ [v τ γ_c²]ⱼ.""" + bounce = Bounce1D(grid, data, quad, automorphism=None, is_reshaped=True) + points = bounce.points(data["pitch_inv"], num_well=num_well) + v_tau = bounce.integrate(_v_tau, data["pitch_inv"], points=points, batch=batch) + gamma_c = jnp.arctan( + safediv( + bounce.integrate( + _f1, + data["pitch_inv"], + data["|grad(psi)|*kappa_g"], + points=points, + batch=batch, + ), + ( + bounce.integrate( + _f2, + data["pitch_inv"], + data["|B|_r|v,p"], + points=points, + batch=batch, + ) + + bounce.integrate( + _f3, + data["pitch_inv"], + data["K"], + points=points, + batch=batch, + quad=quad2, + ) + ) + * interp_to_argmin( + data["|grad(rho)|*|e_alpha|r,p|"], + points, + bounce.zeta, + bounce.B, + bounce.dB_dz, + ), + ) + ) + return ( + (v_tau * gamma_c**2).sum(axis=-1) + * data["pitch_inv weight"] + / data["pitch_inv"] ** 2 + ).sum(axis=-1) + + grid = transforms["grid"].source_grid + fun_data = { + "|grad(psi)|*kappa_g": data["|grad(psi)|"] * data["kappa_g"], + "|grad(rho)|*|e_alpha|r,p|": data["|grad(rho)|"] * data["|e_alpha|r,p|"], + "|B|_r|v,p": data["|B|_r|v,p"], + "K": data["iota_r"] + * dot(cross(data["grad(psi)"], data["b"]), data["grad(phi)"]) + - (2 * data["|B|_r|v,p"] - data["|B|"] * data["B^phi_r|v,p"] / data["B^phi"]), + } + data["deprecated(Gamma_c)"] = ( + _compute(Gamma_c, fun_data, data, grid, num_pitch) + / data["fieldline length"] + / (2**1.5 * jnp.pi) + ) + return data + + +def _drift(f, B, pitch): + return safediv(f * (1 - 0.5 * pitch * B), jnp.sqrt(jnp.abs(1 - pitch * B))) + + +@register_compute_fun( + name="Gamma_c Velasco", + label=( + # Γ_c = π/(8√2) ∫dλ 〈 ∑ⱼ [v τ γ_c²]ⱼ 〉 + "\\Gamma_c = \\frac{\\pi}{8 \\sqrt{2}} " + "\\int d\\lambda \\langle \\sum_j (v \\tau \\gamma_c^2)_j \\rangle" + ), + units="~", + units_long="None", + description="Energetic ion confinement proxy. " + "Uses the numerical methods of the Bounce1D class.", + dim=1, + params=[], + transforms={"grid": []}, + profiles=[], + coordinates="r", + data=["min_tz |B|", "max_tz |B|", "cvdrift0", "gbdrift", "fieldline length"] + + Bounce1D.required_names, + source_grid_requirement={"coordinates": "raz", "is_meshgrid": True}, + **_Bounce1D_doc, +) +@partial(jit, static_argnames=["num_quad", "num_pitch", "num_well", "batch"]) +def _Gamma_c_Velasco_1D(params, transforms, profiles, data, **kwargs): + """Energetic ion confinement proxy as defined by Velasco et al. + + A model for the fast evaluation of prompt losses of energetic ions in stellarators. + J.L. Velasco et al. 2021 Nucl. Fusion 61 116059. + https://doi.org/10.1088/1741-4326/ac2994. + Equation 16. + """ + # noqa: unused dependency + num_pitch = kwargs.get("num_pitch", 64) + num_well = kwargs.get("num_well", None) + batch = kwargs.get("batch", True) + if "quad" in kwargs: + quad = kwargs["quad"] + else: + quad = get_quadrature( + leggauss(kwargs.get("num_quad", 32)), + (automorphism_sin, grad_automorphism_sin), + ) + + def Gamma_c(data): + """∫ dλ ∑ⱼ [v τ γ_c²]ⱼ.""" + bounce = Bounce1D(grid, data, quad, automorphism=None, is_reshaped=True) + points = bounce.points(data["pitch_inv"], num_well=num_well) + v_tau = bounce.integrate(_v_tau, data["pitch_inv"], points=points, batch=batch) + gamma_c = jnp.arctan( + safediv( + bounce.integrate( + _drift, + data["pitch_inv"], + data["cvdrift0"], + points=points, + batch=batch, + ), + bounce.integrate( + _drift, + data["pitch_inv"], + data["gbdrift"], + points=points, + batch=batch, + ), + ) + ) + return ( + (v_tau * gamma_c**2).sum(axis=-1) + * data["pitch_inv weight"] + / data["pitch_inv"] ** 2 + ).sum(axis=-1) + + grid = transforms["grid"].source_grid + data["Gamma_c Velasco"] = ( + _compute( + Gamma_c, + fun_data={"cvdrift0": data["cvdrift0"], "gbdrift": data["gbdrift"]}, + data=data, + grid=grid, + num_pitch=num_pitch, + ) + / data["fieldline length"] + / (2**1.5 * jnp.pi) + ) + return data diff --git a/desc/integrals/_bounce_utils.py b/desc/integrals/_bounce_utils.py index d795216a84..57047ad0e2 100644 --- a/desc/integrals/_bounce_utils.py +++ b/desc/integrals/_bounce_utils.py @@ -866,7 +866,18 @@ def interp_to_argmin_hard(h, points, knots, g, dg_dz, method="cubic"): def interp_fft_to_argmin( - NFP, T, h, points, knots, g, dg_dz, beta=-100, upper_sentinel=1e2 + NFP, + T, + h, + points, + knots, + g, + dg_dz, + beta=-100, + upper_sentinel=1e2, + is_fourier=False, + M=None, + N=None, ): """Interpolate ``h`` to the deepest point of ``g`` between ``z1`` and ``z2``. @@ -908,6 +919,11 @@ def interp_fft_to_argmin( Something larger than g. Choose value such that exp(max(g)) << exp(``upper_sentinel``). Don't make too large or numerical resolution is lost. + is_fourier : bool + If true, then it is assumed that ``h`` is the Fourier + transform as returned by ``Bounce2D.fourier``. + M, N : int + Fourier resolution. Warnings -------- @@ -929,17 +945,28 @@ def interp_fft_to_argmin( beta * _where_for_fft_argmin(points, ext, g_ext, upper_sentinel), axis=-1, ) - return jnp.linalg.vecdot( - argmin, # shape is (..., num well, num extrema) - interp_rfft2( - T.eval1d(ext), + theta = T.eval1d(ext) + if is_fourier: + h = irfft2_non_uniform( + theta, ext, h[..., jnp.newaxis, :, :], + M, + N, domain1=(0, 2 * jnp.pi / NFP), axes=(-1, -2), - )[..., jnp.newaxis, :], - # adding axis to broadcast with num well axis - ) + ) + else: + h = interp_rfft2( + theta, + ext, + h[..., jnp.newaxis, :, :], + domain1=(0, 2 * jnp.pi / NFP), + axes=(-1, -2), + ) + # argmin shape is (..., num well, num extrema) + # adding axis to broadcast with num well axis + return jnp.linalg.vecdot(argmin, h[..., jnp.newaxis, :]) # TODO: Generalize this beyond ζ = ϕ or just map to Clebsch with ϕ. diff --git a/desc/integrals/_interp_utils.py b/desc/integrals/_interp_utils.py index 067ab456d7..42be44afd2 100644 --- a/desc/integrals/_interp_utils.py +++ b/desc/integrals/_interp_utils.py @@ -431,31 +431,6 @@ def idct_non_uniform(xq, a, n, axis=-1): return jnp.linalg.vecdot(jnp.cos(n * jnp.arccos(xq)[..., jnp.newaxis]), a) -def _fourier(grid, f, is_reshaped=False): - """Transform to DESC spectral domain. - - Parameters - ---------- - grid : Grid - Tensor-product grid in (ρ, θ, ζ) with uniformly spaced nodes - (θ, ζ) ∈ [0, 2π) × [0, 2π/NFP). - Preferably power of 2 for ``grid.num_theta`` and ``grid.num_zeta``. - f : jnp.ndarray - Function evaluated on ``grid``. - - Returns - ------- - a : jnp.ndarray - Shape (..., grid.num_theta // 2 + 1, grid.num_zeta) - Complex coefficients of 2D real FFT of ``f``. - - """ - if not is_reshaped: - f = grid.meshgrid_reshape(f, "rtz") - # real fft over poloidal since usually M > N - return rfft2(f, axes=(-1, -2), norm="forward") - - # Warning: method must be specified as keyword argument. interp1d_vec = jnp.vectorize( interp1d, signature="(m),(n),(n)->(m)", excluded={"method"} diff --git a/desc/integrals/bounce_integral.py b/desc/integrals/bounce_integral.py index 82f01f7839..9163fc4373 100644 --- a/desc/integrals/bounce_integral.py +++ b/desc/integrals/bounce_integral.py @@ -5,7 +5,7 @@ from interpax import CubicHermiteSpline, PPoly from orthax.legendre import leggauss -from desc.backend import jnp +from desc.backend import jnp, rfft2 from desc.integrals._bounce_utils import ( _bounce_quadrature, _check_bounce_points, @@ -21,7 +21,6 @@ plot_ppoly, ) from desc.integrals._interp_utils import ( - _fourier, idct_non_uniform, interp_rfft2, irfft2_non_uniform, @@ -343,16 +342,21 @@ def __init__( self._alpha = alpha self._x, self._w = get_quadrature(quad, automorphism) + if is_reshaped: + B = data["|B|"] + B_sup_z = data["B^zeta"] + else: + B = grid.meshgrid_reshape(data["|B|"], "rtz") + B_sup_z = grid.meshgrid_reshape(data["B^zeta"], "rtz") + # spectral coefficients self._c = { - "|B|": _fourier(grid, data["|B|"] / Bref, is_reshaped), + "|B|": Bounce2D.fourier(B / Bref), # Strictly increasing zeta knots enforces dζ > 0. # To retain dℓ = (|B|/B^ζ) dζ > 0 after fixing dζ > 0, we require # B^ζ = B⋅∇ζ > 0. This is equivalent to changing the sign of ∇ζ # or (∂ℓ/∂ζ)|ρ,a. Recall dζ = ∇ζ⋅dR ⇔ 1 = ∇ζ⋅(e_ζ|ρ,a). - "|B^zeta|": _fourier( - grid, jnp.abs(data["B^zeta"]) * Lref / Bref, is_reshaped - ), + "|B^zeta|": Bounce2D.fourier(B_sup_z * Lref / Bref), "T(z)": fourier_chebyshev( theta, data["iota"] if is_reshaped else grid.compress(data["iota"]), @@ -402,6 +406,26 @@ def reshape_data(grid, *arys): f = [grid.meshgrid_reshape(d, "rtz") for d in arys] return f if len(f) > 1 else f[0] + @staticmethod + def fourier(f): + """Transform to DESC spectral domain. + + Parameters + ---------- + f : jnp.ndarray + Shape (..., M, N). + Real scalar-valued periodic functions in (θ, ζ) ∈ [0, 2π) × [0, 2π/NFP). + + Returns + ------- + a : jnp.ndarray + Shape (..., M // 2 + 1, N) + Complex coefficients of 2D real FFT of ``f``. + + """ + # real fft over poloidal since usually M > N + return rfft2(f, axes=(-1, -2), norm="forward") + # TODO: After GitHub issue #1034 is resolved, we should pass in the previous # θ(α, ζ) coordinates as an initial guess for the next coordinate mapping. # Think more about whether possible to perturb the coefficients of the @@ -581,6 +605,7 @@ def integrate( weight=None, points=None, *, + is_fourier=False, check=False, plot=False, quad=None, @@ -628,6 +653,9 @@ def integrate( Tuple of length two (z1, z2) that stores ζ coordinates of bounce points. The points are ordered and grouped such that the straight line path between ``z1`` and ``z2`` resides in the epigraph of |B|. + is_fourier : bool + If true, then it is assumed that ``f`` and ``weight`` are Fourier + transforms as returned by ``Bounce2D.fourier``. check : bool Flag for debugging. Must be false for JAX transformations. plot : bool @@ -662,6 +690,7 @@ def integrate( setdefault(f, []), z1, z2, + is_fourier, check, plot, ) @@ -679,10 +708,15 @@ def integrate( self._c["knots"], self._c["B(z)"], polyder_vec(self._c["B(z)"]), + is_fourier=is_fourier, + M=self._M, + N=self._N, ) return _swap_pl(result) - def _integrate(self, x, w, integrand, pitch_inv, f, z1, z2, check, plot): + def _integrate( + self, x, w, integrand, pitch_inv, f, z1, z2, is_fourier, check, plot + ): """Bounce integrate ∫ f(λ, ℓ) dℓ. Parameters @@ -731,16 +765,30 @@ def _integrate(self, x, w, integrand, pitch_inv, f, z1, z2, check, plot): domain1=(0, 2 * jnp.pi / self._NFP), axes=(-1, -2), ) - f = [ - interp_rfft2( - theta, - zeta, - f_i[..., jnp.newaxis, :, :], - domain1=(0, 2 * jnp.pi / self._NFP), - axes=(-1, -2), - ) - for f_i in f - ] + if is_fourier: + f = [ + irfft2_non_uniform( + theta, + zeta, + f_i[..., jnp.newaxis, :, :], + self._M, + self._N, + domain1=(0, 2 * jnp.pi / self._NFP), + axes=(-1, -2), + ) + for f_i in f + ] + else: + f = [ + interp_rfft2( + theta, + zeta, + f_i[..., jnp.newaxis, :, :], + domain1=(0, 2 * jnp.pi / self._NFP), + axes=(-1, -2), + ) + for f_i in f + ] result = ( integrand(*f, B=B, pitch=1 / pitch_inv[..., jnp.newaxis], zeta=zeta) * B diff --git a/desc/objectives/_neoclassical.py b/desc/objectives/_neoclassical.py index 1f0e2fdd3d..2db51d4819 100644 --- a/desc/objectives/_neoclassical.py +++ b/desc/objectives/_neoclassical.py @@ -67,7 +67,7 @@ class EffectiveRipple(_Objective): num_transit : int Number of toroidal transits to follow field line. For axisymmetric devices, one poloidal transit is sufficient. Otherwise, - assuming the surface is not near rational, then more transits will + assuming the surface is not near rational, more transits will approximate surface averages better, with diminishing returns. num_quad : int Resolution for quadrature of bounce integrals. Default is 32. @@ -85,6 +85,9 @@ class EffectiveRipple(_Objective): A tighter upper bound than ``num_well=(Aι+B)*num_transit`` is preferable. The ``check_points`` or ``plot`` methods in ``desc.integrals.Bounce2D`` are useful to select a reasonable value. + batch_size : int + Number of pitch values with which to compute simultaneously. + If given ``None``, then ``batch_size`` defaults to ``num_pitch``. """ @@ -121,6 +124,7 @@ def __init__( num_quad=32, num_pitch=50, num_well=None, + batch_size=None, ): if target is None and bounds is None: target = 0.0 @@ -136,6 +140,7 @@ def __init__( "num_quad": num_quad, "num_pitch": num_pitch, "num_well": setdefault(num_well, Y_B * num_transit), + "batch_size": batch_size, } super().__init__( @@ -283,7 +288,7 @@ class GammaC(_Objective): num_transit : int Number of toroidal transits to follow field line. For axisymmetric devices, one poloidal transit is sufficient. Otherwise, - assuming the surface is not near rational, then more transits will + assuming the surface is not near rational, more transits will approximate surface averages better, with diminishing returns. num_quad : int Resolution for quadrature of bounce integrals. Default is 32. @@ -301,6 +306,9 @@ class GammaC(_Objective): A tighter upper bound than ``num_well=(Aι+B)*num_transit`` is preferable. The ``check_points`` or ``plot`` methods in ``desc.integrals.Bounce2D`` are useful to select a reasonable value. + batch_size : int + Number of pitch values with which to compute simultaneously. + If given ``None``, then ``batch_size`` defaults to ``num_pitch``. Nemov : bool Whether to use the Γ_c as defined by Nemov et al. or Velasco et al. Default is Nemov. Set to ``False`` to use Velascos's. @@ -349,6 +357,7 @@ def __init__( num_quad=32, num_pitch=64, num_well=None, + batch_size=None, Nemov=True, ): if target is None and bounds is None: @@ -365,6 +374,7 @@ def __init__( "num_quad": num_quad, "num_pitch": num_pitch, "num_well": setdefault(num_well, Y_B * num_transit), + "batch_size": batch_size, } if Nemov: self._key = "Gamma_c" diff --git a/tests/baseline/test_Gamma_c.png b/tests/baseline/test_Gamma_c.png new file mode 100644 index 0000000000000000000000000000000000000000..7a541409625105855c2a7cf7c217369820316e45 GIT binary patch literal 16440 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 Op)cvE7F@jH|Gxk=T2WH~ literal 0 HcmV?d00001 diff --git a/tests/baseline/test_Gamma_c_2D.png b/tests/baseline/test_Gamma_c_2D.png deleted file mode 100644 index 492e2f4d1a42f80b4bd729a7732c0c1c88db42e7..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 16992 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 0) - assert np.all(data["fieldline length/volume"] > 0) - - # Otherwise, many toroidal transits are necessary to sample surface. - eq = get("W7-X") - zeta = np.linspace(0, 40 * np.pi, 300) - grid = get_rtz_grid(eq, rho, alpha, zeta, coordinates="raz") - data = eq.compute( - ["fieldline length", "fieldline length/volume", "V_r(r)"], grid=grid - ) - np.testing.assert_allclose( - data["fieldline length"] / data["fieldline length/volume"], - data["V_r(r)"] / (4 * np.pi**2), - rtol=1e-3, - ) - assert np.all(data["fieldline length"] > 0) - assert np.all(data["fieldline length/volume"] > 0) - - @pytest.mark.unit @pytest.mark.mpl_image_compare(remove_text=True, tolerance=tol_1d) -def test_effective_ripple_1D(): - """Test effective ripple 1D with W7-X against NEO.""" - Y_B = 100 - num_transit = 10 - eq = get("W7-X") - rho = np.linspace(0, 1, 10) - grid = get_rtz_grid( - eq, - rho, - poloidal=np.array([0]), - toroidal=np.linspace(0, num_transit * 2 * np.pi, num_transit * Y_B), - coordinates="raz", - ) - data = eq.compute("effective ripple*", grid=grid, num_well=20 * num_transit) - - assert np.isfinite(data["effective ripple*"]).all() - np.testing.assert_allclose( - data["effective ripple 3/2*"] ** (2 / 3), - data["effective ripple*"], - err_msg="Bug in source grid logic in eq.compute.", - ) - eps_32 = grid.compress(data["effective ripple 3/2*"]) - neo_rho, neo_eps_32 = NeoIO.read("tests/inputs/neo_out.w7x") - np.testing.assert_allclose(eps_32, np.interp(rho, neo_rho, neo_eps_32), rtol=0.16) - - fig, ax = plt.subplots() - ax.plot(rho, eps_32, marker="o") - ax.plot(neo_rho, neo_eps_32) - return fig - - -@pytest.mark.unit -@pytest.mark.mpl_image_compare(remove_text=True, tolerance=tol_1d) -def test_effective_ripple_2D(): - """Test effective ripple 2D with W7-X against NEO.""" +def test_effective_ripple(): + """Test effective ripple with W7-X against NEO.""" eq = get("W7-X") rho = np.linspace(0, 1, 10) grid = LinearGrid(rho=rho, theta=eq.M_grid, zeta=eq.N_grid, NFP=eq.NFP, sym=False) @@ -117,52 +45,8 @@ def test_effective_ripple_2D(): @pytest.mark.unit @pytest.mark.mpl_image_compare(remove_text=True, tolerance=tol_1d) -def test_Gamma_c_Velasco_1D(): - """Test Γ_c Velasco 1D with W7-X.""" - Y_B = 100 - num_transit = 10 - eq = get("W7-X") - rho = np.linspace(0, 1, 10) - grid = get_rtz_grid( - eq, - rho, - poloidal=np.array([0]), - toroidal=np.linspace(0, num_transit * 2 * np.pi, num_transit * Y_B), - coordinates="raz", - ) - data = eq.compute("Gamma_c Velasco*", grid=grid, num_well=20 * num_transit) - assert np.isfinite(data["Gamma_c Velasco*"]).all() - fig, ax = plt.subplots() - ax.plot(rho, grid.compress(data["Gamma_c Velasco*"]), marker="o") - return fig - - -@pytest.mark.unit -@pytest.mark.mpl_image_compare(remove_text=True, tolerance=tol_1d) -def test_Gamma_c_1D(): - """Test Γ_c Nemov 1D with W7-X.""" - Y_B = 100 - num_transit = 10 - eq = get("W7-X") - rho = np.linspace(0, 1, 10) - grid = get_rtz_grid( - eq, - rho, - poloidal=np.array([0]), - toroidal=np.linspace(0, num_transit * 2 * np.pi, num_transit * Y_B), - coordinates="raz", - ) - data = eq.compute("Gamma_c*", grid=grid, num_well=20 * num_transit) - assert np.isfinite(data["Gamma_c*"]).all() - fig, ax = plt.subplots() - ax.plot(rho, grid.compress(data["Gamma_c*"]), marker="o") - return fig - - -@pytest.mark.unit -@pytest.mark.mpl_image_compare(remove_text=True, tolerance=tol_1d) -def test_Gamma_c_2D(): - """Test Γ_c Nemov 2D with W7-X.""" +def test_Gamma_c(): + """Test Γ_c Nemov with W7-X.""" eq = get("W7-X") rho = np.linspace(1e-12, 1, 10) grid = LinearGrid(rho=rho, theta=eq.M_grid, zeta=eq.N_grid, NFP=eq.NFP, sym=False) diff --git a/tests/test_neoclassical_1D.py b/tests/test_neoclassical_1D.py new file mode 100644 index 0000000000..72576d0a16 --- /dev/null +++ b/tests/test_neoclassical_1D.py @@ -0,0 +1,129 @@ +"""Tests for deprecated compute functions for neoclassical transport.""" + +import matplotlib.pyplot as plt +import numpy as np +import pytest +from tests.test_plotting import tol_1d + +from desc.equilibrium.coords import get_rtz_grid +from desc.examples import get +from desc.grid import LinearGrid + +from .test_neoclassical import NeoIO + + +@pytest.mark.unit +def test_fieldline_average(): + """Test that fieldline average converges to surface average.""" + rho = np.array([1]) + alpha = np.array([0]) + eq = get("DSHAPE") + iota_grid = LinearGrid(rho=rho, M=eq.M_grid, N=eq.N_grid, NFP=eq.NFP, sym=eq.sym) + iota = iota_grid.compress(eq.compute("iota", grid=iota_grid)["iota"]).item() + # For axisymmetric devices, one poloidal transit must be exact. + zeta = np.linspace(0, 2 * np.pi / iota, 25) + grid = get_rtz_grid(eq, rho, alpha, zeta, coordinates="raz") + data = eq.compute( + ["fieldline length", "fieldline length/volume", "V_r(r)"], grid=grid + ) + np.testing.assert_allclose( + data["fieldline length"] / data["fieldline length/volume"], + data["V_r(r)"] / (4 * np.pi**2), + rtol=1e-3, + ) + assert np.all(data["fieldline length"] > 0) + assert np.all(data["fieldline length/volume"] > 0) + + # Otherwise, many toroidal transits are necessary to sample surface. + eq = get("W7-X") + zeta = np.linspace(0, 40 * np.pi, 300) + grid = get_rtz_grid(eq, rho, alpha, zeta, coordinates="raz") + data = eq.compute( + ["fieldline length", "fieldline length/volume", "V_r(r)"], grid=grid + ) + np.testing.assert_allclose( + data["fieldline length"] / data["fieldline length/volume"], + data["V_r(r)"] / (4 * np.pi**2), + rtol=1e-3, + ) + assert np.all(data["fieldline length"] > 0) + assert np.all(data["fieldline length/volume"] > 0) + + +@pytest.mark.unit +@pytest.mark.mpl_image_compare(remove_text=True, tolerance=tol_1d) +def test_effective_ripple_1D(): + """Test effective ripple 1D with W7-X against NEO.""" + Y_B = 100 + num_transit = 10 + eq = get("W7-X") + rho = np.linspace(0, 1, 10) + grid = get_rtz_grid( + eq, + rho, + poloidal=np.array([0]), + toroidal=np.linspace(0, num_transit * 2 * np.pi, num_transit * Y_B), + coordinates="raz", + ) + data = eq.compute( + "deprecated(effective ripple)", grid=grid, num_well=20 * num_transit + ) + + assert np.isfinite(data["deprecated(effective ripple)"]).all() + np.testing.assert_allclose( + data["deprecated(effective ripple 3/2)"] ** (2 / 3), + data["deprecated(effective ripple)"], + err_msg="Bug in source grid logic in eq.compute.", + ) + eps_32 = grid.compress(data["deprecated(effective ripple 3/2)"]) + neo_rho, neo_eps_32 = NeoIO.read("tests/inputs/neo_out.w7x") + np.testing.assert_allclose(eps_32, np.interp(rho, neo_rho, neo_eps_32), rtol=0.16) + + fig, ax = plt.subplots() + ax.plot(rho, eps_32, marker="o") + ax.plot(neo_rho, neo_eps_32) + return fig + + +@pytest.mark.unit +@pytest.mark.mpl_image_compare(remove_text=True, tolerance=tol_1d) +def test_Gamma_c_Velasco_1D(): + """Test Γ_c Velasco 1D with W7-X.""" + Y_B = 100 + num_transit = 10 + eq = get("W7-X") + rho = np.linspace(0, 1, 10) + grid = get_rtz_grid( + eq, + rho, + poloidal=np.array([0]), + toroidal=np.linspace(0, num_transit * 2 * np.pi, num_transit * Y_B), + coordinates="raz", + ) + data = eq.compute("Gamma_c Velasco", grid=grid, num_well=20 * num_transit) + assert np.isfinite(data["Gamma_c Velasco"]).all() + fig, ax = plt.subplots() + ax.plot(rho, grid.compress(data["Gamma_c Velasco"]), marker="o") + return fig + + +@pytest.mark.unit +@pytest.mark.mpl_image_compare(remove_text=True, tolerance=tol_1d) +def test_Gamma_c_1D(): + """Test Γ_c Nemov 1D with W7-X.""" + Y_B = 100 + num_transit = 10 + eq = get("W7-X") + rho = np.linspace(0, 1, 10) + grid = get_rtz_grid( + eq, + rho, + poloidal=np.array([0]), + toroidal=np.linspace(0, num_transit * 2 * np.pi, num_transit * Y_B), + coordinates="raz", + ) + data = eq.compute("deprecated(Gamma_c)", grid=grid, num_well=20 * num_transit) + assert np.isfinite(data["deprecated(Gamma_c)"]).all() + fig, ax = plt.subplots() + ax.plot(rho, grid.compress(data["deprecated(Gamma_c)"]), marker="o") + return fig From 03a0af59c3183606635991808d32c24214141c94 Mon Sep 17 00:00:00 2001 From: unalmis Date: Wed, 23 Oct 2024 01:40:00 -0400 Subject: [PATCH 14/60] Adding abs around B^zeta missing from last commit. Now, I'm done. --- desc/compute/_neoclassical.py | 67 ++++++++++--------- desc/compute/_neoclassical_1D.py | 104 ++++++++++++++++++------------ desc/integrals/bounce_integral.py | 2 +- 3 files changed, 99 insertions(+), 74 deletions(-) diff --git a/desc/compute/_neoclassical.py b/desc/compute/_neoclassical.py index 4b25142fb0..9a63873639 100644 --- a/desc/compute/_neoclassical.py +++ b/desc/compute/_neoclassical.py @@ -184,8 +184,7 @@ def _dI(B, pitch, zeta): ), units="~", units_long="None", - description="Effective ripple modulation amplitude to 3/2 power. " - "Uses numerical methods of the Bounce2D class.", + description="Effective ripple modulation amplitude to 3/2 power.", dim=1, params=[], transforms={"grid": []}, @@ -265,18 +264,16 @@ def fun(pitch_inv): I = bounce.integrate(_dI, pitch_inv, points=points) return safediv(H**2, I).sum(axis=-1) - return ( + return jnp.sum( _foreach_pitch(fun, data["pitch_inv"], batch_size) * data["pitch_inv weight"] - / data["pitch_inv"] ** 3 - ).sum(axis=-1) / bounce.compute_fieldline_length(fieldline_quad) + / data["pitch_inv"] ** 3, + axis=-1, + ) / bounce.compute_fieldline_length(fieldline_quad) B0 = data["max_tz |B|"] data["effective ripple 3/2"] = ( - jnp.pi - / (8 * 2**0.5) - * (B0 * data["R0"] / data["<|grad(rho)|>"]) ** 2 - * _compute( + _compute( eps_32, fun_data={"|grad(rho)|*kappa_g": data["|grad(rho)|"] * data["kappa_g"]}, data=data, @@ -284,6 +281,9 @@ def fun(pitch_inv): grid=grid, num_pitch=num_pitch, ) + * (B0 * data["R0"] / data["<|grad(rho)|>"]) ** 2 + * jnp.pi + / (8 * 2**0.5) ) return data @@ -336,8 +336,7 @@ def _f3(K, B, pitch, zeta): ), units="~", units_long="None", - description="Energetic ion confinement proxy, Nemov et al. " - "Uses the numerical methods of the Bounce2D class.", + description="Energetic ion confinement proxy, Nemov et al.", dim=1, params=[], transforms={"grid": []}, @@ -409,7 +408,6 @@ def _Gamma_c(params, transforms, profiles, data, **kwargs): leggauss(kwargs.get("num_quad", 32)), (automorphism_sin, grad_automorphism_sin), ) - quad = chebgauss2(quad[0].size) quad2 = kwargs["quad2"] if "quad2" in kwargs else chebgauss2(quad[0].size) def Gamma_c(data): @@ -425,7 +423,6 @@ def Gamma_c(data): is_reshaped=True, spline=spline, ) - data["|grad(psi)|*kappa_g"] = Bounce2D.fourier(data["|grad(psi)|*kappa_g"]) data["|B|_r|v,p"] = Bounce2D.fourier(data["|B|_r|v,p"]) data["K"] = Bounce2D.fourier(data["K"]) @@ -476,29 +473,37 @@ def fun(pitch_inv): ), ) ) - return (v_tau * gamma_c**2).sum(axis=-1) + return jnp.sum(v_tau * gamma_c**2, axis=-1) - return ( + return jnp.sum( _foreach_pitch(fun, data["pitch_inv"], batch_size) * data["pitch_inv weight"] - / data["pitch_inv"] ** 2 - ).sum(axis=-1) / bounce.compute_fieldline_length(fieldline_quad) + / data["pitch_inv"] ** 2, + axis=-1, + ) / bounce.compute_fieldline_length(fieldline_quad) # It is assumed the grid is sufficiently dense to reconstruct |B|, # so anything smoother than |B| may be captured accurately as a single # Fourier series rather than transforming each component. - fun_data = { - "|grad(psi)|*kappa_g": data["|grad(psi)|"] * data["kappa_g"], - "|grad(rho)|*|e_alpha|r,p|": data["|grad(rho)|"] * data["|e_alpha|r,p|"], - "|B|_r|v,p": data["|B|_r|v,p"], - "K": data["iota_r"] - * dot(cross(data["grad(psi)"], data["b"]), data["grad(phi)"]) - - (2 * data["|B|_r|v,p"] - data["|B|"] * data["B^phi_r|v,p"] / data["B^phi"]), - } - # Last term behaves as ∂log(|B|²/B^ϕ)/∂ρ |B| if one ignores the issue of a log - # argument with units. Smoothness determined by positive lower bound of log - # argument, and hence behaves as ∂log(|B|)/∂ρ |B| = ∂|B|/∂ρ. - data["Gamma_c"] = _compute(Gamma_c, fun_data, data, theta, grid, num_pitch) / ( - 2**1.5 * jnp.pi - ) + # Last term in K behaves as ∂log(|B|²/B^ϕ)/∂ρ |B| if one ignores the issue + # of a log argument with units. Smoothness determined by positive lower bound + # of log argument, and hence behaves as ∂log(|B|)/∂ρ |B| = ∂|B|/∂ρ. + data["Gamma_c"] = _compute( + Gamma_c, + fun_data={ + "|grad(psi)|*kappa_g": data["|grad(psi)|"] * data["kappa_g"], + "|grad(rho)|*|e_alpha|r,p|": data["|grad(rho)|"] * data["|e_alpha|r,p|"], + "|B|_r|v,p": data["|B|_r|v,p"], + "K": data["iota_r"] + * dot(cross(data["grad(psi)"], data["b"]), data["grad(phi)"]) + - ( + 2 * data["|B|_r|v,p"] + - data["|B|"] * data["B^phi_r|v,p"] / data["B^phi"] + ), + }, + data=data, + theta=theta, + grid=grid, + num_pitch=num_pitch, + ) / (2**1.5 * jnp.pi) return data diff --git a/desc/compute/_neoclassical_1D.py b/desc/compute/_neoclassical_1D.py index 8f24497a29..5bd7d584e3 100644 --- a/desc/compute/_neoclassical_1D.py +++ b/desc/compute/_neoclassical_1D.py @@ -96,12 +96,17 @@ def foreach_rho(x): ) def _fieldline_length(data, transforms, profiles, **kwargs): grid = transforms["grid"].source_grid - L_ra = simpson( - y=grid.meshgrid_reshape(1 / data["B^zeta"], "arz"), - x=grid.compress(grid.nodes[:, 2], surface_label="zeta"), - axis=-1, + data["fieldline length"] = grid.expand( + jnp.abs( + _alpha_mean( + simpson( + y=grid.meshgrid_reshape(1 / data["B^zeta"], "arz"), + x=grid.compress(grid.nodes[:, 2], surface_label="zeta"), + axis=-1, + ) + ) + ) ) - data["fieldline length"] = grid.expand(jnp.abs(_alpha_mean(L_ra))) return data @@ -123,12 +128,19 @@ def _fieldline_length(data, transforms, profiles, **kwargs): ) def _fieldline_length_over_volume(data, transforms, profiles, **kwargs): grid = transforms["grid"].source_grid - G_ra = simpson( - y=grid.meshgrid_reshape(1 / (data["B^zeta"] * data["sqrt(g)"]), "arz"), - x=grid.compress(grid.nodes[:, 2], surface_label="zeta"), - axis=-1, + data["fieldline length/volume"] = grid.expand( + jnp.abs( + _alpha_mean( + simpson( + y=grid.meshgrid_reshape( + 1 / (data["B^zeta"] * data["sqrt(g)"]), "arz" + ), + x=grid.compress(grid.nodes[:, 2], surface_label="zeta"), + axis=-1, + ) + ) + ) ) - data["fieldline length/volume"] = grid.expand(jnp.abs(_alpha_mean(G_ra))) return data @@ -158,8 +170,7 @@ def _dI(B, pitch): ), units="~", units_long="None", - description="Effective ripple modulation amplitude to 3/2 power. " - "Uses numerical methods of the Bounce1D class.", + description="Effective ripple modulation amplitude to 3/2 power.", dim=1, params=[], transforms={"grid": []}, @@ -211,19 +222,17 @@ def eps_32(data): batch=batch, ) I = bounce.integrate(_dI, data["pitch_inv"], points=points, batch=batch) - return ( + return jnp.sum( safediv(H**2, I).sum(axis=-1) * data["pitch_inv weight"] - / data["pitch_inv"] ** 3 - ).sum(axis=-1) + / data["pitch_inv"] ** 3, + axis=-1, + ) grid = transforms["grid"].source_grid B0 = data["max_tz |B|"] data["deprecated(effective ripple 3/2)"] = ( - jnp.pi - / (8 * 2**0.5) - * (B0 * data["R0"] / data["<|grad(rho)|>"]) ** 2 - * _compute( + _compute( eps_32, fun_data={"|grad(rho)|*kappa_g": data["|grad(rho)|"] * data["kappa_g"]}, data=data, @@ -231,6 +240,9 @@ def eps_32(data): num_pitch=num_pitch, ) / data["fieldline length"] + * (B0 * data["R0"] / data["<|grad(rho)|>"]) ** 2 + * jnp.pi + / (8 * 2**0.5) ) return data @@ -240,8 +252,7 @@ def eps_32(data): label="\\epsilon_{\\mathrm{eff}}", units="~", units_long="None", - description="Effective ripple modulation amplitude. " - "Uses numerical methods of the Bounce1D class.", + description="Effective ripple modulation amplitude.", dim=1, params=[], transforms={}, @@ -285,8 +296,7 @@ def _f3(K, B, pitch): ), units="~", units_long="None", - description="Energetic ion confinement proxy, Nemov et al. " - "Uses the numerical methods of the Bounce1D class.", + description="Energetic ion confinement proxy, Nemov et al.", dim=1, params=[], transforms={"grid": []}, @@ -379,23 +389,33 @@ def Gamma_c(data): ), ) ) - return ( - (v_tau * gamma_c**2).sum(axis=-1) + return jnp.sum( + jnp.sum(v_tau * gamma_c**2, axis=-1) * data["pitch_inv weight"] - / data["pitch_inv"] ** 2 - ).sum(axis=-1) + / data["pitch_inv"] ** 2, + axis=-1, + ) grid = transforms["grid"].source_grid - fun_data = { - "|grad(psi)|*kappa_g": data["|grad(psi)|"] * data["kappa_g"], - "|grad(rho)|*|e_alpha|r,p|": data["|grad(rho)|"] * data["|e_alpha|r,p|"], - "|B|_r|v,p": data["|B|_r|v,p"], - "K": data["iota_r"] - * dot(cross(data["grad(psi)"], data["b"]), data["grad(phi)"]) - - (2 * data["|B|_r|v,p"] - data["|B|"] * data["B^phi_r|v,p"] / data["B^phi"]), - } data["deprecated(Gamma_c)"] = ( - _compute(Gamma_c, fun_data, data, grid, num_pitch) + _compute( + Gamma_c, + fun_data={ + "|grad(psi)|*kappa_g": data["|grad(psi)|"] * data["kappa_g"], + "|grad(rho)|*|e_alpha|r,p|": data["|grad(rho)|"] + * data["|e_alpha|r,p|"], + "|B|_r|v,p": data["|B|_r|v,p"], + "K": data["iota_r"] + * dot(cross(data["grad(psi)"], data["b"]), data["grad(phi)"]) + - ( + 2 * data["|B|_r|v,p"] + - data["|B|"] * data["B^phi_r|v,p"] / data["B^phi"] + ), + }, + data=data, + grid=grid, + num_pitch=num_pitch, + ) / data["fieldline length"] / (2**1.5 * jnp.pi) ) @@ -415,8 +435,7 @@ def _drift(f, B, pitch): ), units="~", units_long="None", - description="Energetic ion confinement proxy. " - "Uses the numerical methods of the Bounce1D class.", + description="Energetic ion confinement proxy.", dim=1, params=[], transforms={"grid": []}, @@ -471,11 +490,12 @@ def Gamma_c(data): ), ) ) - return ( - (v_tau * gamma_c**2).sum(axis=-1) + return jnp.sum( + jnp.sum(v_tau * gamma_c**2, axis=-1) * data["pitch_inv weight"] - / data["pitch_inv"] ** 2 - ).sum(axis=-1) + / data["pitch_inv"] ** 2, + axis=-1, + ) grid = transforms["grid"].source_grid data["Gamma_c Velasco"] = ( diff --git a/desc/integrals/bounce_integral.py b/desc/integrals/bounce_integral.py index 9163fc4373..eab30767ff 100644 --- a/desc/integrals/bounce_integral.py +++ b/desc/integrals/bounce_integral.py @@ -356,7 +356,7 @@ def __init__( # To retain dℓ = (|B|/B^ζ) dζ > 0 after fixing dζ > 0, we require # B^ζ = B⋅∇ζ > 0. This is equivalent to changing the sign of ∇ζ # or (∂ℓ/∂ζ)|ρ,a. Recall dζ = ∇ζ⋅dR ⇔ 1 = ∇ζ⋅(e_ζ|ρ,a). - "|B^zeta|": Bounce2D.fourier(B_sup_z * Lref / Bref), + "|B^zeta|": Bounce2D.fourier(jnp.abs(B_sup_z) * Lref / Bref), "T(z)": fourier_chebyshev( theta, data["iota"] if is_reshaped else grid.compress(data["iota"]), From 19afc1e6d6f03d487b6b5dabc70fd67dc7d0b1e9 Mon Sep 17 00:00:00 2001 From: unalmis Date: Thu, 24 Oct 2024 18:23:19 -0400 Subject: [PATCH 15/60] Increasing FFT resolution in tests This descript copies the comment at https://github.com/PlasmaControl/DESC/pull/1290#discussion_r1815740278. Due to how we make sure enough resolution is used when we call `eq.compute`, the code I gave above actually computes this quantity by computing all dependencies of the effective ripple on this higher resolution grid: ```python all_dependencies_grid = LinearGrid(rho=rho, M=eq.M_grid, N=eq.N_grid, NFP=eq.NFP, sym=False) ``` Because #1313 was not resolved yet, I had marked `effective ripple` as a quantity that should not be overriden when we call `eq.compute`. That means that once all the input data to the `effective ripple` was computed accurately on the above grid. The computation of the effective ripple itself used this grid ```python eps_eff_grid = LinearGrid(rho=rho, theta=eq.M_grid, zeta=eq.N_grid, NFP=eq.NFP, sym=False) ``` This grid has half as many nodes in poloidal and toroidal directions on which we compute FFTs to do all the integrals. The plot above is the result of this computation against Neo. To generate the Neo plot we converted the equilibrium to boozer coordinates at three times the DESC equilibrium (eq.M, eq.N, etc.) resolution. So the conclusion is that when all the bounce integrals are done using FFTs that are generated from half typical desc resolution, then effective ripple converges to Neo produces from an input with boozer resolution three times the DESC resolution. Now that #1313 is resolved, I have merged that PR into this branch, and marked effective ripple as a flux surface quantity (by saying resolution_requirement="tz"). That means unless `override_grid=False` is given then everything, including all the bounce integrals will be computed on a grid with resolution at least ```python all_dependencies_grid = LinearGrid(rho=rho, M=eq.M_grid, N=eq.N_grid, NFP=eq.NFP, sym=False) ``` The old behavior can be recovered by marking `effective ripple 3/2` compute as something other than requiring theta and zeta resolution. i.e. changing `resolution_requirement="tz"` to `resolution_requirement="z"`. Then the code I gave above (repeated here), will reproduce that plot. ```python eq = get("W7-X") rho = np.linspace(1e-12, 1, 60) # the axis limit IS implemented by the way grid = LinearGrid(rho=rho, theta=eq.M_grid, zeta=eq.N_grid, NFP=eq.NFP, sym=False) num_transit = 64 data = eq.compute( "effective ripple 3/2", grid=grid, theta=Bounce2D.compute_theta(eq, X=32, Y=64, rho=rho), num_transit=num_transit, num_quad=64, num_pitch=200, num_well=20 * num_transit, ) ``` --- desc/compute/_neoclassical.py | 15 ++++++++------- desc/compute/_neoclassical_1D.py | 18 +++++++++--------- desc/objectives/_neoclassical.py | 8 ++------ tests/baseline/test_Gamma_c.png | Bin 16440 -> 17747 bytes tests/baseline/test_effective_ripple.png | Bin 23969 -> 22660 bytes tests/test_neoclassical.py | 15 +++++++-------- 6 files changed, 26 insertions(+), 30 deletions(-) diff --git a/desc/compute/_neoclassical.py b/desc/compute/_neoclassical.py index 9a63873639..44bcfc5f79 100644 --- a/desc/compute/_neoclassical.py +++ b/desc/compute/_neoclassical.py @@ -26,7 +26,7 @@ from ..utils import cross, dot, safediv from .data_index import register_compute_fun -_Bounce2D_doc = { +_bounce_doc = { "theta": """jnp.ndarray : DESC coordinates θ sourced from the Clebsch coordinates ``FourierChebyshevSeries.nodes(X,Y,rho,domain=(0,2*jnp.pi))``. @@ -122,7 +122,8 @@ def _foreach_pitch(fun, pitch_inv, batch_size): ---------- fun : callable Function to compute. - pitch_inv : callable + pitch_inv : jnp.ndarray + Shape (num_pitch, ). 1/λ values to compute the bounce integrals. batch_size : int or None Number of pitch values with which to compute simultaneously. @@ -134,7 +135,7 @@ def _foreach_pitch(fun, pitch_inv, batch_size): # ``fun``` natively supports vectorization. return ( fun(pitch_inv) - if batch_size is None + if (batch_size is None or batch_size >= pitch_inv.size) else imap(fun, pitch_inv, batch_size=batch_size).squeeze(axis=-1) ) @@ -192,9 +193,9 @@ def _dI(B, pitch, zeta): coordinates="r", data=["min_tz |B|", "max_tz |B|", "kappa_g", "R0", "|grad(rho)|", "<|grad(rho)|>"] + Bounce2D.required_names, - resolution_requirement="z", # FIXME: GitHub issue #1312. Should be "tz". + resolution_requirement="tz", grid_requirement={"can_fft": True}, - **_Bounce2D_doc, + **_bounce_doc, ) @partial( jit, @@ -358,9 +359,9 @@ def _f3(K, B, pitch, zeta): "iota_r", ] + Bounce2D.required_names, - resolution_requirement="z", # FIXME: GitHub issue #1312. Should be "tz". + resolution_requirement="tz", grid_requirement={"can_fft": True}, - **_Bounce2D_doc, + **_bounce_doc, quad2="Same as ``quad`` for the weak singular integrals in particular.", ) @partial( diff --git a/desc/compute/_neoclassical_1D.py b/desc/compute/_neoclassical_1D.py index 5bd7d584e3..2ffebdb837 100644 --- a/desc/compute/_neoclassical_1D.py +++ b/desc/compute/_neoclassical_1D.py @@ -16,14 +16,14 @@ ) from ..integrals.bounce_integral import Bounce1D from ..utils import cross, dot, safediv -from ._neoclassical import _Bounce2D_doc +from ._neoclassical import _bounce_doc from .data_index import register_compute_fun -_Bounce1D_doc = { - "quad": _Bounce2D_doc["quad"], - "num_quad": _Bounce2D_doc["num_quad"], - "num_pitch": _Bounce2D_doc["num_pitch"], - "num_well": _Bounce2D_doc["num_well"], +_bounce1D_doc = { + "quad": _bounce_doc["quad"], + "num_quad": _bounce_doc["num_quad"], + "num_pitch": _bounce_doc["num_pitch"], + "num_well": _bounce_doc["num_well"], "batch": "bool : Whether to vectorize part of the computation. Default is true.", } @@ -188,7 +188,7 @@ def _dI(B, pitch): + Bounce1D.required_names, resolution_requirement="z", source_grid_requirement={"coordinates": "raz", "is_meshgrid": True}, - **_Bounce1D_doc, + **_bounce1D_doc, ) @partial(jit, static_argnames=["num_quad", "num_pitch", "num_well", "batch"]) def _epsilon_32_1D(params, transforms, profiles, data, **kwargs): @@ -320,7 +320,7 @@ def _f3(K, B, pitch): ] + Bounce1D.required_names, source_grid_requirement={"coordinates": "raz", "is_meshgrid": True}, - **_Bounce1D_doc, + **_bounce1D_doc, quad2="Same as ``quad`` for the weak singular integrals in particular.", ) @partial(jit, static_argnames=["num_quad", "num_pitch", "num_well", "batch"]) @@ -444,7 +444,7 @@ def _drift(f, B, pitch): data=["min_tz |B|", "max_tz |B|", "cvdrift0", "gbdrift", "fieldline length"] + Bounce1D.required_names, source_grid_requirement={"coordinates": "raz", "is_meshgrid": True}, - **_Bounce1D_doc, + **_bounce1D_doc, ) @partial(jit, static_argnames=["num_quad", "num_pitch", "num_well", "batch"]) def _Gamma_c_Velasco_1D(params, transforms, profiles, data, **kwargs): diff --git a/desc/objectives/_neoclassical.py b/desc/objectives/_neoclassical.py index 2db51d4819..4decf41d08 100644 --- a/desc/objectives/_neoclassical.py +++ b/desc/objectives/_neoclassical.py @@ -169,9 +169,7 @@ def build(self, use_jit=True, verbose=1): """ eq = self.things[0] if self._grid is None: - self._grid = LinearGrid( - theta=eq.M_grid, zeta=eq.N_grid, NFP=eq.NFP, sym=False - ) + self._grid = LinearGrid(M=eq.M_grid, N=eq.N_grid, NFP=eq.NFP, sym=False) assert self._grid.can_fft self._constants["clebsch"] = FourierChebyshevSeries.nodes( self._X, @@ -408,9 +406,7 @@ def build(self, use_jit=True, verbose=1): """ eq = self.things[0] if self._grid is None: - self._grid = LinearGrid( - theta=eq.M_grid, zeta=eq.N_grid, NFP=eq.NFP, sym=False - ) + self._grid = LinearGrid(M=eq.M_grid, N=eq.N_grid, NFP=eq.NFP, sym=False) assert self._grid.can_fft self._constants["clebsch"] = FourierChebyshevSeries.nodes( self._X, diff --git a/tests/baseline/test_Gamma_c.png b/tests/baseline/test_Gamma_c.png index 7a541409625105855c2a7cf7c217369820316e45..5e4ad9a13eb914089597e21d60381fccb35bbab5 100644 GIT binary patch literal 17747 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 HCh&g&xqv!cilk}-BA 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 Op)cvE7F@jH|Gxk=T2WH~ diff --git a/tests/baseline/test_effective_ripple.png b/tests/baseline/test_effective_ripple.png index c763ff4f09994d4c8f266a6101519f3e1e2000d7..b08f3024626a86e4ee5f66bd03244b1110aa4783 100644 GIT binary patch literal 22660 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�egO#W( zjJPmFWsHS6R~%WD@(MAaZj_=93R>KuGmQ^FAkd3ND@z›~AY25{V1(SxC9Y?Q6l2>tbdG>tl80C>mqu)IG=7wM z$7A6Lu4K+tSR$;T-*u%t7}An*Nw_QH*3N!{IBF=Fhuybg010JMOh-;xc|l1DEep{t z^{72&$P0@SPQT4YbvDpY98k`KuJ(%DmWU$z2hyV4#H7|LWzu*NP;bra_Xp9gQ(8xg1h!HPO9UjR0_NHnSjUZ{ z^}Lod-?`tXucf`xU{TBC2>?Qxm>Ii!NcKJvi%Y3s)S)%7c5OTUc=AN^!#jw?gFZ0A$A-ke7uasT(<-vhkzLqnu1DEOslXbg7 zu8*9&SpYrZ6Uy=iiKLwZP^K{q=}eUqi_mvb4^8kXdICQ^x@bb;#q0M`+FvJD(BAQV%fI93Wga1s62 zJhQFX0VxVs-`x;^S0sCD2i}6Q3G_3IBRw0X?AY|FnWt4ds=wT})oDR7+uh)yr1p(f z+SNtqLyZCnV-L}i_{#3&QZRpju1t;UY)=^Y81TLMg+urUCm>?vJ`IA~h6Ved@4+0~ z1mVH;`!gS8P;(M}bnnpO>V0X#T$P=d{>4!MnfdQ_OtUr|FjB!MI!u}5ZLDH|e#U{!XUJ)N-aAY>Ht|3( zZ(101`6sMa_u|WUVz5XF4yK#HC&!7+=rX8Hf#z77!?D9LRAt%%(L|F?u4I4gi~{~+40|cm7g`K_7yEk3A~>)889bo~hA@)WqI5XX_9F9r-X-it zS|Tfczxr$n6!i}SSSV#DrvF~KD?;x@*VCnT%mA{8uumO;wIH;Bz}d%476#XZ2@^@) zvc$0&mh5oy$hbSn$OOM04x1hS zcXQ3C5xX~SNqWMZkJe~Y4>o=i`rm$?BGGP-n|6K{78a{jRi{4~r_Ej3U_=V-s|=U- zRB$Cslb2w@_?OxY(^s}?3*6fOmahMLJ1{um_%tGK5r-jseoFRUy%OD%8-e5`bO<>6 ECw90YZU6uP literal 23969 zcmeFZWmJ?=+dn#jh=PbgD2gbStxh*BYPSrD#7#1)L%Zmq`t3J#!7ax;5?5~ zVoK;sJ=EuG{-vx*Noo7BJ32)6avps)i^tEIn9x0HX4bW-#-mFJL@&xqf&>Tv;Vd&{ z#QhCj`V@-$dz*sfEbhPdw^(rhRg*t+2K=$2BRh}#@1T|(?$7%-L`2|E%U!C=xc}yT z4#oZX|6l$8e4C;X$TMz}orzo`A(%jtbLV&rOUw+~!3njf3z*kK-@m^uz1c#{qgN1z zbg$qbdrO`s8`4zog?i$B5gZWIdV9Xpf4h?l9uv>6EoY`=W%Y@DPRz^At*rX7RYdUV zk^NACwn2NS@jH+q7d@e3S{V{7S8# z?z2%bPFh}4YEfLC-Dib~s4{_wdo-0jb~myG}WoLVDa_rirbj#21IKyl0* z4c>O-c$`Gj0|WoC-^)E|fdA(y-B`6FOG8joIZ;Af_y3x5bC#HjK}v_G?4g8Z*MFbC zYHn^eD1I+c`e1y)d+Rkg)_=ms=;og!CmA}JRW|;2MKNKjSD}H&dPRZCMLGW?HKQk1 zhGjHS@AGY87T-v`y)ntH3^OXru6{gm_TQJmOn&`7 zqc*xfh^XRvElG77}gkgkDbbzDo1tZM_PK zm~kt@F!ybsdX;%q`zJp70!E|D;x4ZUJHaBP;}B?>?UON;+ZA?;B`pm9cw&C}MA6MJ z>MFy9;!vBLcztn8EZSi{>~c+IH;@y$f*-ZE6L}bGeW4+#l{Z{vf&ZyDJK{cGK9{RE zxF>zHs*ZbHlDjQ6eCV0eg~_oTz$`-P%`&jH8#4AID07(Br;W{?_B%kJY znBBMB$2@IgVYG!V-h2o`;INqp_V&hDue^gNJUr9+ZkaN0HW_XU(mrM_oB~G8*WlN<`An=ogIC>VCp=VdMHu0w^#(80VhmGK~XIMvW?L3$f%?-L^G!UxNm)M;d?jC ztgOOh#4)IwGIRuPnqO9S+f%;&hRatFk3$vfC9uDsooL7O7}o^$Fe-}jTgk`3y@K$- zrl4>mq|qH?Jy#yxl_lJ)a*$fanM8`W+ZHzS4D2nV&7*4db}??~v$w!+J*}HyB^qK+&6 zce2Xvn7Q}m#0Kb_Nce>XR>HZ67xsoE0o!;UxMOss(;BbsGunF_se7w+)uCpSXUL5S z&MG!x;3V9J>atHump@_pq@+bzjqe#he~~L1pSg2}ASg%fVXS(4^cgP$xe9_GXJV^9 zjE!y=<;nNe(7&biHNhe#$~sk+luZ9dH+A( z95_)-U{f}Yaea(wWhZ>?_0S^D#^9>&QuT6fk$k`S?{O7)+nqc`nXta|g?%9m;{`YC zA`6t(Z>G#|6S5`0*SJaME?zc}?ZMkf=(wsgMqbE3?z)^9C4MO`8^HPGJnAg9eB1m< z+HS9m=n26CO;`XYmh(ohKx=yiNEENDVIZeQ*yC|kM@*|rWs$=y%vN#R2rp4>H8JTx zCbq!nQ#SCCLei=Ec;C?i&-KBCf4^j8KsbJQt|)faOJej)H^Dw@tHJvAvc^jXQ#Fcw zw#LAC&j{neiAkZ84Y~p>j+aW~*~6$Qg~gJ>2@2+%D}pWG>o7^)6)gON`O!32HK~;*4oUc{%jXiqz*HNQ3eH2;=919o);DED}!b|C@Q0>T;#F z98lhwlz|V}gZ+-?1RygFL1up3bhE$DQTLkb{n(}w25Te8!4DS0s=N|gVhDdyt)}*> zh#-ZeJwb}zY!UU|v&4jL=7Jx_f;Bo~>rRV9jR*&hNE|+CZ?mT7P!@?SCwfAHxAX}O zlO1OI7#FQer3^5=vV^qwO)OztUQ};Lv22ZnNW^d)Vsd=Q>^4D<4S>jTQPh{u{e%+^ z*;LsP!^X;e-&DitF=X-qVZF&6N`=aaNzCIu9_fD){}`Vszf6#fjSc5|m402`dBA#u zAi^X69cJ9Jw3=8*<}cnBq)H%oE$4>{%E%(sF!KD9gL<}=_t>)Q|Hgpt$X;c9XX5=V z`I~B3`i%=>gctZ3q;9Q^CHtQl^>Rx5bM+6E#RsA%9E3?8fJwS3`BGyi6(9d-?I8~{ zB`k;LCfi^p*2vv0>_KEWPpYPXt|#lgf3JY80nSmU*(<2>4+}MZVKxC^TNvI+XE)mI z>&Tfw@B)omfWdh$mBg`wycB~?u@EXc8ZjE6(CVa;f zd`M4r)>9h`+DcvAU zZUQF9ouJ!itA)+J#|G@s7dTfC>cra!qKQd}Q=b4S9~8J* zN?!i=@uZy(uK=q?bp%pKm}USUPULEmsK63tRxIUpfS)P)Dx*Bj3K&die0Q!aJb+W}3j{ z;UDy%N?ozcG1A4o?P88vIrn{c(fR*EM}yD$M4jZ3No@?#pO=rK>2iPm)GETILbX)| zw+f$j4>4Po1-x*onA{>$QjvvNAY3xOefzflcjapfzY+LahtDO(1fO-a07wvK{g8~G z3HBg3OszX?7jJxVYfv$4d|c9}x`suVci8Y^*n>BCoxp#vwf~~odvDv=yI|le*lT9O zUTgR-h4f6w=z=4?RVD6OU4kzcL!CI-c9?|`{dx^5Yc_~2_YveKBMAI*H3?HE?VoqT zammu8<$5qU%~rxO8{m!^=r4PrMWH`#W`am?AX54APoCsW!OscLRXRyQHZTJ( zC48unV?%`hnhU|5j^a#5Iffm6@5>`^)nO4qDi=b=h5uk&!$sFAkdNeh7-4W{8yie3 zXZkv~d#rK1TRK4y8X*bn6*F<8=brN-{IvfwF3wtj>VJdOJK~)Wi>VUO)hFK+oTX}j zI?yWOf}&ha99UknB1S(!_#O3S!o$$+?!PCB8XF&B7SMY8I=5r|G;Ystq+yL}Lekdx zpO*%H3GBHLCiws#Si3Y!8euJFIF0i}16F4xZ&$k0iYBYRs! zaD};yG9NJ~ih62EfvYkwLs%x5$c`|Pz2TDV2WWZim1;p1ZfuiGbzn7EbzfXD63BfoQr_Ade5*hVg5kv{<1c7yKvgOXq z3@yoGCQkEDf=+Qx4!B%Tf;2ipLfBt?1!*`HiFo}l0qDl*-ouFtr`1@&>cZb`LuMUP zgl&le+hY5$KTcg#T5o|BSeGtg5~1wusKeN71>NAlv0-}$x*@$VPg+s2>p}zwNPrE5 z$3$992j!lt-X&wBJxU!Q3B&o7*KCT=wQ*fRmdJg96p&Vfc&^?X)DVol_jR zL=|M2AW#VrGD(5igv6(d+-Jls;cCOnR8ox3{pw?eUiNGvo`ej zd5i>rZg2#oDqSV{PJv&!Rh?Hq_P3}!h)sHTHF@^!SjPz`=3(C(^4;Pc@?(bQu2FTn zT7THTu@^ubeqU{!f;;&fB$J5n)qhn)iV6@DEE{JRU5mVq4gxk5c<0QQ3=)9k@4P0! zX-ep=Te;k_Aw*#O2bRZJ9kT}?O$?to`~TnGm@xO$m(p|xN%tKv2O*57;1p!Nq|QPA zb27-O3+v*%@w#26X0pQ^(6{<)_?js)?+Lx9JgX}HNUYMT7G?8XGfK>+>fU4B2xe!* zDI|m*?9W%!G%O;6Cyk3C3e)1M2?IR@1CjPI{_K+HMRM0BqU!$l2bI2kDXG1xlm`Ak zC$u^|2zz={NC&2)z+n4Z&$#)z;>o4o?27H1wx2(mSN? zSiS#sG2xt0F-*xd&Z>2x#lVr;31%Tr7r0se)oFvce9UT}XrVXW5a(mXsMPR2ddl zh=06v>ia7M33a+w%{M&|VRV}SW8^8Xoy5xeVhcgpWN%dYxMI{P#pcyL{K?!_ci3T; zbv-nuCfCz@H9*lrNkXtXs}D(wvR4zX?vB??57jx?8OTZz(xW_F?euF(LBjJeiV40~ zKpk&IsNdD%$4=Ud*DCb{Lhj*eI(FKBmd34`*MJGY<50Y59nXl@Bf*ZvheZ{KUIeZ zsJO*5G=etwNge2Z>wy4M&O^gTNR(0}d{&2dWDS@t;K*=8N4e88;5`w-dpcmV)y8fs z1Bbl)Vw=+F8d(ZHWo1zXmHCw{s?x&re3+^d?eoz_zTR^?gazcfWMbb}dd6s2O2A84 z&EXMe$q64kjbTj8&Pk+=Q>N$SuJS8@Q5V`83mD-m^-w;~os;&$$o$>*7}+6yXu9`j zD{jK#dO%Sx>wKtuDPR7I$W6Xpk`?^M#yxfUh;@_5I9i-`9fCdJrS3HU-epuqFm&TT zi-)nf$0-hz@!re2h}hgZD}KUg-@#~X*c*ioVMT=?q6~+AlO($}aP=fX_OviuHvAA~2E*TfMED1dZwl1kZpf27$-Y25WZ?4-bqP zDF{}}GB_!YEw|aYx+aOxly*Ru-MwZ;sBzNP+YV#7)AI@fG21Z9`X*%g48Z(wQ+RkUmg|!i1z5gymq3#-MO@R=LDgGXh$ZwhT(`0_vRkjg`{O$I|eav$Xh> zMlP>T0;}CH>mF3S&WkP?H^spKjN}6NNExc;2|y$LKHquk{a@YtO-{}%wG4!*)b*06 zi~?dgU5|B2Mf}uBPRUFdF9;A4Otot_xEEYS?}MTKF8CJ*&luo+o=wDDdoJ8GcaFra zAZTH4duOW>h(|cNw3|FCI-i{-sF>m5ub68jE}10(h#lyauqyjPcqNHK_INMss3R?fhyGDYn;tXNzF2o9_ za>YuaKcz7v$tc0c_^zHL@0cv?ynvbctANzRn2~f8vJ{G2ZVZLx?z@C90tJT2SlkO| z@rqc>20%SJgiBS`;&bVV>?EXnoI2hd+!Q&T-$QG^SCUDMX>zC-WtDch>7~ zVsh54{;%QQAsKQ-b1d|DBc7?@A8mLjsj;TD`ZCpfI>;dZz7Jj#TAb6%f?ui}7^Lip zX(e+0ujltXQBk;PSdpKl{Ubs&na|$)rVSVVOea!YF{h8-#XQU~nMfWlbsHxrb=jPI zyNDC&w)chgLdKN{ZMpw^AV%BFo!*<*ro5qab%(junV=aRUw24F9-p42aJZ|qg5iNi zQ2#g~b)mCz4*_hagHf=Z(#d=Ec1nH}d^)Gm>jODvW0o8Dsi zmm@=0imEM9pj<^aB1%&PL`v>pUq}+n=L62#{1=`{-`IwN#7N5q`X1ZDxKkqmaY2?^ z%95Nt%ich9<;v%`Z_h_w1?r?J>OH8(7$FTkGfT|gX$=yC|5fne17Z3g%FBe2=nWyv zsX306=s$Z_fOH4vnKZAYQ|*q_E4NbUjd-663?N$}mpM2t)9>4|*W%pH*rYXnk%dQ3 zR|Lm`9U3^L?g%gjmM6lUM?286G;M2mt_i;4GSkksob5aIGNidHb zA->MgxGFZnzXgXOIiTIujy)kP!e!(%VE%+r|0hLF(+7=hRdj5!%*~D?Y;4A-E&rtM zyl5(+mb;T;&|j80g4^OAf+mS5K8bw>lDcKX(yYM7z*2KN3^4)F4|T*Hn1|njR;-D1 zf_ZFI5|3V-N^%7|%>?046QBoBzo5E3Rqvuv^)vT~6QtV?nLGIKOIAw2X<-g+49s_O zsQ%cTZAQ|ta<)(CEx-bvEqqNj0eDGp(CUaOlQob7 z6o243C2atQ!DR4CUR*Y-gK6O!f2=SNA74;xx(W6N7=tDJP3>#$7|%R8mv)T{+MCYJ z(jhhRk^~s(*BEp0ybZD7QcBanf(R1cscrEc<_@RgP%yAx*~V}Pmumx}eq=fG&zx$C zI1nZeUt{>)3LpGjIuZo$)0ZrgDV(TxlXf^kvV)8Y+fzMQ8X<8|BZ-_uD;Db zfj8t9dG#rAVhJJorD(Bbf zaN5*DoY5F)KumjaXb#D2=!e>L93iEk`~3GW#zWjhx#AS7pUx0t5D~MU|Mit@4ZGk3 zDdDZgYv>pOPP3u6$BOI?GLFO39^y<&TOy$Q*8A}gabs(y4R75{i!F7;bPfK+=Z2XJ zK&E2Ru7)ktC*Qfi4;m9Q97`7lL#m@DaeQ~}$QAu4M{GW;6`RsN4q9~f!4aj^<4c7>$8U^3US5xR zbspHHR7bk%l%6s+!GAWBRwqzO+%FWWQ8At&b}?J>DWYH3ZSxidz3605t(!bvb12LA zHcd_|(6s8$WbfZ=^qks0z?=@Olpe3VAF8$mYUC*n&Cg09B7(ZlolsxCt(T)n{|eO;$Rdo-c%)hq z8dZ0f)@9MEOP2G_&1klnTK9o$g@KnOk1o_jY`^GfyDR}9FVgEZPVc`(grjC>!d;&` zEoq>ThPf7vP#S)|^Q5ugaN#2~eH?UhXg17?l^MAvE3)I0*u6IdlKHrUHeV>5nbpSc zu*-S_db)FZ#4-csQ@>Dtg$`Z(u2|2FA z-8(L#*_uKz*w8zr|7`20O>E;%Ox4rKDu?7Gws0U-JU$A$$!{rdElcMkK9GuxI8s=u z?)`@84+L!7Kv*J6oVDfr_zdKLxlH{0t#4huziM%cIoPNeFTwU44saBjigDl7JK6~0 zzj!_tU(UJ-llC(YnQFTh+C9_M=hfjKwRZi&x;D;rdR#i+%XQxP(-i7zH<6LF>skPFAXYn92eh8V{YYwO(n%mmQK zvj`sj7P<*waGMB#I%-%*6#{oNb;R3uu=3+|q>2|iPiMT%2{J8dHOsZhwsJISoD1P` zylB8QE!DNQgAHj!W$hd+YR69~=<#WmJ2pow3cwhqoKR;Vn|$SlPtZr-Mv$P|0Kfp} zsP*ZwDwn28B(17X4eLwL^HfS5L=6GZM3;}+FoZEyQXqUVe%1TXb5YZPZ2Mq79x-VO z@Klg>M>UUqNjTk!9%0Z3$05hG%=zS7v|g;UFaP|R^IG4&#|RKg@~t-6tY!}jfJUk8 zPcxg{GWz^O9*2eCaQYotR=^kW!>1mh`8wMKcQqp_8eoY_!E^u-bBQ z0w7fT=#F!X$`}Bvf%#?r8Ic(ZPbJgbW1WUkzuh&ky7Yr-;EVZ=7Z^oZ=K}UB884G9 zRl=XgWV~1Mu3|XUy2&AOwvtS~W;vJ}xft|OkyBH}NJ*9qzw~kOP<{25VT%LU?2b3I zq6MEU?;jo?b=y`NGcM791|M~=uAagUmA*PsZR;Mut&aQF2FF?*tM}e+tyJn~p@wpG z6QXnm%GBgV_$IX|y6@@%pdRc_Par+etMV(|iXG$YaKq*1gjN5Isey&=Hc+u*u3Vyg zc;^0_vkU#0m1@y+b#2^4Z#K_0iId?9ob#rT;>|VbY9JTytsj zH`Q=UUUszVh+WB9$V>vRw)>5=MwVL0Qg`UjjG^rZp@q7++`7=Ke7mg*T5>bL0MyWR zHc2}zRLK9<0ju&r?rT*OPrqo4%q9XehE08h5!S&*o@99(&l_}a^CN3?Or?#s?t@hi z{n>>;u1~%5SCsK#MpJHttd0H38Hf~AiIuu3jj0Wr4NcdQ3r(Nj?#zAkl)g}V^icvk zh%7iry07ov2LQ8VW*ioO^nkf^);ky$W{ep)6n#)|te=P5gL((CGo%qzzDG{sDta=u z96rd6UgduNTsbSG4{qqjPj#7v5p<_n738UO?mjFP3pD5Yqwx%YC%9o{PLAap>*m#y zyG&J_d293=y4G+NDZcS93c?Qiy@cIwtF%D%@1P6Em&VW=O^KKT`J+?cLM_&n?K9jU z14R_Nt$$lKs7$X%uI7PQ&p(OK3t2souk`5|pml7H0}!Z5lH=zZ>T#HJZVk`6<-~Fa zXtSdi6U3-*Tq`6or!_mC9cc<`yZ=hsUukXJG@Vij-~hGcO%_cK+9hGQm$fOQ20$>m z>)6hBT0TeFc>9>-9>%ReJMB?K0n=ve}UC|{Oe6dq{qxdz&#_gr6cvco%Fpk zhmAqc3L$Y5!jk^`xkJ8;#a20He6ty5R#3steMftF%ACho#~&LMNlb+L6xyVYIZtR0JTLC8xh2;ry%5!{Zz^GqvBq>5ue7f zTJ580Ec69&?h%^*(s>(DSP5{6iW>XmwrqPwrLlfSpQ2b+%bB-2 znf*t*>SVpLK1|8A@u|BU%d1-~ZuefDi`Me;3c1GsXE&FwM{msd2DI)&P~LykUzj8Y*#aT7(dOI$^tF!vW3l$+2^IUQ85 zxHj`UkKR=Oz`oG&__5rK=7_k#LfS>B zzSYgD58Cx_9nohoJX4f&2BLNslvvAR%~=LA4LZ0!1UuZ!e!>GiY&tOWm4agd@H^9y zbxh77id5_U8{%~{Btwe(GQv$vE}xv{KKU^qaLN9(F)Pcaf3r7OwDkUK|z{&iZ9nBs2KeAO~6C#8xzS1|l>%q^^seTVxg~ zpL@8_|CA3cXnZr8i9ed|>BTJKQ3`}rUEB)73Z87khf2Qn>;CaRmQ%1a$$)rb5NTcp zw083L+x4VL8O^U>a|Rmu`C0Fe)r&mm9waqSvAQOSpzw~ev>9gE{2Qx7av)F7;;YlZnG~-EciXm^;`TFt0uB? zyHpb|z4vkIGfebH&uZp$tikv5kIo)idio+ziVXLph48X|)s&H;MK%QyQ_$~qG4_5p zYvObM?baAqY|N&hsH%})PDDlb;Y$)YuF(qRB~Nk24`19XEG!S|amb_LH_Klw=ZKR9 z?PPF@z5WxRXZj13JY?K-*`u00DY2=s?5I(@+^k@sKFoQt3UO$7cIbpONDS)gLVvG$ zA{+KqqM4+J{@4tI%Ddv}efqc2$;0pl3nhcnl)cqEOx>v)M{dVR9UWMbV`>7(x^}-> zGXI^UX66Ot7T^H&LEuxY3!1dKd=6A8ks)6Sm_<)N{k8bTlZJq@+wVCQI-8iF1`3zH|eg`CAo;>Sxy`9JpM^Gf!a)7I)a$A-rvWQ;NvNv;WO!l&; zFI8NF;u&|=k^VD0^_*6Tig04!dD`v;O7#$~*qN z%lzs90e(u<_3TOeI|s9xa%4FKg8I81sgvYH=a@weNUPFy09i5_-J9bZM zS^{4j)wCk~t1(6XnAjzx*Av~wUz-%CrJdN4(--F;Zv4RX9Rb+sUwRlYf@wZl%F1O9 zNy=0E9M~dVM)c=FiRf}$G(GQ39&?W3!-uzS-u#wrqok>mP!$xgt)GBi$>lX<7ZfZs zsh;QM0Q8KeCSS}(!(`oikljxmuSiowGr%M`R{n;EhiKKEEUZfb=Heg-e$v?Xog??1 zSc#t-p+p|%{&rlM>yKLOjh^*%X%re6D%2J6ULLX;>C2GJ&s9yWAo8FETK$?sdjBf3 zD_`=ok&39RXqQS1Lz_>FSV}@ya&$$)2M`1)=A@-;s&{^T|-X$V;_VS zYn*@A@0bQ!DxrLTRveu+=;?T*_dmL?{rNFJen!yjRy3odR0>z@)&#w(vR2&IV9API z&TeY!9X-STM>iyWnrH;qlV*F#KxXTBy0e0G)DZMOhNm}~W8rO8OgYO6Fgs+(If&f3 zlP?Q)6z>?aAFGF>a3Zh=9m99qnFo5(k|=9w4dl$uM~?|-Ncsjz&J;E8tqC*nYPG!Q zx)H?$w7h5i5)cb7UBxJbXBMy>Nw5$0FX_dU=!`Rk?7P`RBgBKSx85L z>V?$Zzk;zaqs%8qut`GzhFHXrqLZ^OzYqOq$?wjWpp59t$Z% z)Od-`6CBF1ZgXdFq}z~~{vs}SLDoNTM1Mr;?#DD6Vi``BO16n1LW{CHm>g#=guTg< zeHVx*?5N6qD2Hm4X_?tmM_)W%KxPWDX~UIB(&nGck{GRp zejdk@`Yqq8dLoFDd7#c0|9%u4H2iS|x3bQY?4ia6z51$M%rOn=SzKSW$k9h^nx+T_y>2SCK78@FApUi&F~)babR&7X&km&!U zibC5E%%%1j`S!D!VX#95b^dV#-_A4x#P2<>X^6;~8cvU%){D*-VZUKoMS0_ilhRct z7m(*gmQ$3HKQ@kCzxHs(1?)xjC$Zi~+SLY9MD7=&*3pKGE8qiD+=^ERF%se{k-zY^Z zj;sI-6jzxm56EJ#6EDfXQL1(@PN%#Lm^+)7Wn=~tHC3<}UVbAMY95=36#dUH@A_AH z%|2*r(l{MJS7XA^4(8?6Oj(%POw6hM4~uubVDPwJ9Hu!p95wjfz*;ZghEaLoM`T+Y z>;8nbQzN+_8QJ-n$4;WwBsQ2p`&0iyZ8mFBsM-ztpDd_n=VCA&slr)#Qc?=jJ_iQ4 z&Ms26v;-Vv+QR4=7RfQdrOQl5f5a7+OW!gZd`_FO$$J}OK8@S9#g~{sSIe*LgGla1 zGhnyIXZowq2|wa7HSpgvwjZylvUIE*9m+AFboO^oJxpr_r=VOu^?BxFBOpV3fX z))}MBAa=H85XV0#74$a;9SFU49>!90>>Q>2x3l&`x43WrtndrX1@NTK(@JIMvFrOh zr55~QVK)%uN&LJNj64}ik6*L`!8_x)s?oXddcjQ@X_-@Z@1wdzfUJl~%R-E1b-r$=hl_DkhV67WvC1=_>I!SnZhX1tFu+L~ zd?t@hvY$sd0JnRTyCaA*Pnc-Q2f)6$Eh`Rr-vLm(^qcXc6F$I|%1S14CiRFCca!C*S8A!W9;S)tSTe(NncPlc>9k zGJ%26a%+IV;<%KdYL5~0KjuoCp$py7o)0qv`hG7wJ#e$`R_^@G?YN%kiGDgRDDrfW zDlG6yHo#PPbBJ5a4?Xv@9K@1-&+oQPIII}VPwYFuez~CAvId~5fC?%JV1lqa-u-!%+n!|7@{-A4M7{!K#?@`qNQe?kFYS@F_+o4&aW(_uWo6|Cf{U>9_-s$tmb5!fdQjY zOO!;EQ(|Hm2l{1IX$7v6GQN4O)Qv4D2-D<4zD;4 zH+8yV-Z*k14LG2)DeVZ?REv;F@!D!*VR9lOT!*^F%fdousc)bwSw}DFPQg@8xZdY4 zsaI3cBQTfoA@;I&^{2z?(M`@!3Pmv^#v2g!8wiV2yQvVp1|w$*r`ww;?boj5x=cpZ zA@-*cEG%(2Dwt85Z6cjmifwN~jZ?fyb;4AjF3hkxNd>!;m{(&_07%`uyG2^)v_VC{ zQ>vB_f>4S99f8YyG0CbrdgwC_XU>s1(K4xg^g&#Ed#Cc>sI{+Q`nj%6cYLBz$nM`2 z6^^eK$;|8SV+;2_H;r#*@C2DCU&Caugb%uRuhi+2%NayQ#tyEKTaK{lGi%RPM7ur@ zY&~cHR|{1=0`*7t^po1q0zDJR^>arx?n8-5qq5iqqIZ9FC|YR$-d=;v`Zi~#9Y#rD zerw~LJm|0;?J;J5`b5KHUZ3;wr3s-Wx8NoZN!!R-U`BoaaqXz=M>s;tXCY#!y2$<9 zKpZR0YvPJ4pktFd|3A_8bn}(hy43~#_0v~fr#s;^>k&E`f-5|`7y~*Yb+g&unRzgv7lq7bq2(|Mn; zkZUDbh?C-`{XJy5`qY<&d%Olp0EL(c*00Pvyzycc@HbdY%SJ&93VOJci;m>s9hr9+ z`1)ud5uUqu|B)+73b&nkuqPf@`s1)S$xfY zI7ktutLTr`k9L$kMhZmsMWTfmo^J9NlEmZ8W#DUSLychOZzGwkorT$umr9cxoHNG;=rK!72*Z1Jl! z_7vuE*qwXu(Q^q`D|`@5_TLx1#}d~IT7NdGt>KhfZktM@Yn~kUa-j?Z-}Y^e*X0kX z-p0F5yH@=@S%T@0f39(kX4Qr$^@C0iK4cX9Vwp5up3=(#ymPO`sJo9}+AIxHxtShh zT?}>VoSwGiHBd9$nBt|r{#%Db)kg~?z-W}){bP%1cz$a=O0O|h&%sFjG+kUDP0wBk zoY1eE?|xl|a2o@thUw$>rw?aEf6cVL(hZs_HXcAstK>XVe(_>)fp{XUw=*fP+lW9! zuku+l348O#gpstv;G@P8zc6#i2G$hU=L2<{UJv4>M~R>6oyttD$@+m$_jSf=PUf$M zJ_dm7vJ|`$@QmSgntl2%(-Yh>8}rJA{@$p}fT)|_3euKl0m)%5)&kw zCVkEz!`HZ*u>0G(O%URXbGSJ}y!x7s{w3M~Sr|GPZ!-xzWK%!>@tNN=YVGdvzStX; z>45&ZO!Ot3#qaM{+bVm`S4Cx%>-$Y`VF_Lz@rixIiQK9dI)ET!R&{bMo^ z^bXf~H>7QX?dgseDa|MY#CYvDtM@WH$gGn20hK%Nju%-=5YC;bH#ugXReZT9bw?4f zDFy;DV$({Vi`PAwNpxi{GqyN`j_9Tm=qfgj{E_Yreo}+EcM#hZEs!6)bEJH@{}UNY(skU)2G&AgVu7>yw`{THaM`>~%`P+_!C>40JliWv>H zX$f<6E>Zm-FR80f(iXtI%m*L(eZ`?n(oy=c+BrR)=lzIqV;h1F6NRIw8tD<^Ps6pQ z0URB;(RJB=ywjOSPs#t-Ip^&cbjn@pH-HWYTr}uTBRkL7d?hH1-Ir%FF)V;aG7fJGH|g6A$5TssL`Kx)!U=VU8oFQblb=vXs58> zV3q-awU*I(=+>OPGJ1KSl~UDl#3Y?wZn@7wrs%l28Be|wTWkImn-Q!hkY$Eyav2vz zfjZ=9Peil;689XOq+23DzDzK?9!P#;LwNAB+<4wcU9(MU}dY{K<0ha5b38Dkn{!q!(DFXlc{q|Yy8mf;hzzbWFt-kWacG=8Cl4%ePO z5R5Gvh1zbTxAkpel_qunWDaF9(-$=bh2OeW5T=s4Uhpl<^cfPyN+%{@5FE^Tj#LVF zJ6LCSZXqX@`M_wWp=Ts-E}d%o`P(K_Y{s9&66Un^1rE@(ta|+Fu4i6S980x}b8&=P zmdnL*qTBsVmB(Hi2LU1hOHQYoo0KN#RUSaCRYo6{mzR@KZh-u=71zQEzjRtsX-C^( zOFq&q=&J)F^gGm@5KIBvvintJ3T)ou8B!Vd^#}U$(GmFp&}REE{QQGxbFDFDQizZpKDUj2log9r72quFAR+B)K;O9iO!d0n%~@~T-TFrF}&&0lZA zRrVKD%(!;JVo$TMFee1Wl9?JkULEymuY*SbYt_zund~*~yKn!k`I=6kOQV0AvoXD> z(*6`La5#D;A9uIf2g1lXNl7PugR;-zUR|zJg}wX!51wR%-Wv;FRD!Nu|Kcz@IW~PX zDQ<>~OWqvMNNQoc1wd&UAJYP+YX84!Y5jk5M+NOcOy`ynV}E$GrD$#1KMapv3+zr2 z>7%{p*)~5Dnm+35lSLOit_850UoT6@h4f_lGDUn4WMmbn)zSYDdj=Y#$y?SyySIfA zC=)W(xp~MAE<5<0;u`gV@+T1EKNqIw%XgrTJJL;1UJ{F|(}$Eic;k>gB^#K)^6>5RIFZk^QkWzP2;e6x7P6 zbjeQ?9MS{{01+*`15kf?6-7R`p5*|Iw(n6~yQ@8RfKjiuCGxaODJ$54!Qo&)b)eQ= z$Lf=NQwJuARvR+G0`3M1_6Hf`Y!Xnza3%__tg<4PT*o=3ccQkMD@&Ua{Lu+}Yl%%K zI&_jgp)X%4cDZB~t?;sHfVfZ1Af?j!rtwLeDUlQzFb$y>A(ukX1xWdL>6;>jbL{F9 zx3yzWPTqq1F)C;gg-Df+X4k;W{&N)eT~vjE&*xqZ#4vKcA+3lPPVFl|Q^G}Ddc~vd zMIP;Be#{3IZQj8|2qvD%UkPTS|3T7_PPFIN;YK4DHLtBy`~NvpSZ~w;`9muB`GR*F zmo_hoawX~uSWnh_laZ4Tf}cR3rlWK4W`OuU-isNoUBGIGj>3l}XnfTMnKMd2gl<>>1P%A=e@U5@w6)vdv4B=& z-k@^N1B%@MTy4ONQV+Cf2q+GP$kF(f4ZOmoW1zL27m;N!v{RWm0tOriRL_*s!D0q7 zrNQq&;EI&q4{e7xu_x9#ZY>J9#xuI9FrQc1u9X?`tiE z;{dz$Gij-lqr;oUrmcfLllKgxo1KfnRYAue!n}HgR=JL`=3k!m=;;@*c%yD6-(m%@ zPtsmEbIO-5d>1dVD1cbe@t`iq)6weHi?QQv3yK0+xmUE529X=4e`gL~p_+!<+iRU| zc5G3pmQiqd)2iED9mU2d+AHg2VUpLIUA~N|JLd!9VioY|fXx0d!D~5bci6No@6zd! zG6kK|$_RZW)BdC#0~uM12yhH7XK}RZ$;Ax^<$aDZZ~xQ>GL*j>x~Gtxkz9j8@JRuX z2EdK218cXp;>QqTE+U6pirlC-B+36zJ@|BQ*GnBl4H_E*t+LX^nU(&_hhSYfoXe>P5Q59p{0ay)RI7y= zN}JC51#S@z1i^bbs~tG_O*#3^d8h?l0uRV8rEsdnX=Fs`1F~W?BYnyH_aqWte|-Uy z@hAB058&`0UbtU#CuqeBd6J!n>o77iVeV&DAFBN_Z5)E9m+MYIl?QlBuS<3W9TftW zlJ^q`0{8O~oV)<#ZF1Vry|gR&>GM7Xay6q;|8!>=bOt@%xTZS{b^J!zp&bezMHksI zMEx9wpDwsnC3vAR*ZxqPxYcsN8diAt&?xDmoPk6Ts_Lj`EeA*Y zw@!|sGYa{%oDAb?;GdIa8>`ocnIgje{Gs{le^?u@3()Lp-;I}Q-4r%?;94J!I^y8J z>jmH*Go%LAkU99-U<5S|%qc3R;|-RPG2ja0N|W%00WR`~)iLm!1yx=sotoK3a;nR; z-v4Trz|Yb_eaXe$AP}kDvI6&l#3n~1GH~PoZ4g#7mpxTdRzDGw23x0V z*GA!P$tncUC?~WP)8&Bv$PnAczKM9vtL&WIHx#)e7Q!{iYR~?2W@ocT)-&-0{Wmx^ z4OrdLam)14^X`5;%fNfQ6c-{LsEd*p9i9LE`bzQ`*;|A!!ve8@^}ritf1kxlaBEQY zo$@&PB(YXLflvZLMHF6tv2k>iga?S&(&7Rwk@U+HHv+v&(ad~uX$TK&&*B>W+^b(tlnRsQ{Ja1ZM)R8F((0B9TQ24epG77XZY z+~8$Rm@4=Pj3@<>#ua1eAwJTICx=%)i<`PWlp~< zYD#mgjj{#pXWZF1)6$4D-7wrGN_Wbb!8TgaWsJwZ<7UEF*seW?!jFfO+h+gIJq}A* z^GKRQ$Ih#r z(B+oN-IA&2PVUJqv?UF)$;xH}j;8Iwir;f(O&M;$5dc&xPu65!)y4o-#Tc7e`cTt` zKx6-a2_KSO*H6r`m$cJ}OC1c3kz+K}*>BI!(a1qEaktG!aUixxX}45HAR5}Vwh71G zv7IUZ3eFXmK?t9C2L|QRS|<5yq)a_m{2-*jV`%|6s=2~;6`K?-@Q;#QjR03D9u=hX zxTPk8u|uoBYNi%`Tsu~?M=dEwTpNL#!)%J-ITG|36!s$wj=R>-II`DXVuio;FM80s z(0$YWHY>~h?|7!PPIEA*Hg)Pe0B2U&-QDS|Laq==JEt_1~Tt~ zDI;UOh9;ue&RYs1fcv!;mu%3lQC}6;#+9D!U5p|wXmJ3`-fW%?#)05drhAz}6&p%T zfdiYfZ4pYT0sz0#2_tKBHrd)T#>&J=ul{BQKzlNUWs!C{+6y&Hs$ViIflER{cHhG$ zn(E*&=UWtT`rP|E`TXE-()Q&JUd5_{@te{9R!Pe##YJK?&7bpwLwF{MDN1<^)Ij6R z{@BNQdCI8bkS3OC^Z(MrGM&yXhRqmHfJMzRv7(x;mIgE38}$fczs3+=icZ3b)V>_>BA3m&q+nmD(D=;-_1tZQz#e@8UC}KSrvPIf3^Y$fA3h?TIt`)zt6s zr%?dq%!uLcHu$hpU(kq4{l(&)|T);G<&(=-{&yo5qKNw-Vd?HW;U& z1!MPz-a-V>U{)f6C?IVhSnP7mjlrl!No9L-?S zE*RpCxzs-KrYTikwZ5D%C9-GFuXKEmBE*%kHNda}2|8Tg861MPASP>2_-%Ef!hGT@z&I!w4MzB9KA-*S-mkYv zNp@;2ak9N1o2-m-DPo;OF~!!3dP_Prve<6PnGBtWl@7`i{nZ&E9#fzR#QJt+sjvR~ zfW%6`O{f4aQ%$xh$23D9%uKj}b{;))y$X?=4k+7QMx5 ze6o2WnU{1nbBsK^FXd881vM|k!nptvA_@})7)Nx9KWIOvqEI;$&%qRK(O76i)yNdG z9Y2=RcCk5WR<;~g&nt>x#K`4Am+u+vvuIuTcyGI4it9Bi?l2$B=|Ko%E%lHGtH{n} zg%L(i$2k{#)&fCHgj??N=MLpH>3hDBa?CG=iX}#9D~#h}(KA}X#=?^AOJ@a=399J` z61yROB4&DcU_7WV((6S?T3;qYV?vw-5=e!-XA7rj3TIo(5a)4S965CGUPBToUgRE( z4I(D?H8(b1KQ-JSyqiqNC%mGC(H48kcb8k^?_O&u!a8il_l5e$3-el-8f)gXB^ggW zCGPC*VLBw&)~-Y8q+c+!efZsKWylIb9}J|zC4@w1ydBMqsN{};mx~MVb42)HE3yOv zbDWK^LNElHL06d~s1K{pVrrp7$+s4D-g1*nx{JN{VklKA+PU=jy)dIRbD!4Ksn~;R z*63(gj#8jAMk>lJ(a=qvL~=2^E{^~FXif2QH?DEAT6VJG+&kjOl{&EaK}TwU9|X1P z71+x%t@xVS!JWU@OX*NY@=|dXANMISb97O=Cg}T6|C%Fi0DBx`s*Rp?n!c>6& z-c2Er)HO?wLCwgkE3PUM01GrG8dq00WG0WanX}w`zk7Ve`)=jTAc9&U*Y>tR(d6K< zqxPHrdw&RpzBG4u*vgUSQ4WSt<;dum0t7jO_`qFJ27H&rV48*wpU;8BH1ZvOG3G^o zX{0?}dB8Aw8GBvyfy!Bs41=fjq?8};Eushc=AGeVeF!BtBv8#iJ0?mVk8fbUqlFgJ zJVf?*N$~bEd@7F;S8Zx$H>?mGIi-7Luv*+Qx|TkAB^&WRNo~-)+Bcl|`J*`VWqHdp z`@P?n;N+$Cw$Fvn%t8#}-)b^>7{9qa|C05n|03cBfiFD6qxdyje`A~GxNUe%Upc3v z3%zP2ME6ZK`dqC990|b#5Bn|#<02_>%Ab~!L%}Az>Z~m5F0o2EnRcf;=}C0=;wKiu za#QvcQGnw_9MaHc$r@}O&FyMFSyAgZia>Y(+quUZQFOB4KV{kx>@O43Y1shG`2J4b zk`JYxq6bdd2+Uwj=)Mv8n?DaKy1p?T=a9NK$7e%Zg<45RKQL^F&%6>oUe>@a!cQka z+m%=`Yggf`Y)iG>hv4i7lL~EmioY;HgH$Bdq`6j3VldseEFp?3V0~yNaZ8(rp#$4P zts3~)+4kgYv>hvNb8;E~rsWt{rbnn{pG2-8|82(_HRF@TKWO^xWGYx089d%$1?a%| z7%}oihslrXCJoG2v}88kr&TP6UGK{-Xp^4W=v$yb z7!_m)As%~V_zp*l6XrS44~h-SSs#!E@y@^-hR-Bqnl1AC-cH{*Shqp|KzyzyGr@6K|$okmtx&U^djAvem< zbm3F+=Z3WUFK=%y+*$0;_cPJDpVx3@T+fwH(uNJIl`s_@po>=jb-$7I&%x#>3U_wx$OZ%s}p5tRE-jSu~8Ly#^n;^a)1R`Avd&r$Av5C^uQK{3gyks>$_8g zPn>58m^tg}T4^b#c8FdGk0g9F zA69vaBZGpNc8~>jX@uE#`O?qu(b!h@0KR=1e2^k*X0b9EzOnI?1t$N#RZ^7{X zDgyVN4<_T*?~s8&pMP&iMOT_Y^iwkFgDE(s*^A_^o@ztrO+{VN&h$G>I|%iP*YT&TQpM5 z5fdn81qNp026Jrmma?SV(R!7X_F_UyzO1PH7Ew|*vK`f58>^jt(RFol4ma~XfgV9u51(I3r;Lt~zsKDDO#@sL zzfQDOiHbbH1nfi&Ajvz)RA!Mf)EJbPI+fWR_CuR|IXYvX7e6uItJ=U$M$+0`7V*p^NU+<{xOrLbCzcd9+ z$eDb4T)=3P+pt`NiYY|$))9Nx}{y0r<<`!}+J z6=h`p@KoMUN`fo!f?Nbj6(PTe|C;iW?NrmiEju=+iz-3*`Qg+*qFbZllm6Ug@9*Y8 z$s&uVnV__e-piKh_Ug&jd&qrA4hj<1hru|HfT^YS@S zJezk4?6{OaScUV2N1NN>v>wK}Kun2$D=4bjMncR_o%?k8B~i(Aq_hb8rsZ1{V>=uP z{<^->q5m#n7oPlI*fgzh>xIb<9K;$2j<;L@c^P=TkMGE)@wabx@(F4E zq7UvLNjaylP&9l@2A_~~`|*#Y(*JsP^Z$dj|C12$g=o8j%imc2q8*KVSH>9gAByzd Gum2tVKs5>g diff --git a/tests/test_neoclassical.py b/tests/test_neoclassical.py index 14766f929c..9c0e234f71 100644 --- a/tests/test_neoclassical.py +++ b/tests/test_neoclassical.py @@ -20,22 +20,21 @@ def test_effective_ripple(): """Test effective ripple with W7-X against NEO.""" eq = get("W7-X") rho = np.linspace(0, 1, 10) - grid = LinearGrid(rho=rho, theta=eq.M_grid, zeta=eq.N_grid, NFP=eq.NFP, sym=False) + grid = LinearGrid(rho=rho, M=eq.M_grid, N=eq.N_grid, NFP=eq.NFP, sym=False) num_transit = 10 data = eq.compute( "effective ripple 3/2", grid=grid, - theta=Bounce2D.compute_theta(eq, X=16, Y=64, rho=rho), - Y_B=100, + theta=Bounce2D.compute_theta(eq, X=32, Y=64, rho=rho), + Y_B=128, num_transit=num_transit, - num_quad=33, num_well=20 * num_transit, ) assert np.isfinite(data["effective ripple 3/2"]).all() eps_32 = grid.compress(data["effective ripple 3/2"]) neo_rho, neo_eps_32 = NeoIO.read("tests/inputs/neo_out.w7x") - np.testing.assert_allclose(eps_32, np.interp(rho, neo_rho, neo_eps_32), rtol=0.06) + np.testing.assert_allclose(eps_32, np.interp(rho, neo_rho, neo_eps_32), rtol=0.16) fig, ax = plt.subplots() ax.plot(rho, eps_32, marker="o") @@ -49,13 +48,13 @@ def test_Gamma_c(): """Test Γ_c Nemov with W7-X.""" eq = get("W7-X") rho = np.linspace(1e-12, 1, 10) - grid = LinearGrid(rho=rho, theta=eq.M_grid, zeta=eq.N_grid, NFP=eq.NFP, sym=False) + grid = LinearGrid(rho=rho, M=eq.M_grid, N=eq.N_grid, NFP=eq.NFP, sym=False) num_transit = 10 data = eq.compute( "Gamma_c", grid=grid, - theta=Bounce2D.compute_theta(eq, X=16, Y=64, rho=rho), - Y_B=100, + theta=Bounce2D.compute_theta(eq, X=32, Y=64, rho=rho), + Y_B=128, num_transit=num_transit, num_well=20 * num_transit, ) From f82bf2dfe9db97e51e1605af186ba05ebb2c6ccc Mon Sep 17 00:00:00 2001 From: unalmis Date: Sat, 26 Oct 2024 22:43:15 -0400 Subject: [PATCH 16/60] Avoid redundant interpolation to speed things --- desc/compute/_neoclassical.py | 76 ++--- desc/compute/_neoclassical_1D.py | 33 +-- desc/equilibrium/equilibrium.py | 2 +- desc/integrals/_bounce_utils.py | 14 +- desc/integrals/_interp_utils.py | 6 +- desc/integrals/_quad_utils.py | 37 ++- desc/integrals/bounce_integral.py | 292 ++++++++++++-------- desc/objectives/_neoclassical.py | 20 +- desc/plotting.py | 1 + tests/baseline/test_effective_ripple.png | Bin 22660 -> 22883 bytes tests/baseline/test_effective_ripple_1D.png | Bin 23872 -> 24199 bytes tests/test_integrals.py | 53 ++-- tests/test_quad_utils.py | 9 + 13 files changed, 303 insertions(+), 240 deletions(-) diff --git a/desc/compute/_neoclassical.py b/desc/compute/_neoclassical.py index 44bcfc5f79..411b044fa3 100644 --- a/desc/compute/_neoclassical.py +++ b/desc/compute/_neoclassical.py @@ -14,8 +14,6 @@ from desc.backend import imap, jit, jnp -from ..integrals._bounce_utils import interp_fft_to_argmin -from ..integrals._interp_utils import polyder_vec from ..integrals._quad_utils import ( automorphism_sin, chebgauss2, @@ -42,11 +40,6 @@ assuming the surface is not near rational, more transits will approximate surface averages better, with diminishing returns. """, - "num_quad": """int : - Resolution for quadrature of bounce integrals. - Default is 32. This parameter is ignored if given ``quad``. - """, - "num_pitch": "int : Resolution for quadrature over velocity coordinate.", "num_well": """int : Maximum number of wells to detect for each pitch and field line. Giving ``None`` will detect all wells but due to current limitations in @@ -60,11 +53,15 @@ The ``check_points`` or ``plot`` methods in ``desc.integrals.Bounce2D`` are useful to select a reasonable value. """, + "num_quad": """int : + Resolution for quadrature of bounce integrals. + Default is 32. This parameter is ignored if given ``quad``. + """, + "num_pitch": "int : Resolution for quadrature over velocity coordinate.", "batch_size": """int : Number of pitch values with which to compute simultaneously. If given ``None``, then ``batch_size`` defaults to ``num_pitch``. """, - "spline": "bool : Whether to use cubic splines to compute bounce points.", "fieldline_quad": """tuple[jnp.ndarray] : Used to compute the proper length of the field line ∫ dℓ / |B|. Quadrature points xₖ and weights wₖ for the @@ -77,10 +74,11 @@ Quadrature points xₖ and weights wₖ for the approximate evaluation of the integral ∫₋₁¹ f(x) dx ≈ ∑ₖ wₖ f(xₖ). """, + "spline": "bool : Whether to use cubic splines to compute bounce points.", } -def _compute(fun, fun_data, data, theta, grid, num_pitch): +def _compute(fun, fun_data, data, theta, grid, num_pitch, simp=False): """Compute ``fun`` for each ρ value iteratively to reduce memory usage. Parameters @@ -97,18 +95,19 @@ def _compute(fun, fun_data, data, theta, grid, num_pitch): Shape (num rho, X, Y). DESC coordinates θ sourced from the Clebsch coordinates ``FourierChebyshevSeries.nodes(X,Y,rho,domain=(0,2*jnp.pi))``. + simp : bool + Whether to use an open Simpson rule instead of uniform weights. """ for name in Bounce2D.required_names: fun_data[name] = data[name] - fun_data = dict( - zip(fun_data.keys(), Bounce2D.reshape_data(grid, *fun_data.values())) - ) + fun_data = {name: Bounce2D.reshape_data(grid, fun_data[name]) for name in fun_data} # These already have expected shape with num rho along first axis. fun_data["pitch_inv"], fun_data["pitch_inv weight"] = Bounce2D.get_pitch_inv_quad( grid.compress(data["min_tz |B|"]), grid.compress(data["max_tz |B|"]), num_pitch, + simp=simp, ) fun_data["iota"] = grid.compress(data["iota"]) fun_data["theta"] = theta @@ -202,9 +201,9 @@ def _dI(B, pitch, zeta): static_argnames=[ "Y_B", "num_transit", + "num_well", "num_quad", "num_pitch", - "num_well", "batch_size", "spline", ], @@ -254,15 +253,13 @@ def eps_32(data): data["|grad(rho)|*kappa_g"] = Bounce2D.fourier(data["|grad(rho)|*kappa_g"]) def fun(pitch_inv): - points = bounce.points(pitch_inv, num_well=num_well) - H = bounce.integrate( - _dH, + H, I = bounce.integrate( + [_dH, _dI], pitch_inv, - data["|grad(rho)|*kappa_g"], - points=points, + [[data["|grad(rho)|*kappa_g"]], []], + bounce.points(pitch_inv, num_well=num_well), is_fourier=True, ) - I = bounce.integrate(_dI, pitch_inv, points=points) return safediv(H**2, I).sum(axis=-1) return jnp.sum( @@ -281,6 +278,7 @@ def fun(pitch_inv): theta=theta, grid=grid, num_pitch=num_pitch, + simp=True, ) * (B0 * data["R0"] / data["<|grad(rho)|>"]) ** 2 * jnp.pi @@ -369,9 +367,9 @@ def _f3(K, B, pitch, zeta): static_argnames=[ "Y_B", "num_transit", + "num_well", "num_quad", "num_pitch", - "num_well", "batch_size", "spline", ], @@ -433,24 +431,18 @@ def Gamma_c(data): def fun(pitch_inv): points = bounce.points(pitch_inv, num_well=num_well) - v_tau = bounce.integrate(_v_tau, pitch_inv, points=points) + v_tau, f1, f2 = bounce.integrate( + [_v_tau, _f1, _f2], + pitch_inv, + [[], [data["|grad(psi)|*kappa_g"]], [data["|B|_r|v,p"]]], + points=points, + is_fourier=True, + ) gamma_c = jnp.arctan( safediv( - bounce.integrate( - _f1, - pitch_inv, - data["|grad(psi)|*kappa_g"], - points=points, - is_fourier=True, - ), + f1, ( - bounce.integrate( - _f2, - pitch_inv, - data["|B|_r|v,p"], - points=points, - is_fourier=True, - ) + f2 + bounce.integrate( _f3, pitch_inv, @@ -460,17 +452,8 @@ def fun(pitch_inv): is_fourier=True, ) ) - * interp_fft_to_argmin( - grid.NFP, - bounce._c["T(z)"], - data["|grad(rho)|*|e_alpha|r,p|"], - points, - bounce._c["knots"], - bounce._c["B(z)"], - polyder_vec(bounce._c["B(z)"]), - is_fourier=True, - M=grid.num_theta, - N=grid.num_zeta, + * bounce.interp_to_argmin( + data["|grad(rho)|*|e_alpha|r,p|"], points, is_fourier=True ), ) ) @@ -506,5 +489,6 @@ def fun(pitch_inv): theta=theta, grid=grid, num_pitch=num_pitch, + simp=False, ) / (2**1.5 * jnp.pi) return data diff --git a/desc/compute/_neoclassical_1D.py b/desc/compute/_neoclassical_1D.py index 2ffebdb837..3415c9cc1f 100644 --- a/desc/compute/_neoclassical_1D.py +++ b/desc/compute/_neoclassical_1D.py @@ -7,7 +7,6 @@ from desc.backend import imap, jit, jnp -from ..integrals._bounce_utils import interp_to_argmin from ..integrals._quad_utils import ( automorphism_sin, chebgauss2, @@ -20,10 +19,10 @@ from .data_index import register_compute_fun _bounce1D_doc = { + "num_well": _bounce_doc["num_well"], "quad": _bounce_doc["quad"], "num_quad": _bounce_doc["num_quad"], "num_pitch": _bounce_doc["num_pitch"], - "num_well": _bounce_doc["num_well"], "batch": "bool : Whether to vectorize part of the computation. Default is true.", } @@ -39,7 +38,7 @@ def _alpha_mean(f): return f.mean(axis=0) -def _compute(fun, fun_data, data, grid, num_pitch, reduce=True): +def _compute(fun, fun_data, data, grid, num_pitch, simp=False, reduce=True): """Compute ``fun`` for each α and ρ value iteratively to reduce memory usage. Parameters @@ -52,6 +51,8 @@ def _compute(fun, fun_data, data, grid, num_pitch, reduce=True): Reshaped automatically. data : dict[str, jnp.ndarray] DESC data dict. + simp : bool + Whether to use an open Simpson rule instead of uniform weights. reduce : bool Whether to compute mean over α and expand to grid. Default is true. @@ -61,6 +62,7 @@ def _compute(fun, fun_data, data, grid, num_pitch, reduce=True): grid.compress(data["min_tz |B|"]), grid.compress(data["max_tz |B|"]), num_pitch, + simp=simp, ) def foreach_rho(x): @@ -71,9 +73,7 @@ def foreach_rho(x): for name in Bounce1D.required_names: fun_data[name] = data[name] - fun_data = dict( - zip(fun_data.keys(), Bounce1D.reshape_data(grid, *fun_data.values())) - ) + fun_data = {name: Bounce1D.reshape_data(grid, fun_data[name]) for name in fun_data} out = imap(foreach_rho, fun_data) return grid.expand(_alpha_mean(out)) if reduce else out @@ -190,7 +190,7 @@ def _dI(B, pitch): source_grid_requirement={"coordinates": "raz", "is_meshgrid": True}, **_bounce1D_doc, ) -@partial(jit, static_argnames=["num_quad", "num_pitch", "num_well", "batch"]) +@partial(jit, static_argnames=["num_well", "num_quad", "num_pitch", "batch"]) def _epsilon_32_1D(params, transforms, profiles, data, **kwargs): """https://doi.org/10.1063/1.873749. @@ -199,8 +199,8 @@ def _epsilon_32_1D(params, transforms, profiles, data, **kwargs): Phys. Plasmas 1 December 1999; 6 (12): 4622–4632. """ # noqa: unused dependency - num_pitch = kwargs.get("num_pitch", 50) num_well = kwargs.get("num_well", None) + num_pitch = kwargs.get("num_pitch", 50) batch = kwargs.get("batch", True) if "quad" in kwargs: quad = kwargs["quad"] @@ -238,6 +238,7 @@ def eps_32(data): data=data, grid=grid, num_pitch=num_pitch, + simp=True, ) / data["fieldline length"] * (B0 * data["R0"] / data["<|grad(rho)|>"]) ** 2 @@ -323,7 +324,7 @@ def _f3(K, B, pitch): **_bounce1D_doc, quad2="Same as ``quad`` for the weak singular integrals in particular.", ) -@partial(jit, static_argnames=["num_quad", "num_pitch", "num_well", "batch"]) +@partial(jit, static_argnames=["num_well", "num_quad", "num_pitch", "batch"]) def _Gamma_c_1D(params, transforms, profiles, data, **kwargs): """Energetic ion confinement proxy as defined by Nemov et al. @@ -380,13 +381,7 @@ def Gamma_c(data): quad=quad2, ) ) - * interp_to_argmin( - data["|grad(rho)|*|e_alpha|r,p|"], - points, - bounce.zeta, - bounce.B, - bounce.dB_dz, - ), + * bounce.interp_to_argmin(data["|grad(rho)|*|e_alpha|r,p|"], points), ) ) return jnp.sum( @@ -415,6 +410,7 @@ def Gamma_c(data): data=data, grid=grid, num_pitch=num_pitch, + simp=False, ) / data["fieldline length"] / (2**1.5 * jnp.pi) @@ -446,7 +442,7 @@ def _drift(f, B, pitch): source_grid_requirement={"coordinates": "raz", "is_meshgrid": True}, **_bounce1D_doc, ) -@partial(jit, static_argnames=["num_quad", "num_pitch", "num_well", "batch"]) +@partial(jit, static_argnames=["num_well", "num_quad", "num_pitch", "batch"]) def _Gamma_c_Velasco_1D(params, transforms, profiles, data, **kwargs): """Energetic ion confinement proxy as defined by Velasco et al. @@ -456,8 +452,8 @@ def _Gamma_c_Velasco_1D(params, transforms, profiles, data, **kwargs): Equation 16. """ # noqa: unused dependency - num_pitch = kwargs.get("num_pitch", 64) num_well = kwargs.get("num_well", None) + num_pitch = kwargs.get("num_pitch", 64) batch = kwargs.get("batch", True) if "quad" in kwargs: quad = kwargs["quad"] @@ -505,6 +501,7 @@ def Gamma_c(data): data=data, grid=grid, num_pitch=num_pitch, + simp=False, ) / data["fieldline length"] / (2**1.5 * jnp.pi) diff --git a/desc/equilibrium/equilibrium.py b/desc/equilibrium/equilibrium.py index 3544b1cf95..394c968e32 100644 --- a/desc/equilibrium/equilibrium.py +++ b/desc/equilibrium/equilibrium.py @@ -1007,7 +1007,7 @@ def need_src(name): # and won't override grid to one with more toroidal resolution and not (override_grid and coords in {"r", ""}), ResolutionWarning, - msg("radial") + f" got N_grid={grid.N} < {self._N_grid}.", + msg("toroidal") + f" got N_grid={grid.N} < {self._N_grid}.", ) # Now compute dependencies on the proper grids, passing in any available diff --git a/desc/integrals/_bounce_utils.py b/desc/integrals/_bounce_utils.py index 57047ad0e2..6ec94c6a37 100644 --- a/desc/integrals/_bounce_utils.py +++ b/desc/integrals/_bounce_utils.py @@ -19,6 +19,7 @@ from desc.integrals._quad_utils import ( bijection_from_disc, grad_bijection_from_disc, + simpson2, uniform, ) from desc.integrals.basis import ( @@ -38,7 +39,7 @@ ) -def get_pitch_inv_quad(min_B, max_B, num_pitch): +def get_pitch_inv_quad(min_B, max_B, num_pitch, simp=False): """Return 1/λ values and weights for quadrature between ``min_B`` and ``max_B``. Parameters @@ -49,6 +50,8 @@ def get_pitch_inv_quad(min_B, max_B, num_pitch): Maximum |B| value. num_pitch : int Number of values. + simp : bool + Whether to use an open Simpson rule instead of uniform weights. Returns ------- @@ -62,10 +65,10 @@ def get_pitch_inv_quad(min_B, max_B, num_pitch): msg="Floating point error impedes detection of bounce points " f"near global extrema. Choose {num_pitch} < 1e5.", ) - # Samples should be uniformly spaced in |B| and not λ (GitHub issue #1228). + # Samples should be uniformly spaced in |B| and not λ. # Important to do an open quadrature since the bounce integrals at the # global maxima of |B| are not computable even ignoring precision issues. - x, w = uniform(num_pitch) + x, w = simpson2(num_pitch) if simp else uniform(num_pitch) x = bijection_from_disc(x, min_B[..., jnp.newaxis], max_B[..., jnp.newaxis]) w = w * grad_bijection_from_disc(min_B, max_B)[..., jnp.newaxis] return x, w @@ -479,7 +482,7 @@ def _interpolate_and_integrate( return result -def _check_interp(shape, Q, b_sup_z, B, result, f, plot): +def _check_interp(shape, Q, b_sup_z, B, result, f=None, plot=True): """Check for interpolation failures and floating point issues. Parameters @@ -511,6 +514,7 @@ def _check_interp(shape, Q, b_sup_z, B, result, f, plot): assert goal == (marked & jnp.isfinite(b_sup_z).reshape(shape).all(axis=-1)).sum() assert goal == (marked & jnp.isfinite(B).reshape(shape).all(axis=-1)).sum() + f = setdefault(f, []) for f_i in f: assert goal == (marked & jnp.isfinite(f_i).reshape(shape).all(axis=-1)).sum() @@ -813,7 +817,7 @@ def interp_to_argmin_hard(h, points, knots, g, dg_dz, method="cubic"): -------- interp_to_argmin Accomplishes the same task, but handles the case of non-unique global minima - more correctly. It is also more efficient if P >> 1. + more correctly. It is also more efficient if ``num_pitch`` >> 1. Parameters ---------- diff --git a/desc/integrals/_interp_utils.py b/desc/integrals/_interp_utils.py index 42be44afd2..ef4ad04ab5 100644 --- a/desc/integrals/_interp_utils.py +++ b/desc/integrals/_interp_utils.py @@ -509,14 +509,13 @@ def _subtract_first(c, k): but allows dimension to increase. """ c_0 = c[..., 0] - k - c = jnp.concatenate( + return jnp.concatenate( [ c_0[..., jnp.newaxis], jnp.broadcast_to(c[..., 1:], (*c_0.shape, c.shape[-1] - 1)), ], axis=-1, ) - return c def _subtract_last(c, k): @@ -526,14 +525,13 @@ def _subtract_last(c, k): but allows dimension to increase. """ c_1 = c[..., -1] - k - c = jnp.concatenate( + return jnp.concatenate( [ jnp.broadcast_to(c[..., :-1], (*c_1.shape, c.shape[-1] - 1)), c_1[..., jnp.newaxis], ], axis=-1, ) - return c def _filter_distinct(r, sentinel, eps): diff --git a/desc/integrals/_quad_utils.py b/desc/integrals/_quad_utils.py index 802a88c52c..a8038e7979 100644 --- a/desc/integrals/_quad_utils.py +++ b/desc/integrals/_quad_utils.py @@ -191,7 +191,7 @@ def leggauss_lob(deg, interior_only=False): def uniform(deg): - """Uniform quadrature that is Gauss-Chebyshev in transformed variable. + """Uniform open quadrature with nodes closer to boundary. Returns quadrature points xₖ and weights wₖ for the approximate evaluation of the integral ∫₋₁¹ f(x) dx ≈ ∑ₖ wₖ f(xₖ). @@ -217,6 +217,41 @@ def uniform(deg): return x, w +def simpson2(deg): + """Open Simpson rule completed by midpoint at boundary. + + Parameters + ---------- + deg : int + Number of quadrature points. Rounds up to odd integer. + + Returns + ------- + x, w : tuple[jnp.ndarray] + Shape (deg, ). + Quadrature points and weights. + + """ + assert deg > 3 + deg -= 1 + (deg % 2) + x = jnp.arange(-deg + 1, deg + 1, 2) / deg + h_simp = (x[-1] - x[0]) / (deg - 1) + h_midp = (x[0] + 1) / 2 + + x = jnp.hstack([-1 + h_midp, x, 1 - h_midp], dtype=float) + w = jnp.hstack( + [ + 2 * h_midp, + h_simp + / 3 + * jnp.hstack([1, jnp.tile(jnp.array([4, 2]), (deg - 3) // 2), 4, 1]), + 2 * h_midp, + ], + dtype=float, + ) + return x, w + + def chebgauss1(deg): """Gauss-Chebyshev quadrature of the first kind with implicit weighting. diff --git a/desc/integrals/bounce_integral.py b/desc/integrals/bounce_integral.py index eab30767ff..02205ac7ed 100644 --- a/desc/integrals/bounce_integral.py +++ b/desc/integrals/bounce_integral.py @@ -48,15 +48,17 @@ def points(self, pitch_inv, *, num_well=None): """Compute bounce points.""" @abstractmethod - def check_points(self, points, pitch_inv, *, plot=True, **kwargs): + def check_points(self, points, pitch_inv, *, plot=True): """Check that bounce points are computed correctly.""" @abstractmethod - def integrate( - self, integrand, pitch_inv, f=None, weight=None, points=None, *, quad=None - ): + def integrate(self, integrand, pitch_inv, f=None, points=None, *, quad=None): """Bounce integrate ∫ f(λ, ℓ) dℓ.""" + @abstractmethod + def interp_to_argmin(self, f, points): + """Interpolates ``f`` to the deepest point pⱼ in magnetic well j.""" + def _swap_pl(f): # Given shape (num rho, num pitch, -1) or (num pitch, num rho, -1) @@ -346,8 +348,8 @@ def __init__( B = data["|B|"] B_sup_z = data["B^zeta"] else: - B = grid.meshgrid_reshape(data["|B|"], "rtz") - B_sup_z = grid.meshgrid_reshape(data["B^zeta"], "rtz") + B = Bounce2D.reshape_data(grid, data["|B|"]) + B_sup_z = Bounce2D.reshape_data(grid, data["B^zeta"]) # spectral coefficients self._c = { @@ -386,14 +388,14 @@ def __init__( ) @staticmethod - def reshape_data(grid, *arys): + def reshape_data(grid, f): """Reshape ``data`` arrays for acceptable input to ``integrate``. Parameters ---------- grid : Grid Tensor-product grid in (ρ, θ, ζ). - arys : jnp.ndarray + f : jnp.ndarray Data evaluated on grid. Returns @@ -403,8 +405,7 @@ def reshape_data(grid, *arys): Reshaped data which may be given to ``integrate``. """ - f = [grid.meshgrid_reshape(d, "rtz") for d in arys] - return f if len(f) > 1 else f[0] + return grid.meshgrid_reshape(f, "rtz") @staticmethod def fourier(f): @@ -602,7 +603,6 @@ def integrate( integrand, pitch_inv, f=None, - weight=None, points=None, *, is_fourier=False, @@ -639,14 +639,6 @@ def integrate( evaluated on the ``grid`` supplied to construct this object. These functions should be arguments to the callable ``integrand``. Use the method ``Bounce2D.reshape_data`` to reshape the data into the expected shape. - weight : jnp.ndarray - Shape (num rho, M, N). - Real scalar-valued periodic functions in (θ, ζ) ∈ [0, 2π) × [0, 2π/NFP) - evaluated on the ``grid`` supplied to construct this object. - If supplied, the bounce integral labeled by well j is weighted such that - the returned value is w(j) ∫ f(λ, ℓ) dℓ, where w(j) is ``weight`` - interpolated to the deepest point in that magnetic well. Use the method - ``Bounce2D.reshape_data`` to reshape the data into the expected shape. points : tuple[jnp.ndarray] Shape (num rho, num pitch, num well). Optional, output of method ``self.points``. @@ -654,8 +646,8 @@ def integrate( The points are ordered and grouped such that the straight line path between ``z1`` and ``z2`` resides in the epigraph of |B|. is_fourier : bool - If true, then it is assumed that ``f`` and ``weight`` are Fourier - transforms as returned by ``Bounce2D.fourier``. + If true, then it is assumed that ``f`` holds Fourier transforms + as returned by ``Bounce2D.fourier``. Default is false. check : bool Flag for debugging. Must be false for JAX transformations. plot : bool @@ -673,69 +665,52 @@ def integrate( flux surface, and pitch value. """ + if not isinstance(integrand, (list, tuple)): + integrand = [integrand] + f = setdefault(f, [[]]) + if not isinstance(f, (list, tuple)): + f = [f] + if not isinstance(f[0], (list, tuple)): + f = [f] + if points is None: points = self.points(pitch_inv) - - # We move num pitch axis to front so that the num rho axis broadcasts - # with the spectral coefficients (whose first axis is also num rho), - # assuming this axis exists. - z1, z2 = map(_swap_pl, points) - pitch_inv = atleast_nd(self._c["T(z)"].cheb.ndim - 1, pitch_inv).T - result = self._integrate( self._x if quad is None else quad[0], self._w if quad is None else quad[1], integrand, pitch_inv, - setdefault(f, []), - z1, - z2, + f, + points, is_fourier, check, plot, ) - if weight is not None: - errorif( - isinstance(self._c["B(z)"], PiecewiseChebyshevSeries), - NotImplementedError, - msg="Set spline to true until implemented.", - ) - result *= interp_fft_to_argmin( - self._NFP, - self._c["T(z)"], - weight, - (z1, z2), - self._c["knots"], - self._c["B(z)"], - polyder_vec(self._c["B(z)"]), - is_fourier=is_fourier, - M=self._M, - N=self._N, - ) - return _swap_pl(result) + return result[0] if len(result) == 1 else result def _integrate( - self, x, w, integrand, pitch_inv, f, z1, z2, is_fourier, check, plot + self, x, w, integrand, pitch_inv, f, points, is_fourier, check, plot ): """Bounce integrate ∫ f(λ, ℓ) dℓ. Parameters ---------- - pitch_inv : jnp.ndarray - Shape (num pitch, ) or (num pitch, num rho). - f : list[jnp.ndarray] + integrand : list[callable] + f : list[list[jnp.ndarray]] Shape (M, N) or (num rho, M, N). - z1, z2 : jnp.ndarray - Shape (num pitch, num well) or (num pitch, num rho, num well). Returns ------- - result : jnp.ndarray - Shape (num pitch, num rho, num well). + result : list[jnp.ndarray] + Shape (num rho, num pitch, num well). """ - if not isinstance(f, (list, tuple)): - f = [f] + # We move num pitch axis to front so that the num rho axis broadcasts + # with the spectral coefficients (whose first axis is also num rho), + # assuming this axis exists. + z1, z2 = map(_swap_pl, points) + pitch_inv = atleast_nd(self._c["T(z)"].cheb.ndim - 1, pitch_inv).T + shape = [*z1.shape, x.size] # num pitch, num rho, num well, num quad # ζ ∈ ℝ and θ ∈ ℝ coordinates of quadrature points zeta = flatten_matrix( @@ -765,8 +740,40 @@ def _integrate( domain1=(0, 2 * jnp.pi / self._NFP), axes=(-1, -2), ) + result = [ + _swap_pl( + ( + int_i( + *self._interp(theta, zeta, f_i, is_fourier), + B=B, + pitch=1 / pitch_inv[..., jnp.newaxis], + zeta=zeta, + ) + * B + / B_sup_z + ) + .reshape(shape) + .dot(w) + * grad_bijection_from_disc(z1, z2) + ) + for int_i, f_i in zip(integrand, f) + ] + + if check: + shape[-3], shape[0] = shape[0], shape[-3] + _check_interp( + # shape is num alpha = 1, num rho, num pitch, num well, num quad + (1, *shape), + *map(_swap_pl, (zeta, B_sup_z, B)), + result=result[0], + plot=plot, + ) + + return result + + def _interp(self, theta, zeta, f, is_fourier): if is_fourier: - f = [ + return ( irfft2_non_uniform( theta, zeta, @@ -777,35 +784,66 @@ def _integrate( axes=(-1, -2), ) for f_i in f - ] - else: - f = [ - interp_rfft2( - theta, - zeta, - f_i[..., jnp.newaxis, :, :], - domain1=(0, 2 * jnp.pi / self._NFP), - axes=(-1, -2), - ) - for f_i in f - ] - result = ( - integrand(*f, B=B, pitch=1 / pitch_inv[..., jnp.newaxis], zeta=zeta) - * B - / B_sup_z - ).reshape(shape).dot(w) * grad_bijection_from_disc(z1, z2) - - if check: - shape[-3], shape[0] = shape[0], shape[-3] - _check_interp( - # shape is num alpha = 1, num rho, num pitch, num well, num quad - (1, *shape), - *map(_swap_pl, (zeta, B_sup_z, B, result)), - list(map(_swap_pl, f)), - plot, ) + return ( + interp_rfft2( + theta, + zeta, + f_i[..., jnp.newaxis, :, :], + domain1=(0, 2 * jnp.pi / self._NFP), + axes=(-1, -2), + ) + for f_i in f + ) - return result + def interp_to_argmin(self, f, points, *, is_fourier=False): + """Interpolates ``f`` to the deepest point pⱼ in magnetic well j. + + Parameters + ---------- + f : jnp.ndarray + Shape (num rho, M, N). + Real scalar-valued periodic function in (θ, ζ) ∈ [0, 2π) × [0, 2π/NFP) + evaluated on the ``grid`` supplied to construct this object. + Use the method ``Bounce2D.reshape_data`` to reshape the data into the + expected shape. + points : tuple[jnp.ndarray] + Shape (num rho, num pitch, num well). + Optional, output of method ``self.points``. + Tuple of length two (z1, z2) that stores ζ coordinates of bounce points. + The points are ordered and grouped such that the straight line path + between ``z1`` and ``z2`` resides in the epigraph of |B|. + is_fourier : bool + If true, then it is assumed that ``f`` is the Fourier transforms + as returned by ``Bounce2D.fourier``. Default is false. + + Returns + ------- + f_j : jnp.ndarray + Shape (num rho, num pitch, num well). + ``f`` interpolated to the deepest point between ``points``. + + """ + errorif( + isinstance(self._c["B(z)"], PiecewiseChebyshevSeries), + NotImplementedError, + msg="Set spline to true until implemented.", + ) + # We move num pitch axis to front so that the num rho axis broadcasts + # with the spectral coefficients (whose first axis is also num rho), + # assuming this axis exists. + return interp_fft_to_argmin( + self._NFP, + self._c["T(z)"], + f, + map(_swap_pl, points), + self._c["knots"], + self._c["B(z)"], + polyder_vec(self._c["B(z)"]), + is_fourier=is_fourier, + M=self._M, + N=self._N, + ) def compute_fieldline_length(self, quad=None): """Compute the proper length of the field line ∫ dℓ / |B|. @@ -1098,15 +1136,15 @@ def __init__( self._data = ( data if is_reshaped - else dict(zip(data.keys(), Bounce1D.reshape_data(grid, *data.values()))) + else {name: Bounce1D.reshape_data(grid, data[name]) for name in data} ) self._x, self._w = get_quadrature(quad, automorphism) # Compute local splines. - self.zeta = grid.compress(grid.nodes[:, 2], surface_label="zeta") + self._zeta = grid.compress(grid.nodes[:, 2], surface_label="zeta") self.B = jnp.moveaxis( CubicHermiteSpline( - x=self.zeta, + x=self._zeta, y=self._data["|B|"], dydx=self._data["|B|_z|r,a"], axis=-1, @@ -1115,7 +1153,7 @@ def __init__( source=(0, 1), destination=(-1, -2), ) - self.dB_dz = polyder_vec(self.B) + self._dB_dz = polyder_vec(self.B) # Note it is simple to do FFT across field line axis, and spline # Fourier coefficients across ζ to obtain Fourier-CubicSpline of functions. # The point of Bounce2D is to do such a 2D interpolation but also do so @@ -1126,14 +1164,14 @@ def __init__( self._data[name] = self._data[name][..., jnp.newaxis, :] @staticmethod - def reshape_data(grid, *arys): + def reshape_data(grid, f): """Reshape arrays for acceptable input to ``integrate``. Parameters ---------- grid : Grid Tensor-product grid in (ρ, α, ζ) Clebsch coordinates. - arys : jnp.ndarray + f : jnp.ndarray Data evaluated on grid. Returns @@ -1143,8 +1181,7 @@ def reshape_data(grid, *arys): Reshaped data which may be given to ``integrate``. """ - f = [grid.meshgrid_reshape(d, "arz") for d in arys] - return f if len(f) > 1 else f[0] + return grid.meshgrid_reshape(f, "arz") def points(self, pitch_inv, *, num_well=None): """Compute bounce points. @@ -1185,7 +1222,7 @@ def points(self, pitch_inv, *, num_well=None): line and pitch, is padded with zero. """ - return bounce_points(pitch_inv, self.zeta, self.B, self.dB_dz, num_well) + return bounce_points(pitch_inv, self._zeta, self.B, self._dB_dz, num_well) def check_points(self, points, pitch_inv, *, plot=True, **kwargs): """Check that bounce points are computed correctly. @@ -1218,7 +1255,7 @@ def check_points(self, points, pitch_inv, *, plot=True, **kwargs): z1=points[0], z2=points[1], pitch_inv=pitch_inv, - knots=self.zeta, + knots=self._zeta, B=self.B, plot=plot, **kwargs, @@ -1232,7 +1269,6 @@ def integrate( integrand, pitch_inv, f=None, - weight=None, points=None, *, method="cubic", @@ -1264,12 +1300,6 @@ def integrate( construct this object. These functions should be arguments to the callable ``integrand``. Use the method ``Bounce1D.reshape_data`` to reshape the data into the expected shape. - weight : jnp.ndarray - Shape (num alpha, num rho, num zeta). - If supplied, the bounce integral labeled by well j is weighted such that - the returned value is w(j) ∫ f(λ, ℓ) dℓ, where w(j) is ``weight`` - interpolated to the deepest point in that magnetic well. Use the method - ``Bounce1D.reshape_data`` to reshape the data into the expected shape. points : tuple[jnp.ndarray] Shape (num alpha, num rho, num pitch, num well). Optional, output of method ``self.points``. @@ -1301,7 +1331,7 @@ def integrate( """ if points is None: points = self.points(pitch_inv) - result = _bounce_quadrature( + return _bounce_quadrature( x=self._x if quad is None else quad[0], w=self._w if quad is None else quad[1], integrand=integrand, @@ -1309,22 +1339,42 @@ def integrate( pitch_inv=pitch_inv, f=setdefault(f, []), data=self._data, - knots=self.zeta, + knots=self._zeta, method=method, batch=batch, check=check, plot=plot, ) - if weight is not None: - result *= interp_to_argmin( - weight, - points, - self.zeta, - self.B, - self.dB_dz, - method, - ) - return result + + def interp_to_argmin(self, f, points, *, method="cubic"): + """Interpolates ``f`` to the deepest point pⱼ in magnetic well j. + + Parameters + ---------- + f : jnp.ndarray + Shape (num alpha, num rho, num zeta). + Real scalar-valued functions evaluated on the ``grid`` supplied to + construct this object. Use the method ``Bounce1D.reshape_data`` to + reshape the data into the expected shape. + points : tuple[jnp.ndarray] + Shape (num alpha, num rho, num pitch, num well). + Optional, output of method ``self.points``. + Tuple of length two (z1, z2) that stores ζ coordinates of bounce points. + The points are ordered and grouped such that the straight line path + between ``z1`` and ``z2`` resides in the epigraph of |B|. + method : str + Method of interpolation. + See https://interpax.readthedocs.io/en/latest/_api/interpax.interp1d.html. + Default is cubic C1 local spline. + + Returns + ------- + f_j : jnp.ndarray + Shape (num alpha, num rho, num pitch, num well). + ``f`` interpolated to the deepest point between ``points``. + + """ + return interp_to_argmin(f, points, self._zeta, self.B, self._dB_dz, method) def plot(self, m, l, pitch_inv=None, **kwargs): """Plot the field line and bounce points of the given pitch angles. @@ -1333,7 +1383,7 @@ def plot(self, m, l, pitch_inv=None, **kwargs): ---------- m, l : int, int Indices into the nodes of the grid supplied to make this object. - ``alpha,rho=grid.meshgrid_reshape(grid.nodes[:,:2],"arz")[m,l,0]``. + ``alpha,rho=Bounce1D.reshape_data(grid,grid.nodes[:,:2])[m,l,0]``. pitch_inv : jnp.ndarray Shape (num pitch, ). Optional, 1/λ values whose corresponding bounce points on the field line @@ -1347,7 +1397,7 @@ def plot(self, m, l, pitch_inv=None, **kwargs): Matplotlib (fig, ax) tuple. """ - B, dB_dz = self.B, self.dB_dz + B, dB_dz = self.B, self._dB_dz if B.ndim == 4: B = B[m] dB_dz = dB_dz[m] @@ -1359,9 +1409,9 @@ def plot(self, m, l, pitch_inv=None, **kwargs): jnp.ndim(pitch_inv) > 1, msg=f"Got pitch_inv.ndim={jnp.ndim(pitch_inv)}, but expected 1.", ) - z1, z2 = bounce_points(pitch_inv, self.zeta, B, dB_dz) + z1, z2 = bounce_points(pitch_inv, self._zeta, B, dB_dz) kwargs["z1"] = z1 kwargs["z2"] = z2 kwargs["k"] = pitch_inv - fig, ax = plot_ppoly(PPoly(B.T, self.zeta), **_set_default_plot_kwargs(kwargs)) + fig, ax = plot_ppoly(PPoly(B.T, self._zeta), **_set_default_plot_kwargs(kwargs)) return fig, ax diff --git a/desc/objectives/_neoclassical.py b/desc/objectives/_neoclassical.py index 4decf41d08..c6552252c0 100644 --- a/desc/objectives/_neoclassical.py +++ b/desc/objectives/_neoclassical.py @@ -69,10 +69,6 @@ class EffectiveRipple(_Objective): For axisymmetric devices, one poloidal transit is sufficient. Otherwise, assuming the surface is not near rational, more transits will approximate surface averages better, with diminishing returns. - num_quad : int - Resolution for quadrature of bounce integrals. Default is 32. - num_pitch : int - Resolution for quadrature over velocity coordinate. Default is 64. num_well : int Maximum number of wells to detect for each pitch and field line. Giving ``None`` will detect all wells but due to current limitations in @@ -85,6 +81,10 @@ class EffectiveRipple(_Objective): A tighter upper bound than ``num_well=(Aι+B)*num_transit`` is preferable. The ``check_points`` or ``plot`` methods in ``desc.integrals.Bounce2D`` are useful to select a reasonable value. + num_quad : int + Resolution for quadrature of bounce integrals. Default is 32. + num_pitch : int + Resolution for quadrature over velocity coordinate. Default is 64. batch_size : int Number of pitch values with which to compute simultaneously. If given ``None``, then ``batch_size`` defaults to ``num_pitch``. @@ -121,9 +121,9 @@ def __init__( # Y_B is expensive to increase if one does not fix num well per transit. Y_B=None, num_transit=20, + num_well=None, num_quad=32, num_pitch=50, - num_well=None, batch_size=None, ): if target is None and bounds is None: @@ -288,10 +288,6 @@ class GammaC(_Objective): For axisymmetric devices, one poloidal transit is sufficient. Otherwise, assuming the surface is not near rational, more transits will approximate surface averages better, with diminishing returns. - num_quad : int - Resolution for quadrature of bounce integrals. Default is 32. - num_pitch : int - Resolution for quadrature over velocity coordinate. Default is 64. num_well : int Maximum number of wells to detect for each pitch and field line. Giving ``None`` will detect all wells but due to current limitations in @@ -304,6 +300,10 @@ class GammaC(_Objective): A tighter upper bound than ``num_well=(Aι+B)*num_transit`` is preferable. The ``check_points`` or ``plot`` methods in ``desc.integrals.Bounce2D`` are useful to select a reasonable value. + num_quad : int + Resolution for quadrature of bounce integrals. Default is 32. + num_pitch : int + Resolution for quadrature over velocity coordinate. Default is 64. batch_size : int Number of pitch values with which to compute simultaneously. If given ``None``, then ``batch_size`` defaults to ``num_pitch``. @@ -352,9 +352,9 @@ def __init__( # Y_B is expensive to increase if one does not fix num well per transit. Y_B=None, num_transit=20, + num_well=None, num_quad=32, num_pitch=64, - num_well=None, batch_size=None, Nemov=True, ): diff --git a/desc/plotting.py b/desc/plotting.py index e6e594f845..049484172e 100644 --- a/desc/plotting.py +++ b/desc/plotting.py @@ -44,6 +44,7 @@ "plot_qs_error", "plot_section", "plot_surfaces", + "poincare_plot", ] diff --git a/tests/baseline/test_effective_ripple.png b/tests/baseline/test_effective_ripple.png index b08f3024626a86e4ee5f66bd03244b1110aa4783..365ad9e302bd6aaddcec610211a70a4f21d86d02 100644 GIT binary patch literal 22883 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�egO#W( zjJPmFWsHS6R~%WD@(MAaZj_=93R>KuGmQ^FAkd3ND@z›~AY25{V1(SxC9Y?Q6l2>tbdG>tl80C>mqu)IG=7wM z$7A6Lu4K+tSR$;T-*u%t7}An*Nw_QH*3N!{IBF=Fhuybg010JMOh-;xc|l1DEep{t z^{72&$P0@SPQT4YbvDpY98k`KuJ(%DmWU$z2hyV4#H7|LWzu*NP;bra_Xp9gQ(8xg1h!HPO9UjR0_NHnSjUZ{ z^}Lod-?`tXucf`xU{TBC2>?Qxm>Ii!NcKJvi%Y3s)S)%7c5OTUc=AN^!#jw?gFZ0A$A-ke7uasT(<-vhkzLqnu1DEOslXbg7 zu8*9&SpYrZ6Uy=iiKLwZP^K{q=}eUqi_mvb4^8kXdICQ^x@bb;#q0M`+FvJD(BAQV%fI93Wga1s62 zJhQFX0VxVs-`x;^S0sCD2i}6Q3G_3IBRw0X?AY|FnWt4ds=wT})oDR7+uh)yr1p(f z+SNtqLyZCnV-L}i_{#3&QZRpju1t;UY)=^Y81TLMg+urUCm>?vJ`IA~h6Ved@4+0~ z1mVH;`!gS8P;(M}bnnpO>V0X#T$P=d{>4!MnfdQ_OtUr|FjB!MI!u}5ZLDH|e#U{!XUJ)N-aAY>Ht|3( zZ(101`6sMa_u|WUVz5XF4yK#HC&!7+=rX8Hf#z77!?D9LRAt%%(L|F?u4I4gi~{~+40|cm7g`K_7yEk3A~>)889bo~hA@)WqI5XX_9F9r-X-it zS|Tfczxr$n6!i}SSSV#DrvF~KD?;x@*VCnT%mA{8uumO;wIH;Bz}d%476#XZ2@^@) zvc$0&mh5oy$hbSn$OOM04x1hS zcXQ3C5xX~SNqWMZkJe~Y4>o=i`rm$?BGGP-n|6K{78a{jRi{4~r_Ej3U_=V-s|=U- zRB$Cslb2w@_?OxY(^s}?3*6fOmahMLJ1{um_%tGK5r-jseoFRUy%OD%8-e5`bO<>6 ECw90YZU6uP diff --git a/tests/baseline/test_effective_ripple_1D.png b/tests/baseline/test_effective_ripple_1D.png index 6f08cb6be8ea57ef0f244d2bdf27ebd754274319..47b94d368b8f9e71eb4b0bfc03443fad9e8fc4ca 100644 GIT binary patch literal 24199 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 literal 23872 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 Date: Sun, 27 Oct 2024 11:39:19 -0400 Subject: [PATCH 17/60] Add psuedo spectral version of velasco gamma_c --- desc/compute/_neoclassical.py | 140 +++++++++++++++++++++++- desc/compute/_neoclassical_1D.py | 4 +- desc/objectives/_neoclassical.py | 5 +- tests/baseline/test_Gamma_c_Velasco.png | Bin 0 -> 14623 bytes tests/test_neoclassical.py | 22 ++++ tests/test_neoclassical_1D.py | 22 ++-- 6 files changed, 174 insertions(+), 19 deletions(-) create mode 100644 tests/baseline/test_Gamma_c_Velasco.png diff --git a/desc/compute/_neoclassical.py b/desc/compute/_neoclassical.py index 411b044fa3..7a90467b44 100644 --- a/desc/compute/_neoclassical.py +++ b/desc/compute/_neoclassical.py @@ -216,8 +216,6 @@ def _epsilon_32(params, transforms, profiles, data, **kwargs): Phys. Plasmas 1 December 1999; 6 (12): 4622–4632. """ # noqa: unused dependency - grid = transforms["grid"] - theta = kwargs["theta"] Y_B = kwargs.get("Y_B", theta.shape[-1] * 2) num_transit = kwargs.get("num_transit", 20) @@ -269,6 +267,7 @@ def fun(pitch_inv): axis=-1, ) / bounce.compute_fieldline_length(fieldline_quad) + grid = transforms["grid"] B0 = data["max_tz |B|"] data["effective ripple 3/2"] = ( _compute( @@ -387,8 +386,6 @@ def _Gamma_c(params, transforms, profiles, data, **kwargs): so it is assumed to be zero. """ # noqa: unused dependency - grid = transforms["grid"] - theta = kwargs["theta"] Y_B = kwargs.get("Y_B", theta.shape[-1] * 2) num_transit = kwargs.get("num_transit", 20) @@ -466,6 +463,7 @@ def fun(pitch_inv): axis=-1, ) / bounce.compute_fieldline_length(fieldline_quad) + grid = transforms["grid"] # It is assumed the grid is sufficiently dense to reconstruct |B|, # so anything smoother than |B| may be captured accurately as a single # Fourier series rather than transforming each component. @@ -492,3 +490,137 @@ def fun(pitch_inv): simp=False, ) / (2**1.5 * jnp.pi) return data + + +def _cvdrift0(cvdrift0, B, pitch, zeta): + return safediv(cvdrift0 * (1 - 0.5 * pitch * B), jnp.sqrt(jnp.abs(1 - pitch * B))) + + +def _gbdrift(periodic_gbdrift, secular_gbdrift_over_phi, B, pitch, zeta): + return safediv( + (periodic_gbdrift + secular_gbdrift_over_phi * zeta) * (1 - 0.5 * pitch * B), + jnp.sqrt(jnp.abs(1 - pitch * B)), + ) + + +@register_compute_fun( + name="Gamma_c Velasco", + label=( + # Γ_c = π/(8√2) ∫dλ 〈 ∑ⱼ [v τ γ_c²]ⱼ 〉 + "\\Gamma_c = \\frac{\\pi}{8 \\sqrt{2}} " + "\\int d\\lambda \\langle \\sum_j (v \\tau \\gamma_c^2)_j \\rangle" + ), + units="~", + units_long="None", + description="Energetic ion confinement proxy, Velasco et al.", + dim=1, + params=[], + transforms={"grid": []}, + profiles=[], + coordinates="r", + data=[ + "min_tz |B|", + "max_tz |B|", + "cvdrift0", + "periodic(gbdrift)", + "secular(gbdrift)/phi", + ] + + Bounce2D.required_names, + resolution_requirement="tz", + grid_requirement={"can_fft": True}, + **_bounce_doc, +) +@partial( + jit, + static_argnames=[ + "Y_B", + "num_transit", + "num_well", + "num_quad", + "num_pitch", + "batch_size", + "spline", + ], +) +def _Gamma_c_Velasco(params, transforms, profiles, data, **kwargs): + """Energetic ion confinement proxy as defined by Velasco et al. + + A model for the fast evaluation of prompt losses of energetic ions in stellarators. + J.L. Velasco et al. 2021 Nucl. Fusion 61 116059. + https://doi.org/10.1088/1741-4326/ac2994. + Equation 16. + """ + # noqa: unused dependency + theta = kwargs["theta"] + Y_B = kwargs.get("Y_B", theta.shape[-1] * 2) + num_transit = kwargs.get("num_transit", 20) + num_pitch = kwargs.get("num_pitch", 64) + num_well = kwargs.get("num_well", Y_B * num_transit) + batch_size = kwargs.get("batch_size", None) + spline = kwargs.get("spline", True) + if "fieldline_quad" in kwargs: + fieldline_quad = kwargs["fieldline_quad"] + else: + fieldline_quad = leggauss(Y_B // 2) + if "quad" in kwargs: + quad = kwargs["quad"] + else: + quad = get_quadrature( + leggauss(kwargs.get("num_quad", 32)), + (automorphism_sin, grad_automorphism_sin), + ) + + def Gamma_c(data): + """∫ dλ ∑ⱼ [v τ γ_c²]ⱼ.""" + bounce = Bounce2D( + grid, + data, + data["theta"], + Y_B, + num_transit, + quad=quad, + automorphism=None, + is_reshaped=True, + spline=spline, + ) + data["cvdrift0"] = Bounce2D.fourier(data["cvdrift0"]) + data["periodic(gbdrift)"] = Bounce2D.fourier(data["periodic(gbdrift)"]) + data["secular(gbdrift)/phi"] = Bounce2D.fourier(data["secular(gbdrift)/phi"]) + + def fun(pitch_inv): + v_tau, cvdrift0, gbdrift = bounce.integrate( + [_v_tau, _cvdrift0, _gbdrift], + pitch_inv, + [ + [], + [data["cvdrift0"]], + [data["periodic(gbdrift)"], data["secular(gbdrift)/phi"]], + ], + points=bounce.points(pitch_inv, num_well=num_well), + is_fourier=True, + ) + gamma_c = jnp.arctan(safediv(cvdrift0, gbdrift)) + return jnp.sum(v_tau * gamma_c**2, axis=-1) + + return jnp.sum( + _foreach_pitch(fun, data["pitch_inv"], batch_size) + * data["pitch_inv weight"] + / data["pitch_inv"] ** 2, + axis=-1, + ) / bounce.compute_fieldline_length(fieldline_quad) + + grid = transforms["grid"] + data["Gamma_c Velasco"] = _compute( + Gamma_c, + fun_data={ + "cvdrift0": data["cvdrift0"], + "periodic(gbdrift)": data["periodic(gbdrift)"], + "secular(gbdrift)/phi": data["secular(gbdrift)/phi"], + }, + data=data, + theta=theta, + grid=grid, + num_pitch=num_pitch, + simp=False, + ) / (2**1.5 * jnp.pi) + return data diff --git a/desc/compute/_neoclassical_1D.py b/desc/compute/_neoclassical_1D.py index 3415c9cc1f..36ad97cd51 100644 --- a/desc/compute/_neoclassical_1D.py +++ b/desc/compute/_neoclassical_1D.py @@ -423,7 +423,7 @@ def _drift(f, B, pitch): @register_compute_fun( - name="Gamma_c Velasco", + name="deprecated(Gamma_c Velasco)", label=( # Γ_c = π/(8√2) ∫dλ 〈 ∑ⱼ [v τ γ_c²]ⱼ 〉 "\\Gamma_c = \\frac{\\pi}{8 \\sqrt{2}} " @@ -494,7 +494,7 @@ def Gamma_c(data): ) grid = transforms["grid"].source_grid - data["Gamma_c Velasco"] = ( + data["deprecated(Gamma_c Velasco)"] = ( _compute( Gamma_c, fun_data={"cvdrift0": data["cvdrift0"], "gbdrift": data["gbdrift"]}, diff --git a/desc/objectives/_neoclassical.py b/desc/objectives/_neoclassical.py index c6552252c0..686187c2b6 100644 --- a/desc/objectives/_neoclassical.py +++ b/desc/objectives/_neoclassical.py @@ -137,9 +137,9 @@ def __init__( self._hyperparam = { "Y_B": Y_B, "num_transit": num_transit, + "num_well": setdefault(num_well, Y_B * num_transit), "num_quad": num_quad, "num_pitch": num_pitch, - "num_well": setdefault(num_well, Y_B * num_transit), "batch_size": batch_size, } @@ -369,16 +369,15 @@ def __init__( self._hyperparam = { "Y_B": Y_B, "num_transit": num_transit, + "num_well": setdefault(num_well, Y_B * num_transit), "num_quad": num_quad, "num_pitch": num_pitch, - "num_well": setdefault(num_well, Y_B * num_transit), "batch_size": batch_size, } if Nemov: self._key = "Gamma_c" else: self._key = "Gamma_c Velasco" - raise NotImplementedError super().__init__( things=eq, diff --git a/tests/baseline/test_Gamma_c_Velasco.png b/tests/baseline/test_Gamma_c_Velasco.png new file mode 100644 index 0000000000000000000000000000000000000000..34620ca8c3105326519cf769a47cc7d331b950a0 GIT binary patch literal 14623 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 IdG6}}0fy_bQ~&?~ literal 0 HcmV?d00001 diff --git a/tests/test_neoclassical.py b/tests/test_neoclassical.py index 9c0e234f71..3a3acd6c17 100644 --- a/tests/test_neoclassical.py +++ b/tests/test_neoclassical.py @@ -64,6 +64,28 @@ def test_Gamma_c(): return fig +@pytest.mark.unit +@pytest.mark.mpl_image_compare(remove_text=True, tolerance=tol_1d) +def test_Gamma_c_Velasco(): + """Test Γ_c Nemov with W7-X.""" + eq = get("W7-X") + rho = np.linspace(1e-12, 1, 10) + grid = LinearGrid(rho=rho, M=eq.M_grid, N=eq.N_grid, NFP=eq.NFP, sym=False) + num_transit = 10 + data = eq.compute( + "Gamma_c Velasco", + grid=grid, + theta=Bounce2D.compute_theta(eq, X=32, Y=64, rho=rho), + Y_B=128, + num_transit=num_transit, + num_well=20 * num_transit, + ) + assert np.isfinite(data["Gamma_c Velasco"]).all() + fig, ax = plt.subplots() + ax.plot(rho, grid.compress(data["Gamma_c Velasco"]), marker="o") + return fig + + class NeoIO: """Class to interface with NEO.""" diff --git a/tests/test_neoclassical_1D.py b/tests/test_neoclassical_1D.py index 72576d0a16..5a0faf1d3e 100644 --- a/tests/test_neoclassical_1D.py +++ b/tests/test_neoclassical_1D.py @@ -87,8 +87,8 @@ def test_effective_ripple_1D(): @pytest.mark.unit @pytest.mark.mpl_image_compare(remove_text=True, tolerance=tol_1d) -def test_Gamma_c_Velasco_1D(): - """Test Γ_c Velasco 1D with W7-X.""" +def test_Gamma_c_1D(): + """Test Γ_c Nemov 1D with W7-X.""" Y_B = 100 num_transit = 10 eq = get("W7-X") @@ -100,17 +100,17 @@ def test_Gamma_c_Velasco_1D(): toroidal=np.linspace(0, num_transit * 2 * np.pi, num_transit * Y_B), coordinates="raz", ) - data = eq.compute("Gamma_c Velasco", grid=grid, num_well=20 * num_transit) - assert np.isfinite(data["Gamma_c Velasco"]).all() + data = eq.compute("deprecated(Gamma_c)", grid=grid, num_well=20 * num_transit) + assert np.isfinite(data["deprecated(Gamma_c)"]).all() fig, ax = plt.subplots() - ax.plot(rho, grid.compress(data["Gamma_c Velasco"]), marker="o") + ax.plot(rho, grid.compress(data["deprecated(Gamma_c)"]), marker="o") return fig @pytest.mark.unit @pytest.mark.mpl_image_compare(remove_text=True, tolerance=tol_1d) -def test_Gamma_c_1D(): - """Test Γ_c Nemov 1D with W7-X.""" +def test_Gamma_c_Velasco_1D(): + """Test Γ_c Velasco 1D with W7-X.""" Y_B = 100 num_transit = 10 eq = get("W7-X") @@ -122,8 +122,10 @@ def test_Gamma_c_1D(): toroidal=np.linspace(0, num_transit * 2 * np.pi, num_transit * Y_B), coordinates="raz", ) - data = eq.compute("deprecated(Gamma_c)", grid=grid, num_well=20 * num_transit) - assert np.isfinite(data["deprecated(Gamma_c)"]).all() + data = eq.compute( + "deprecated(Gamma_c Velasco)", grid=grid, num_well=20 * num_transit + ) + assert np.isfinite(data["deprecated(Gamma_c Velasco)"]).all() fig, ax = plt.subplots() - ax.plot(rho, grid.compress(data["deprecated(Gamma_c)"]), marker="o") + ax.plot(rho, grid.compress(data["deprecated(Gamma_c Velasco)"]), marker="o") return fig From 54c7369803976fb3881e7efeefdd39ac60d709e4 Mon Sep 17 00:00:00 2001 From: unalmis Date: Sun, 27 Oct 2024 11:53:23 -0400 Subject: [PATCH 18/60] Speed up by ffting at once --- desc/compute/_neoclassical.py | 17 +++++------------ 1 file changed, 5 insertions(+), 12 deletions(-) diff --git a/desc/compute/_neoclassical.py b/desc/compute/_neoclassical.py index 7a90467b44..911ebb7ddc 100644 --- a/desc/compute/_neoclassical.py +++ b/desc/compute/_neoclassical.py @@ -99,9 +99,12 @@ def _compute(fun, fun_data, data, theta, grid, num_pitch, simp=False): Whether to use an open Simpson rule instead of uniform weights. """ + fun_data = { + name: Bounce2D.fourier(Bounce2D.reshape_data(grid, fun_data[name])) + for name in fun_data + } for name in Bounce2D.required_names: - fun_data[name] = data[name] - fun_data = {name: Bounce2D.reshape_data(grid, fun_data[name]) for name in fun_data} + fun_data[name] = Bounce2D.reshape_data(grid, data[name]) # These already have expected shape with num rho along first axis. fun_data["pitch_inv"], fun_data["pitch_inv weight"] = Bounce2D.get_pitch_inv_quad( grid.compress(data["min_tz |B|"]), @@ -248,7 +251,6 @@ def eps_32(data): is_reshaped=True, spline=spline, ) - data["|grad(rho)|*kappa_g"] = Bounce2D.fourier(data["|grad(rho)|*kappa_g"]) def fun(pitch_inv): H, I = bounce.integrate( @@ -419,12 +421,6 @@ def Gamma_c(data): is_reshaped=True, spline=spline, ) - data["|grad(psi)|*kappa_g"] = Bounce2D.fourier(data["|grad(psi)|*kappa_g"]) - data["|B|_r|v,p"] = Bounce2D.fourier(data["|B|_r|v,p"]) - data["K"] = Bounce2D.fourier(data["K"]) - data["|grad(rho)|*|e_alpha|r,p|"] = Bounce2D.fourier( - data["|grad(rho)|*|e_alpha|r,p|"] - ) def fun(pitch_inv): points = bounce.points(pitch_inv, num_well=num_well) @@ -583,9 +579,6 @@ def Gamma_c(data): is_reshaped=True, spline=spline, ) - data["cvdrift0"] = Bounce2D.fourier(data["cvdrift0"]) - data["periodic(gbdrift)"] = Bounce2D.fourier(data["periodic(gbdrift)"]) - data["secular(gbdrift)/phi"] = Bounce2D.fourier(data["secular(gbdrift)/phi"]) def fun(pitch_inv): v_tau, cvdrift0, gbdrift = bounce.integrate( From 02aff9632a168bc7e2b77ed8c7410d05bdde18cd Mon Sep 17 00:00:00 2001 From: unalmis Date: Thu, 31 Oct 2024 02:39:03 -0400 Subject: [PATCH 19/60] Update dev requirement --- desc/compute/_neoclassical.py | 3 +-- devtools/dev-requirements_conda.yml | 2 +- requirements.txt | 2 +- requirements_conda.yml | 2 +- tests/test_neoclassical.py | 3 +-- 5 files changed, 5 insertions(+), 7 deletions(-) diff --git a/desc/compute/_neoclassical.py b/desc/compute/_neoclassical.py index 911ebb7ddc..89b17ab138 100644 --- a/desc/compute/_neoclassical.py +++ b/desc/compute/_neoclassical.py @@ -147,8 +147,7 @@ def _foreach_pitch(fun, pitch_inv, batch_size): label="\\epsilon_{\\mathrm{eff}}", units="~", units_long="None", - description="Effective ripple modulation amplitude. " - "Uses numerical methods of the Bounce2D class.", + description="Effective ripple modulation amplitude.", dim=1, params=[], transforms={}, diff --git a/devtools/dev-requirements_conda.yml b/devtools/dev-requirements_conda.yml index 6fa0f0cc95..cb4680e9b3 100644 --- a/devtools/dev-requirements_conda.yml +++ b/devtools/dev-requirements_conda.yml @@ -15,7 +15,7 @@ dependencies: - pip: # Conda only parses a single list of pip requirements. # If two pip lists are given, all but the last list is skipped. - - jax >= 0.4.24, < 0.5.0 + - jax >= 0.4.31, < 0.5.0 - diffrax >= 0.4.1 - interpax >= 0.3.3 - nvgpu diff --git a/requirements.txt b/requirements.txt index 6556dd3923..fa33767356 100644 --- a/requirements.txt +++ b/requirements.txt @@ -1,4 +1,4 @@ -jax >= 0.4.24, < 0.5.0 +jax >= 0.4.31, < 0.5.0 colorama diffrax >= 0.4.1 h5py >= 3.0.0, < 4.0 diff --git a/requirements_conda.yml b/requirements_conda.yml index 246778259e..16612422ef 100644 --- a/requirements_conda.yml +++ b/requirements_conda.yml @@ -15,7 +15,7 @@ dependencies: - pip: # Conda only parses a single list of pip requirements. # If two pip lists are given, all but the last list is skipped. - - jax >= 0.4.24, < 0.5.0 + - jax >= 0.4.31, < 0.5.0 - interpax >= 0.3.3 - nvgpu - orthax diff --git a/tests/test_neoclassical.py b/tests/test_neoclassical.py index 3a3acd6c17..8c7cfc5c12 100644 --- a/tests/test_neoclassical.py +++ b/tests/test_neoclassical.py @@ -10,7 +10,7 @@ from desc.examples import get from desc.grid import LinearGrid from desc.integrals import Bounce2D -from desc.utils import errorif, setdefault +from desc.utils import setdefault from desc.vmec import VMECIO @@ -113,7 +113,6 @@ def read(name): def write(self): """Write neo input file.""" - errorif(not self.eq.solved, msg="eq must be set to solved for NEO") print(f"Writing VMEC wout to {self.vmec_file}") VMECIO.save(self.eq, self.vmec_file, surfs=self.ns, verbose=0) self._write_booz() From 4275f69c22ecb326f2102f38985e5e9c603cb583 Mon Sep 17 00:00:00 2001 From: unalmis Date: Sat, 2 Nov 2024 20:36:24 -0400 Subject: [PATCH 20/60] Update ripple optimization notebook --- desc/compute/_neoclassical.py | 5 +- desc/integrals/_quad_utils.py | 17 +- desc/integrals/bounce_integral.py | 31 +- desc/objectives/_neoclassical.py | 2 +- .../notebooks/tutorials/EffectiveRipple.ipynb | 655 ++++++------------ tests/test_integrals.py | 95 +-- 6 files changed, 271 insertions(+), 534 deletions(-) diff --git a/desc/compute/_neoclassical.py b/desc/compute/_neoclassical.py index 89b17ab138..a0bc72f546 100644 --- a/desc/compute/_neoclassical.py +++ b/desc/compute/_neoclassical.py @@ -26,13 +26,14 @@ _bounce_doc = { "theta": """jnp.ndarray : + Shape (num rho, X, Y). DESC coordinates θ sourced from the Clebsch coordinates ``FourierChebyshevSeries.nodes(X,Y,rho,domain=(0,2*jnp.pi))``. Use the ``Bounce2D.compute_theta`` method to obtain this. """, "Y_B": """int : Desired resolution for |B| along field lines to compute bounce points. - Default is double the resolution of ``theta``. + Default is double ``Y``. """, "num_transit": """int : Number of toroidal transits to follow field line. @@ -137,7 +138,7 @@ def _foreach_pitch(fun, pitch_inv, batch_size): # ``fun``` natively supports vectorization. return ( fun(pitch_inv) - if (batch_size is None or batch_size >= pitch_inv.size) + if (batch_size is None or batch_size >= (pitch_inv.size - 1)) else imap(fun, pitch_inv, batch_size=batch_size).squeeze(axis=-1) ) diff --git a/desc/integrals/_quad_utils.py b/desc/integrals/_quad_utils.py index a8038e7979..9d563307bf 100644 --- a/desc/integrals/_quad_utils.py +++ b/desc/integrals/_quad_utils.py @@ -1,4 +1,15 @@ -"""Utilities for quadratures.""" +"""Utilities for quadratures. + +Notes +----- +Bounce integrals with bounce points where the derivative of |B| does +not vanish have 1/2 power law singularities. The strongly singular integrals +at the local extrema of |B| are not integrable. Hence, everywhere except the +extrema, a Chebyshev or Legendre quadrature under a change of variables works +because √(1−z²) / √(1−λ|B|(z)) ~ g(z, λ) where g(z, λ) is smooth in z. +Empirically, quadratic node clustering near the singularities is sufficient +for estimation of g(z). +""" from orthax.chebyshev import chebgauss, chebweight from orthax.legendre import legder, legval @@ -30,7 +41,9 @@ def automorphism_arcsin(x, gamma=jnp.cos(0.5)): """[-1, 1] ∋ x ↦ y ∈ [−1, 1]. This map decreases node density near the boundary by the asymptotic factor - √(1−γ²x²) and adds a 1/√(1−γ²x²) factor to the integrand. + √(1−γ²x²) and adds a 1/√(1−γ²x²) factor to the integrand. When applied + to any Gaussian quadrature, the default setting modifies the quadrature + to be almost-equispaced without sacrificing spectral convergence. References ---------- diff --git a/desc/integrals/bounce_integral.py b/desc/integrals/bounce_integral.py index 02205ac7ed..aac5d86e28 100644 --- a/desc/integrals/bounce_integral.py +++ b/desc/integrals/bounce_integral.py @@ -183,8 +183,7 @@ class Bounce2D(Bounce): quadrature nodes. Quadrature is chosen over Runge-Kutta methods of the form ∂Fᵢ/∂ζ = f(λ,ζ,{Gⱼ}) subject to Fᵢ(ζ₁) = 0 A fourth order Runge-Kutta method is equivalent to a quadrature - with Simpson's rule. Our quadratures resolve these integrals more - efficiently, and the fixed nature of quadrature performs better on GPUs. + with Simpson's rule. The quadratures resolve these integrals more efficiently. Fast transforms are used where possible. Fast multipoint methods are not implemented. For non-uniform interpolation, MMTs are used. It will be @@ -300,22 +299,11 @@ def __init__( quad : tuple[jnp.ndarray] Quadrature points xₖ and weights wₖ for the approximate evaluation of an integral ∫₋₁¹ g(x) dx = ∑ₖ wₖ g(xₖ). Default is 32 points. - The below recommendations reference the quadratures in - ``desc.integrals._quad_utils``. - For weak singular integrals, use ``chebgauss2``. - For strong singular integrals, use ``leggauss``. - In some cases, ``chebgauss1`` may be used for strong singular integrals. automorphism : tuple[Callable] or None The first callable should be an automorphism of the real interval [-1, 1]. The second callable should be the derivative of the first. This map defines a change of variable for the bounce integral. The choice made for the automorphism will affect the performance of the quadrature method. - The below recommendations reference the quadratures in - ``desc.integrals._quad_utils``. - For weak singular integrals, use ``None``. - For strong singular integrals, use - ``(automorphism_sin,grad_automorphism_sin)`` - with ``leggauss`` or ``None`` with ``chebgauss1``. Bref : float Optional. Reference magnetic field strength for normalization. Lref : float @@ -1031,13 +1019,11 @@ class Bounce1D(Bounce): nodes. Quadrature is chosen over Runge-Kutta methods of the form ∂Fᵢ/∂ζ = f(λ,ζ,{Gⱼ}) subject to Fᵢ(ζ₁) = 0 A fourth order Runge-Kutta method is equivalent to a quadrature - with Simpson's rule. Our quadratures resolve these integrals more - efficiently, and the fixed nature of quadrature performs better on GPUs. + with Simpson's rule. The quadratures resolve these integrals more efficiently. See Also -------- - Bounce2D - Uses two-dimensional pseudo-spectral techniques for the same task. + Bounce2D : Uses two-dimensional pseudo-spectral techniques for the same task. Examples -------- @@ -1088,22 +1074,11 @@ def __init__( quad : tuple[jnp.ndarray] Quadrature points xₖ and weights wₖ for the approximate evaluation of an integral ∫₋₁¹ g(x) dx = ∑ₖ wₖ g(xₖ). Default is 32 points. - The below recommendations reference the quadratures in - ``desc.integrals._quad_utils``. - For weak singular integrals, use ``chebgauss2``. - For strong singular integrals, use ``leggauss``. - In some cases, ``chebgauss1`` may be used for strong singular integrals. automorphism : tuple[Callable] or None The first callable should be an automorphism of the real interval [-1, 1]. The second callable should be the derivative of the first. This map defines a change of variable for the bounce integral. The choice made for the automorphism will affect the performance of the quadrature method. - The below recommendations reference the quadratures in - ``desc.integrals._quad_utils``. - For weak singular integrals, use ``None``. - For strong singular integrals, use - ``(automorphism_sin,grad_automorphism_sin)`` - with ``leggauss`` or ``None`` with ``chebgauss1``. Bref : float Optional. Reference magnetic field strength for normalization. Lref : float diff --git a/desc/objectives/_neoclassical.py b/desc/objectives/_neoclassical.py index 686187c2b6..3c3c7897cd 100644 --- a/desc/objectives/_neoclassical.py +++ b/desc/objectives/_neoclassical.py @@ -84,7 +84,7 @@ class EffectiveRipple(_Objective): num_quad : int Resolution for quadrature of bounce integrals. Default is 32. num_pitch : int - Resolution for quadrature over velocity coordinate. Default is 64. + Resolution for quadrature over velocity coordinate. Default is 50. batch_size : int Number of pitch values with which to compute simultaneously. If given ``None``, then ``batch_size`` defaults to ``num_pitch``. diff --git a/docs/notebooks/tutorials/EffectiveRipple.ipynb b/docs/notebooks/tutorials/EffectiveRipple.ipynb index 4d0360a08b..ced337809f 100644 --- a/docs/notebooks/tutorials/EffectiveRipple.ipynb +++ b/docs/notebooks/tutorials/EffectiveRipple.ipynb @@ -2,192 +2,167 @@ "cells": [ { "cell_type": "code", - "execution_count": 1, - "id": "63c7fd52-cb64-44cf-9598-36ab081cc8ef", - "metadata": {}, - "outputs": [ - { - "name": "stderr", - "output_type": "stream", - "text": [ - "/home/rgaur/DESC/desc/__init__.py:98: UserWarning: No GPU found, falling back to CPU\n", - " warnings.warn(colored(\"No GPU found, falling back to CPU\", \"yellow\"))\n" - ] - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "DESC version 0.12.2+704.ge5127e031,using JAX backend, jax version=0.4.31, jaxlib version=0.4.31, dtype=float64\n", - "Using device: CPU, with 14.57 GB available memory\n" - ] - } - ], + "execution_count": null, + "id": "a831f199-3399-4b52-a11e-cf35f73c075f", + "metadata": { + "scrolled": true + }, + "outputs": [], "source": [ - "from desc import set_device\n", - "\n", - "set_device(\"gpu\")\n", + "from desc.integrals import Bounce2D\n", "\n", - "import os\n", - "\n", - "os.environ[\"XLA_PYTHON_CLIENT_MEM_FRACTION\"] = \".93\"\n", - "\n", - "import numpy as np\n", - "import time\n", - "\n", - "import desc\n", - "from desc.grid import LinearGrid, Grid\n", - "from desc.equilibrium import Equilibrium\n", + "from desc.examples import get\n", + "from desc.grid import LinearGrid\n", "from desc.optimize import Optimizer\n", - "from desc.plotting import *\n", "\n", "from desc.objectives import (\n", " ForceBalance,\n", - " ObjectiveFunction,\n", - " QuasisymmetryTwoTerm,\n", " FixPsi,\n", " FixBoundaryR,\n", " FixBoundaryZ,\n", " GenericObjective,\n", " FixPressure,\n", - " FixCurrent,\n", " FixIota,\n", - " get_fixed_boundary_constraints,\n", " AspectRatio,\n", " EffectiveRipple,\n", " ObjectiveFunction,\n", ")\n", - "\n", - "from desc.plotting import *\n", "from matplotlib import pyplot as plt\n", - "import numpy as np\n", - "import pdb" - ] - }, - { - "cell_type": "markdown", - "id": "19d471d9-a8e7-4d61-b91f-7a8304b05872", - "metadata": {}, - "source": [ - "# $\\epsilon_{\\mathrm{eff}}^{3/2}$ calculation for precise QH" + "import numpy as np" ] }, { "cell_type": "code", "execution_count": 2, - "id": "c480ab09-feaa-49d3-94e7-9ca9c51929ff", + "id": "6eb81b56-6b1b-45ba-903e-741c21047c7e", "metadata": {}, "outputs": [], "source": [ - "# Importing the HELIOTRON DESC equilibrium\n", - "eq0 = desc.examples.get(\"precise_QH\")" + "def plot_wells(\n", + " eq,\n", + " grid,\n", + " theta,\n", + " Y_B=None,\n", + " num_transit=3,\n", + " num_well=None,\n", + " num_pitch=10,\n", + "):\n", + " \"\"\"Plotting tool to help user set tighter upper bound on ``num_well``.\n", + "\n", + " Parameters\n", + " ----------\n", + " eq : Equilibrium\n", + " Equilibrium to compute on.\n", + " grid : LinearGrid\n", + " Tensor-product grid in (ρ, θ, ζ) with uniformly spaced nodes\n", + " (θ, ζ) ∈ [0, 2π) × [0, 2π/NFP).\n", + " theta : jnp.ndarray\n", + " Shape (num rho, X, Y).\n", + " DESC coordinates θ sourced from the Clebsch coordinates\n", + " ``FourierChebyshevSeries.nodes(X,Y,rho,domain=(0,2*jnp.pi))``.\n", + " Use the ``Bounce2D.compute_theta`` method to obtain this.\n", + " Y_B : int\n", + " Desired resolution for |B| along field lines to compute bounce points.\n", + " Default is double ``Y``.\n", + " num_transit : int\n", + " Number of toroidal transits to follow field line.\n", + " For axisymmetric devices, one poloidal transit is sufficient. Otherwise,\n", + " assuming the surface is not near rational, more transits will\n", + " approximate surface averages better, with diminishing returns.\n", + " num_well : int\n", + " Maximum number of wells to detect for each pitch and field line.\n", + " Giving ``None`` will detect all wells but due to current limitations in\n", + " JAX this will have worse performance.\n", + " Specifying a number that tightly upper bounds the number of wells will\n", + " increase performance. In general, an upper bound on the number of wells\n", + " per toroidal transit is ``Aι+B`` where ``A``,``B`` are the poloidal and\n", + " toroidal Fourier resolution of |B|, respectively, in straight-field line\n", + " PEST coordinates, and ι is the rotational transform normalized by 2π.\n", + " A tighter upper bound than ``num_well=(Aι+B)*num_transit`` is preferable.\n", + " The ``check_points`` or ``plot`` methods in ``desc.integrals.Bounce2D``\n", + " are useful to select a reasonable value.\n", + " num_pitch: int\n", + " Number of pitch angles.\n", + "\n", + " Returns\n", + " -------\n", + " plots\n", + " Matplotlib (fig, ax) tuples for the 1D plot of each field line.\n", + "\n", + " \"\"\"\n", + " data = eq.compute(Bounce2D.required_names + [\"min_tz |B|\", \"max_tz |B|\"], grid=grid)\n", + " bounce = Bounce2D(grid, data, theta, Y_B, num_transit)\n", + " pitch_inv, _ = Bounce2D.get_pitch_inv_quad(\n", + " grid.compress(data[\"min_tz |B|\"]),\n", + " grid.compress(data[\"max_tz |B|\"]),\n", + " num_pitch,\n", + " )\n", + " points = bounce.points(pitch_inv, num_well=num_well)\n", + " plots = bounce.check_points(points, pitch_inv)\n", + " return plots" ] }, { - "cell_type": "code", - "execution_count": 3, - "id": "7531b5c4-8a69-4418-92c9-935518d21c3b", + "cell_type": "markdown", + "id": "257d4c55-3387-43bf-8258-f246c3b19e11", "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "surface 0 took 13.06 s\n", - "surface 1 took 2.25 s\n", - "surface 2 took 2.19 s\n", - "surface 3 took 2.22 s\n", - "surface 4 took 2.05 s\n", - "surface 5 took 2.07 s\n", - "surface 6 took 2.14 s\n", - "Ripple calculation finished!\n" - ] - } - ], "source": [ - "# Flux surfaces on which to evaluate ballooning stability\n", - "surfaces = [0.01, 0.1, 0.2, 0.4, 0.6, 0.8, 1.0]\n", - "\n", - "# Field lines on which to evaluate ballooning stability\n", - "alpha = np.linspace(0, np.pi, 1, endpoint=False)\n", - "\n", - "# Number of toroidal transits of the field line\n", - "ntransit = 3\n", - "\n", - "knots_per_transit = 128\n", - "\n", - "# Number of point along a field line in ballooning space\n", - "N0 = ntransit * knots_per_transit\n", - "\n", - "# range of the ballooning coordinate zeta\n", - "zeta = np.linspace(-np.pi * ntransit, np.pi * ntransit, N0)\n", - "\n", - "ripple_array_precise = np.zeros(len(surfaces))\n", - "\n", - "for j in range(len(surfaces)):\n", - " tic = time.time()\n", - " rho = surfaces[j]\n", - "\n", - " grid = Grid.create_meshgrid(\n", - " [rho, alpha, zeta], coordinates=\"raz\", period=(np.inf, 2 * np.pi, np.inf)\n", - " )\n", - "\n", - " ripple_array_precise[j] = np.squeeze(\n", - " grid.compress(eq0.compute(\"effective ripple\", grid=grid)[\"effective ripple\"])\n", - " )\n", - " toc = time.time()\n", - " print(f\"surface {j} took {toc-tic:.2f} s\")\n", - "\n", - "print(\"Ripple calculation finished!\")" + "## Plotting field lines" ] }, { "cell_type": "code", - "execution_count": 4, - "id": "d98a122d-1602-4790-a06f-1d6f205e5f07", - "metadata": {}, - "outputs": [ - { - "data": { - "image/png": "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iNzN9u3AlSvK3sP/uUsv1RwLYiIiIiJ3k5qqfB0zRt08NIIFMREREZE7uXkTWL8e6NsX6NhR7Ww0gQUxERERkTvZsEEpinmrZodhQUxERETkTlJTAR8f4OGH1c5EM1gQExEREbmL3Fxg61bgvvuAZs3UzkYzWBATERERuYsvvgAMBi6XcDAWxERERETuIjUVqF8feOABtTPRFBbERERERO7g55+BffuA4cOBBg3UzkZTWBATERERuYOVK5WvXC7hcCyIiYiIiFydiLJcomlTYOBAtbPRHBbERERERK7uyBHg5EngkUcAPz+1s9EcFsRERERErs54q2Yul3AKFsRERERErsxgAFatUm7T3KeP2tloEgtiIiIiIle2axdw8SIwZgzg5aV2NprkW5eDnT9/Hrt378Zvv/2GkJAQREZGog9/0iEiIiKyzrhcYswYdfPQsFoVxP/617+qVdAeOXIEf/vb37Bnz55KbeHh4XjnnXeQlJRUm1SIiIiItKeoCEhLA/70J6BLF7Wz0axaLZmYNGkSXnjhBZt90tLS0KtXL+zevRsiUulx4sQJPPDAA3j99ddrkwoRERGR9mzeDOTn82I6J6vVDPHjjz+O6dOno02bNpg8eXKl9qysLDz66KNo3LgxHn74YYSHhyMoKAgAcPXqVVy+fBmZmZnYtWsXXnnlFURERODBBx+sTUpERERE2pGaqqwbHjVK7Uw0zUtEpKYnHzlyBDExMQgICMDPP/+MFi1alGsfNWoUrl+/jtWrV6NRo0ZW4+Tl5eHvf/87vv32W/z00081TYc0LisrC1FRUdDr9YiMjFQ7HSIiIue6ehVo2RKIiwO+/VbtbDStVksm7rrrLgBAUVERli5dWqn9wIEDVRbDABASEoJFixahbdu2yMjIqE1KRERERNqwdi1QXMzlEnWgVgVxQECA6Xj37t2V2r28vKoshs0NHz4cJ0+erE1KRERERNqQmgrUqwdwOanT1aogzsvLMx1fvHixUnv9+vVRUFBQ7Xj+/v4oLi6uTUpERERE7u/CBWX/4aQkwI7JRaqZWhXE//73v03HDRs2rNSekpKCxYsXVzved999h+jo6NqkREREROT+Vq8GRLhcoo7UqiDevHmz6bhr166V2p977jls2LABu3btKvf8/v378be//Q0//PCD6bkdO3bgxIkT6N+/f21SIiIiInJ/qalA48bAn/+sdiYeoVa7TLRu3RqXLl36I5iF2wmKCAIDA/Hbb7+hQYMGAIC2bdvit99+Q5s2bZCdnY0VK1bghRdewNatW7l7AFnFXSaIiMgjHD8OREYC48cDH3+sdjYeoVb7EFtaN1wdgYGBEBFcvHgRERERaNq0KXbs2IHOnTvXJh0iIiIi92e8VTOXS9SZWhXENbV161akpaWhUaNG6Nu3L6KiotRIg4iIiMi1iAArVwJt2gDx8Wpn4zFUKYg7dOiAadOmqTE0ERERkevauxc4dw6YNg3wrtWlXmQHvtNEREREroLLJVTBgpiIiIjIFZSUAF98AUREAN26qZ2NR3GJgjgjIwMPPvggtm/frnYqREREROrYuhX4/XdldtjCzl3kPKqsIa4oJSUFly5dwt69e/Hbb7+pnQ4RERFR3TMulxgzRt08PJBLzBA3bdoUIoIWLVqonQoRERFR3btxA9iwAbjnHqBDB7Wz8TguMUO8adMmpKWlITk5We1UiIiIiOre+vXArVu8mE4lLjFDHBoaimeffRahoaEOjXvo0CGkpKQgNDQUOp0OHTp0wIQJE3DixAmHxC8uLsacOXPQs2dPNGzYEMHBwYiNjcXChQthMBjcKobR6tWr0aRJE3h5eWHnzp3VOueVV16Bl5dXlY+4uDi7ciEiIvIYqamAry/w0ENqZ+KRXKIgdoZFixahT58+SE9Px8iRIzF37lwMHjwYn376KXr27Im0tLRaxc/NzUVsbCyee+45eHt744033sBLL72E/Px8TJo0CQMHDsTNmzfdIgYAXL16FaNHj8bo0aORl5dn13tBREREtZCTA3zzDTB4MNC0qdrZeCbRoG3btom3t7f4+PjIrl27yrWlp6cLANHpdJKZmVmj+AaDQRISEgSADBkyREpKSkxthYWF0rt3bwEgycnJLh9DROTrr7+W1q1bi7+/vykeAMnIyKjGuyEyc+ZMad26tZw4ccLm4/z589WKZ41erxcAotfraxWHiIjIpcydKwKIrFqldiYeS3MFcWlpqYSFhQkAGT9+vMU+SUlJAkDi4uJqNMaKFSsEgPj6+sq5c+cqtWdmZpqKyu3bt7t0jG+//VYASHR0tBw5ckSWLl1ao4K4ffv21epbGyyIiYhIk3r3FgkMFLlxQ+1MPJbmlkxs3LgRp06dAgA8+eSTFvsYn9+zZw/27dtn9xizZs0CACQmJqJ9+/aV2nv06IHo6GgAwLvvvuvSMW7evIkZM2YgMzMT3bgJOBERUd06cwbYvx8YMQIIDFQ7G4+luYJ43bp1AICAgAD07t3bYp9+/fqZjtPT0+2Kf/bsWRw9erRSHGtjZGRk4Nq1ay4ZAwCSkpLwzjvvwN/f32oMIiIicpKVK5Wv3F1CVU4viB955BFnD1HOrl27AAARERHw8fGx2CckJMS0o4Wxv73xAaBr165W+3Xv3h0AUFJSgr1797pkDADwcsKdcEpLS3H9+nWUlZU5PDYREZFmiCi7SzRvDgwYoHY2Hs3pBfHx48edPYRJYWEhsrOzAQBt27a12dfYfvLkSbvGMN+yzdYY5m0Vt3lzlRiOVFpaijlz5qBbt26oV68eGjduDH9/f3Tr1g2vvfYarl+/7rSxiYiI3NLBg8CPPwKPPKJsuUaqqfa7v3fvXpSWltoV/MqVK6b1vHUhOzsbIgIAaNasmc2+zZs3BwAUFBQgLy8PISEh1Rrj/PnzpmNbYxjjVzzHlWI40q+//ooZM2bg8ccfxwsvvIAGDRrgxIkTWLBgAWbOnImPP/4YGzduNM1YExEReTzjrZq5XEJ11S6IJ0+ebFqzWl0i4pRfyVtTUFBgOg4ICLDZV6fTlTuvugVxdceoGN8VYzhSYGAgtmzZUu7mG0lJSXj66acxYMAA7N+/H0OGDMHhw4fRsmVLp+VBRETkFgwGYPVqoFMnoFcvtbPxeNUuiF955RWsXr0agwYNqnbwy5cv44UXXqhRYjVRVFRkOvbz87PZ1/wislu3bjl8DFvxXSWGo0ydOhX/7//9P4sz1Q0aNMDixYsRFRWFS5cu4fXXX8e8efOqjJmTk4Pc3Nxyz505c8ZhORMREakqIwO4dAl4+WWgDicPybJqF8QDBw7EihUr8MQTT9g1wCeffGJ3UjVlPhtaUlJis29xcbHpuKrZ5JqMYSu+q8RwlMaNG9tsj4yMRI8ePXDw4EF89tlnmDt3rtULHo3mz5+PV1991YFZEhERuRAul3Ap1b6oLiAgoEYXRpmvYXW2oKAg07H5DKol5u3m5zlqDFvxXSVGXYqJiQEA5OfnV+vivmeeeQZ6vb7cY/369U7OkoiIqA7cugWsXQv07Al07qx2NgQ7ZogB4LPPPrN7gD179th9Tk2FhobCy8sLIlLp1+0VGduDgoKqvX4YQLkbYOTm5qJ169Y241c8x5Vi1KWmZvdmv3z5MqKiomz2b968eZ3+MEVERFRnNm0CCgo4O+xC7Np2zdULlMDAQLRr1w4AcOHCBZt9je3h4eF2jdGlS5dKMWzFr3iOK8WoS+Z7Ele1XIKIiEjTUlMBb29luzVyCZq7U118fDwAICsrCwaDwWKfq1evmvYrTkhIqFF8ADh27JjVfkeOHAGgXPAWGxvrkjEc4dixY3jjjTdw9epVm/0uX75sOuYuE0RE5LHy8oCvvgL69wdatVI7G/oPpxbE//rXv5wZ3qIRI0YAUHZUOHDggMU+O3fuNB2PHDnSrvgdO3Y03RnOPI61MRITEytddOYqMRzh0KFDeOmll/Djjz/a7Gf8LEJCQhAWFubwPIiIiNxCWhpQUsLlEi7GqQXxf/3Xf1V6znjjDHNnz57FSy+95JAxhw0bZiq4li1bZrGP8fm4uDj07du3XFtBQQH69euHkJAQrF692uL506dPBwDs2LHDNNNs7vDhw6ZZ2xkzZrh0DEfZunWr1ba9e/ea7lj45JNP1une1ERERC4lNRXQ6QA7J+TIycSJvLy8Kj3XsWNHuXbtWqXnu3fvLhkZGQ4Zd9u2beLt7S2+vr6ye/fucm3r168XAKLT6SQzM7PSuQsWLBAAAkBatmxpMb7BYJCEhAQBIEOHDpXS0lJT261bt6Rv374CQJKTk63m6CoxKlq6dKnp9Vfn8zD2b9Cggfzwww+V2n/77TcJCwsTANK+fXu5cuVKtXOpSK/XCwDR6/U1jkFERKSa8+dFAJGHHlI7E6rAqTfODg4OxtWrVxEcHGx6Lj8/Hzdv3kSjRo3K9X322Wcxe/Zs9OvXr9bjDhw4EPPnz8fkyZNx3333YeLEiYiIiMDhw4exePFiBAQEYPny5ejRo0elc8VsBlsszGYDgLe3N9asWYPBgwdj8+bNiI2NxaOPPgqDwYAlS5ZAr9cjMTERS5cutZqjq8QAgG+++ca0xnffvn3lnjdelNepU6dKs+kA0K5dOzRu3BjXrl3DPffcg4cffhixsbHw9/dHVlYWli1bhqtXryIsLAwbNmxAkyZNbOZCRESkWatWKV+5XML1OLPa7tWrl6xfv77cc02bNpVff/21Ut/ff/9dgoODHTp+ZmamjBkzRtq0aSP16tWTdu3aydixY+X48eNWz8nPz5f4+HgJDg6WVatW2YxfVFQks2fPlpiYGAkKCpJGjRpJnz59ZMGCBeVma109hnGW2dbjiSeesHr+jRs3ZOXKlfLoo49KeHi4BAYGip+fn7Ro0ULuu+8+WbhwoRQVFVXrtdjCGWIiInJr0dEiwcEit2+rnQlV4CViZRrUAV599VVs2LAB+/fvN91euFmzZjh69GilfXNv3LiBNm3a1OjmH+QZsrKyEBUVBb1ej8jISLXTISIiqr5//xvo2hV46ilg4UK1s6EKnHpR3TPPPIMff/wRSUlJuHLlis2+mzZtQqdOnZyZDhEREZE6Vq5UvnK5hEtyakHcrFkz/OMf/8A333yDzp07Y/r06SgpKanU79tvv8XkyZMxevRoZ6ZDREREVPfKypSCODQUiItTOxuywKkX1QHA5MmTcfbsWcyZMwfvv/8+AKBz587o0qULGjdujHPnzuHnn39GVFQU/vrXvzo7HSIiIqK69f33QHY28Pzzyh3qyOU4vSAGgNmzZ6Nr1654/vnnkZOTg8LCQhw8eNDUnpCQgJUrV0Kn09VFOkRERER1JzVV+TpmjLp5kFVOvaiuotu3b+Prr7/GgQMHkJeXh1atWmHgwIFOuaUwaQ8vqiMiIrdTXKzcorl1a+XCOnJJdTJDbFSvXj0MHz4cw4cPr8thiYiIiNSxZQuQlwf85+6y5Jq4kIWIiIjIWYzLJbhxgEtjQUxERETkDPn5wJdfAv/1X0D79mpnQzawICYiIiJyhnXrgKIi7j3sBlgQExERETlDairg5wc89JDamVAVWBATEREROdqlS8C33wJDhgAhIWpnQ1VgQUxERETkaJ9/rtyhjssl3AILYiIiIiJHS00FgoKA++9XOxOqBhbERERERI50+jTwww/AyJFAQIDa2VA1sCAmIiIiciTeqtntsCAmIiIichQRpSBu0QLo31/tbKiaWBATEREROcoPPwBnzgCjRgG+vmpnQ9XEgpiIiIjIUYzLJbi7hFthQUxERETkCKWlwOrVwF13AT17qp0N2YEFMREREZEjfPstkJOjzA57eamdDdmBBTERERGRI3C5hNtiQUxERERUW4WFwLp1QK9ewJ13qp0N2YkFMREREVFtbdwI3LjB2WE3xYKYiIiIqLZSUwEfH+CRR9TOhGqABTERERFRbfz+O/D118CAAcoNOcjtsCAmIiIiqo01a5Qt13irZrfFgpiIiIioNlJTgYAAYMQItTOhGmJBTERERFRT588De/YAw4YBQUFqZ0M1xIKYiIiIqKZWrlS+cncJt8aCmIiIiKgmRJTlEiEhwKBBamdDtcCCmIiIiKgmjh0DsrKAhx8G/P3VzoZqgQUxERERUU3wVs2awYKYiIiIyF5lZcCqVUD79kBsrNrZUC2xICYiIiKy1+7dwIULyt7D3iyn3B0/QSIiIiJ7cbmEprAgJiIiIrLH7dvK3em6dQMiI9XOhhyABTERERGRPb7+Grh2jbdq1hBNF8SHDh1CSkoKQkNDodPp0KFDB0yYMAEnTpxwSPzi4mLMmTMHPXv2RMOGDREcHIzY2FgsXLgQBoPBrWIYrV69Gk2aNIGXlxd27txp17n5+fl49dVXER0djcDAQDRr1gz33nsvPv/8c7viEBERubTUVMDLCxg9Wu1MyFFEoxYuXCh+fn4SEBAgU6ZMkYULF8rEiRPFz89P6tevL2vWrKlV/JycHOnRo4cAkLvvvls+/PBDmT17tkRGRgoASUxMlBs3brhFDBGRvLw8GTVqlAAwPTIyMqr9fpw+fVo6deokAGTAgAEyb948eeutt6R9+/YCQEaPHi2lpaXVjmeJXq8XAKLX62sVh4iIqMauXROpV08kIUHtTMiBNFkQb9u2Tby9vcXHx0d27dpVri09PV0AiE6nk8zMzBrFNxgMkpCQIABkyJAhUlJSYmorLCyU3r17CwBJTk52+RgiIl9//bW0bt1a/P39TfHsKYgLCgqkS5cuAkCeeuqpcm25ubmmQnnatGnVimcNC2IiIlLdkiUigMiiRWpnQg6kuYK4tLRUwsLCBICMHz/eYp+kpCQBIHFxcTUaY8WKFQJAfH195dy5c5XaMzMzTUXl9u3bXTrGt99+KwAkOjpajhw5IkuXLrW7IH799dcFgISEhEh+fn6l9rS0NAEgPj4+curUqWrFtIQFMRERqe7ee0X8/UXy8tTOhBxIc2uIN27ciFOnTgEAnnzySYt9jM/v2bMH+/bts3uMWbNmAQASExPRvn37Su09evRAdHQ0AODdd9916Rg3b97EjBkzkJmZiW7dulnsY0tpaSk++OADAMCDDz6IoKCgSn2GDRuGkJAQGAwGzJ492+4xiIiIXMLFi8COHcCf/wwEB6udDTmQ5gridevWAQACAgLQu3dvi3369etnOk5PT7cr/tmzZ3H06NFKcayNkZGRgWvXrrlkDABISkrCO++8A/8a3oN99+7d+P33323m4efnh3vuuQcAsGHDBpSVldVoLCIiIlWtXg2IcO9hDdJcQbxr1y4AQEREBHx8fCz2CQkJQWhoaLn+9sYHgK5du1rt1717dwBASUkJ9u7d65IxAMDLy8vqudVhbx6XL1/GyZMnazUmERGRKlJTgYYNgaQktTMhB9NUQVxYWIjs7GwAQNu2bW32NbbbW5yZb9lmawzztorbvLlKDEdwlTyIiIic6uRJ4NAh4MEHAZ1O7WzIwTRVEGdnZ0NEAADNmjWz2bd58+YAgIKCAuTl5VV7jPPnz5uObY1hjF/xHFeK4QjGmH5+fmjcuLFqeRARETnVypXKVy6X0CRftRNwpIKCAtNxQECAzb46s5/uCgoKEBIS4tAxKsZ3xRiOYIypq+KnZXvzyMnJQW5ubrnnzpw5U4MMiYiIaklEWS7RqhVg47odcl+aKoiLiopMx35+fjb7ml9EduvWLYePYSu+q8RwBGMejn6/58+fj1dffbV2yRERETnC/v3Azz8Dzz4LWLk+idybpgpi81nIkpISm32Li4tNx1XNJtdkDFvxXSWGIxjzcPT7/cwzz+Chhx4q99yZM2cwfPhw+5MkIiKqjdRU5SuXS2iWpgpi8z1wzWdQLTFvt7R3bm3HsBXfVWI4gjGmo9/v5s2bl1t3TEREpIqSEuDzz4GwMCAmRu1syEk0dVFdaGioaRuxiutPKzK2BwUFVXv9MIByN8CwNYZ5W8WbZrhKDEcwxiwpKcH169dVy4OIiMgptm8HcnOV2eFablVKrktTBXFgYCDatWsHALhw4YLNvsb28PBwu8bo0qVLpRi24lc8x5ViOIKr5EFEROQUxuUSY8aomwc5laYKYgCIj48HAGRlZcFgMFjsc/XqVdN+xQkJCTWKDwDHjh2z2u/IkSMAlIvNYmNjXTKGI9ibR4sWLez+IYSIiEgVN28C69cDffoAnTqpnQ05keYK4hEjRgBQdjI4cOCAxT47d+40HY8cOdKu+B07djTdkc08jrUxEhMTK+3P6yoxHCE+Ph5NmjSxmUdpaSm+//57AMADDzwAb2/N/bUjIiIt2rBBKYp5MZ3maa4yGTZsGMLCwgAAy5Yts9jH+HxcXBz69u1brq2goAD9+vVDSEgIVq9ebfH86dOnAwB27Nhhmmk2d/jwYdNs6YwZM1w6Rm35+vpi6tSpAIC1a9fixo0blfps3LgRv//+O3x8fPDcc885JQ8iIiKHS01Vtll7+GG1MyFnEw3atm2beHt7i6+vr+zevbtc2/r16wWA6HQ6yczMrHTuggULBIAAkJYtW1qMbzAYJCEhQQDI0KFDpbS01NR269Yt6du3rwCQ5ORkqzm6SoyKli5danr9GRkZ1TqnoKBAwsPDBYBMmjSpXNuVK1fkzjvvFAAybdq0audhiV6vFwCi1+trFYeIiKhKOTkiPj4iQ4aonQnVAU1tu2Y0cOBAzJ8/H5MnT8Z9992HiRMnIiIiAocPH8bixYsREBCA5cuXo0ePHpXOlf/c+rnisTlvb2+sWbMGgwcPxubNmxEbG4tHH30UBoMBS5YsgV6vR2JiIpYuXWo1R1eJAQDffPMNLl++DADYt29fueeNF8N16tSp0my6UYMGDfDll19i8ODB+Oijj/DTTz9hxIgRuH79OhYuXIhz585h1KhR+Mc//mEzDyIiIpexZg1gMHC5hKdQuyJ3pszMTBkzZoy0adNG6tWrJ+3atZOxY8fK8ePHrZ6Tn58v8fHxEhwcLKtWrbIZv6ioSGbPni0xMTESFBQkjRo1kj59+siCBQvKzda6egzjLLOtxxNPPFFlnGvXrsnMmTMlIiJC6tevL02aNJHExMQq38fq4gwxERHVmdhYkfr1RQoK1M6E6oCXiJVpUCIXk5WVhaioKOj1ekRGRqqdDhERadXZs0DHjsDo0cDKlWpnQ3VAcxfVEREREdWKsQjmcgmPwYKYiIiIyEhE2V2iaVPgvvvUzobqCAtiIiIiIqMjR4ATJ5St1vz81M6G6ggLYiIiIiIj462auVzCo7AgJiIiIgKUbdZWrQLuuAOwstUoaRMLYiIiIiIA2LULuHgRGDMG8PJSOxuqQyyIiYiIiAAul/BgLIiJiIiIioqAtDTgT38CunRROxuqYyyIiYiIiL76CsjP5+ywh2JBTERERJSaqqwbHjVK7UxIBSyIiYiIyLNduwZs2gT06we0aaN2NqQCFsRERETk2dauBYqLuVzCg7EgJiIiIs+Wmgr4+wMPPqh2JqQSFsRERETkuX79Fdi5E0hKAho3VjsbUgkLYiIiIvJcq1YBIlwu4eFYEBMREZHnSk0FGjUC/vxntTMhFbEgJiIiIs90/Dhw5AiQnAzodGpnQypiQUxERESeibdqpv9gQUxERESeRwRYuVLZdzghQe1sSGUsiImIiMjz7NsHnDsHjB4NeLMc8nS+aidAREREVGdOnwYWL1ZuxgEAcXHq5kMugT8SERERkWdYuhQIDwfeeQc4c0Z5buRI5XnyaCyIiYiISPtOnwbGj1fWDpsTUZ4/fVqdvMglsCAmIiIi7Vu8GCgrs1wQl5UBS5aokxe5BBbEREREpH3nztWunTSNBTERERFpW2Fh1UsiOnSok1TINbEgJiIiIu3atw/o3h04dEj5s5dX+XYvL8DHBxg7ts5TI9fBgpiIiIi05/Zt4MUXlW3VsrOBWbOATz6pXBB7ewMffwzcdZc6eZJL4D7EREREpC1HjwKPPw4cOwbExADLlwORkUpbfLxyAd25c8oyibFjWQwTC2IiIiLSiNJS4N13gVdeUXaOmDkT+J//Afz8/uhz113A22+rliK5JhbERERE5P5+/BF44gngX/8CIiKUWeEePdTOitwE1xATERGR+yorA/75T+XCuf37gf/+b+DgQRbDZBfOEBMREZF7On9eWQO8Ywdwxx3AsmXKGmEiO3GGmIiIiNyLCLB0KRAdrRTDEycqF9CxGKYa4gwxERERuY9Ll4CnngI2bgRatwa++AIYPFjtrMjNcYaYiIiI3MOaNUBUlFIMjxkD6PUshskhWBATERGRa8vLUwrghx9W/rxmDZCaCgQHq5sXaYamC+JDhw4hJSUFoaGh0Ol06NChAyZMmIATJ044JH5xcTHmzJmDnj17omHDhggODkZsbCwWLlwIg8HgMTGWLVsGLy+vKh9t27atVi5EREQmX3+tzAqvWgXcf78yK5ycrHZWpDGaLYgXLVqEPn36ID09HSNHjsTcuXMxePBgfPrpp+jZsyfS0tJqFT83NxexsbF47rnn4O3tjTfeeAMvvfQS8vPzMWnSJAwcOBA3b970mBhEREQOVVCgrBX+85+BmzeVi+g2bABatlQ7M9Ii0aBt27aJt7e3+Pj4yK5du8q1paenCwDR6XSSmZlZo/gGg0ESEhIEgAwZMkRKSkpMbYWFhdK7d28BIMnJyR4RY+nSpQJATpw4YfNx5swZqzGqQ6/XCwDR6/W1ikNERC5u1y6RO+4QAUT69xc5f17tjEjjNFcQl5aWSlhYmACQ8ePHW+yTlJQkACQuLq5GY6xYsUIAiK+vr5w7d65Se2ZmpgAQALJ9+3bNxzAWxM7GgpiISOMKC0WefVbEy0skIEDkn/8UMRjUzoo8gOaWTGzcuBGnTp0CADz55JMW+xif37NnD/bt22f3GLNmzQIAJCYmon379pXae/TogejoaADAu+++q/kYREREtZaZqdxdbs4coHdv4MgRYPJkwFtzpQq5IM39LVu3bh0AICAgAL1797bYp1+/fqbj9PR0u+KfPXsWR48erRTH2hgZGRm4du2aZmMQERHVSkkJMHMm0KcPcOYM8NZbwO7dQOfOamdGHkRzBfGuXbsAABEREfDx8bHYJyQkBKGhoeX62xsfALp27Wq1X/fu3QEAJSUl2Lt3r2ZjWGIwGHD9+vVq73BBREQeKitLKYRfew2IjFRmiV94AfDlfcOobmmqIC4sLER2djYAVLnFl7H95MmTdo1hvmWbrTHM2ypu86alGOaWLl2K3r17IyAgAI0bN4afnx/CwsIwbdo0XLp0yep5RETkYQwGYNYsZYnEkSPAiy8CP/wA2JicIXImTRXE2dnZEBEAQLNmzWz2bd68OQCgoKAAeXl51R7j/PnzpmNbYxjjVzxHazHMjR07Fu3atcPixYuxefNmzJ07FzqdDrNnz0aXLl2wfft2q+cSEZGH+OknoF8/YPp0oH174PvvgTffBPz91c6MPJimfidRUFBgOg4ICLDZV6fTlTsvJCTEoWNUjK/VGEY+Pj5YvXo1kitslj5p0iQkJydjw4YNGD58OPbv34/IyEirYxnl5OQgNze33HNnzpyp8jwiInJRIsDChcC0acq+wlOmAG+/DdSvr3ZmRNoqiIuKikzHfn5+Nvv6m/0keuvWLYePYSu+lmIAQHJyMgYNGoRWrVpVavP19cXHH3+Mb775Bjdv3sSMGTOwefNmq2MZzZ8/H6+++mqV/YiIyA38+iswbhywdSvQrh3w5ZdA//5qZ0VkoqklE+YzmSUlJTb7FhcXm46rmk2uyRi24mspBgA0aNDAYjFs1KxZMwwZMgQA8NVXX1Wa+bXkmWeegV6vL/dYv359lecREZELEQE++0y59fLWrcCTTwLHjrEYJpejqRnioKAg07H57Kcl5u3m5zlqDFvxtRSjumJiYrB27VoAwP79+5GUlGSzf/PmzcutXSYiIjeTmwtMmgSkpwMtWii3XR42TO2siCzS1AxxaGgovLy8AKDKWUhje1BQULXXDwMod/MKW2OYt1W84YWWYlRX06ZNTceXL1+uUQynOX0a+PvfgVGjlK+nT6udERGRe9uwQZkVTk8HkpMBvZ7FMLk0TRXEgYGBaNeuHQDgwoULNvsa28PDw+0ao0uXLpVi2Ipf8RytxaiusrIy07G1/aFVsXQpEB4OvPMO8PnnytfwcOV5IiKyz7VrwBNPAMOHKzfcWLkS+OILwGxShMgVaaogBoD4+HgAQFZWltUbQ1y9etW0X3FCQkKN4gPAsWPHrPY7cuQIAOVitdjYWM3GOH/+PN544w2cO3fO6vlA+Vnhli1b2uxbZ06fBsaPV9a4mRNRnudMMRFR9W3fDkRHA8uXA4MHK7PCo0cD//nNLZEr01xBPGLECADKbggHDhyw2Gfnzp2m45EjR9oVv2PHjqa7upnHsTZGYmIiGjdurNkYZ8+exUsvvYT9+/dbPR+A6bPw9va2ekvtOrd4MVBWZrkgLisDlixRJy8iIndy8yYweTIwcCBw9aqytdpXXwGtW6udGVG1aa4gHjZsGMLCwgAAy5Yts9jH+HxcXBz69u1brq2goAD9+vVDSEgIVq9ebfH86dOnAwB27Nhhmmk2d/jwYdOM64wZMzQfAwC2bt1qte3cuXP45ptvACg/sAQHB1vtW6eqmNXG3r3Kr/yIiMiyvXuB7t2BefOA+HhlB4mnnuKsMLkf0aBt27aJt7e3+Pr6yu7du8u1rV+/XgCITqeTzMzMSucuWLBAAAgAadmypcX4BoNBEhISBIAMHTpUSktLTW23bt2Svn37CgBJTk62mqNWYmRkZAgA8fHxkU2bNlVqz8/Pl3vuuUcASKNGjeTMmTNWc6mKXq8XAKLX62sco5znnxdR5oOtP5o1E/nrX0X27xcpK3PMuERE7q6oSPk/1NtbpF49kdmzRQwGtbMiqjFNFsQiIh999JH4+vpKQECATJ06VRYtWiRPP/20+Pv7S0BAgKxZs8biefPnzzcVxC1atLAaPycnR2JiYgSA9OrVSz788EN5//33JSoqSgBIYmKiFBQU2MxRCzGysrKkZcuWAkC8vb1l+PDhMnfuXFmyZIm8+OKL0qZNG9MPF3v37rWZR1UcXhD/+KPyn7mXV/ki2MtLeX7qVJHOnf94/q67RF55ReT0aceMT0Tkjg4fFomOVv5f7NFDJCtL7YyIak2zBbGISGZmpowZM0batGkj9erVk3bt2snYsWPl+PHjVs/Jz8+X+Ph4CQ4OllWrVtmMX1RUJLNnz5aYmBgJCgqSRo0aSZ8+fWTBggXlZlq1HqO4uFjWr18v48aNk65du0rDhg3F19dXmjZtKvHx8fLee+9Jfn5+tfKwxeEFsYjIkiVK8WteEPv4KM+LKLPCP/wg8re/iTRv/kefPn1E/u//RHJyHJcLEZErKykReeMNET8/EV9fkVdfFSkuVjsrIofwEql4RRGRa8rKykJUVBT0ej0iIyMdF/j0aeUCunPngA4dgLFjgbvuqtyvtBT49lvlrkvp6UBhIeDrq1xNnZIC3H8/UL++4/IiInIVp04Bjz8OHDgAREQoO0n06KF2VkQOw4KY3IbTCuKauHFD2Xj+s8+AbduUXSkaNAAefFApjhMTAVfab5mIqCbKyoB//lO5adHt28C0acBrrwE6ndqZETmU5naZIKoTDRoAjz4KfP01cPEi8OGHQJcuwKefKlsPhYYq3zgOH668rRsRkTs4fx4YMACYOlXZQu2774B332UxTJrEgpiotlq0AKZMUX6VePIk8NJLyjeM2bOBmBjl9qVvv618cyEicnUiyj7t0dFARgYwaRJw9CgQF6d2ZkROw4KYyJHCwpRfJ/70k7I/5zPPAJcvAy++qKxPTkgAPv5Y2byeiMjV/PYbMGyYcrfOoCBgyxZgwQLlt2JEGsaCmMgZvLyAvn2VzeovXgS+/BJ4+GFlFvmpp4CWLYGRI5WL827fVjtbIiLgiy+U32ht2qQsCdPrgUGD1M6KqE6wICZyNn9/ZQeKzz9XZouXLgX+67+A9euVi/BatlSK5O++Uy5g0brTp5ULdEaNUr6ePq12RkSe7fffgdGjgUceAby9gbQ05YJhV7mrKFEd4C4T5DZcapcJR/j1V2DVKuUbz9GjynPt2gFjxig7VWjhNVa0dKnyq1jzwt/bG/jkE+DJJ9XLi8hTffUVMG4ccOkS8MADwMKFynURRB6GBTG5Dc0VxOb0eiA1VXn88ovyXPfuSmE8erRyhbfR6dPKBS/GfZPHjbO8b7KrOX0aCA//4xYoRl5eyuPkSfd4HURaUFAAPPec8sNow4bA3LnKPsNeXmpnRqQKFsTkNjRdEBuVlQG7dyuF8RdfANevK9+g7r1XWdNXWAj89a/qzrAaDEBRkbL22fjV/NjSc7dvK0tGvvnGetzhw5WlI4GBlh/+/vxmTeQIO3cq/1+cO6f837JkifLbKSIPxoKY3IZHFMTmioqUX2d+9plykUtJieV+xiJx6VKgadPqFaj2FLIV2w2GunsPzPn4WC+WjY/69avuY+kREKD8YOEJ3PU3DFR7t24pO9588IHyd/6994Cnn/acv/tENrAgJrfhcQWxubw8ZW3x1q3Oie/np+ydXK/eH1/Njx3x3KefAqtXW89h2DDlcfNmzR61vSCxqmK6psV2YKByi29XwDXcnuuHH5QlESdPKjvgfPopfxAiMuMi/0sTkU0hIUDjxrb79Oyp7HtcVYFasd3fv25miDp1UpaBWFpD7O0NzJpV82/QIsrstXmBXFhY8+L65k1luzzjcXFx7V67v7/ziu169aq3lOT0aaUYrjgHIqI8HxfHAkmLiouB119Xbg7k4wP84x/KXTR5a3miclgQE7mLDh1stw8Y4NqzfHfdpcxEVizKvL2Vm5XUphjz8lKKe50OaNKk9rlWVFpquWiuadGdl6dcPGmMURve3tUrtg8ftjyLbvwBZckSpWgi7dDrlVnhw4eBbt2AFSuUu88RUSVcMkFuw6OXTAC2d2nw9gZOnHCPGb7Tp5Xiy7iGdexY98jbWcrKlLWdjiy4zR/VXfMdGgpMnAh07ao82rXjRYzuymBQbh3/0kvKD3MvvAC8/LLymwoisogFMbkNjy+IActrQH18lBlWV54dJnWIKL8yv3kT+N//VW7BW10NG/5RHHftqswwRkXxFr6u7swZ4C9/Ab7/XrmV/KefAr17q50VkctjQUxugwXxf3CGlWqiqt8wZGYq67CPHfvjcfSosvWfuU6dyhfKXbsCHTtypwK1iQAffaSsDy4sBP72N+Ctt5QlM0RUJRbE5DZYEBPVkr2/YRBR1jqbF8nHjgGnTpWPERiorE01L5Kjo6u+EJQc48IF5Qfjb75RlrosWwYkJqqdFZFbYUFMboMFMZEDOOI3DLduKWvWjbPIxq+//16+X7t25ZdcdO0K3Hmn62xD5+5ElH3K//pXZSZ/7FhgzhxluQsR2YUFMbkNFsRELkwEuHSp8mzyiRPlbyqj0wGRkZWXXTRtql7u7ignB5g0CVi3DmjRQpnlv/9+tbMiclv8MZ2IiGrPywto1Up5DBr0x/PFxcrNICoWygcPlj+/Vas/ZpGNj7Aw7oxgybp1yo4gubnAww8D8+c7Z7tBIg/CgpiIiJzH3/+PAtdcbi7w73//seTi2DEgIwPYsuWPPn5+QJculZddtGjhmVvCXbsGTJmi7CccHAysWgWMGqV2VkSawIKYiIjqXrNmQP/+ysOotFRZ41xxNvmzzyqfW3HJRUSEshxDq775RlkjfOECMGSIcpOb1q3VzopIM1gQExGRa/D1VWaEu3QBHnnkj+evXlVmk82L5H37gG+//aOPjw/QuXPlZRdt27r3bPLNm8D06coe0g0aKGuFx41z79dE5IJ4UR25DV5UR0QmZWXAzz+X3+ni2DHlOXONG1e+wUhkpLJVnKv7/nvgiSeAn34CEhKUbfPuuEPtrIg0iTPERETkfry9lS3c7rwTGDnyj+cLCgC9vvxs8pEjwHff/dHHy0s5r+Kyiw4dXOMGI0VFwMyZwHvvKWuw339fudGGK+RGpFEsiImISDuCgoC+fZWHkQiQnV1+JvnYMWW3hrVry59r6QYjdbmv7+HDwGOPAVlZwN13K7de7tKl7sYn8lAsiImISNu8vID27ZXHsGF/PF9YCBw/Xv5W1ceOAXv3lj+/Q4fKyy46dVLWLTtKaSnw9tvAa68pf37tNeCFF3gTE6I6wn9pRETkmerXB3r2VB5GIsDFi5V3uvjqK+DLL//oFxAAREVVXnYRElL1uKdPA4sX/3G3wH79gJdfBn74QVnfvHw5EBPj4BdLRLbwojpyG7yojohUc/u2coORissuLl8u369Nm8o7XXTurOypDCgXxo0fr1wUWNGMGcrMcL16zn89RFQOZ4iJiIiqUq+eUuh261b++cuXy28Jd/QosH27MqNs5O+v7JPcoQOwYYMyC12Rl5dSKLMYJlIFC2IiIqKaatFCeQwY8MdzJSXAjz9WXnZx5Ij1OCLAkiXKOmIiqnMsiImIiBzJz09ZCxwZCYwe/cfzI0cqO1tYc+6c01MjIsu4qSEREVFd6NzZdnuHDnWSBhFVxoKYiIioLowbp9xco+Jtl728lC3cxo5VJy8iYkFMRERUJ+66C/jkk8oFsbc38PHHSjsRqYJriImIiOrKk08CcXHKBXTGfYjHjmUxTKQyTc8QHzp0CCkpKQgNDYVOp0OHDh0wYcIEnDhxwiHxi4uLMWfOHPTs2RMNGzZEcHAwYmNjsXDhQhgMBsaoQQwiIs276y5lN4lVq5SvLIaJVKfZG3MsWrQIkydPhq+vLyZMmIDIyEgcOnQIS5YsgZ+fHz799FMkJyfXOH5ubi6GDBmCgwcP4u6770ZKSgpKS0uxZMkSZGVlITExERs3bkRgYCBjVDNGVXhjDiIiInIK0aBt27aJt7e3+Pj4yK5du8q1paenCwDR6XSSmZlZo/gGg0ESEhIEgAwZMkRKSkpMbYWFhdK7d28BIMnJyYxRzRjVodfrBYDo9fpaxSEiIiIyp7mCuLS0VMLCwgSAjB8/3mKfpKQkASBxcXE1GmPFihUCQHx9feXcuXOV2jMzMwWAAJDt27czRjViVAcLYiIiInIGzRXE69atMxVf33//vcU+a9euNfXZu3ev3WN069ZNAMjAgQOt9omOjhYAct999zFGNWJUBwtiIiIicgbNXVS37j93AQoICEDv3r0t9unXr5/pOD093a74Z8+exdGjRyvFsTZGRkYGrl27xhg2YhARERGpSXMF8a5duwAAERER8PHxsdgnJCQEoaGh5frbGx8AunbtarVf9+7dAQAlJSXYu3cvY9iIQURERKQmTRXEhYWFyM7OBgC0bdvWZl9j+8mTJ+0aw3zLNltjmLdV3OaNMRyz7R0RERGRI2iqIM7Ozob8Zxe5Zs2a2ezbvHlzAEBBQQHy8vKqPcb58+dNx7bGMMaveA5jVI5BREREpCZNFcQFBQWm44CAAJt9dTqdxfMcNYat+IxR/febiIiIyNk0devmoqIi07Gfn5/Nvv7+/qbjW7duOXwMW/EZo+r3OycnB7m5ueWeO3PmTJXnEREREdlLUwWx+SxkSUmJzb7FxcWm46pmk2syhq34jFH1+z1//ny8+uqrFttYGBMREVFVOnXqVK5OsUVTBXFQUJDp2Hzm0hLzdvPzHDWGrfiMUfX7/cwzz+Chhx4q99yOHTswZcoUDB8+vMrziYiIyLPp9XpERkZWq6+mCuLQ0FB4eXlBRCr9ur0iY3tQUBBCQkKqPUb79u3LxWjdurXN+BXPYYzKMSxp3rx5uQvxAKBNmzZo164dQkNDUa9evSpj2HLmzBkMHz4c69evx5133lmrWGQ/vv/q4vuvPn4G6uL7r666ev87depU7b6aKogDAwPRrl07nD9/HhcuXLDZ19geHh5u1xhdunQpF6Nbt24241c8hzEqx6iuxo0b44EHHqjRudbceeed1f7pkRyP77+6+P6rj5+Buvj+q8uV3n9N7TIBAPHx8QCArKwsGAwGi32uXr1q2q84ISGhRvEB4NixY1b7HTlyBIByoVlsbCxj2IhBREREpCbNFcQjRowAoOxkcODAAYt9du7caToeOXKkXfE7duxouiObeRxrYyQmJqJx48aMYSMGERERkZo0VxAPGzYMYWFhAIBly5ZZ7GN8Pi4uDn379i3XVlBQgH79+iEkJASrV6+2eP706dMBKBd5GWeazR0+fNg0WzpjxgzGqEYMIiIiItWIBm3btk28vb3F19dXdu/eXa5t/fr1AkB0Op1kZmZWOnfBggUCQABIy5YtLcY3GAySkJAgAGTo0KFSWlpqart165b07dtXAEhycrLVHBlDXZcvX5aZM2fK5cuX1U7FI/H9Vxfff/XxM1AX3391ueL77yXyn3sda8zChQsxefJk+Pn5YeLEiYiIiMDhw4exePFi+Pj4YPny5UhOTq503oIFC/DMM88AAFq0aIFLly5ZjJ+bm4vBgwfj0KFD6NWrFx599FEYDAYsWbIEer0eiYmJ+PLLL9GgQQOrOTIGERERkfo0WxADwMGDB/H+++9j165duHLlClq0aIEBAwZg2rRpVnc6KCgoQFJSEv79739j/vz5GDVqlNX4t2/fxrx585CamorTp0/D29sbXbp0wRNPPIEJEybAx8enyhwZg4iIiEhdmi6IiYiIiIiqormL6oiIiIiI7MGCmNzWoUOHkJKSgtDQUOh0OnTo0AETJkzAiRMnHBK/uLgYc+bMQc+ePdGwYUMEBwcjNjYWCxcutLrHtadx1mdw+/ZtrF27FikpKbjrrrtQv3591K9fHx07dkRKSgoyMjIc9Arcm7P/DVS0cOFCeHl5wcvLC6+88opTxnAndfH+X758GW+88QbuvvtuNG3aFAEBAbjjjjtw77334vXXXzft8e6pnP0Z7NixA6NGjUL79u2h0+kQGBiIzp07Y8KECTb33vcUOTk5GDFiBLy8vNCvXz+Hxs7Pz8err76K6OhoBAYGolmzZrj33nvx+eefO3QcEzWv6COqqYULF4qfn58EBATIlClTZOHChTJx4kTx8/OT+vXry5o1a2oVPycnR3r06CEA5O6775YPP/xQZs+eLZGRkQJAEhMT5caNGw56Ne7JWZ/BmjVrpFWrVgJAAgMDZdKkSfLPf/5T5s2bJ8OHDzftAvPEE09ISUmJg1+V+3D2v4GKcnJyJDg42PT+z5w506Hx3U1dvP9r166VkJAQadKkiUyePFk++ugj+fDDDyU5OVm8vb0FgAwaNMgBr8Y9OfMzKCsrk0mTJpn+vj/44IPywQcfyLvvvisDBw4UAOLr6ysffPCBA1+Re1m/fr00b97c9B4lJCQ4LPbp06elU6dOAkAGDBgg8+bNk7feekvat28vAGT06NHldrRyBBbE5HaM2+r5+PjIrl27yrWlp6fb3FavOsy3kRsyZEi5oquwsFB69+7tctvI1TVnfgbjxo0TANK2bVvJzs6u1L5s2TLTf8BTpkyp8WtwZ87+N2DJ448/bnrfPb0grov3f/PmzeLr6yt9+vSRnJycSu2LFy/26ILY2Z/BBx98YPq7vmTJkkrtL730kql927ZtNRrDXV2/fl3+8pe/CADp0aOHhISEOLQgLigokC5duggAeeqpp8q15ebmmgrladOmOWQ8IxbE5FZKS0slLCxMAMj48eMt9klKShIAEhcXV6MxVqxYYfrp/9y5c5XaMzMzTf8Rbt++vUZjuDNnfwbGgjgtLc1qn6FDhwoA8fHxsfgZaVld/BuoaOfOnaZ9xj29IK6L9//q1avSpEkTqV+/vly8eNFin7KyMgkPD5eHH364RmO4s7r4DIwzkT169LDYfvv2bdNvsjzth5L4+Hjx9fWVl19+WUpKSkzvlaMK4tdff10ASEhIiOTn51dqT0tLM/3/f+rUKYeMKcKCmNzMunXrTN+Qv//+e4t91q5da+qzd+9eu8fo1q2bAJCBAwda7RMdHS0A5L777rM7vrtz9mcwbtw48fX1tbkk5eOPPzbFX7hwoV3x3V1d/BswV1xcLBEREdKiRQs5cuSIxxfEdfH+P//88wJAJk2aVNt0NcnZn8GVK1dM59r6DAYNGiQAJDg42K747m7UqFFy4MAB058dWRCXlJRIkyZNBIBMmDDBYp/i4mLTrHTFGeTa4EV15FbWrVsHAAgICEDv3r0t9jFf2J+enm5X/LNnz+Lo0aOV4lgbIyMjA9euXbNrDHfn7M9gypQp2Lp1KwIDA632adeunen4l19+sSu+u3P2+1/RrFmzcPz4ccyaNQuNGjWqVSwtcPb7X1ZWhuXLlwMAhg4dWrMkNc7Zn0FJSYnpuH79+lb7Gdtu3rxpV3x3t3LlStx9991Oib179278/vvvAKx/D/bz88M999wDANiwYQPKysocMjYLYnIru3btAgBERERYvdFHSEgIQkNDy/W3Nz4AdO3a1Wq/7t27A1D+49y7d69dY7g7Z38GXbt2Rf/+/W32yc/PNx03adLErvjuztnvv7lz587hjTfeQL9+/ZCSklLjOFri7Pd///79+O233wAAUVFRpudFBPn5+RDeOsDpn0GLFi3QtGlTAMDJkyet9jt16hQAoGPHjnbFd3deXl5Oi23v9+DLly/b/IzswYKY3EZhYSGys7MBAG3btrXZ19hu7z8U8616bI1h3uasLa5cUV18BtVx/vx507GzZipcUV2//3/9619RUlKCefPm1TiGltTF+3/o0CHTcWhoKL766isMGDAAOp0OjRo1Qr169XDPPffg008/ddjMmDupi8/Ay8sLzz77LABg69atFrdX27x5M44fPw4AGDt2rF3xyTo1vwezICa3kZ2dbZodadasmc2+zZs3B6DcijsvL6/aY5gXWrbGMMaveI7W1cVnUB2bNm0CoMwgGH915gnq8v1ft24dNm3ahGeffRYRERH2J6tBdfH+Z2VlAQD8/f3x/PPPY+jQoWjYsCE+/fRTbNiwAVOnTsXBgwfxl7/8BcnJySguLq7hq3FPdfVv4O9//zv+53/+ByKCe++9F5988glOnToFvV6P999/H4888ggA4IknnjAVz1R7xu+nfn5+aNy4sdV+zvgezIKY3EZBQYHpOCAgwGZfnU5n8TxHjVHT+O6uLj6Dqvz888/47rvvAABvvvmmw+K6g7p6/2/evIm//e1vaNeuHV5++WX7ktSwunj/r1y5AkC5MdDs2bPx4osvIj09HaNGjcKwYcPw7rvv4uuvv4a3tzfWrVuHF1980c5X4d7q6t+At7c33njjDWRmZiI8PBwTJkxAeHg4oqOj8d///d9ISEjA5s2bsWzZMvj6+tr3Isgq4+dk/tlZ4ozvL/wUyW0UFRWZjv38/Gz29ff3Nx3funXL4WPUNL67q4vPoCozZsxAWVkZUlJSkJSU5LC47qCu3v9XXnkFv/zyC9LT021e3Ohp6uL9N18f36JFC4s/kCQmJuKRRx7BqlWrMHfuXDz77LNo06ZNtcdwZ3X1b8BgMODll1/GnDlz4OfnhxdeeAF9+vRBaWkpdu7ciU8++QQ3b95Eo0aNPOq3VM5m/HzV+P7CGWJyG+Y/EZpfBWyJ+a8Rq5pFqMkYNY3v7uriM7Bl+fLlWLt2LaKjoz1yXWtdvP///ve/8cEHH2Do0KEYMWKE/UlqWF28/+a3hR86dCjq1atnsd9DDz1kymPt2rXVju/u6ur/oPHjx+Ott96Cr68v9u3bh7feegvDhg3DyJEjMXfuXHz11VfYs2cP+vXrhzVr1tj3Isgq4+erxvcXFsTkNoKCgkzH5rMElpi3m5/nqDFqGt/d1cVnYM3+/fsxadIktGrVCps3b0bDhg1rHdPdOPv9FxE8/fTT8PX1xdy5c2uWpIbVxd//Bg0amI5trd2Ojo42HWdmZlY7vruri8/gu+++w7JlywAA06dPt/g59OvXD48//jhKS0sxbtw401ZhVDvGz6muv78ALIjJjYSGhpq2e8nNzbXZ19geFBSEkJCQao/Rvn37SjFsxa94jtbVxWdgyYkTJ5CUlASdToctW7aYtlPyNM5+/5ctW4bvv/8ezzzzDBo2bIgrV66Ue1y9etXUt7CwsFybJ+x4UBd//823EbR1UZF5v6py0ZK6+Ay++OIL0/H9999vtZ+xraCgoNw5VHPG76clJSW4fv261X7O+B7MgpjcRmBgoOmGDBcuXLDZ19geHh5u1xhdunSpFMNW/IrnaF1dfAYVnT17FgMGDEBRURG2bNlic29KrXP2+2/cA/T9999Hs2bNKj1iYmJMfd97771ybcatsLSsLv7+m/cvLS212s/8BxBvb8/5Vl4Xn8GZM2dMx+Y3AarIvM24OwjVjprfgz3nXxFpQnx8PADlPx/ztXbmrl69avrmnJCQUKP4ACzuPWl05MgRAMrC/9jYWLvGcHfO/gzMXbx4Effeey/y8vKwceNG9OrVq8axtMKZ7/+MGTPwzTffWH189tlnpr6PPfZYubaWLVvW4lW5D2f//TffV/vy5ctW+xl3owCA1q1b2zWGu3P2Z2B+sw9bv/kwb/OE35DUBXu/B7do0aLWky5GLIjJrRgv8rl16xYOHDhgsc/OnTtNxyNHjrQrfseOHU0zkOZxrI2RmJho89eaWuTsz8DoypUrGDBgAC5cuIC0tDSLt/GcOHEiJk6cWKP47sqZ739ERAQGDBhg9WF+NX3Hjh3LtVW1TZJWOPvvf1xcnOkuaQcPHrTaz1gQAPC4XQ6c/RmY/wr+559/ttrv7NmzpmNPXcblaPHx8ablQNa+B5eWluL7778HADzwwAOO+w2JELmR0tJSCQsLEwDy1FNPWewzbNgwASBxcXGV2vLz8yUhIUGCg4Nl1apVFs9fsWKFABBfX185f/58pfZDhw4JAAEg27dvr90LckN18Rlcu3ZNYmJixNvb22ofEZGEhARJSEio0etwV3Xx/ltz9uxZ09/9mTNn1iR9t1cX7//LL78sAKR+/fqSk5Njsc8DDzwgACQ4OFgKCgpq/oLckLM/g02bNpn+nv/973+3mscjjzxi6nfo0KGavyA31759ewFQrf+Lf/nlF+nWrZu0bNlSMjIyLPZ5/fXXBYA0adLE4t/t9PR0ASA+Pj5y8uTJWmb/BxbE5Ha2bdsm3t7e4uvrK7t37y7Xtn79egEgOp1OMjMzK527YMEC039gLVu2tBjfYDBIQkKCAJChQ4dKaWmpqe3WrVvSt29fASDJycmOfWFuxJmfwc2bN+Wee+4RAPL4449LRkaG1Ue3bt08riAWcf6/AWtYECuc/f4XFBRIp06dBIA89NBD5f4PEhFJS0szxVi6dKnDXpc7ceZnUFZWZvp/PiAgQP71r39V6rN+/Xrx8vISADJixAjHvTA3ZE9B/Pzzz5ve+z59+ljsU1BQIOHh4QJAJk2aVK7typUrcueddwoAmTZtmiPSN2FBTG7po48+El9fXwkICJCpU6fKokWL5OmnnxZ/f38JCAiQNWvWWDxv/vz5pn+MLVq0sBo/JydHYmJiBID06tVLPvzwQ3n//fclKipKAEhiYqLHzcpU5KzP4LHHHjO1V+fhiQWxiPP/DRhdunRJVqxYIStWrJA5c+aYzh0xYoTp+b179zr65bk8Z7//p0+flo4dOwoA6dGjh7z//vuyaNEieeyxx8Tb21u8vb1l1qxZznp5bsGZn8GlS5ekV69eAkD8/f1l7NixsmjRIpk/f748/PDD4u3tLQBkwIABkp+f78yX6XLM/09YsWKFNG3aVABIeHh4uedv3LhR6dwZM2aY3vvevXtbHePHH380/f0fOHCgzJ8/X95++23p0KGDAJBRo0ZV+kGxtlgQk9vKzMyUMWPGSJs2baRevXrSrl07GTt2rBw/ftzqOfn5+RIfH1+tXxcXFRXJ7NmzJSYmRoKCgqRRo0bSp08fWbBggcP/IborZ3wGxtl5FsRVc/a/ARGRjIyMKj+DJ554woGvyn04+/2/ceOGvPXWW/KnP/1JGjZsKDqdTjp16iQTJkwQvV7v6Jfjlpz5GZSUlMiKFSskKSlJWrduLfXq1TONMXLkSFm7dq2UlZU542W5tOr8nwBAzp49W+lc8yUTO3bssDnOtWvXZObMmRIRESH169eXJk2aSGJiot1LvarLS0QEREREREQeirtMEBEREZFHY0FMRERERB6NBTEREREReTQWxERERETk0VgQExEREZFHY0FMRERERB6NBTEREREReTQWxERERETk0VgQExEREZFHY0FMRERERB6NBTEREREReTQWxERERETk0VgQExEREZFHY0FMRERERB6NBTEREREReTQWxERERETk0VgQExEREZFHY0FMRERERB7NV+0EiIiIauOHH37A//3f/yE7OxtFRUVISEjAjBkzEBISonZqROQmvERE1E6CiIjIXiUlJZg8eTJ27tyJJUuWIDY2Fnl5ebj33ntx+/Zt7N69G02bNlU7TSJyAyyIiYjI7RgMBtx///04cuQIMjMz0bp1a1PbmjVr8PDDD2PSpElYsGCBilkSkbvgGmIiInI7f//73/H1119j7ty55YphAIiKigIArFq1CiUlJWqkR0RuhgUxERG5Fb1ejzlz5iAiIgLJycmV2ouKigAA169fx4ULF+o6PSJyQyyIiYjIrbz22mswGAwYNWqUxXbzIthgMNRVWkTkxlgQExGR28jPz8eXX34JAHjkkUcs9jlw4AAAwMfHp9JyCiIiS1gQExGR29ixYwdu376Nzp07o3Pnzhb7fPfddwCA3r17o379+nWZHhG5KRbERETkNnbu3AkAiI+Pt9h+4cIF7NmzBwCQkpJSV2kRkZtjQUxERG6jqoJ4+fLlKCsrQ5s2bfDkk0/WYWZE5M5YEBMRkVvIy8vDsWPHAPyxtZq5K1eu4L333gMAfPLJJ9DpdHWaHxG5LxbERETkFr777jsY7yW1devWSu3//d//jWvXruG9997D4MGD6zo9InJjLIiJiMgtGJdLPPLII0hLS8O2bdsAANeuXcPkyZOxdu1afPLJJ5g2bZqKWRKRO2JBTEREbsFYECclJeGrr77CmjVr0LdvX4wcORLBwcE4efIkxo0bp26SROSWvMT4+yciIiIXlZeXh6ZNm0JE8Ouvv3J/YSJyKM4QExGRyzOuH+7cuTOLYSJyOBbERETk8ozLJfr3769uIkSkSSyIiYjI5RkL4sTERHUTISJN4hpiIiJyadeuXUOTJk0gIrh8+TKaNWumdkpEpDG+aidARERUlT59+iA2NpbFMBE5BWeIiYiIiMijcQ0xEREREXk0FsRERERE5NFYEBMRERGRR2NBTEREREQejQUxEREREXk0FsRERERE5NFYEBMRERGRR2NBTEREREQejQUxEREREXk0FsRERERE5NFYEBMRERGRR2NBTEREREQejQUxEREREXm0/w+a44x6niMplAAAAABJRU5ErkJggg==", - "text/plain": [ - "

" - ] - }, - "metadata": {}, - "output_type": "display_data" - } - ], + "execution_count": null, + "id": "728efd05-7f52-4ece-af52-c031c6f61441", + "metadata": { + "scrolled": true + }, + "outputs": [], "source": [ - "plt.plot(np.array(surfaces), ripple_array_precise, \"-or\", ms=4)\n", - "plt.xlabel(r\"$\\rho$\", fontsize=18)\n", - "plt.ylabel(f\"$\\epsilon^{1.5}$\", fontsize=18)\n", - "plt.xticks(fontsize=16)\n", - "plt.yticks(fontsize=16);" + "# ---------- Precise QH ----------\n", + "# Computing at higher resolution than necessary.\n", + "eq0 = get(\"precise_QH\")\n", + "rho = np.linspace(0.01, 1, 10)\n", + "grid = LinearGrid(rho=rho, M=eq0.M_grid, N=eq0.N_grid, NFP=eq0.NFP, sym=False)\n", + "X, Y = 32, 64\n", + "theta = Bounce2D.compute_theta(eq0, X, Y, rho=rho)\n", + "\n", + "# ---------- How to pick resolution? ----------\n", + "num_transit = 3\n", + "# Running below at few different settings, we observe Y_B = 100 sufficient,\n", + "# and see about 3 wells per toroidal transit.\n", + "# plot_wells(\n", + "# eq0,\n", + "# grid,\n", + "# theta,\n", + "# # Plotting for 3 toroidal transits to see by eye\n", + "# # if Y_B is high enough that |B|(ζ) doesn't change as Y_B is varied.\n", + "# Y_B=100,\n", + "# num_transit=num_transit,\n", + "# # Plot the field lines to obtain a tight upper bound on ``num_well``.\n", + "# num_well=15 * num_transit,\n", + "# );" ] }, { - "cell_type": "code", - "execution_count": 5, - "id": "1c10a4c9-d1aa-4430-9690-9d0debada459", + "cell_type": "markdown", + "id": "913fb794-b3c0-4bfc-bf7c-7b6b7141250c", "metadata": {}, - "outputs": [], "source": [ - "# Importing the HELIOTRON DESC equilibrium\n", - "eq0 = desc.examples.get(\"HELIOTRON\")" + "## Calculating effective ripple for Precise QH" ] }, { "cell_type": "code", - "execution_count": 6, - "id": "630009fe-c0db-4866-b475-3576498cf2bc", + "execution_count": 4, + "id": "066b90da-9212-4834-bb81-0488d69a5c3d", "metadata": {}, "outputs": [ { "data": { - "image/png": "iVBORw0KGgoAAAANSUhEUgAABvwAAARICAYAAADOCnZUAAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjkuMiwgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy8hTgPZAAAACXBIWXMAABJ2AAASdgGhmNzxAAEAAElEQVR4nOydeZyVZfn/3wcYhhmGYVgExFTULCQyFxDFLBdSI5fSTFO/mktlmq1Wan3dKr9W31+rhmluX5XUXHILs0wSRERMQ1kUlRERGRhgGJbZnDm/P57znHOf+zzrOc/sn/frdTzPeZb7vp/nHLmvuT73dV2pdDqdRgghhBBCCCGEEEIIIYQQQgjRKxnQ3QMQQgghhBBCCCGEEEIIIYQQQhSPBD8hhBBCCCGEEEIIIYQQQgghejES/IQQQgghhBBCCCGEEEIIIYToxUjwE0IIIYQQQgghhBBCCCGEEKIXI8FPCCGEEEIIIYQQQgghhBBCiF6MBD8hhBBCCCGEEEIIIYQQQgghejES/IQQQgghhBBCCCGEEEIIIYToxUjwE0IIIYQQQgghhBBCCCGEEKIXI8FPCCGEEEIIIYQQQgghhBBCiF6MBD8hhBBCCCGEEEIIIYQQQgghejES/IQQQgghhBBCCCGEEEIIIYToxUjwE0IIIYQQQgghhBBCCCGEEKIXI8FPiBKYN28eN998c3cPQ3jwve99j3Xr1nX3MIQQQgjhg+yonovsKCGEEKJnIzuq5yI7SgjRnUjwE6IE/vCHP3DiiSd29zCEByeeeCI33XRTdw9DCCGEED7Ijuq5yI4SQgghejayo3ousqOEEN2JBD8himTt2rWUlZUxZsyY7h5KLG6//XZuv/12Tj/9dB544IHuHk6n8fGPf5yFCxfy/vvvd/dQhBBCCGEhO6pnIztKCCGE6LnIjurZyI4SQnQnqXQ6ne7uQQjRG7nqqqs45phjOOSQQ7p7KJFZuHAhjY2NHH300dTV1TFhwgTefvvtoozEZ555hlQqxWGHHdYJI02GP/zhD4waNYrPf/7z3T0UIYQQQhjIjpIdJYQQQojikB0lO0oIIfxQhJ8QRdDW1sbixYt7lXEF8Prrr/Pb3/4WgLFjx1JZWcm7774beM0999zDnDlz8vatXLmSRx99tMuNqx/84Ads27Yt8vlnnnkmd911VyeOqHgWLFjAv/71r+4eRsl4/T6EEEKIIGRHyY4qFdlRfZ+NGzeydu1aVq9eTW1tbfbV0dHR3UMTQohuRXaU7KhSkR0lRN9Ggl8P45vf/Gbe57POOovDDz+cIUOGkEqlmDBhAj/60Y8S7/f+++/P62fSpEkcfvjhHH744eyxxx6cdtppvPXWW4n3W19fT2VlJalUKtJr/PjxsULi7ecZxt57783//u//hp730EMP8bnPfS60z1Lvz2v8DzzwAJ/5zGdIpVLsu+++nHnmmZx55pmceuqp7L///vzyl7/0Hc+ZZ57JbbfdBsDSpUupqqpi8uTJoff68Y9/PG/f5ZdfXvA73L59O1deeSUXX3wxhx12GGeddVbiRYq//vWv8+1vf9v3uP28hg4dyu67786yZcsSHUcSLF68mP3226/kdv74xz/ymc98hrKyMo477ri8Y2+++SZHHnkkqVSKj370o1x//fUl92dj/j664jcQl3Q6zbXXXst3vvMdrrzySs466yy2bNlS0jVR2iymXyFE6ciOkh0lO8of2VGFyI4Kplh7Jp1O89RTT/HJT37S8/iOHTv4/ve/zze+8Q2uvvpqfv/73+cdP+ussxg9ejS77LILu+++O3vssQd77LEH06ZNo7W1NZF7E0IUIjtKdpTsKH9kRxUiOyqYYuyobdu28bOf/Ywf/vCHXHLJJZx44om88sorkY9HPUf0cdKiR3H22Wd77t99993TQPrKK6/s1P7dfv70pz9l9/3tb39LA+lddtkl3djYmHif3/jGN9JA+t57703PmzfP9/Wzn/0s/etf/zpW237P04ulS5emgfTrr78eeu5nP/vZ9I4dOyL1Wcr9+Y1/1apVaSD97LPP5u1/5pln0kD6xhtvDGyjvb09fdJJJ6UXLFgQeJ9btmxJn3baaXn7nn322fTXvva1gnN/8IMfpNesWZNt/+ijj07vs88+6ebm5sA+4vKzn/0s/eCDD3oe87rX5cuXpy+66KJEx5AE11xzTWJtzZ8/P/2d73wnPWDAgPTbb79dcPzUU09Nt7e3J9afi/376KrfQByuv/769NFHH539fO2116ZPOOGEkq6J0mYx/QohSkd2lOyoKOOXHSU7ykR2lD/F2DP33ntv+uyzz06ffPLJ6d13373g+Pvvv58+5phj0rfddls6nXb+nxg8eHB6yZIl2XPOO++89D333JN+4IEH0g899FD6oYceSp9zzjnpe+65J5H7EkJ4IztKdlSU8cuOkh1lIjvKn2LsqK9//evpz3zmM9nP3/rWt9KjR49ONzQ0RDoe9RzRt5Hg18PoiQZWU1NTGkgD6YceeijxPt999910eXl5+uKLLw487/TTT/c1avyIY2Bde+216X322Sf0vFdffTX93e9+N3Kfpdyf3/jvvPPOdGVlZbq1tTVv/9atW9NAngHk1ca1116bXrRoUeB43H5mz56dt++MM84oMMyamprSQ4cOTV999dXZfa5hft9994X2E4fNmzenDzvsMM9jfs/rs5/9bKf8cVAKSRpY/+///b/0li1b0uPHj0//93//d96xurq69P/+7/8m1peJ+fvoyt9AHHbdddf0XXfdlf28Zs2aNJB+7bXXir4mSpvF9CuEKB3ZUf7IjsohO0p2lInsKH9KsWduu+02T8Hvj3/8Y/rjH/949vPq1avTZ511VnrLli3pdNpx0v3iF7/Iu2b9+vXp888/v8i7EEJERXaUP7KjcsiOkh1lIjvKn2LsqIsuuii9//77Zz///ve/TwPphQsXRjoe9RzRt1FKTxHK5s2bs9vV1dWJtz9+/HjOO+88br75ZtauXet5zjPPPMOBBx5IRUVF4v27PPLII5x44omh582aNYuvfe1rkdvtjPubN28e06dPp6ysLG//o48+ysCBAznttNN8r73vvvs47rjjmDp1Kv/+978D0ws89thjHH/88Xn75s+fz4EHHpi3r729nVGjRuXlM999990BJ4w/SWpqahg+fDhLliyJfM1//dd/ceeddyY6jlLYsmULNTU1ibW3detWqqur+dKXvsQtt9xCe3t79tj8+fM59NBDE+vLxPx9dOVvICqvv/4677zzDh/5yEey+3bZZReGDx/O008/XdQ1Udospl8hRN9FdlQ+sqNkR5WK7KiuobPsmd/97nd8+tOfzn7eddddueOOO7L/PqZSKS666KK8a6688kquvvrqovsUQvReZEflIztKdlSpyI7qGoq1o66//nr+/e9/Zz+/9dZbDB06lIkTJ0Y6HvUc0beR4NfHuPvuu/nd737neey6667j4Ycfjt3mb37zGwCOO+44jjjiiJLG58ell15KR0cH1113nefxWbNmccEFF+Tt+/Wvf83ZZ5/NbbfdxqOPPsrPfvYzzjnnHO6///7Y/dfV1fH888+HGliNjY1s2LCBvfbaK1b7xdxfEPPnzy+oiTFnzhwuu+wy/u///o9PfOITntfNnTuX8847jyOOOILRo0dz1FFHsffee3ue29jYyIABA6iqqsruW7lyJaNHj2bw4MF55w4dOpS3336bn//859l9tbW1AOyxxx7ZfVu3bmX33Xenvr4+u++2226Lde8A06dPj1WY98QTT+SRRx6J1Udn8PDDD3PRRRfxla98hZUrV3LRRRfxxhtvlNRmOp0mlUoBcO655/Lee+/x2GOPZY8vXry4wCBOAvv3EfU3sGzZMvbff38qKioYMmRIwcvN6Z8ErmFn/2E4bNgwVq9eXdQ1Udospl8hRM9AdpTsKNlRhciOkh1lUoo9s2HDBv7zn/9QXV3NL37xC6666ipOO+20vO8xlUrlOZ2feeYZxo8fz/jx44vqUwjRdciOkh0lO6oQ2VGyo0zi2FFbtmxh9uzZ3H777QwfPjz28ajniL7HoO4egEiWM844gyuuuILf/OY3eQVjr732WgYOHBhpxRDANddcw4033si2bdtYtmwZn/vc57j11luz/5Anza677sqXvvQlbr75Zi699NK8P+jmzZvHAQccQGVlZXbfm2++yZgxY/j85z/PmWeeyd13380PfvAD3nvvPT70oQ9x9NFHx1r99eijjzJ27FimTZsWeN4//vEPjjrqqE6/vyA2bdrE8uXLeffdd7MG28qVK/nPf/7DI488wr777ut77eGHH87WrVsj9fPII48UrKZ69913GTNmTKTr77nnHj70oQ/x2c9+Nrtv/vz5dHR0MHr06Oy++++/n0MOOSRSmy4f+9jHYq2QGjhwIHvssQcrV670NSg7m69//evstNNOXH/99fz85z/nu9/9Llu2bGHGjBk8/fTTRa+wevXVV5k0aRIAe+21F4cffjg33XRT9v/11tbWgpV3SeD1+7CxfwNbt27lsssu45e//CXvv/8+zz33HF/4whf47W9/yze+8Q1SqRQf/OAHExujuxp06NChefurqqryVorGuSZKm8X0K4ToGciOkh0lO6oQ2VGyo0xKsWfefvttwHE6Pv744wwePJgXXniBQw89lNdff93TEXXppZfmOQ+FED0X2VGyo2RHFSI7SnaUSRQ7qrm5mZ/97GfMmzeP73znO3z+85+PdTzqOaLvIsGvD3LNNddw5ZVX8qtf/Ypvf/vb/PSnP6WsrIzvf//7kdu44oorsmH4b775Jh/60If42Mc+xty5c/NWRyTJ5Zdfzm233cb//M//5K0Ku+GGG7jlllvyzn3xxRc5+uijmTVrFocccgjHHXccAMOHD2fbtm289NJLBSuOgnj44Yc57rjjQg3Io446ivPPP5+vfOUrMe7MIc79BfHss88yePBgfvOb3+StbLr//vv5+Mc/znPPPZcXMl4sjz32GH/84x/z9m3YsCHSipD//Oc/PPjggzz55JOUl5dn9//rX//KW+3V0dHBggUL+N73vpfdd9ttt5FOp9m2bRu77LILJ598ckH7I0eOjBWW397ezptvvlmScXXTTTfxs5/9rKh0AD//+c+pq6vj+uuvB6CtrY1BgwYxatQo9t57b+69916++tWvFjWuefPm8bnPfS77+bzzzuOss85i9erV1NTUMGzYsLzz//73v/ODH/yACRMmcPTRR9PR0cErr7xCY2Mjd999N08//TSXXnopu+66KzNmzKC5uZn//Oc/XHXVVdmUCOD9+zDx+g3MmzeP3/3ud+y2227cdNNNHH/88ey9995UVFR4phZob2/n5JNPprm5OfQ5DB8+nHvvvTdv38CBA/PeXdra2nj//fc92wm7JkqbxfQrhOg5yI6SHSU7Kh/ZUTlkR5Vmz7hpvg444IDs/39Tp05lx44d/OEPfyj4d3bx4sU0NTUxcuTIovoTQnQ9sqNkR8mOykd2VA7ZUdHsqCFDhnDllVcCcPLJJ7NgwQL+/Oc/M2DAgEjHo54j+i4S/PooV199NVdddRWf/vSnOfLII/MmsLjstddeTJ8+nfnz5/PDH/6Q2bNn5x2/9957eeihh0LbOf300znhhBN8j+++++6cddZZ3HzzzVx22WWMHz+eefPmsd9++xWsiPjCF74AOCleDj/88Oz+V199FaBgUglix44dPPXUU9x3332h5w4fPpzRo0fzxhtvxF75Eef+gpg3bx5TpkwpSGNw8sknc9555/GLX/yC22+/PdbYbBobGxk4cGBe+gRwDKIwtm3bxpe//GUeeOCBghVqc+fO5Utf+lL286uvvsr27duz57377rv84Q9/YOHChYDjDDjuuOPyjDSAESNGsGXLlsj38/DDDwf+9qIwbdq00BV3XjQ1NfGTn/wkm6O7paWFIUOGZI83Nzd7rnJ75JFHmDVrFrNnz2bEiBG+7a9Zs4add945+/nkk0/m61//On/84x+ZPn16wWq1T33qU3z729/mO9/5Dh//+Mez+12j/4gjjqC9vZ1LLrmEgw8+GHDyf3/ve9/L/j/i9/tw8fsNzJw5M7v9z3/+k/POO4/XX38973mYDBw4kL/85S++9x7GTjvtBBT+brdv3+77h0LYNVHaLKZfIUTPQnaU7KhSkB1ViOyo/mFHheEKd3Y6upqaGl544YWC82fPns2HP/zhovoSQnQfsqNkR5WC7KhCZEf1Xzvqa1/7Gp/61Ke48847Ofvss2Mfj3qO6FtI1u2h/Otf/+Kqq66KNYl0Jh/4wAcAePnllwuOnXrqqdxzzz2hrygT3OWXX057ezv/8z//Azj/6NtF213cEOzDDjssu2/evHmMHDmSyZMnR763J598kgEDBjBjxoxI51944YXMmjUrcvsmce7Pj/nz5zN9+vSC/R0dHbS1tbF9+/aixmby6KOPeobHjx49moaGBt/r0uk0F1xwAT//+c+ZMWMG6XSat956C3Am3RdffDGvYO+8efPyikM/88wzHHDAAdnju+66a9bYMmlvby8wMIP4v//7v5IntaeeeqqomgGvvvoq7e3t2bzlixYtYurUqUDuN+xVxLi2tpbFixeHprxIp9N5n4cMGcIZZ5zBrbfeyjPPPFNgYNXX17Ny5crseNz89a6R1tjYyIoVK/K+h9WrV+el+PD7fbjj8fsNmGPYunUrAwcO5J133qGtrS3wHovFXf1ZV1eX3dfR0UFDQwN77rlnUddEabOYfoUQySI7SnaUH7KjZEeZyI7ypzPsmd13352hQ4d6rmxvbW0t2Pf000/npV4TQnQNsqNkR/khO0p2lInsKH+KsaPWrVvH+PHjufrqq7P7dtttNwAWLlwYejxKG6J/IMGvh3LyySdz9dVXc+211wLOKgwgcl7tK664gpqaGubMmUNbWxs/+9nPShrPhg0bgNwKhc5izz335IwzzuDmm2/m3nvv5WMf+5jv6qgXX3yRtrY2DjrooOy+P//5z1xwwQWxJt+HH36Yo48+2ndVh81HP/pR3njjDXbs2BG5D5c49+dFc3MzL774oqeBdf/999PU1OSZciAujz32mOcEuvPOO7Nx40bf6376059y1llnZVe5rV69mrlz5wKwYMEC3n///bwVvf/85z859NBDaWlp4de//jVr167Ny3U/bNgw3n333YJ+Nm/eHPm3uGLFCj7wgQ8UPOd33nmH++67j3POOQdwUo/ce++9vP322/zkJz/h4Ycf5gc/+AGbNm3KjvXII4+M1KdJTU1N3oq5RYsWZVcZ3XLLLUybNs0zZ/w3vvENNmzYkJ2YvaitrfU8fv755/Puu++yYMGCgvt+5pln+OhHP0pFRQX19fXZ78fN5z1//nz222+/7P9Da9eu5emnn+a///u/s234/T4g+DfgMnv27OxqrY0bN/Lee+95ttXe3s5nP/tZjj322NDXqaeeWnD9HnvswQc/+EFee+217L7XXnuN5uZm3+8y7JoobRbTrxAiWWRHyY7yQnaUg+woB9lRydtRYQwePJgjjjiCNWvWZPe9//77bNy4seB7dNN8xYk8EUIkg+wo2VFeyI5ykB3lIDsqeTtq3bp1vPfee3k1/lxRdI899gg9HqUN0T9QSs8eygc+8AE2bdrEAQccwMqVK1m3bh1lZWV5Ich+/OhHP2Ls2LFcfPHFgLOK57rrruO6667j0ksvjT2WVatW8cwzzwDOaqLO5oc//CF33XUXF198MW+88Ybvec888wwdHR1s3LiRXXbZhTvvvJO2tjYuv/zyyH11dHTw+OOP84tf/CLWGE8//XRmz57N+eefH+s6iH5/Xjz//PO0trYWGFjPP/88F110EV/96lc9J5o4NDY2MmDAAM8/ridOnEhdXR3vv/8+gwbl//Nx77338vTTTzNo0CD+/e9/A7B06dJsLvB//etfgJMmYe+99+aRRx5hyZIlHHnkkTz++OMcffTRPP7443ntmjXTTOrr6/MKTQcxa9Ysz9/t66+/zgEHHMCf/vQnwDEwXnjhBU488UT+9re/MXbsWN59911uvfVWvvWtb1FbW1uQfghgl112YcqUKTz88MOe/e+999587GMf429/+xvHHHMMTU1NDBkyhAceeID77ruPBx54INJ9ePGXv/zFM63DfvvtxwEHHMDHPvaxgmP/+te/qKmp4eabb+aOO+4oyDPuHr/nnntoaWmhqamJJ598MpvGIej3EfYbcLnxxhv5wx/+ADh/NM6fP9/z/kpNoQBw9tln83//939ZA/K2227jhBNOyKaH+sMf/sC1117LwoULs6vKwq4JOx71HCFE5yE7SnaUF7KjHGRHOciOCqcYO8qlo6PDM/3at7/9bS6++GKuueYaBg0axGOPPUZNTU3BfW7atCl2FIUQIhlkR8mO8kJ2lIPsKAfZUeHEtaP23XdfZsyYwTe/+c1sGw888AC77LIL5557LiNHjgw8DoS2IfoHEvx6KH/+85/5zne+w69+9SvWr1/PjBkzuOKKK0JTA9x1112MHz++YEK59NJL+cUvfsFDDz2UV1DV5f777+f6669n3bp1gLO65MYbbwTgrbfeYr/99uOyyy7zvDZp9t57b8466yw++MEP5q2usZk3bx4XXHABv/rVr6isrGT9+vX8/e9/j7UKdMGCBWzatClbZDkqJ510EieeeGJRBlbU+zN56623uPzyy3nxxRdJpVJcdNFFWcOjoaGBHTt2MGvWLE455ZTY47F59NFHfdNdDBgwgGnTpvGf//wnG4IPzqqYc845h6amJv75z3/mXfP//t//A5yJ+0tf+hK33norO+20EwcddBB//etfufnmm6mqqmLSpEm8/PLLeSuoGhsbC5wHAIsXL2bKlCmh97Jt2zZWr17NpEmTCo4dddRR/OhHP8oWvG5sbKSuro5PfOITjB07FoDly5czceJEXnjhBc/+tm3bxvr169lvv/0Cx3Hvvffy3//93yxYsIDnn3+eyy+/nLFjxzJnzpyinBgvvvgil156KU8//TR77rknP/rRjzjrrLPyzvnyl7/MmDFjCq7917/+xTXXXMMJJ5zAmDFj2GWXXQqO//CHP/RdMeX3+4jyGwDH4Nq0aVN2RdU+++zDe++9x/bt2ztlBfcPfvADLr30Ui6++GJqamp477338moKdHR00NzcnOeQCrsm7HjUc4QQnYfsKNlRJrKj8pEdJTsqKsXYUXPmzOGPf/wj8+bNY8OGDRx66KFMnDiRW265BYAjjzySSy+9lNNPP52dd96Zuro6nnnmmYIaQUOHDmX8+PGxUuMJIZJBdpTsKBPZUfnIjpIdFZW4dtSAAQO4++67+elPf0p7ezvNzc00NjYyf/78bIrzsONR2hD9gLToUZx99tndPYReQUdHR3rEiBHpJ554IvC8sOf5ve99L/2JT3yiqDFceeWV6fnz58fuMw5JtBW3jS9+8Yvpbdu2+R6fM2dO+rLLLovV5vbt29ODBw9OL168OPC8devWZb+P9vb29N577+05lqOOOir9+uuvF+y373XWrFnp+++/37e/T3/60+mtW7em0+l0+oEH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/QCEhf9PssPrlzleu+zw+mWO1w5AWPj/JDu8fpnjtcsOr1/meO3QGSKWZVldfRIAAAAAAAAAAAAAMsMMPwAAAAAAAAAAACCPEfgBAAAAAAAAAAAAeYzADwAAAAAAAAAAAMhjBH4AAAAAAAAAAABAHiPwAwAAAAAAAAAAAPIYgV8v8Omnn+rQQw/VPvvso7322kvPPvus537t7e06//zzNWnSJE2YMEGPPfZYJ59p9xT09bv00ks1ZcoUTZ8+XdOnT9dBBx3UyWfaPfznP//R0KFDtWjRooTt8+bN04QJEzRhwgT99re/TXqMxx9/XBMnTtSkSZN0/vnnq729PYdn3L1k+/qtWrVKNTU1sffh9OnT9cwzz+T4rLsHv9eutrZWM2fO1KmnnpryGL35vQfAH7VU5qij0kctlTnqqOxQSwHIBeqozFFHpY86KnPUUdmhjkK3YaHH+/rXv2798Y9/tCzLsp599lmroqLCqq+v77DfDTfcYB1yyCGWZVnWqlWrrKqqKmvt2rWdeq7dUdDXb86cOdZHH33UyWfXvcybN88655xzrOHDh1tPP/10bPsbb7xhjRw50tq4caPV2tpq7bHHHtY///lPz2N88cUX1pAhQ6yPP/7YsizLOuigg6wbb7yxM06/y4Xx+n300UfWnDlzOueEuxG/127NmjXWt771LevYY4+1TjnllKTH6M3vPQDJUUtljjoqPdRSmaOOyg61FIBcoY7KHHVUeqijMkcdlR3qKHQnzPDr4VavXq3nn39eJ598siRp33331cCBA/XII4902PfWW2/VaaedJkkaNWqUJk2apPnz53fq+XY36bx+kA488EDddNNNKigoSNh+xx136PDDD9fAgQNVUFCgk046SbfeeqvnMebPn68pU6Zohx12kCSddtppvvv2NGG8fr2V32tXUlKiBx98UKNHj055jN783gPgj1oqc9RR6aOWyhx1VHaopQDkAnVU5qij0kcdlTnqqOxQR6E7IfDr4T7//HP16dNHgwcPjm0bMmSI3nzzzYT9WlpatGzZsoT/gMaOHatXX3210861Owr6+jnmzJmjfffdVwcddJBeeumlzjrNbmPEiBGe21955ZXA7y2vfd966y21traGe7LdUBivnyQ999xzOvDAA7XvvvvqmmuukWVZoZ9rd+P32pWXl6t///6BjtGb33sA/FFLZY46Kn3UUpmjjsoOtRSAXKCOyhx1VPqoozJHHZUd6ih0JwR+PdyIESPU3t6utWvXxratXbtWGzZsSNivtrZW7e3tGjRoUGxbeXm51q1b12nn2h0Fff0k+wq0k046SYsXL9bFF1+sAw88UJ9++mlnnm63tW7dusDvLa9929vbVVdXl/Pz7K7Sef2Ki4s1YcIEPf744/rnP/+pe++9V9dee21nnWpe470HwAu1VOaoo8JDLZU56qjOw3sPgBt1VOaoo8JDHZU56qjOw3sPYSHw6+G23357feMb39ANN9wgSXr00Ue1Zs0aFRUVee4fiUQSvu8tV2L4Sef1O+200/Stb31Lkt1qYfLkybrrrrs69Xy7s3TeW+59U+3fGwR9/YYNG6bf/e53Kigo0MCBA3X++efTAiANvPcAuFFLZY46KlzUUpmjjuo8vPcAmKijMkcdFS7qqMxRR3Ue3nsIA4FfL/D3v/9dH3zwgaZNm6YnnnhChxxySKwfsKOyslJ9+vRRfX19bFt9fb2qq6s7+Wy7nyCvn5eRI0fqk08+6YQz7P6qq6sDv7e89u3Tp48qKytzfJbdVzqvnxvvw+B47wHwQy2VOeqocFBLZY46qvPw3gPghToqc9RR4aCOyhx1VOfhvYewEPj1AkOHDtX8+fO1ZMkS3Xjjjfr44481ffr0hH2Ki4s1btw4rVixIrZt+fLl2nvvvTv5bLufIK+fJF199dUJ369bt07bbbddJ51l9zZhwoTA7y2vfceNG+d7BWBvkM7rt2DBAq1evTr2Pe/D4HjvAfBDLZU56qhwUEtljjqq8/DeA+CFOipz1FHhoI7KHHVU5+G9h7AQ+PUCJ598sjZt2iRJeuKJJ1ReXq7Jkydr0aJFOu6442L7nXnmmZo7d64kafXq1Vq6dKlOOOGELjnn7iTo6zdv3jy9//77kqT33ntPzz77rI455pguOZ1S+NYAAQAASURBVOfuZtasWXrooYe0adMmbd26VXfffbfOOussSVJbW5sOPPDA2C+1448/Xi+++GLsKqB58+bF9u2t0nn93n333Vjrjm3btum2227T8ccf32Xn3p3x3gMQFLVU5qijwkEtlTnqqNzhvQcgCOqozFFHhYM6KnPUUbnDew+50q+rTwC5N3ToUE2bNk2DBg3SyJEjde+990qS6urqEq4cOPfcc7Vy5UpNnjxZbW1tuvPOOzV06NCuOu1uI+jrd8EFF+jUU09V37591dTUpLvuukujR4/uqtPuEs8884zmzJmjL774Qj/60Y80Y8YMXX311dpzzz112WWXaf/995ckfe9739N3vvMdSdLWrVv17rvvauPGjZLsnt/z5s3TkUceqUgkoilTpuicc87psufUmcJ4/Y466ij9+te/1je/+U01NTVp6tSp+tWvftVlz6mz+L12knTQQQfpnXfeUXNzs6ZPn66FCxeqoqKC9x6AwKilMkcdlR5qqcxRR2WHWgpArlBHZY46Kj3UUZmjjsoOdRS6k4jFyo8AAAAAAAAAAABA3qKlJwAAAAAAAAAAAJDHCPwAAAAAAAAAAACAPEbgBwAAAAAAAAAAAOQxAj8AAAAAAAAAAAAgjxH4AQAAAAAAAAAAAHmMwA8AAAAAAAAAAADIYwR+AAAAAAAAAAAAQB4j8AMAAAAAAAAAAADyGIEfAAAAAAAAAAAAkMcI/AAAAAAAAAAAAIA8RuAHoMs8++yzWrx4cVefBgAAQN6hjgIAAMgMdRSAnorAD0CXWLlypR599FHtu+++WR3nwgsvVENDQ0hnBQAA0P1RRwEAAGSGOgpATxaxLMvq6pMAkF9uueUWLViwQM8884z23ntvjR49Wlu3blVtba1qamp02WWXafvtt096jGOOOUa33367Bg0alNW5fPLJJ7r88st12223ZXUcAACAzkAdBQAAkBnqKABIrl9XnwCA/HP22Wdr9OjR2m+//XT33Xdrt912kyS1t7frrLPO0tSpU7V8+XINGDDA8/5LlizRkCFDsi6uJGnkyJHaZZdd9OCDD+qII47I+ngAAAC5RB0FAACQGeooAEiOlp4AMrJ48WKNHDkyVlxJUp8+fTR+/Hh9+umnWrFihe99b7rpJn3/+98P7VzOOussXXfddaEdDwAAIJeoowAAADJDHQUA/gj8AGRk8eLFOuCAAzpsf+ihh7TDDjto9913973vc889p7333ju0cykvL9egQYP05ptvhnZMAACAXKGOAgAAyAx1FAD4o6UngLS1tbXphRde0C233BLb1tTUpMsuu0y1tbV68sknVVJS4nnflStXqqqqSoWFhbFtd999t6644gq1tbVpwYIF+te//qWNGzfqrbfe0vz58/XQQw/p888/19KlSzVx4kRdfPHFHY47bdo0Pf7449pjjz3Cf8IAAAAhoY4CAADIDHUUACRH4Acgba+99poaGhr09ttv63e/+51WrlypJ554Qn/5y1/029/+VpFIxPe+n332maqrqxO2nXjiierfv79OP/10PfPMM7ECav/999d3v/td3XDDDdpjjz30ySefaIcddtDJJ5/cYRHmPffcU3fddVf4TxYAACBE1FEAAACZoY4CgOQI/ACk7bnnntMOO+ygq666Krbtl7/8pW688UYdcsghSe+7fv16z8WRy8vL9eWXX+qYY46Jbdt+++312Wefxa6SGjFihCTpo48+6lBgVVRU6IMPPsj4OQEAAHQG6igAAIDMUEcBQHKs4QcgbYsXL9bkyZMTtn3961/XE088odra2qT3bW9vT3r7yJEjY1/36dOnw/eS3cLBbfDgwdq4cWPKcwcAAOhK1FEAAACZoY4CgOQI/ACk7bnnntOUKVMStr3xxhuSpK1btya9b1VVlerr60M/p7a2toQ+7AAAAN0RdRQAAEBmqKMAIDkCPwBpWbFihdatW9fhiqqXX35ZkjRw4MCk999uu+1UV1cX+nlt2LBBQ4YMCf24AAAAYaGOAgAAyAx1FACkRuAHIC3PPvus+vXrp7322ithe79+9pKgRUVFWr16te655x7P+48ePVpr167Vtm3bErZblpXw2fna/b17H0dtba2GDx+ewTMCAADoHNRRAAAAmaGOAoDUCPwABLJkyRIdc8wx+vWvf6329naddNJJ+s9//hO7/dJLL9WkSZP0i1/8QvPmzdNRRx3leZw+ffpo8uTJsZYLknT33XfrBz/4gSTpgAMO0FtvvaUzzzxTDz/8sB5++GGdeeaZeuutt3TAAQdIkn74wx/q7rvvTjjuK6+8ogkTJoT9tAEAALJGHQUAAJAZ6igACC5ieV2aAAA59MQTT+jZZ5/VVVddFdoxDzzwQN18883aZZddQjsmAABAd0MdBQAAkBnqKAA9HTP8AHS6mTNn6o033lBjY2Mox/v000/V3t5OcQUAAHo86igAAIDMUEcB6OkI/AB0iTlz5ujyyy8P5VjXX3+9fv3rX4dyLAAAgO6OOgoAACAz1FEAejICPwBdYtKkSdprr7301FNPZXWc119/XS0tLdpvv/1COjMAAIDujToKAAAgM9RRAHoy1vADkNeuvPJK/fznP1dBQUFXnwoAAEBeoY4CAADIDHUUgO6IwA8AAAAAAAAAAADIY7T0BAAAAAAAAAAAAPIYgR8AAAAAAAAAAACQxwj8AAAAAAAAAAAAgDxG4AcAAAAAAAAAAADkMQI/AAAAAAAAAAAAII8R+AEAAAAAAAAAAAB5jMAPAAAAAAAAAAAAyGMEfgAAAAAAAAAAAEAeI/ADAAAAAAAAAAAA8hiBHwAAAAAAAAAAAJDHCPwAAAAAAAAAAACAPEbgBwAAAAAAAAAAAOQxAj8AAAAAAAAAAAAgjxH4AQAAAAAAAAAAAHmMwA8AAAAAAAAAAADIYwR+AAAAAAAAAAAAQB4j8AMAAAAAAAAAAADyGIEfAAAAAAAAAAAAkMcI/AAAAAAAAAAAAIA8RuAHAAAAAAAAAAAA5DECPwAAAAAAAAAAACCPEfgBAAAAAAAAAAAAeYzADwAAAAAAAAAAAMhjBH4AAAAAAAAAAABAHiPwAwAAAAAAAAAAAPIYgR8AAAAAAAAAAACQxwj8AAAAAAAAAAAAgDxG4AcAAAAAAAAAAADkMQI/AAAAAAAAAAAAII8R+AEAAAAAAAAAAAB5jMAPAAAAAAAAAAAAyGMEfgAAAAAAAAAAAEAeI/ADAAAAAAAAAAAA8hiBHwAAAAAAAAAAAJDHCPwAAAAAAAAAAACAPEbgBwAAAAAAAAAAAOQxAj8AAAAAAAAAAAAgjxH4AQAAAAAAAAAAAHmMwA8AAAAAAAAAAADIYwR+AAAAAAAAAAAAQB4j8AMAAAAAAAAAAADyGIEfAAAAAAAAAAAAkMcI/AAAAAAAAAAAAIA8RuAHAAAAAAAAAAAA5DECPwAAAAAAAAAAACCPEfgBAAAAAAAAAAAAeYzADwAAAAAAAAAAAMhjBH4AAAAAAAAAAABAHiPwAwAAAAAAAAAAAPIYgR8AAAAAAAAAAACQxwj8AAAAAAAAAAAAgDxG4AcAAAAAAAAAAADkMQI/AAAAAAAAAAAAII8R+AEAAAAAAAAAAAB5jMAPAAAAAAAAAAAAyGMEfgAAAAAAAAAAAEAeI/ADAAAAAAAAAAAA8hiBHwAAAAAAAAAAAJDHCPwAAAAAAAAAAACAPEbgBwAAAAAAAAAAAOQxAj8AAAAAAAAAAAAgjxH4AQAAAAAAAAAAAHmMwA8AAAAAAAAAAADIYwR+AAAAAAAAAAAAQB4j8AMAAAAAAAAAAADyGIEfAAAAAAAAAAAAkMcI/AAAAAAAAAAA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D7d+/etfJ9y2du1a65prrgntsUzm+6Mz3wPpGDlypPW3v/0t9v2nn35qSbJWrFjhe5+5c+daTz/9dFbHzORxAWSPOsofdVQcdRR1lIk6yl8m9cztt99u7bPPPrHvV69ebZ188snWxo0bA93e1tZm/eEPf0g45rp166wzzjgjlOcEwB91lD/qqDjqKOooE3WUv0zqqMMPP9yqra1N2Pazn/3MeumllyzLsqzZs2db48ePj9120003WZKsF198MbYtyD7o2WjpiZQ2bNgQ+3rgwIGhH3/48OE6/fTTddttt2nNmjWe+zz77LPae++9VVJSEvrjOx555BEddthhKfe7+eabdc455wQ+bi6e3+LFizVt2jQVFBQkbH/00UfVt29fHXfccb73/fvf/65DDjlEEydO1H//+9+k7QX+8Y9/6NBDD03Y9txzz2nvvfdO2NbW1qbKysqEfuajRo2SZE/jD1N5ebkGDRqkN998M/B9vv/97+uuu+4K9TyysXHjRpWXl4d2vM2bN2vgwIE69dRTdccdd6itrS1223PPPaevf/3roT2WyXx/dOZ7IKj33ntPn3zyiXbffffYthEjRmjQoEF6+umnc3bMXDwugPxFHZWIOoo6KlvUUZ0j03rm+uuv10EHHRT7fuTIkbrzzjtj//+luj0SiWj27NkJx5wzZ44uu+yyUJ4XgPxCHZWIOoo6KlvUUZ0j0zqqX79+mj17tpqammLbPvjgA+24446SpBtuuEH//e9/Y7d9+OGH6t+/v0aPHh3bFmQf9GwEfj3M3Xffreuvv97ztt/97nd6+OGH0z7mn/70J0nSIYccov322y+r8/Pzi1/8Qu3t7frd737nefvNN9+ss88+O2HbH//4R51yyimaO3euHn30Uf3+97/Xaaedpvvvvz/tx1+7dq1eeumllAXWpk2btH79eu20005pHT+T55fMc889p29+85sJ2x5//HFddNFF+utf/6pvfOMbnvdbtGiRTj/9dO23336qqqrSAQccoF122cVz302bNqlPnz4qKyuLbVu5cqWqqqpUWFiYsG///v318ccf6+qrr45tW7VqlSTFfilJdiEwatQo1dbWxrbNnTs3recuSdOmTUtrYd7DDjtMjzzySFqPkQsPP/ywZs+erbPOOksrV67U7Nmz9f7772d1TMuyFIlEJEmzZs3S559/rn/84x+x21955ZUOBXEY3O+PoO+B5cuXa/z48SopKVFxcXGHD6enfxicws79h+GAAQO0evXqpPf997//rSuvvFKXXXaZTjjhhNh7Nsgxs3lcAF2LOoo6ijqqI+oo6ihTsnpm/fr1euONNzRw4ED94Q9/0KWXXqrjjjsu9nNKdbtkB37moPOzzz6r4cOHa/jw4aE9NwC5QR1FHUUd1RF1FHWUKdW40HnnnacHHnhAe+65pxYvXqzrrrtOxxxzjIYMGdJh340bN2r+/PmaN2+eBg0a5Hm8IPug5+nX1SeAcJ144om65JJL9Kc//SlhwdirrrpKffv2DXTFkCRdfvnluuWWW9TQ0KDly5friCOO0P/+7//G/iMP28iRI3Xqqafqtttu0y9+8YuEP+gWL16svfbaS6WlpbFtH3zwgaqrq3X00UfrpJNO0t13360LL7xQn3/+uXbddVfNmDEjrau/Hn30UQ0dOlSTJ09Out9//vMfHXDAATl/fsl8+eWXeuedd/TZZ5/FCraVK1fqjTfe0COPPKI99tjD977Tp0/X5s2bAz3OI4880uFqqs8++0zV1dWB7r9gwQLtuuuuOvzww2PbnnvuObW3t6uqqiq27f7779fUqVMDHdOx5557pnWFVN++fbXjjjtq5cqVvgVlrp133nkaMmSIbrjhBl199dX66U9/qo0bN+rAAw/U008/nfEVVsuWLdPYsWMlSTvttJOmT5+uW2+9NfZvvbW1tcOVd2Hwen+4ud8Dmzdv1kUXXaRrr71W27Zt0wsvvKDvfe97+vOf/6wf/vCHikQi2nnnnUM7R+dq0P79+ydsLysrS7hS1K1v377aaaedNGvWLEnSZZddpiOOOEKLFy8OdMxMHxdA16OOoo6ijuqIOoo6ypSsnvn4448l2YOK//znP1VYWKiXX35ZX//61/Xee++lvN1rIOoXv/hFwuAhgO6LOoo6ijqqI+oo6ihTqnGhb37zm7r77rt1/PHH6xvf+IYOO+wwLViwIGGf5uZm/f73v9fixYv1k5/8REcffXSH4wTZBz0XgV8PdPnll2vOnDm67rrr9OMf/1hXXnmlCgoK9POf/zzwMS655JLYNPwPPvhAu+66q/bcc08tWrQo4eqIMF188cWaO3eufvvb3yZcFXbjjTfqjjvuSNj31Vdf1YwZM3TzzTdr6tSpOuSQQyRJgwYNUkNDg1577bUOVxwl8/DDD+uQQw5JWUAecMABOuOMM3TWWWel8cxs6Ty/ZJ5//nkVFhbqT3/6U8KVTffff7/22WcfvfDCCwlTxjP1j3/8Q7fffnvCtvXr1we6IuSNN97QwoUL9eSTT6qoqCi2/Zlnnkm42qu9vV1LlizRz372s9i2uXPnyrIsNTQ0aMSIETrqqKM6HL+ioiKtafltbW364IMPsiqubr31Vv3+97/PqB3A1VdfrbVr1+qGG26QJG3dulX9+vVTZWWldtllF9177736n//5n4zOa/HixTriiCNi359++uk6+eSTtXr1apWXl2vAgAEJ+//73//WhRdeqJqaGs2YMUPt7e166623tGnTJt199916+umn9Ytf/EIjR47UgQceqObmZr3xxhu69NJLYy0RJO/3h8nrPbB48WJdf/312mGHHXTrrbfq0EMP1S677KKSkhLP1gJtbW066qij1NzcnPJ1GDRokO69996EbX379k347Ni6dau2bdvme6zvf//7Cd8fffTRuvTSS7V48eJAx8z0cQF0D9RR1FHUUYmoo+Koo5LXM04br7322iv272vixIlqbGzUX/7yl9j/K363u/+ffeWVV9TU1KSKioqUzwFA90AdRR1FHZWIOiqOOir1uNCaNWv04IMP6sknn9R1112nhx9+WN/+9rf11FNPqV8/O8YpLi7WnDlzJElHHXWUlixZovvuu099+sQbOQbZBz0XgV8Pddlll+nSSy/VQQcdpP333z/hF1i6dtppJ02bNk3PPfecfvnLX2r+/PkJt99777168MEHUx7nhBNO0He/+13f20eNGqWTTz5Zt912my666CINHz5cixcv1te+9rUOV0R873vfk2S3eJk+fXps+7JlyySpwy+VZBobG/XUU0/p73//e8p9Bw0apKqqKr3//vtpX/mRzvNLZvHixZowYUKHNgZHHXWUTj/9dP3hD3/QvHnz0jo3t02bNqlv374J7RMkuyBKpaGhQWeeeaYeeOCBDleoLVq0SKeeemrs+2XLlmnLli2x/T777DP95S9/0YsvvijJHgw45JBDEoo0SRo8eLA2btwY+Pk8/PDDSd97QUyePDnlFXdempqa9Jvf/CbWo7ulpUXFxcWx25ubmz2vcnvkkUd08803a/78+Ro8eLDv8T/99FNtt912se+POuoonXfeebr99ts1bdq0Dlerfetb39KPf/xj/eQnP9E+++wT2+4U/fvtt5/a2tp0wQUXaMqUKZLs/t8/+9nPYv9G/N4fDr/3wMEHHxz7+v/+7/90+umn67333kt4PUx9+/bVQw895PvcU3FaHrjft1u2bEmrlYHz73Pp0qUaP358ymOG9bgAug51FHVUNqijOqKO6h11lBPMudvNlZeX6+WXX44NCvrd7jZ//nzttttumT0BAF2GOoo6KhvUUR1RR/WOOsqyLJ1wwgm6/fbbtfPOO+uAAw7Q7bffrvPOO09/+9vfEt6/jnPOOUff+ta3dNddd+mUU07xPG6QfdCzEOt2U88884wuvfTStH6J5NL2228vSXr99dc73HbsscdqwYIFKT+C/IK7+OKL1dbWpt/+9reS7P/03Yu2O5wp2Pvuu29s2+LFi1VRUaFx48YFfm5PPvmk+vTpowMPPDDQ/ueee65uvvnmwMc3pfP8/Dz33HOaNm1ah+3t7e3aunWrtmzZktG5mR599FHP6fFVVVWqr6/3vZ9lWTr77LN19dVX68ADD5RlWfrwww8l2b90X3311YQFexcvXpywOPSzzz6rvfbaK3b7yJH/n713j4+rKvf/37ttrm3SNE2bNhUIIFhqRYHSQvUgKGKtePlyOSooHBD9KXxRD0eP4lFQ8fjlXL7oV0UQjlwOFz1yOQJKEY9SkWspoNgbFGiAkjZp0qZJm8mFZH5/7Fkza1bWvs6ezCR53q/X7szsy9pr79nNeub5rOd5DsgaWzojIyNjDEw//vM//7PgQe33v/99rJoBGzZsYGRkJJu3fN26dRx77LFA7hm2FTFua2tj/fr1gSkv0ul03ufq6mrOPvtsbrjhBh5++OExBlZXVxdbt27N9kflr1dGWm9vL1u2bMn7Hl599dW8FB9ez4fqj9czoPehr6+P6dOn89prrzE8POx7jXFRsz87Ojqy60ZHR+np6eGQQw6xHqPy+v/7v/97dp0q/DxjxoxQbcY5ryAIySJ2lNhRXogdJXaUjthR3sSxZw466CBmzpxpnbk+NDQUuN3koYceyku9JgjC+CB2lNhRXogdJXaUjthR3sSxozZu3MicOXPyBP0LLriAb33rWzz55JPs3LmTlpYWvv3tb2e3H3jggQDZZzXMPsLkRyL8ypTTTz+d7u5uUqkU//Iv/8Lg4CBA6Lzal112GY2NjaxZs4bvfe97/Mu//Atf/epXY/dn165dANYioUlyyCGHcPbZZ3P99dfzrne9i7e//e2es6OefvpphoeHWb58eXbdHXfcwec+97lIg+8999zDKaec4jmrw+Rtb3sbL774Iv39/aG/D0WU67MxMDDA008/bU2Hceedd5JKpawpB6LiFR6/cOFCuru7PY/753/+Z84555zsLLdXX32VtWvXcsghh/DYY4/xxhtv5M3o/cMf/sA73/lOBgcHueaaaxgZGcnLdV9XV8frr78+5jx79uwJ/Sxu2bKFN73pTWPu82uvvcbjjz/OmjVruPHGG/nOd77DW97yFo477jhuueUW3va2t/HYY4/x1a9+lcbGRv7whz9kC4ZHoaGhIW/G3Lp167JG9c9+9jNWrFhhzRn/hS98gS984Qu+bbe1tWUHbp0LLriAq6++mscee2zMdT/88MO87W1vo6amhq6uLtauXcsZZ5yRzef9yCOP8I53vCP7f6i9vZ2HHnooL2e4X/oEv2dAcfvtt2dna3V3d7Njxw5rW4WmUDj44IN585vfzPPPP8/b3vY2AJ5//nkGBgZ4z3veY21HpTfQn1OVNuPEE08M1Wac8wqCkCxiR4kdZUPsKBexo1zEjsqRlB1VWVnJSSedxPbt27Pr3njjDbq7uzn++OMDt+uoNF+nnHJKYP8FQUgWsaPEjrIhdpSL2FEuYkflSNIflUqlxqx/y1vewsjICDt37mTHjh15NQCVaKoExjD7CJMfEfzKlDe96U3s3r2bo48+mq1bt7Jz504qKiryQpC9+MY3vkFzczMXX3wx4M7iufLKK7nyyiv52te+Frkv27Zt4+GHHwbc2UTF5p/+6Z+49dZbufjii3nxxRc993v44YcZHR2lu7ubRYsWccsttzA8PMzXv/710OcaHR3lN7/5Df/2b/8WqY9nnXUWt99+OxdccEGk4yD89dl48sknGRoaGjOj6sknn+Siiy7i//v//j8+9rGPRe6TTm9vL9OmTbOmdVi8eDEdHR288cYb2dzRiv/6r//ioYceYsaMGTzzzDOAOztF5QL/4x//CLhpEg477DDuvfdennvuOd7znvfwm9/8hlNOOYXf/OY3ee2+8cYbY/JdgztY6YWm/bjmmmusz+0LL7zA0Ucfzc9//nPArdP21FNP8ZGPfITf/va3NDc38/rrr3PDDTfwpS99iba2tjHphwAWLVrEsmXLuOeee6znP+yww3j729/Ob3/7W97//veTSqWorq7mrrvu4pe//CV33XVXqOuw8atf/cqa1uEd73gHRx99NG9/+9vHbPvjH/9IQ0MD119/PTfffPMYo0Rt/8UvfsHg4CCpVIoHH3wwm8bB7/kIegYU1157LT/96U8B90fjI488Yr2+QlMoAJx77rn853/+Z9aAvPHGG/nwhz+cTQ/105/+lO9973s88cQTLFy4kJkzZ3LBBRfk5fb/+c9/zqc+9ans/QxqM+w+giAUD7GjxI6yIXaUi9hRLmJHBRPVjgL4+7//ey6++GK+853vMGPGDH7961/T0NCQvY6g7Yrdu3dHjqIQBCEZxI4SO8qG2FEuYke5iB0VTFQ7asmSJYyMjPDf//3f2TToAwMD3HHHHVx11VXMnz+fk08+mS9+8YvZc9x1110sWrSI888/H4AjjzwycB9h8iOCX5lyxx13cMkll/D973+fzs5OTj75ZC677LLA1AC33norLS0tYwaUr33ta/zbv/1b3h8NnTvvvJMf//jH7Ny5E3ALLV977bUAvPzyy7zjHe/g0ksvtR6bNIcddhjnnHMOb37zm/Nm15j86U9/4nOf+xzf//73qa2tpbOzk9/97neR8o8/9thj7N69O1tkOSynnXYaH/nIR2IZWGGvT+fll1/m61//Ok8//TSO43DRRRdlDY+enh76+/u55pprOPPMMyP3x+S+++7zTHcxbdo0VqxYwV/+8pdsCD64s2LOO+88UqkUf/jDH/KO+b//9/8C7sD9d3/3d9xwww3MmzeP5cuXc//993P99dcza9YslixZwp///Oe8GVS9vb15+cAV69evZ9myZYHXsm/fPl599VWWLFkyZtt73/tevvGNb2QLXvf29tLR0cEJJ5xAc3MzAJs3b2bx4sU89dRT1vPt27ePzs5O3vGOd/j247/+67/45je/yWOPPcaTTz7J17/+dZqbm1mzZk0sJ8bTTz/N1772NR566CEOOeQQvvGNb3DOOefk7fOZz3yG+fPnjzn2j3/8I9/5znf48Ic/zPz581m0aNGY7f/0T//kmSLB6/kI8wyAa3Dt3r07O6PqiCOOYMeOHezfvz/S/92wfPWrX+VrX/saF198MQ0NDezYsSOvpsDo6CgDAwN5edW/9KUv8d3vfpf9+/ezf/9+DjvssGyx4zBtht1H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lewLqe6zW3gG5/Nc6SYi0U455RTgcOD/Ax7i2mu/zqRJk4b5rERERESq38yZM/nc5z4F/BH4A/BaXv3qVw/zWYmIiIhUv7Fjx3LnnT8Cngb+B5jO+eefP8xndeA6aLhPYKTr7e0F4JlnnhnmMxEZek98t/z7hW/A73DjBY/swM8KduLPiA16bE4AOor3zdK9HcX7k4rb1Pj76oMn7h54/CefrPQdiIxchx12GOPHj4/f0PDYYzdzzDGvAZq44IILBufERFJSLCUiIkMtSxx1+eWX87nPXQV08+KLvxqcExNJSXGUiIgMtSxx1Fve8hbgVcBz3HHHHYwdO3ZQzk2U8KvYCy+8AMAZZ5wxvCciciDrhYULh/skRKrLE088wdFHH53qNa9+9av5058eZPr06Rx0kEIAqQ6KpUREZKhliaMmTZrE2rV/Zs+ePcyePXuQzkwkHcVRIiIy1LLEUQCbNv2R9evXc8IJJwzCWUmg4HmeF7+ZhOnq6uKee+7h4IMPpra2drhPJ7VnnnmGM844g1tvvZXDDz98uE9nRNG1q4yuX3a6dpU5UK5flhlVItVoJMdSB8rfk+Gi65edrl1ldP2yO1CuneIoOVAojhq9dP2y07WrjK5fdgfKtVMcVd00vb9CDQ0N/MM//MNwn0bFDj/88EyZedG1q5SuX3a6dpXR9ROpDgdCLKW/J5XR9ctO164yun7Z6dqJVAfFUaLrl52uXWV0/bLTtZPBNGa4T0BEREREREREREREREREslPCT0RERERERERERERERGQEU8JPREREREREREREREREZARTwm+Umz59OldccQXTp08f7lMZcXTtKqPrl52uXWV0/UQkL/p7Uhldv+x07Sqj65edrp2I5EV/Tyqj65edrl1ldP2y07WToVDwPM8b7pMQERERERERERERERERkWxU4SciIiIiIiIiIiIiIiIyginhJyIiIiIiIiIiIiIiIjKCKeEnIiIiIiIiIiIiIiIiMoIp4SciIiIiIiIiIiIiIiIyginhNwq8+OKLvO1tb+MNb3gDr3vd67j33nud2/X19XHZZZexZMkSFi9ezO233z7EZ1qdkl6/z33ucyxbtowTTzyRE088kdNOO22Iz7Q6/P73v6e5uZm777677PGVK1eyePFiFi9ezFe+8pXIfdxxxx0cd9xxLFmyhMsuu4y+vr5BPOPq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", + "image/png": "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", "text/plain": [ - "
" + "
" ] }, "metadata": {}, @@ -195,86 +170,55 @@ } ], "source": [ - "desc.plotting.plot_section(eq0, name=\"|F|\", norm_F=True);" + "num_transit = 20\n", + "num_well = 10 * num_transit\n", + "num_pitch = 45\n", + "data = eq0.compute(\n", + " \"effective ripple\",\n", + " grid=grid,\n", + " theta=theta,\n", + " Y_B=100,\n", + " num_transit=num_transit,\n", + " # Optional; improves performance if num well < Y_B * num transit.\n", + " num_well=num_well,\n", + " # number of quadrature points for each bounce integral\n", + " num_quad=32,\n", + " # number of pitch angles for integration over velocity coordinate\n", + " num_pitch=num_pitch,\n", + " # number of pitch angles to compute simultaneously.\n", + " # Reduce this if insufficient memory. If insufficient memory is detected\n", + " # early then the code will exit and return ε = 0 everywhere. If not detected\n", + " # early then typical OOM errors will occur.\n", + " batch_size=None,\n", + ")\n", + "\n", + "eps_32 = grid.compress(data[\"effective ripple\"])\n", + "fig, ax = plt.subplots()\n", + "ax.plot(rho, eps_32, marker=\"o\")\n", + "ax.set(xlabel=r\"$\\rho$\", ylabel=r\"$\\epsilon$\", title=\"Precise QH\")\n", + "plt.tight_layout()\n", + "plt.show()" ] }, { "cell_type": "markdown", - "id": "0f9f5be7-1611-4152-955d-24837cb18a75", + "id": "b6389a76-18ee-4fe8-89d5-a20ae80a2b24", "metadata": {}, "source": [ - "# $\\epsilon_{\\mathrm{eff}}^{3/2}$ calculation for an unoptimized equilibrium" + "## Calculating effective ripple for Heliotron" ] }, { "cell_type": "code", - "execution_count": 7, - "id": "2be5f486-8b0b-444e-89a6-1379442ed3c0", - "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "surface 0 took 7.28 s\n", - "surface 1 took 1.79 s\n", - "surface 2 took 1.83 s\n", - "surface 3 took 1.77 s\n", - "surface 4 took 1.76 s\n", - "surface 5 took 1.76 s\n", - "surface 6 took 1.81 s\n", - "Ripple calculation finished!\n" - ] - } - ], - "source": [ - "# Flux surfaces on which to evaluate ballooning stability\n", - "surfaces = [0.01, 0.1, 0.2, 0.4, 0.6, 0.8, 1.0]\n", - "\n", - "# Field lines on which to evaluate ballooning stability\n", - "alpha = np.linspace(0, np.pi, 1, endpoint=False)\n", - "\n", - "# Number of toroidal transits of the field line\n", - "ntransit = 3\n", - "\n", - "knots_per_transit = 128\n", - "\n", - "# Number of point along a field line in ballooning space\n", - "N0 = ntransit * knots_per_transit\n", - "\n", - "# range of the ballooning coordinate zeta\n", - "zeta = np.linspace(-np.pi * ntransit, np.pi * ntransit, N0)\n", - "\n", - "ripple_array = np.zeros(len(surfaces))\n", - "\n", - "for j in range(len(surfaces)):\n", - " tic = time.time()\n", - " rho = surfaces[j]\n", - "\n", - " grid = Grid.create_meshgrid(\n", - " [rho, alpha, zeta], coordinates=\"raz\", period=(np.inf, 2 * np.pi, np.inf)\n", - " )\n", - "\n", - " ripple_array[j] = np.squeeze(\n", - " grid.compress(eq0.compute(\"effective ripple\", grid=grid)[\"effective ripple\"])\n", - " )\n", - " toc = time.time()\n", - " print(f\"surface {j} took {toc-tic:.2f} s\")\n", - "\n", - "print(\"Ripple calculation finished!\")" - ] - }, - { - "cell_type": "code", - "execution_count": 8, - "id": "04570eb8-03d4-4f74-aaa8-5809de1bd0dd", + "execution_count": 5, + "id": "36934653-6515-4c86-854e-062adbee9dec", "metadata": {}, "outputs": [ { "data": { - "image/png": "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/77w9/cXtWvXFvXq1RN9+/Y1eXqZqRRCCAEiIiIiIhvFKhNEREREZNOYEBMRERGRTWNCTEREREQ2jQkxEREREdk0JsREREREZNOYEBMRERGRTWNCTEREREQ2jQkxEREREdk0JsREREREZNOYEBMRERGRTWNCTEREREQ2jQkxEREREdk0JsREREREZNOYEBMRERGRTWNCTEREREQ2jQkxEREREdk0JsREREREZNOYEBMRERGRTXOwdgBERCRfP//8M/7v//4PWVlZyM/PR1BQEObNmwcvLy9rh0ZEpKEQQghrB0FERPJSWFiImTNn4sCBA4iLi0OvXr1w//599O/fH0+ePMHBgwdRv359a4dJRASACTEREZmZSqXC888/jzNnzuDEiRNo1KiRpm3Dhg0YMWIEpk2bhi+//NKKURIR/YVziImIyKzeeust/Pe//8Xy5ctLJMMAEBAQAABYt24dCgsLrREeEVEZTIiJiMhs0tLSsHTpUvj7+yMyMrJMe35+PgDg4cOHuHHjRlWHR0SkExNiIiIym3//+99QqVQYNWqUznbtJFilUlVVWEREBjEhJiIis8jNzcXWrVsBACNHjtTZ5/jx4wAAe3v7MtMpiIishQkxERGZxb59+/DkyRO0bt0arVu31tnnxx9/BAB0794dtWvXrsrwiIj0YkJMRERmceDAAQBAYGCgzvYbN27g0KFDAICoqKiqCouIqFxMiImIyCzKS4gTExNRXFyMxo0bY/z48VUYGRGRYUyIiYio0u7fv4+zZ88C+Ku0mrbs7GwsXLgQAPD111/D2dm5SuMjIjKECTEREVXajz/+CPU+T7t37y7T/o9//AMPHjzAwoULMXjw4KoOj4jIICbERERUaerpEiNHjsTGjRvx/fffAwAePHiAmTNnYtOmTfj6668xd+5cK0ZJRKQbE2IiIqo0dUIcGhqKnTt3YsOGDejZsyciIiJQt25dXLx4ERMnTrRukEREeiiE+ndcREREFXD//n3Ur18fQgjcvHmT9YWJqMbhCDEREVWKev5w69atmQwTUY3EhJiIiCpFPV2iX79+1g2EiKiCmBATEVGlqBPivn37WjcQIqIK4hxiIiKqsAcPHqBevXoQQuD27dvw9va2dkhERCZzsHYARERUs/Xo0QO9evViMkxENRZHiImIiIjIpnEOMRERERHZNCbERERERGTTmBATERERkU1jQkxERERENo0JMRERERHZNCbERERERGTTmBATERERkU1jQkxERERENo0JMRERERHZNCbERERERGTTmBATERERkU1jQkxERERENo0JMRERERHZtP8PjgAEKm8FdB0AAAAASUVORK5CYII=", + "image/png": "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WqWlS5fqq6++6oQKg09brsnu3bv173//WzfddJNWrFihgoIC3XXXXaqrq9P8+fM7o+yA1pZrcuONN6q0tFTjx4+XYRiqr6/Xz372Mz3wwAOdUTKacbrf8U6nU8ePH1eXLl069Ptzxw74jt/85jd69dVX9dZbbyk8PNzscoJSZWWlbrnlFr344ouKi4szuxyc4Ha7FR8frxdeeEEZGRmaMmWKfv3rX2vJkiVmlxa0Vq5cqSeeeEJ/+tOftH79er355pt677339Oijj5pdGkzCHbtzFBcXJ5vNppKSEq/tJSUlSkxMbHafxMTEVrVH67TlmjR6+umn9Zvf/Eb/+te/lJ6e3pFlBpXWXpNdu3Zpz549uuaaazzb3G63JCkkJETbt29XWlpaxxYd4Nry5yQpKUmhoaGy2WyebUOHDlVxcbFqa2sVFhbWoTUHurZck4ceeki33HKLbr/9dknSyJEjVVVVpTvuuEO//vWvZbVy/6azne53fFRUVIffrZO4Y3fOwsLClJGRoby8PM82t9utvLw8jR07ttl9xo4d69Vekj766KPTtkfrtOWaSNKTTz6pRx99VLm5uRozZkxnlBo0WntNhgwZok2bNumrr77yvH74wx/q+9//vr766islJyd3ZvkBqS1/Ti688EIVFBR4QrYk7dixQ0lJSYS6dtCWa3Ls2LEm4a0xeBusGGoK03/Hd8oQjQD36quvGna73Xj55ZeNrVu3GnfccYfRvXt3o7i42DAMw7jllluMOXPmeNp//vnnRkhIiPH0008b33zzjTF//nymO2lnrb0mv/nNb4ywsDDjjTfeMIqKijyvyspKs04h4LT2mnwXo2LbX2uvyb59+4zIyEjj7rvvNrZv327885//NOLj443HHnvMrFMIOK29JvPnzzciIyONv//978bu3buNDz/80EhLSzNuuOEGs04h4FRWVhobNmwwNmzYYEgynnnmGWPDhg3G3r17DcMwjDlz5hi33HKLp33jdCe/+tWvjG+++cZYvHgx0534oz/+8Y9G3759jbCwMCMzM9P44osvPJ9dfPHFxvTp073a/+Mf/zAGDRpkhIWFGcOHDzfee++9Tq448LXmmvTr18+Q1OQ1f/78zi88gLX2z8mpCHYdo7XXZPXq1UZWVpZht9uN/v37G48//rhRX1/fyVUHttZck7q6OuPhhx820tLSjPDwcCM5Odm46667jCNHjnR+4QHq448/bvb3Q+N1mD59unHxxRc32WfUqFFGWFiY0b9/f+Oll17qtHothsG9WgAAgEDAM3YAAAABgmAHAAAQIAh2AAAAAYJgBwAAECAIdgAAAAGCYAcAABAgCHYAAAABgmAHAAAQIAh2AAAAAYJgBwAAECAIdgDQQVatWqXMzEyFh4crLi5Of/jDH8wuCUCAI9gBQAdYsWKFfvSjH+muu+7Sxo0bdeedd+qee+7Rnj17zC4NQACzGIZhmF0EAASS6upqDRw4UL/97W914403SpJcLpe6d++uxYsXa9q0aSZXCCBQcccOANrZv//9bx0/flxTpkzxbLPZbLJYLLLb7SZWBiDQEewAoJ19/PHHGjVqlGw2m2dbQUGBKisrdf7555tYGYBAR7ADgHa2YcMG1dbWem3705/+pIyMDA0aNMikqgAEgxCzCwCAQLNhwwYZhqG//OUvysrK0uuvv67nnntOq1evNrs0AAGOYAcA7Wjfvn0qLy/XP//5T82ZM0c7duxQenq6cnNz6YYF0OEYFQsA7eidd97RjBkzVFZWZnYpAIIQz9gBQDvasGGDRo4caXYZAIIUwQ4A2tGGDRuUnp5udhkAghRdsQAAAAGCO3YAAAABgmAHAAAQIAh2AAAAAYJgBwAAECAIdgAAAAGCYAcAABAgCHYAAAABgmAHAAAQIAh2AAAAAYJgBwAAECAIdgAAAAHi/wObeDOXUaVy4wAAAABJRU5ErkJggg==", "text/plain": [ - "
" + "
" ] }, "metadata": {}, @@ -282,133 +226,51 @@ } ], "source": [ - "plt.plot(np.array(surfaces), ripple_array, \"-or\", ms=4)\n", - "plt.xlabel(r\"$\\rho$\", fontsize=18)\n", - "plt.ylabel(f\"$\\epsilon^{1.5}$\", fontsize=18)\n", - "plt.xticks(fontsize=16)\n", - "plt.yticks(fontsize=16);" + "eq0 = get(\"HELIOTRON\")\n", + "grid = LinearGrid(rho=rho, M=eq0.M_grid, N=eq0.N_grid, NFP=eq0.NFP, sym=False)\n", + "Y_B = 150\n", + "num_transit = 20\n", + "num_well = 30 * num_transit\n", + "num_quad = 64\n", + "data = eq0.compute(\n", + " \"effective ripple\",\n", + " grid=grid,\n", + " theta=Bounce2D.compute_theta(eq0, X, Y, rho=rho),\n", + " Y_B=Y_B,\n", + " num_transit=num_transit,\n", + " num_well=num_well,\n", + " num_quad=num_quad,\n", + ")\n", + "\n", + "eps_32 = grid.compress(data[\"effective ripple\"])\n", + "fig, ax = plt.subplots()\n", + "ax.plot(rho, eps_32, marker=\"o\")\n", + "ax.set(xlabel=r\"$\\rho$\", ylabel=r\"$\\epsilon$\", title=\"Heliotron\")\n", + "plt.tight_layout()\n", + "plt.show()" ] }, { "cell_type": "markdown", - "id": "66934048-5dfe-415e-a770-40f436aceceb", + "id": "a4fc40f2-278b-4e67-82a3-eb2fc0419989", "metadata": {}, "source": [ - "# Reducing the Effective Ripple" + "## Optimizing Heliotron" ] }, { "cell_type": "code", - "execution_count": 9, - "id": "9d90cd19-1276-4260-a4b6-8af5a631b238", + "execution_count": null, + "id": "5e65af04-7b46-4f30-b265-6467254eb2cb", "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "\n", - "---------------------------------------\n", - "Optimizing boundary modes M, N <= 2\n", - "---------------------------------------\n", - "Building objective: Effective ripple\n", - "Precomputing transforms\n", - "Timer: Precomputing transforms = 57.7 ms\n", - "Building objective: aspect ratio\n", - "Precomputing transforms\n", - "Timer: Precomputing transforms = 59.1 ms\n", - "Building objective: generic\n", - "Timer: Objective build = 525 ms\n", - "Building objective: force\n", - "Precomputing transforms\n", - "Timer: Precomputing transforms = 315 ms\n", - "Timer: Objective build = 836 ms\n", - "Timer: Proximal projection build = 7.00 sec\n", - "Building objective: lcfs R\n", - "Building objective: lcfs Z\n", - "Building objective: fixed pressure\n", - "Building objective: fixed iota\n", - "Building objective: fixed Psi\n", - "Timer: Objective build = 662 ms\n", - "Timer: Linear constraint projection build = 1.86 sec\n", - "Number of parameters: 24\n", - "Number of objectives: 327\n", - "Timer: Initializing the optimization = 9.59 sec\n", - "\n", - "Starting optimization\n", - "Using method: proximal-lsq-exact\n", - " Iteration Total nfev Cost Cost reduction Step norm Optimality \n", - " 0 1 4.575e+13 4.772e+14 \n", - " 1 4 4.573e+13 1.812e+10 1.521e-03 4.902e+14 \n", - " 2 5 4.570e+13 3.360e+10 1.806e-04 4.888e+14 \n", - " 3 6 4.563e+13 6.634e+10 3.392e-04 4.869e+14 \n", - " 4 7 4.552e+13 1.160e+11 7.200e-04 4.832e+14 \n", - " 5 8 4.543e+13 8.626e+10 1.321e-03 4.730e+14 \n", - "Warning: Maximum number of iterations has been exceeded.\n", - " Current function value: 4.543e+13\n", - " Total delta_x: 3.590e-03\n", - " Iterations: 5\n", - " Function evaluations: 8\n", - " Jacobian evaluations: 6\n", - "Timer: Solution time = 8.63 min\n", - "Timer: Avg time per step = 1.43 min\n", - "==============================================================================================================\n", - " Start --> End\n", - "Total (sum of squares): 4.575e+13 --> 4.543e+13, \n", - "Maximum absolute Effective ripple ε: 9.566e+00 --> 9.532e+00 ~\n", - "Minimum absolute Effective ripple ε: 9.566e+00 --> 9.532e+00 ~\n", - "Average absolute Effective ripple ε: 9.566e+00 --> 9.532e+00 ~\n", - "Maximum absolute Effective ripple ε: 9.566e+00 --> 9.532e+00 (normalized)\n", - "Minimum absolute Effective ripple ε: 9.566e+00 --> 9.532e+00 (normalized)\n", - "Average absolute Effective ripple ε: 9.566e+00 --> 9.532e+00 (normalized)\n", - "Aspect ratio: 1.048e+01 --> 1.049e+01 (dimensionless)\n", - "Maximum Generic objective value: -6.865e-01 --> -6.808e-01 (m^{-1})\n", - "Minimum Generic objective value: -5.694e+00 --> -5.687e+00 (m^{-1})\n", - "Average Generic objective value: -1.566e+00 --> -1.566e+00 (m^{-1})\n", - "Maximum Generic objective value: -6.865e-01 --> -6.808e-01 (normalized)\n", - "Minimum Generic objective value: -5.694e+00 --> -5.687e+00 (normalized)\n", - "Average Generic objective value: -1.566e+00 --> -1.566e+00 (normalized)\n", - "Maximum absolute Force error: 5.586e+03 --> 5.811e+03 (N)\n", - "Minimum absolute Force error: 9.586e-03 --> 3.250e-04 (N)\n", - "Average absolute Force error: 9.992e+01 --> 7.888e+01 (N)\n", - "Maximum absolute Force error: 4.492e-04 --> 4.673e-04 (normalized)\n", - "Minimum absolute Force error: 7.710e-10 --> 2.614e-11 (normalized)\n", - "Average absolute Force error: 8.036e-06 --> 6.344e-06 (normalized)\n", - "R boundary error: 0.000e+00 --> 0.000e+00 (m)\n", - "Z boundary error: 0.000e+00 --> 0.000e+00 (m)\n", - "Fixed pressure profile error: 0.000e+00 --> 0.000e+00 (Pa)\n", - "Fixed iota profile error: 0.000e+00 --> 0.000e+00 (dimensionless)\n", - "Fixed Psi error: 0.000e+00 --> 0.000e+00 (Wb)\n", - "==============================================================================================================\n", - "Optimization complete!\n" - ] - } - ], + "outputs": [], "source": [ - "# save a copy of original for comparison\n", "eq1 = eq0.copy()\n", - "\n", - "# Flux surfaces on which to evaluate ballooning stability\n", - "surfaces = [1.0]\n", - "\n", - "nalpha = 1 # Number of field lines\n", - "\n", - "# Field lines on which to evaluate ballooning stability\n", - "alpha = np.linspace(0, np.pi, nalpha, endpoint=False)\n", - "\n", - "# Number of toroidal transits of the field line\n", - "num_transit = 3\n", - "\n", - "# Number of point along a field line per transit\n", - "knots_per_transit = 64\n", - "\n", - "# Determine which modes to unfix\n", - "k = 2\n", - "\n", - "print(\"\\n---------------------------------------\")\n", + "k = 2 # which modes to unfix\n", + "print()\n", + "print(\"---------------------------------------\")\n", "print(f\"Optimizing boundary modes M, N <= {k}\")\n", "print(\"---------------------------------------\")\n", - "\n", "modes_R = np.vstack(\n", " (\n", " [0, 0, 0],\n", @@ -424,44 +286,34 @@ " FixIota(eq=eq1),\n", " FixPsi(eq=eq1),\n", ")\n", - "\n", - "Curvature_grid = LinearGrid(\n", - " M=2 * int(eq1.M),\n", - " N=2 * int(eq1.N),\n", - " rho=np.array([1.0]),\n", - " NFP=eq1.NFP,\n", - " sym=True,\n", - " axis=False,\n", + "curvature_grid = LinearGrid(\n", + " rho=np.array([1.0]), M=eq1.M_grid, N=eq1.N_grid, NFP=eq1.NFP, sym=eq1.sym\n", + ")\n", + "ripple_grid = LinearGrid(\n", + " rho=np.linspace(0.2, 1, 5), M=eq1.M_grid, N=eq1.N_grid, NFP=eq1.NFP, sym=False\n", ")\n", - "\n", "objective = ObjectiveFunction(\n", " (\n", " EffectiveRipple(\n", - " eq=eq1,\n", - " rho=np.array(surfaces),\n", - " alpha=0,\n", - " num_transit=num_transit,\n", - " knots_per_transit=knots_per_transit,\n", - " num_quad=17,\n", - " weight=1e6,\n", + " eq1,\n", + " grid=ripple_grid,\n", + " X=16,\n", + " Y=32,\n", + " Y_B=128,\n", + " num_transit=10,\n", + " num_well=30 * 10,\n", + " num_quad=32,\n", + " num_pitch=45,\n", + " # FIXME: Has no effect on memory consumed by Jacobian, even though reduces compute memory....\n", + " batch_size=1,\n", " deriv_mode=\"rev\",\n", " ),\n", - " AspectRatio(\n", - " eq=eq1,\n", - " bounds=(8, 11),\n", - " weight=1e3,\n", - " ),\n", + " AspectRatio(eq1, bounds=(8, 11), weight=1e3),\n", " GenericObjective(\n", - " f=\"curvature_k2_rho\",\n", - " thing=eq1,\n", - " grid=Curvature_grid,\n", - " bounds=(-128, 10),\n", - " weight=2e3,\n", + " \"curvature_k2_rho\", eq1, grid=curvature_grid, bounds=(-128, 10), weight=2e3\n", " ),\n", " )\n", ")\n", - "\n", - "\n", "optimizer = Optimizer(\"proximal-lsq-exact\")\n", "(eq1,), _ = optimizer.optimize(\n", " eq1,\n", @@ -477,113 +329,36 @@ "print(\"Optimization complete!\")" ] }, - { - "cell_type": "code", - "execution_count": 10, - "id": "a975c400-106a-48f4-a437-66fabb3706c0", - "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "surface 0 took 5.89 s\n", - "surface 1 took 2.21 s\n", - "surface 2 took 2.25 s\n", - "surface 3 took 2.31 s\n", - "surface 4 took 2.38 s\n", - "surface 5 took 2.22 s\n", - "surface 6 took 2.21 s\n", - "Ripple calculation finished!\n" - ] - } - ], - "source": [ - "# Flux surfaces on which to evaluate ballooning stability\n", - "surfaces = [0.01, 0.1, 0.2, 0.4, 0.6, 0.8, 1.0]\n", - "\n", - "# Field lines on which to evaluate ballooning stability\n", - "alpha = np.linspace(0, np.pi, 1, endpoint=False)\n", - "\n", - "# Number of toroidal transits of the field line\n", - "ntransit = 6\n", - "\n", - "knots_per_transit = 128\n", - "\n", - "# Number of point along a field line in ballooning space\n", - "N0 = ntransit * knots_per_transit\n", - "\n", - "# range of the ballooning coordinate zeta\n", - "zeta = np.linspace(-np.pi * ntransit, np.pi * ntransit, N0)\n", - "\n", - "ripple_array_new = np.zeros(len(surfaces))\n", - "\n", - "for j in range(len(surfaces)):\n", - " tic = time.time()\n", - " rho = surfaces[j]\n", - "\n", - " grid = Grid.create_meshgrid(\n", - " [rho, alpha, zeta], coordinates=\"raz\", period=(np.inf, 2 * np.pi, np.inf)\n", - " )\n", - "\n", - " ripple_array_new[j] = np.squeeze(\n", - " grid.compress(eq1.compute(\"effective ripple\", grid=grid)[\"effective ripple\"])\n", - " )\n", - " toc = time.time()\n", - " print(f\"surface {j} took {toc-tic:.2f} s\")\n", - "\n", - "print(\"Ripple calculation finished!\")" - ] - }, - { - "cell_type": "code", - "execution_count": 11, - "id": "f37daaef-edd6-4393-9f45-b8bcdbb75e63", - "metadata": {}, - "outputs": [ - { - "data": { - "image/png": "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", - "text/plain": [ - "
" - ] - }, - "metadata": {}, - "output_type": "display_data" - } - ], - "source": [ - "plt.plot(np.array(surfaces), ripple_array, \"-or\", ms=4)\n", - "plt.plot(np.array(surfaces), ripple_array_new, \"-og\", ms=4)\n", - "plt.xlabel(r\"$\\rho$\", fontsize=18)\n", - "plt.ylabel(f\"$\\epsilon^{1.5}$\", fontsize=18)\n", - "plt.legend([\"initial\", \"optimized\"])\n", - "plt.xticks(fontsize=16)\n", - "plt.yticks(fontsize=16);" - ] - }, { "cell_type": "code", "execution_count": null, - "id": "408d6d17-3855-4e22-a360-5b6515a2af39", + "id": "ceced2bb-a5ef-45b7-8864-e874d78239fd", "metadata": {}, "outputs": [], - "source": [] - }, - { - "cell_type": "code", - "execution_count": null, - "id": "2b269708-3b19-451c-8a49-0066e7588367", - "metadata": {}, - "outputs": [], - "source": [] + "source": [ + "data = eq1.compute(\n", + " \"effective ripple\",\n", + " grid=grid,\n", + " theta=Bounce2D.compute_theta(eq1, X, Y, rho=rho),\n", + " num_transit=num_transit,\n", + " num_well=num_well,\n", + " num_quad=num_quad,\n", + ")\n", + "eps_32_opt = grid.compress(data[\"effective ripple\"])\n", + "fig, ax = plt.subplots()\n", + "ax.plot(rho, eps_32, marker=\"o\", label=\"original\")\n", + "ax.plot(rho, eps_32_opt, marker=\"o\", label=\"optimized\")\n", + "ax.set(xlabel=r\"$\\rho$\", ylabel=r\"$\\epsilon$\", title=\"Heliotron\")\n", + "plt.tight_layout()\n", + "plt.show()" + ] } ], "metadata": { "kernelspec": { - "display_name": "Python 3 (ipykernel)", + "display_name": "desc-env", "language": "python", - "name": "python3" + "name": "desc-env" }, "language_info": { "codemirror_mode": { @@ -595,7 +370,7 @@ "name": "python", "nbconvert_exporter": "python", "pygments_lexer": "ipython3", - "version": "3.11.9" + "version": "3.10.14" } }, "nbformat": 4, diff --git a/tests/test_integrals.py b/tests/test_integrals.py index 1c02e1158b..d8164f6eaa 100644 --- a/tests/test_integrals.py +++ b/tests/test_integrals.py @@ -936,93 +936,66 @@ class TestBounceQuadrature: @pytest.mark.parametrize( "is_strong, quad, automorphism", [ - (True, tanh_sinh(40), None), + (True, tanh_sinh(30), None), (False, tanh_sinh(20), None), - # Node density near boundary is 1/(1−x²). (True, leggauss(25), auto_sin), - (True, chebgauss1(30), auto_sin), - # Lobatto nodes + # chebgauss1 without c.o.v. is sensitive to approximation error + (True, chebgauss1(25), auto_sin), (False, leggauss_lob(8, interior_only=True), auto_sin), - # Node density near boundary is 1/√(1−x²). - (False, leggauss_lob(13, interior_only=True), None), - (False, chebgauss2(8), None), + (False, chebgauss2(21), None), ], ) def test_bounce_quadrature(self, is_strong, quad, automorphism): - """Test quadrature matches singular (strong and weak) elliptic integrals. - - Notes - ----- - Empirical testing shows asymptotic density of nodes needs to be at least - 1/√(1−x²) and quadrature needs a cosine factor in Jacobian for accurate - bounce integrals. This is satisfied by ``chebgauss2`` and ``leggauss`` with - the sin automorphism. The former has less clustering near boundary by a factor - of 1/√(1−x²), so we choose it for weakly singular bounce integrals. This will - capture more features in the integral, especially the W shaped wells. Less - clustering will also make non-uniform FFTs more accurate. - - For the strongly singular bounce integrals, another cosine factor is preferred - to supress the derivative (as expected from chain rule), so we need to use the - sin automorphism. We choose to apply that map to ``leggauss`` instead of - ``chebgauss1`` because the extra cosine term in ``chebgauss1`` increases the - polynomial complexity of the integrand and suppresses the derivative too strong - for a quadrature that already clusters near edge with density 1/(1−x²). This is - why ``chebgauss1`` required more nodes in this test, and in general would - require more nodes for functions with more features. - - """ - p = 1e-4 - m = 1 - p + """Test quadrature matches singular (strong and weak) elliptic integrals.""" # Some prime number that doesn't appear anywhere in calculation. # Ensures no lucky cancellation occurs from ζ₂ − ζ₁ / π = π / (ζ₂ − ζ₁) # which could mask errors since π appears often in transformations. - v = 7 - z1 = -np.pi / 2 * v - z2 = -z1 - knots = np.linspace(z1, z2, 50) - pitch_inv = 1 - 50 * jnp.finfo(jnp.array(1.0).dtype).eps - b = np.clip(np.sin(knots / v) ** 2, 1e-7, 1) - db = np.sin(2 * knots / v) / v - data = {"B^zeta": b, "B^zeta_z|r,a": db, "|B|": b, "|B|_z|r,a": db} - - if is_strong: - integrand = lambda B, pitch: 1 / jnp.sqrt(1 - m * pitch * B) - truth = v * 2 * ellipkm1(p) - else: - integrand = lambda B, pitch: jnp.sqrt(1 - m * pitch * B) - truth = v * 2 * ellipe(m) + v = 3 + knots = np.linspace(-np.pi / 2 * v, np.pi / 2 * v, 50) + B = np.sin(knots / v) ** 2 + 1 + dB_dz = np.sin(2 * knots / v) / v bounce = Bounce1D( Grid.create_meshgrid([1, 0, knots], coordinates="raz"), - data, - quad, - automorphism, + data={"B^zeta": B, "B^zeta_z|r,a": dB_dz, "|B|": B, "|B|_z|r,a": dB_dz}, + quad=quad, + automorphism=automorphism, check=True, ) - points = bounce.points(pitch_inv, num_well=1) - np.testing.assert_allclose(points[0], z1) - np.testing.assert_allclose(points[1], z2) - result = bounce.integrate( - integrand, pitch_inv, points=points, check=True, plot=True + + m = 1 - 1e-3 + # integral(integrand) = truth iff pitch_inv = 2 + pitch_inv = 2 - 1e-12 + k = pitch_inv * m # m = k * pitch + if is_strong: + integrand = lambda B, pitch: 1 / jnp.sqrt(1 - k * pitch * (B - 1)) + truth = v * 2 * ellipkm1(1 - m) + else: + integrand = lambda B, pitch: jnp.sqrt(1 - k * pitch * (B - 1)) + truth = v * 2 * ellipe(m) + np.testing.assert_allclose( + bounce.integrate(integrand, pitch_inv, check=True, plot=False).sum(), + truth, + rtol=1e-4, ) - assert np.count_nonzero(result) == 1 - np.testing.assert_allclose(result.sum(), truth, rtol=1e-4) @staticmethod @partial(np.vectorize, excluded={0}) def _adaptive_elliptic(integrand, k): a = 0 b = 2 * np.arcsin(k) - return integrate.quad(integrand, a, b, args=(k,), points=b)[0] + return integrate.quad( + integrand, a, b, args=(k,), points=b, epsrel=1e-10, epsabs=1e-10 + )[0] @staticmethod def _fixed_elliptic(integrand, k, deg): k = np.atleast_1d(k) - a = np.zeros_like(k) + a = -2 * np.arcsin(k) b = 2 * np.arcsin(k) x, w = get_quadrature(leggauss(deg), (automorphism_sin, grad_automorphism_sin)) Z = bijection_from_disc(x, a[..., np.newaxis], b[..., np.newaxis]) k = k[..., np.newaxis] - quad = integrand(Z, k).dot(w) * grad_bijection_from_disc(a, b) + quad = integrand(Z, k).dot(w) * grad_bijection_from_disc(a, b) / 2 return quad # TODO: add the analytical test that converts incomplete elliptic integrals to @@ -1046,7 +1019,7 @@ def elliptic_incomplete(k2): E = TestBounceQuadrature._adaptive_elliptic(E_integrand, k) # Make sure scipy's adaptive quadrature is not broken. np.testing.assert_allclose( - K, TestBounceQuadrature._fixed_elliptic(K_integrand, k, 10) + K, TestBounceQuadrature._fixed_elliptic(K_integrand, k, 12) ) np.testing.assert_allclose( E, TestBounceQuadrature._fixed_elliptic(E_integrand, k, 10) @@ -1091,7 +1064,7 @@ def elliptic_incomplete(k2): TestBounceQuadrature._fixed_elliptic( lambda Z, k: 2 / np.sqrt(k**2 - np.sin(Z / 2) ** 2) * np.cos(Z), k, - deg=11, + deg=12, ), ) np.testing.assert_allclose( From 23c546f41f896a7e66298d8566beaf7b41921247 Mon Sep 17 00:00:00 2001 From: unalmis Date: Wed, 6 Nov 2024 15:43:48 -0500 Subject: [PATCH 21/60] Update optimization notebook with better result using fwd mode Peak optimization memory usage is 5gb. --- .../notebooks/tutorials/EffectiveRipple.ipynb | 144 +++++++++++++++--- 1 file changed, 123 insertions(+), 21 deletions(-) diff --git a/docs/notebooks/tutorials/EffectiveRipple.ipynb b/docs/notebooks/tutorials/EffectiveRipple.ipynb index ced337809f..c958cc7df0 100644 --- a/docs/notebooks/tutorials/EffectiveRipple.ipynb +++ b/docs/notebooks/tutorials/EffectiveRipple.ipynb @@ -112,7 +112,7 @@ }, { "cell_type": "code", - "execution_count": null, + "execution_count": 3, "id": "728efd05-7f52-4ece-af52-c031c6f61441", "metadata": { "scrolled": true @@ -131,17 +131,17 @@ "num_transit = 3\n", "# Running below at few different settings, we observe Y_B = 100 sufficient,\n", "# and see about 3 wells per toroidal transit.\n", - "# plot_wells(\n", - "# eq0,\n", - "# grid,\n", - "# theta,\n", - "# # Plotting for 3 toroidal transits to see by eye\n", - "# # if Y_B is high enough that |B|(ζ) doesn't change as Y_B is varied.\n", - "# Y_B=100,\n", - "# num_transit=num_transit,\n", - "# # Plot the field lines to obtain a tight upper bound on ``num_well``.\n", - "# num_well=15 * num_transit,\n", - "# );" + "plot_wells(\n", + " eq0,\n", + " grid,\n", + " theta,\n", + " # Plotting for 3 toroidal transits to see by eye\n", + " # if Y_B is high enough that |B|(ζ) doesn't change as Y_B is varied.\n", + " Y_B=100,\n", + " num_transit=num_transit,\n", + " # Plot the field lines to obtain a tight upper bound on ``num_well``.\n", + " num_well=15 * num_transit,\n", + ");" ] }, { @@ -260,10 +260,91 @@ }, { "cell_type": "code", - "execution_count": null, + "execution_count": 6, "id": "5e65af04-7b46-4f30-b265-6467254eb2cb", "metadata": {}, - "outputs": [], + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "\n", + "---------------------------------------\n", + "Optimizing boundary modes M, N <= 2\n", + "---------------------------------------\n", + "Building objective: Effective ripple\n", + "Precomputing transforms\n", + "Timer: Precomputing transforms = 928 ms\n", + "Building objective: aspect ratio\n", + "Precomputing transforms\n", + "Timer: Precomputing transforms = 67.8 ms\n", + "Building objective: generic\n", + "Timer: Objective build = 2.29 sec\n", + "Building objective: force\n", + "Precomputing transforms\n", + "Timer: Precomputing transforms = 579 ms\n", + "Timer: Objective build = 1.06 sec\n", + "Timer: Proximal projection build = 9.95 sec\n", + "Building objective: lcfs R\n", + "Building objective: lcfs Z\n", + "Building objective: fixed pressure\n", + "Building objective: fixed iota\n", + "Building objective: fixed Psi\n", + "Timer: Objective build = 544 ms\n", + "Timer: Linear constraint projection build = 2.67 sec\n", + "Number of parameters: 24\n", + "Number of objectives: 253\n", + "Timer: Initializing the optimization = 13.2 sec\n", + "\n", + "Starting optimization\n", + "Using method: proximal-lsq-exact\n", + " Iteration Total nfev Cost Cost reduction Step norm Optimality \n", + " 0 1 9.463e-01 2.703e+01 \n", + " 1 2 8.425e-01 1.038e-01 4.308e-03 2.537e+01 \n", + " 2 3 6.922e-01 1.503e-01 7.640e-03 2.143e+01 \n", + " 3 4 5.504e-01 1.417e-01 1.584e-02 2.344e+01 \n", + " 4 5 4.169e-01 1.335e-01 1.428e-02 1.237e+01 \n", + " 5 6 2.867e-01 1.303e-01 1.304e-02 1.035e+01 \n", + "Warning: Maximum number of iterations has been exceeded.\n", + " Current function value: 2.867e-01\n", + " Total delta_x: 4.960e-02\n", + " Iterations: 5\n", + " Function evaluations: 6\n", + " Jacobian evaluations: 6\n", + "Timer: Solution time = 16.3 min\n", + "Timer: Avg time per step = 2.72 min\n", + "==============================================================================================================\n", + " Start --> End\n", + "Total (sum of squares): 9.463e-01 --> 2.867e-01, \n", + "Maximum absolute Effective ripple ε: 6.869e-01 --> 4.418e-01 ~\n", + "Minimum absolute Effective ripple ε: 5.379e-01 --> 1.801e-01 ~\n", + "Average absolute Effective ripple ε: 6.126e-01 --> 3.249e-01 ~\n", + "Maximum absolute Effective ripple ε: 6.869e-01 --> 4.418e-01 (normalized)\n", + "Minimum absolute Effective ripple ε: 5.379e-01 --> 1.801e-01 (normalized)\n", + "Average absolute Effective ripple ε: 6.126e-01 --> 3.249e-01 (normalized)\n", + "Aspect ratio: 1.048e+01 --> 1.064e+01 (dimensionless)\n", + "Maximum Generic objective value: -6.864e-01 --> -6.591e-01 (m^{-1})\n", + "Minimum Generic objective value: -5.858e+00 --> -5.808e+00 (m^{-1})\n", + "Average Generic objective value: -1.566e+00 --> -1.584e+00 (m^{-1})\n", + "Maximum Generic objective value: -6.864e-01 --> -6.591e-01 (normalized)\n", + "Minimum Generic objective value: -5.858e+00 --> -5.808e+00 (normalized)\n", + "Average Generic objective value: -1.566e+00 --> -1.584e+00 (normalized)\n", + "Maximum absolute Force error: 5.586e+03 --> 1.012e+04 (N)\n", + "Minimum absolute Force error: 9.586e-03 --> 4.612e-02 (N)\n", + "Average absolute Force error: 9.992e+01 --> 7.996e+01 (N)\n", + "Maximum absolute Force error: 4.492e-04 --> 8.136e-04 (normalized)\n", + "Minimum absolute Force error: 7.710e-10 --> 3.709e-09 (normalized)\n", + "Average absolute Force error: 8.036e-06 --> 6.431e-06 (normalized)\n", + "R boundary error: 0.000e+00 --> 0.000e+00 (m)\n", + "Z boundary error: 0.000e+00 --> 0.000e+00 (m)\n", + "Fixed pressure profile error: 0.000e+00 --> 0.000e+00 (Pa)\n", + "Fixed iota profile error: 0.000e+00 --> 0.000e+00 (dimensionless)\n", + "Fixed Psi error: 0.000e+00 --> 0.000e+00 (Wb)\n", + "==============================================================================================================\n", + "Optimization complete!\n" + ] + } + ], "source": [ "eq1 = eq0.copy()\n", "k = 2 # which modes to unfix\n", @@ -304,9 +385,9 @@ " num_well=30 * 10,\n", " num_quad=32,\n", " num_pitch=45,\n", - " # FIXME: Has no effect on memory consumed by Jacobian, even though reduces compute memory....\n", + " # TODO: It seems batch_size has no effect on memory consumed by Jacobian in reverse mode.\n", " batch_size=1,\n", - " deriv_mode=\"rev\",\n", + " deriv_mode=\"fwd\",\n", " ),\n", " AspectRatio(eq1, bounds=(8, 11), weight=1e3),\n", " GenericObjective(\n", @@ -331,7 +412,7 @@ }, { "cell_type": "code", - "execution_count": null, + "execution_count": 7, "id": "ceced2bb-a5ef-45b7-8864-e874d78239fd", "metadata": {}, "outputs": [], @@ -344,11 +425,32 @@ " num_well=num_well,\n", " num_quad=num_quad,\n", ")\n", - "eps_32_opt = grid.compress(data[\"effective ripple\"])\n", + "eps_32_opt = grid.compress(data[\"effective ripple\"])" + ] + }, + { + "cell_type": "code", + "execution_count": 8, + "id": "7289f3dc-857a-49d6-9a21-1835d55ef6c0", + "metadata": {}, + "outputs": [ + { + "data": { + "image/png": "iVBORw0KGgoAAAANSUhEUgAAAnYAAAHWCAYAAAD6oMSKAAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjkuMiwgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy8hTgPZAAAACXBIWXMAAA9hAAAPYQGoP6dpAABlV0lEQVR4nO3deXhU1f3H8ffMZN8JIQsQSNh30WAim6KiuEHRVrG2Yqli61752Qq1imgVtNVilYparFbbom3dpbgEaUFAFLAFwiI7SBIIgSQkZJu5vz9uMklIQraZ3Mnk83qePJmcuct3OrV+es4959gMwzAQERERkQ7PbnUBIiIiIuIZCnYiIiIifkLBTkRERMRPKNiJiIiI+AkFOxERERE/oWAnIiIi4icU7ERERET8hIKdiIiIiJ9QsBMRERHxEwp2IiKn+dGPfkRKSkqdNpvNxsMPP2xJPSIizaVgJyId1iuvvILNZuOrr75q8P0JEyYwbNiwdq6qrqysLB5++GH27dtnaR0i0jkEWF2AiEhHcOrUKQICWv4/mVlZWcybN48JEybU6wUUEfE09diJiDRDSEhIq4JdSxiGwalTp7x6DxHxbwp2ItKpvP7666SlpREaGkpsbCzXX389Bw8ebPK8hp6x27RpE5dffjlRUVFERERw8cUXs27dOvf7r7zyCtdeey0AF154ITabDZvNxsqVKwFISUnhqquu4qOPPmLUqFGEhobywgsvALBnzx6uvfZaYmNjCQsL47zzzuPDDz+sc/+VK1dis9l48803eeyxx+jZsychISFcfPHF7Nq1qw3/KYlIR6WhWBHp8AoKCsjLy6vXXlFRUefvxx57jAcffJDrrruOW265haNHj/Lss89y/vnns2nTJmJiYpp9z61btzJ+/HiioqL4xS9+QWBgIC+88AITJkzg3//+NxkZGZx//vncfffd/P73v+eXv/wlgwcPBnD/BtixYwff//73+clPfsLMmTMZOHAgubm5jBkzhpKSEu6++266du3Kq6++ypQpU/jHP/7B1VdfXaeWBQsWYLfbue+++ygoKODJJ5/kBz/4AV988UUL/lMUEb9giIh0UH/6058M4Iw/Q4cONQzDMPbt22c4HA7jscceq3ONzZs3GwEBAXXab7rpJqN37951jgOMuXPnuv+eOnWqERQUZOzevdvddvjwYSMyMtI4//zz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OF3W95V1qOVOOhKny2D93nyOFJUSHxlCemosDrtvDQfed9993HXXXS0656233iIwMNBLFYmIiHQMy7dkM+/9LLILSt1tSdEhzJ08hMuGWbcCg4KdF/jql13NMAycTicRERFERES06NzY2FgvVSUiItIxLN+SzW2vb+T0/rmcglJue30jz//wHMv+fa+hWA+r/rJrhzqo+bKXb8n2yn3Lysq4++67iY+PJyQkhHHjxvHll18C5sLONpuNf/3rX6SlpREcHMzq1avrDYFWVlZy9913ExMTQ9euXbn//vu56aab3MvRQP2h2JSUFB5//HF+/OMfExkZSa9evXjxxRfr1Hb//fczYMAAwsLC6NOnDw8++KB29RARkQ7J6TKY935WvVAHuNvmvZ9l2bCsgl0TDMOgpLyyWT9FpRXMfW/rGb/sh9/Loqi0olnXa8m8ll/84hf885//5NVXX2Xjxo3069ePSZMmkZ+f7z5m9uzZLFiwgG3btjFixIh613jiiSf4y1/+wp/+9Cc+//xzCgsLeeedd5q891NPPcWoUaPYtGkTt99+O7fddhs7duxwvx8ZGckrr7xCVlYWzzzzDC+99BK/+93vmv3ZREREfMX6vfn1Om9qM4DsglLW781v9Bhv0lBsE05VOBny0EceuZYB5BSWMvzhj5t1fNYjkwgLavorKi4u5vnnn+eVV17h8ssvB+Cll17ik08+YcmSJZx77rkAPPLII1xyySWNXufZZ59lzpw5XH311QA899xzLFu2rMn7X3HFFdx+++2A2Tv3u9/9js8++4yBAwcC5jI11VJSUrjvvvtYunQpv/jFL5q8toiIiC85UtR4qGvNcZ6mYOcHdu/eTUVFBWPHjnW3BQYGkp6ezrZt29zBbtSoUY1eo6CggNzcXNLT091tDoeDtLQ0XC7XGe9fu/fPZrORmJjo3sIL4I033uD3v/89u3fv5uTJk1RWVjY5XVtERMQXxUc2b8ms5h7naQp2TQgNdJD1yKRmHbt+bz4/+tOXTR73yoxzSU9tehJCaKBnd0gIDw/36PWqnT5L1mazucPg2rVr+cEPfsC8efOYNGkS0dHRLF26lKeeesortYiIiHhTemosCVHB5BaWNfi+DUiMDmnWv+e9Qc/YNcFmsxEWFNCsn/H9u5EUHUJji5rYMGfHju/frVnXa+5uCX379iUoKIjPP//c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RHySFhjzlOpn0AD3M2duegZNREREvE/BzpOqn0GLSqrbHtW9ZUudiIiIiLSChmI9Tc+giYiIiEUU7LxBz6CJiIiIBTQUKyIiIuInFOxERERE/ISCnYiIiIifULATERER8RMKdiIiIiJ+QsFORERExE8o2ImIiIj4CQU7ERERET+hYCciIiLiJxTsRERERPxEp9tSzDAMAAoLCy2uRERERKRp1ZmlOsOcSacLdkVFRQAkJydbXImIiIhI8xUVFREdHX3GY2xGc+KfH3G5XBw+fJjIyEhsNptHrllYWEhycjIHDx4kKirKI9eUttP34rv03fgmfS++S9+N72qP78YwDIqKiujevTt2+5mfout0PXZ2u52ePXt65dpRUVH6B84H6XvxXfpufJO+F9+l78Z3efu7aaqnrpomT4iIiIj4CQU7ERERET+hYOcBwcHBzJ07l+DgYKtLkVr0vfgufTe+Sd+L79J347t87bvpdJMnRERERPyVeuxERERE/ISCnYiIiIifULATERER8RMKds2waNEiUlJSCAkJISMjg/Xr15/x+L///e8MGjSIkJAQhg8fzrJly9qp0s6nJd/NSy+9xPjx4+nSpQtdunRh4sSJTX6X0not/eem2tKlS7HZbEydOtW7BXZSLf1eTpw4wR133EFSUhLBwcEMGDBA/5vmJS39bhYuXMjAgQMJDQ0lOTmZe++9l9LS0naqtnP4z3/+w+TJk+nevTs2m4133nmnyXNWrlzJOeecQ3BwMP369eOVV17xep11GHJGS5cuNYKCgoyXX37Z2Lp1qzFz5kwjJibGyM3NbfD4zz//3HA4HMaTTz5pZGVlGb/61a+MwMBAY/Pmze1cuf9r6Xdzww03GIsWLTI2bdpkbNu2zfjRj35kREdHG4cOHWrnyv1fS7+banv37jV69OhhjB8/3vjOd77TPsV2Ii39XsrKyoxRo0YZV1xxhbF69Wpj7969xsqVK42vv/66nSv3fy39bv7yl78YwcHBxl/+8hdj7969xkcffWQkJSUZ9957bztX7t+WLVtmPPDAA8Zbb71lAMbbb799xuP37NljhIWFGbNmzTKysrKMZ5991nA4HMby5cvbp2DDMBTsmpCenm7ccccd7r+dTqfRvXt3Y/78+Q0ef9111xlXXnllnbaMjAzjJz/5iVfr7Ixa+t2crrKy0oiMjDReffVV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", + "text/plain": [ + "
" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ "fig, ax = plt.subplots()\n", "ax.plot(rho, eps_32, marker=\"o\", label=\"original\")\n", "ax.plot(rho, eps_32_opt, marker=\"o\", label=\"optimized\")\n", "ax.set(xlabel=r\"$\\rho$\", ylabel=r\"$\\epsilon$\", title=\"Heliotron\")\n", + "ax.legend()\n", "plt.tight_layout()\n", "plt.show()" ] @@ -356,9 +458,9 @@ ], "metadata": { "kernelspec": { - "display_name": "desc-env", + "display_name": "Python 3 (ipykernel)", "language": "python", - "name": "desc-env" + "name": "python3" }, "language_info": { "codemirror_mode": { @@ -370,7 +472,7 @@ "name": "python", "nbconvert_exporter": "python", "pygments_lexer": "ipython3", - "version": "3.10.14" + "version": "3.12.7" } }, "nbformat": 4, From 08fb177bebcde36a371c39e3b3f5fc2bcb5e942f Mon Sep 17 00:00:00 2001 From: unalmis Date: Sun, 10 Nov 2024 02:12:28 -0500 Subject: [PATCH 22/60] Update variable name, reduce memory --- desc/compute/_neoclassical.py | 24 +++--- desc/compute/_neoclassical_1D.py | 7 +- desc/integrals/bounce_integral.py | 76 ++++++++++--------- .../notebooks/tutorials/EffectiveRipple.ipynb | 14 ++-- 4 files changed, 62 insertions(+), 59 deletions(-) diff --git a/desc/compute/_neoclassical.py b/desc/compute/_neoclassical.py index a0bc72f546..42e88cb1a3 100644 --- a/desc/compute/_neoclassical.py +++ b/desc/compute/_neoclassical.py @@ -87,9 +87,7 @@ def _compute(fun, fun_data, data, theta, grid, num_pitch, simp=False): fun : callable Function to compute. fun_data : dict[str, jnp.ndarray] - Data to provide to ``fun``. - Names in ``Bounce2D.required_names`` will be overridden. - Reshaped automatically. + Data to provide to ``fun``. This dict will be modified. data : dict[str, jnp.ndarray] DESC data dict. theta : jnp.ndarray @@ -100,21 +98,19 @@ def _compute(fun, fun_data, data, theta, grid, num_pitch, simp=False): Whether to use an open Simpson rule instead of uniform weights. """ - fun_data = { - name: Bounce2D.fourier(Bounce2D.reshape_data(grid, fun_data[name])) - for name in fun_data - } for name in Bounce2D.required_names: - fun_data[name] = Bounce2D.reshape_data(grid, data[name]) - # These already have expected shape with num rho along first axis. + fun_data[name] = data[name] + fun_data.pop("iota", None) + for name in fun_data: + fun_data[name] = Bounce2D.fourier(Bounce2D.reshape_data(grid, fun_data[name])) + fun_data["iota"] = grid.compress(data["iota"]) + fun_data["theta"] = theta fun_data["pitch_inv"], fun_data["pitch_inv weight"] = Bounce2D.get_pitch_inv_quad( grid.compress(data["min_tz |B|"]), grid.compress(data["max_tz |B|"]), num_pitch, simp=simp, ) - fun_data["iota"] = grid.compress(data["iota"]) - fun_data["theta"] = theta return grid.expand(imap(fun, fun_data)) @@ -248,7 +244,7 @@ def eps_32(data): num_transit, quad=quad, automorphism=None, - is_reshaped=True, + is_fourier=True, spline=spline, ) @@ -418,7 +414,7 @@ def Gamma_c(data): num_transit, quad=quad, automorphism=None, - is_reshaped=True, + is_fourier=True, spline=spline, ) @@ -576,7 +572,7 @@ def Gamma_c(data): num_transit, quad=quad, automorphism=None, - is_reshaped=True, + is_fourier=True, spline=spline, ) diff --git a/desc/compute/_neoclassical_1D.py b/desc/compute/_neoclassical_1D.py index 36ad97cd51..d17ec3bc37 100644 --- a/desc/compute/_neoclassical_1D.py +++ b/desc/compute/_neoclassical_1D.py @@ -46,9 +46,7 @@ def _compute(fun, fun_data, data, grid, num_pitch, simp=False, reduce=True): fun : callable Function to compute. fun_data : dict[str, jnp.ndarray] - Data to provide to ``fun``. - Names in ``Bounce1D.required_names`` will be overridden. - Reshaped automatically. + Data to provide to ``fun``. This dict will be modified. data : dict[str, jnp.ndarray] DESC data dict. simp : bool @@ -73,7 +71,8 @@ def foreach_rho(x): for name in Bounce1D.required_names: fun_data[name] = data[name] - fun_data = {name: Bounce1D.reshape_data(grid, fun_data[name]) for name in fun_data} + for name in fun_data: + fun_data[name] = Bounce1D.reshape_data(grid, fun_data[name]) out = imap(foreach_rho, fun_data) return grid.expand(_alpha_mean(out)) if reduce else out diff --git a/desc/integrals/bounce_integral.py b/desc/integrals/bounce_integral.py index aac5d86e28..fecf275625 100644 --- a/desc/integrals/bounce_integral.py +++ b/desc/integrals/bounce_integral.py @@ -265,6 +265,7 @@ def __init__( Bref=1.0, Lref=1.0, is_reshaped=False, + is_fourier=False, check=False, spline=True, ): @@ -314,6 +315,9 @@ def __init__( compute bounce integrals one flux surface at a time, reducing memory usage To do so, set to true and provide only those axes of the reshaped data. Default is false. + is_fourier : bool + If true, then it is assumed that ``data`` holds Fourier transforms + as returned by ``Bounce2D.fourier``. Default is false. check : bool Flag for debugging. Must be false for JAX transformations. spline : bool @@ -325,6 +329,7 @@ def __init__( at most ``Y_B*num_transit``. """ + is_reshaped = is_reshaped or is_fourier assert grid.can_fft self._M = grid.num_theta self._N = grid.num_zeta @@ -332,21 +337,9 @@ def __init__( self._alpha = alpha self._x, self._w = get_quadrature(quad, automorphism) - if is_reshaped: - B = data["|B|"] - B_sup_z = data["B^zeta"] - else: - B = Bounce2D.reshape_data(grid, data["|B|"]) - B_sup_z = Bounce2D.reshape_data(grid, data["B^zeta"]) - - # spectral coefficients self._c = { - "|B|": Bounce2D.fourier(B / Bref), - # Strictly increasing zeta knots enforces dζ > 0. - # To retain dℓ = (|B|/B^ζ) dζ > 0 after fixing dζ > 0, we require - # B^ζ = B⋅∇ζ > 0. This is equivalent to changing the sign of ∇ζ - # or (∂ℓ/∂ζ)|ρ,a. Recall dζ = ∇ζ⋅dR ⇔ 1 = ∇ζ⋅(e_ζ|ρ,a). - "|B^zeta|": Bounce2D.fourier(jnp.abs(B_sup_z) * Lref / Bref), + "|B|": data["|B|"] / Bref, + "B^zeta": data["B^zeta"] * Lref / Bref, "T(z)": fourier_chebyshev( theta, data["iota"] if is_reshaped else grid.compress(data["iota"]), @@ -354,6 +347,13 @@ def __init__( num_transit, ), } + if not is_reshaped: + self._c["|B|"] = Bounce2D.reshape_data(grid, self._c["|B|"]) + self._c["B^zeta"] = Bounce2D.reshape_data(grid, self._c["B^zeta"]) + if not is_fourier: + self._c["|B|"] = Bounce2D.fourier(self._c["|B|"]) + self._c["B^zeta"] = Bounce2D.fourier(self._c["B^zeta"]) + Y_B = setdefault(Y_B, theta.shape[-1] * 2) if spline: self._c["B(z)"], self._c["knots"] = cubic_spline( @@ -530,7 +530,7 @@ def points(self, pitch_inv, *, num_well=None): return z1, z2 def _polish_points(self, points, pitch_inv): - # TODO: One application of Newton on Fourier series |B| - pitch_inv. + # TODO: One application of secant on Fourier series |B| - pitch_inv. raise NotImplementedError def check_points(self, points, pitch_inv, *, plot=True, **kwargs): @@ -609,7 +609,7 @@ def integrate( Parameters ---------- - integrand : callable + integrand : callable or list[callable] The composition operator on the set of functions in ``f`` that maps the functions in ``f`` to the integrand f(λ, ℓ) in ∫ f(λ, ℓ) dℓ. It should accept the arrays in ``f`` as arguments as well as the additional keyword @@ -719,14 +719,20 @@ def _integrate( domain1=(0, 2 * jnp.pi / self._NFP), axes=(-1, -2), ) - B_sup_z = irfft2_non_uniform( - theta, - zeta, - self._c["|B^zeta|"][..., jnp.newaxis, :, :], - self._M, - self._N, - domain1=(0, 2 * jnp.pi / self._NFP), - axes=(-1, -2), + # Strictly increasing zeta knots enforces dζ > 0. + # To retain dℓ = |B|/(B⋅∇ζ) dζ > 0 after fixing dζ > 0, we require + # B⋅∇ζ > 0. This is equivalent to changing the sign of ∇ζ + # or (∂ℓ/∂ζ)|ρ,a. Recall dζ = ∇ζ⋅dR ⇔ 1 = ∇ζ⋅(e_ζ|ρ,a). + B_sup_z = jnp.abs( + irfft2_non_uniform( + theta, + zeta, + self._c["B^zeta"][..., jnp.newaxis, :, :], + self._M, + self._N, + domain1=(0, 2 * jnp.pi / self._NFP), + axes=(-1, -2), + ) ) result = [ _swap_pl( @@ -873,14 +879,16 @@ def compute_fieldline_length(self, quad=None): bijection_from_disc(x, 0, 2 * jnp.pi), (self._c["T(z)"].X, w.size) ).ravel() - B_sup_z = irfft2_non_uniform( - theta, - zeta, - self._c["|B^zeta|"][..., jnp.newaxis, :, :], - self._M, - self._N, - domain1=(0, 2 * jnp.pi / self._NFP), - axes=(-1, -2), + B_sup_z = jnp.abs( + irfft2_non_uniform( + theta, + zeta, + self._c["B^zeta"][..., jnp.newaxis, :, :], + self._M, + self._N, + domain1=(0, 2 * jnp.pi / self._NFP), + axes=(-1, -2), + ) ).reshape(*shape[:-1], self._c["T(z)"].X, w.size) # Gradient of change of variable from [−1, 1] → [0, 2π] is π. @@ -1097,8 +1105,8 @@ def __init__( assert grid.is_meshgrid data = { # Strictly increasing zeta knots enforces dζ > 0. - # To retain dℓ = (|B|/B^ζ) dζ > 0 after fixing dζ > 0, we require - # B^ζ = B⋅∇ζ > 0. This is equivalent to changing the sign of ∇ζ + # To retain dℓ = |B|/(B⋅∇ζ) dζ > 0 after fixing dζ > 0, we require + # B⋅∇ζ > 0. This is equivalent to changing the sign of ∇ζ # or (∂ℓ/∂ζ)|ρ,a. Recall dζ = ∇ζ⋅dR ⇔ 1 = ∇ζ⋅(e_ζ|ρ,a). "|B^zeta|": jnp.abs(data["B^zeta"]) * Lref / Bref, "|B^zeta|_z|r,a": data["B^zeta_z|r,a"] diff --git a/docs/notebooks/tutorials/EffectiveRipple.ipynb b/docs/notebooks/tutorials/EffectiveRipple.ipynb index c958cc7df0..00bccd7247 100644 --- a/docs/notebooks/tutorials/EffectiveRipple.ipynb +++ b/docs/notebooks/tutorials/EffectiveRipple.ipynb @@ -192,9 +192,9 @@ " batch_size=None,\n", ")\n", "\n", - "eps_32 = grid.compress(data[\"effective ripple\"])\n", + "eps = grid.compress(data[\"effective ripple\"])\n", "fig, ax = plt.subplots()\n", - "ax.plot(rho, eps_32, marker=\"o\")\n", + "ax.plot(rho, eps, marker=\"o\")\n", "ax.set(xlabel=r\"$\\rho$\", ylabel=r\"$\\epsilon$\", title=\"Precise QH\")\n", "plt.tight_layout()\n", "plt.show()" @@ -242,9 +242,9 @@ " num_quad=num_quad,\n", ")\n", "\n", - "eps_32 = grid.compress(data[\"effective ripple\"])\n", + "eps = grid.compress(data[\"effective ripple\"])\n", "fig, ax = plt.subplots()\n", - "ax.plot(rho, eps_32, marker=\"o\")\n", + "ax.plot(rho, eps, marker=\"o\")\n", "ax.set(xlabel=r\"$\\rho$\", ylabel=r\"$\\epsilon$\", title=\"Heliotron\")\n", "plt.tight_layout()\n", "plt.show()" @@ -425,7 +425,7 @@ " num_well=num_well,\n", " num_quad=num_quad,\n", ")\n", - "eps_32_opt = grid.compress(data[\"effective ripple\"])" + "eps_opt = grid.compress(data[\"effective ripple\"])" ] }, { @@ -447,8 +447,8 @@ ], "source": [ "fig, ax = plt.subplots()\n", - "ax.plot(rho, eps_32, marker=\"o\", label=\"original\")\n", - "ax.plot(rho, eps_32_opt, marker=\"o\", label=\"optimized\")\n", + "ax.plot(rho, eps, marker=\"o\", label=\"original\")\n", + "ax.plot(rho, eps_opt, marker=\"o\", label=\"optimized\")\n", "ax.set(xlabel=r\"$\\rho$\", ylabel=r\"$\\epsilon$\", title=\"Heliotron\")\n", "ax.legend()\n", "plt.tight_layout()\n", From 3c95413388338e75be84d9353fe62c686fe13a44 Mon Sep 17 00:00:00 2001 From: unalmis Date: Sun, 10 Nov 2024 18:17:44 -0500 Subject: [PATCH 23/60] Clean up integration api --- desc/compute/_neoclassical.py | 79 +++++----- desc/compute/_neoclassical_1D.py | 78 ++++------ desc/integrals/_bounce_utils.py | 101 +++++++------ desc/integrals/bounce_integral.py | 230 +++++++++++++++--------------- tests/test_integrals.py | 119 +++++++--------- 5 files changed, 300 insertions(+), 307 deletions(-) diff --git a/desc/compute/_neoclassical.py b/desc/compute/_neoclassical.py index 42e88cb1a3..218b7a0cc6 100644 --- a/desc/compute/_neoclassical.py +++ b/desc/compute/_neoclassical.py @@ -157,19 +157,19 @@ def _effective_ripple(params, transforms, profiles, data, **kwargs): return data -def _dH(grad_rho_norm_kappa_g, B, pitch, zeta): +def _dH(data, pitch): """Integrand of Nemov eq. 30 with |∂ψ/∂ρ| (λB₀)¹ᐧ⁵ removed.""" return ( - jnp.sqrt(jnp.abs(1 - pitch * B)) - * (4 / (pitch * B) - 1) - * grad_rho_norm_kappa_g - / B + jnp.sqrt(jnp.abs(1 - pitch * data["|B|"])) + * (4 / (pitch * data["|B|"]) - 1) + * data["|grad(rho)|*kappa_g"] + / data["|B|"] ) -def _dI(B, pitch, zeta): +def _dI(data, pitch): """Integrand of Nemov eq. 31.""" - return jnp.sqrt(jnp.abs(1 - pitch * B)) / B + return jnp.sqrt(jnp.abs(1 - pitch * data["|B|"])) / data["|B|"] @register_compute_fun( @@ -252,7 +252,8 @@ def fun(pitch_inv): H, I = bounce.integrate( [_dH, _dI], pitch_inv, - [[data["|grad(rho)|*kappa_g"]], []], + data, + "|grad(rho)|*kappa_g", bounce.points(pitch_inv, num_well=num_well), is_fourier=True, ) @@ -301,26 +302,35 @@ def fun(pitch_inv): # (|∇ρ| ‖e_α|ρ,ϕ‖)ᵢ ∫ dℓ [ (1 − λ|B|/2)/√(1 − λ|B|) ∂|B|/∂ρ + √(1 − λ|B|) K ] / |B| -def _v_tau(B, pitch, zeta): +def _v_tau(data, pitch): # Note v τ = 4λ⁻²B₀⁻¹ ∂I/∂((λB₀)⁻¹) where v is the particle velocity, # τ is the bounce time, and I is defined in Nemov eq. 36. - return safediv(2.0, jnp.sqrt(jnp.abs(1 - pitch * B))) + return safediv(2.0, jnp.sqrt(jnp.abs(1 - pitch * data["|B|"]))) -def _f1(grad_psi_norm_kappa_g, B, pitch, zeta): +def _f1(data, pitch): return ( - safediv(1 - 0.5 * pitch * B, jnp.sqrt(jnp.abs(1 - pitch * B))) - * grad_psi_norm_kappa_g - / B + safediv( + 1 - 0.5 * pitch * data["|B|"], + jnp.sqrt(jnp.abs(1 - pitch * data["|B|"])), + ) + * data["|grad(psi)|*kappa_g"] + / data["|B|"] ) -def _f2(B_r, B, pitch, zeta): - return safediv(1 - 0.5 * pitch * B, jnp.sqrt(jnp.abs(1 - pitch * B))) * B_r / B +def _f2(data, pitch): + return ( + safediv( + 1 - 0.5 * pitch * data["|B|"], jnp.sqrt(jnp.abs(1 - pitch * data["|B|"])) + ) + * data["|B|_r|v,p"] + / data["|B|"] + ) -def _f3(K, B, pitch, zeta): - return jnp.sqrt(jnp.abs(1 - pitch * B)) * K / B +def _f3(data, pitch): + return jnp.sqrt(jnp.abs(1 - pitch * data["|B|"])) * data["K"] / data["|B|"] @register_compute_fun( @@ -423,8 +433,9 @@ def fun(pitch_inv): v_tau, f1, f2 = bounce.integrate( [_v_tau, _f1, _f2], pitch_inv, - [[], [data["|grad(psi)|*kappa_g"]], [data["|B|_r|v,p"]]], - points=points, + data, + ["|grad(psi)|*kappa_g", "|B|_r|v,p"], + points, is_fourier=True, ) gamma_c = jnp.arctan( @@ -435,8 +446,9 @@ def fun(pitch_inv): + bounce.integrate( _f3, pitch_inv, - data["K"], - points=points, + data, + "K", + points, quad=quad2, is_fourier=True, ) @@ -484,14 +496,18 @@ def fun(pitch_inv): return data -def _cvdrift0(cvdrift0, B, pitch, zeta): - return safediv(cvdrift0 * (1 - 0.5 * pitch * B), jnp.sqrt(jnp.abs(1 - pitch * B))) +def _cvdrift0(data, pitch): + return safediv( + data["cvdrift0"] * (1 - 0.5 * pitch * data["|B|"]), + jnp.sqrt(jnp.abs(1 - pitch * data["|B|"])), + ) -def _gbdrift(periodic_gbdrift, secular_gbdrift_over_phi, B, pitch, zeta): +def _gbdrift(data, pitch): return safediv( - (periodic_gbdrift + secular_gbdrift_over_phi * zeta) * (1 - 0.5 * pitch * B), - jnp.sqrt(jnp.abs(1 - pitch * B)), + (data["periodic(gbdrift)"] + data["secular(gbdrift)/phi"] * data["zeta"]) + * (1 - 0.5 * pitch * data["|B|"]), + jnp.sqrt(jnp.abs(1 - pitch * data["|B|"])), ) @@ -580,12 +596,9 @@ def fun(pitch_inv): v_tau, cvdrift0, gbdrift = bounce.integrate( [_v_tau, _cvdrift0, _gbdrift], pitch_inv, - [ - [], - [data["cvdrift0"]], - [data["periodic(gbdrift)"], data["secular(gbdrift)/phi"]], - ], - points=bounce.points(pitch_inv, num_well=num_well), + data, + ["cvdrift0", "periodic(gbdrift)", "secular(gbdrift)/phi"], + bounce.points(pitch_inv, num_well=num_well), is_fourier=True, ) gamma_c = jnp.arctan(safediv(cvdrift0, gbdrift)) diff --git a/desc/compute/_neoclassical_1D.py b/desc/compute/_neoclassical_1D.py index d17ec3bc37..8ba2de3f66 100644 --- a/desc/compute/_neoclassical_1D.py +++ b/desc/compute/_neoclassical_1D.py @@ -15,7 +15,7 @@ ) from ..integrals.bounce_integral import Bounce1D from ..utils import cross, dot, safediv -from ._neoclassical import _bounce_doc +from ._neoclassical import _bounce_doc, _cvdrift0, _dH, _dI, _f1, _f2, _f3, _v_tau from .data_index import register_compute_fun _bounce1D_doc = { @@ -143,21 +143,6 @@ def _fieldline_length_over_volume(data, transforms, profiles, **kwargs): return data -def _dH(grad_rho_norm_kappa_g, B, pitch): - """Integrand of Nemov eq. 30 with |∂ψ/∂ρ| (λB₀)¹ᐧ⁵ removed.""" - return ( - jnp.sqrt(jnp.abs(1 - pitch * B)) - * (4 / (pitch * B) - 1) - * grad_rho_norm_kappa_g - / B - ) - - -def _dI(B, pitch): - """Integrand of Nemov eq. 31.""" - return jnp.sqrt(jnp.abs(1 - pitch * B)) / B - - @register_compute_fun( name="deprecated(effective ripple 3/2)", label=( @@ -216,8 +201,9 @@ def eps_32(data): H = bounce.integrate( _dH, data["pitch_inv"], - data["|grad(rho)|*kappa_g"], - points=points, + data, + "|grad(rho)|*kappa_g", + points, batch=batch, ) I = bounce.integrate(_dI, data["pitch_inv"], points=points, batch=batch) @@ -267,26 +253,6 @@ def _effective_ripple_1D(params, transforms, profiles, data, **kwargs): return data -def _v_tau(B, pitch): - return safediv(2.0, jnp.sqrt(jnp.abs(1 - pitch * B))) - - -def _f1(grad_psi_norm_kappa_g, B, pitch): - return ( - safediv(1 - 0.5 * pitch * B, jnp.sqrt(jnp.abs(1 - pitch * B))) - * grad_psi_norm_kappa_g - / B - ) - - -def _f2(B_r, B, pitch): - return safediv(1 - 0.5 * pitch * B, jnp.sqrt(jnp.abs(1 - pitch * B))) * B_r / B - - -def _f3(K, B, pitch): - return jnp.sqrt(jnp.abs(1 - pitch * B)) * K / B - - @register_compute_fun( name="deprecated(Gamma_c)", label=( @@ -359,23 +325,26 @@ def Gamma_c(data): bounce.integrate( _f1, data["pitch_inv"], - data["|grad(psi)|*kappa_g"], - points=points, + data, + "|grad(psi)|*kappa_g", + points, batch=batch, ), ( bounce.integrate( _f2, data["pitch_inv"], - data["|B|_r|v,p"], - points=points, + data, + "|B|_r|v,p", + points, batch=batch, ) + bounce.integrate( _f3, data["pitch_inv"], - data["K"], - points=points, + data, + "K", + points, batch=batch, quad=quad2, ) @@ -417,8 +386,11 @@ def Gamma_c(data): return data -def _drift(f, B, pitch): - return safediv(f * (1 - 0.5 * pitch * B), jnp.sqrt(jnp.abs(1 - pitch * B))) +def _gbdrift(data, pitch): + return safediv( + data["gbdrift"] * (1 - 0.5 * pitch * data["|B|"]), + jnp.sqrt(jnp.abs(1 - pitch * data["|B|"])), + ) @register_compute_fun( @@ -470,17 +442,19 @@ def Gamma_c(data): gamma_c = jnp.arctan( safediv( bounce.integrate( - _drift, + _cvdrift0, data["pitch_inv"], - data["cvdrift0"], - points=points, + data, + "cvdrift0", + points, batch=batch, ), bounce.integrate( - _drift, + _gbdrift, data["pitch_inv"], - data["gbdrift"], - points=points, + data, + "gbdrift", + points, batch=batch, ), ) diff --git a/desc/integrals/_bounce_utils.py b/desc/integrals/_bounce_utils.py index 71fea67b83..23eb21c999 100644 --- a/desc/integrals/_bounce_utils.py +++ b/desc/integrals/_bounce_utils.py @@ -304,12 +304,12 @@ def _check_bounce_points(z1, z2, pitch_inv, knots, B, plot=True, **kwargs): def _bounce_quadrature( x, w, + knots, integrand, - points, pitch_inv, - f, data, - knots, + names, + points, *, method="cubic", batch=True, @@ -326,31 +326,33 @@ def _bounce_quadrature( w : jnp.ndarray Shape (num quad, ). Quadrature weights. - integrand : callable - The composition operator on the set of functions in ``f`` that maps the - functions in ``f`` to the integrand f(λ, ℓ) in ∫ f(λ, ℓ) dℓ. It should - accept the arrays in ``f`` as arguments as well as the additional keyword - arguments: ``B`` and ``pitch``. A quadrature will be performed to - approximate the bounce integral of ``integrand(*f,B=B,pitch=pitch)``. - points : jnp.ndarray - Shape (..., num pitch, num well). - ζ coordinates of bounce points. The points are ordered and grouped such - that the straight line path between ``z1`` and ``z2`` resides in the - epigraph of |B|. - pitch_inv : jnp.ndarray - Shape (..., num pitch). - 1/λ values to compute the bounce integrals. - f : list[jnp.ndarray] - Shape (..., N). - Real scalar-valued functions evaluated on the ``knots``. - These functions should be arguments to the callable ``integrand``. - data : dict[str, jnp.ndarray] - Shape (..., 1, N). - Required data evaluated on ``grid`` and reshaped with ``Bounce1D.reshape_data``. - Must include names in ``Bounce1D.required_names``. knots : jnp.ndarray Shape (N, ). Unique ζ coordinates where the arrays in ``data`` and ``f`` were evaluated. + integrand : callable + The composition operator on the set of functions in ``data`` that + maps that determines ``f`` in ∫ f(λ, ℓ) dℓ. It should accept a dictionary + which stores the interpolated data and the keyword argument ``pitch``. + pitch_inv : jnp.ndarray + Shape (num alpha, num rho, num pitch). + 1/λ values to compute the bounce integrals. 1/λ(α,ρ) is specified by + ``pitch_inv[α,ρ]`` where in the latter the labels are interpreted + as the indices that correspond to that field line. + data : dict[str, jnp.ndarray] + Shape (num alpha, num rho, num zeta). + Real scalar-valued periodic functions in (θ, ζ) ∈ [0, 2π) × [0, 2π/NFP) + evaluated on the ``grid`` supplied to construct this object. + Use the method ``Bounce1D.reshape_data`` to reshape the data into the + expected shape. Do not include the keys ``|B|`` or ``|B^zeta|``, + which will be automatically added. + names : str or list[str] + Names in ``data`` to interpolate. Default is all keys in ``data``. + points : tuple[jnp.ndarray] + Shape (num alpha, num rho, num pitch, num well). + Optional, output of method ``self.points``. + Tuple of length two (z1, z2) that stores ζ coordinates of bounce points. + The points are ordered and grouped such that the straight line path + between ``z1`` and ``z2`` resides in the epigraph of |B|. method : str Method of interpolation. See https://interpax.readthedocs.io/en/latest/_api/interpax.interp1d.html. @@ -376,19 +378,17 @@ def _bounce_quadrature( z1, z2 = points errorif(z1.ndim < 2 or z1.shape != z2.shape) pitch_inv = jnp.atleast_1d(pitch_inv) - if not isinstance(f, (list, tuple)): - f = [f] # Integrate and complete the change of variable. if batch: result = _interpolate_and_integrate( w=w, Q=bijection_from_disc(x, z1[..., jnp.newaxis], z2[..., jnp.newaxis]), + knots=knots, integrand=integrand, pitch_inv=pitch_inv, - f=f, data=data, - knots=knots, + names=names, method=method, check=check, plot=plot, @@ -401,11 +401,11 @@ def loop(z): # over num well axis return None, _interpolate_and_integrate( w=w, Q=bijection_from_disc(x, z1[..., jnp.newaxis], z2[..., jnp.newaxis]), + knots=knots, integrand=integrand, pitch_inv=pitch_inv, - f=f, data=data, - knots=knots, + names=names, method=method, check=False, plot=False, @@ -425,11 +425,12 @@ def loop(z): # over num well axis def _interpolate_and_integrate( w, Q, + knots, integrand, pitch_inv, - f, data, - knots, + names, + *, method, check, plot, @@ -463,21 +464,41 @@ def _interpolate_and_integrate( b_sup_z = interp1d_Hermite_vec( Q, knots, - data["|B^zeta|"] / data["|B|"], - data["|B^zeta|_z|r,a"] / data["|B|"] - - data["|B^zeta|"] * data["|B|_z|r,a"] / data["|B|"] ** 2, + (data["|B^zeta|"] / data["|B|"])[..., jnp.newaxis, :], + ( + data["|B^zeta|_z|r,a"] / data["|B|"] + - data["|B^zeta|"] * data["|B|_z|r,a"] / data["|B|"] ** 2 + )[..., jnp.newaxis, :], + ) + B = interp1d_Hermite_vec( + Q, + knots, + data["|B|"][..., jnp.newaxis, :], + data["|B|_z|r,a"][..., jnp.newaxis, :], ) - B = interp1d_Hermite_vec(Q, knots, data["|B|"], data["|B|_z|r,a"]) # Spline each function separately so that operations in the integrand # that do not preserve smoothness can be captured. - f = [interp1d_vec(Q, knots, f_i[..., jnp.newaxis, :], method=method) for f_i in f] + data = { + name: interp1d_vec(Q, knots, data[name][..., jnp.newaxis, :], method=method) + for name in names + } + data["|B|"] = B result = ( - (integrand(*f, B=B, pitch=1 / pitch_inv[..., jnp.newaxis]) / b_sup_z) + (integrand(data, pitch=1 / pitch_inv[..., jnp.newaxis]) / b_sup_z) .reshape(shape) .dot(w) ) + if check: - _check_interp(shape, Q, b_sup_z, B, result, f, plot) + _check_interp( + shape, + Q, + b_sup_z, + B, + result, + [data[name] for name in names], + plot=plot, + ) return result diff --git a/desc/integrals/bounce_integral.py b/desc/integrals/bounce_integral.py index fecf275625..4167300501 100644 --- a/desc/integrals/bounce_integral.py +++ b/desc/integrals/bounce_integral.py @@ -52,7 +52,9 @@ def check_points(self, points, pitch_inv, *, plot=True): """Check that bounce points are computed correctly.""" @abstractmethod - def integrate(self, integrand, pitch_inv, f=None, points=None, *, quad=None): + def integrate( + self, integrand, pitch_inv, data=None, names=None, points=None, *, quad=None + ): """Bounce integrate ∫ f(λ, ℓ) dℓ.""" @abstractmethod @@ -590,7 +592,8 @@ def integrate( self, integrand, pitch_inv, - f=None, + data=None, + names=None, points=None, *, is_fourier=False, @@ -610,23 +613,23 @@ def integrate( Parameters ---------- integrand : callable or list[callable] - The composition operator on the set of functions in ``f`` that maps the - functions in ``f`` to the integrand f(λ, ℓ) in ∫ f(λ, ℓ) dℓ. It should - accept the arrays in ``f`` as arguments as well as the additional keyword - arguments: ``B``, ``pitch``, and ``zeta``. A quadrature will be performed - to approximate the bounce integral of - ``integrand(*f,B=B,pitch=pitch,zeta=zeta)``. + The composition operator on the set of functions in ``data`` that + maps that determines ``f`` in ∫ f(λ, ℓ) dℓ. It should accept a dictionary + which stores the interpolated data and the keyword argument ``pitch``. pitch_inv : jnp.ndarray Shape (num rho, num pitch). 1/λ values to compute the bounce integrals. 1/λ(ρ) is specified by ``pitch_inv[ρ]`` where in the latter the labels are interpreted as the indices that correspond to that field line. - f : list[jnp.ndarray] or jnp.ndarray + data : dict[str, jnp.ndarray] Shape (num rho, M, N). Real scalar-valued periodic functions in (θ, ζ) ∈ [0, 2π) × [0, 2π/NFP) - evaluated on the ``grid`` supplied to construct this object. These functions - should be arguments to the callable ``integrand``. Use the method - ``Bounce2D.reshape_data`` to reshape the data into the expected shape. + evaluated on the ``grid`` supplied to construct this object. + Use the method ``Bounce2D.reshape_data`` to reshape the data into the + expected shape. Do not include the keys ``|B|`` or ``|B^zeta|``, + which will be automatically added. + names : str or list[str] + Names in ``data`` to interpolate. Default is all keys in ``data``. points : tuple[jnp.ndarray] Shape (num rho, num pitch, num well). Optional, output of method ``self.points``. @@ -634,7 +637,7 @@ def integrate( The points are ordered and grouped such that the straight line path between ``z1`` and ``z2`` resides in the epigraph of |B|. is_fourier : bool - If true, then it is assumed that ``f`` holds Fourier transforms + If true, then it is assumed that ``data`` holds Fourier transforms as returned by ``Bounce2D.fourier``. Default is false. check : bool Flag for debugging. Must be false for JAX transformations. @@ -655,64 +658,62 @@ def integrate( """ if not isinstance(integrand, (list, tuple)): integrand = [integrand] - f = setdefault(f, [[]]) - if not isinstance(f, (list, tuple)): - f = [f] - if not isinstance(f[0], (list, tuple)): - f = [f] + data = setdefault(data, {}) + if names is None: + names = data.keys() + elif isinstance(names, str): + names = [names] if points is None: points = self.points(pitch_inv) + + # We move num pitch axis to front so that the num rho axis broadcasts + # with the spectral coefficients (whose first axis is also num rho), + # assuming this axis exists. result = self._integrate( - self._x if quad is None else quad[0], - self._w if quad is None else quad[1], - integrand, - pitch_inv, - f, - points, - is_fourier, - check, - plot, + x=self._x if quad is None else quad[0], + w=self._w if quad is None else quad[1], + integrand=integrand, + pitch_inv=atleast_nd(self._c["T(z)"].cheb.ndim - 1, pitch_inv).T, + data=data, + names=names, + points=map(_swap_pl, points), + is_fourier=is_fourier, + check=check, + plot=plot, ) return result[0] if len(result) == 1 else result def _integrate( - self, x, w, integrand, pitch_inv, f, points, is_fourier, check, plot + self, + x, + w, + integrand, + pitch_inv, + data, + names, + points, + *, + is_fourier, + check, + plot, ): - """Bounce integrate ∫ f(λ, ℓ) dℓ. - - Parameters - ---------- - integrand : list[callable] - f : list[list[jnp.ndarray]] - Shape (M, N) or (num rho, M, N). - - Returns - ------- - result : list[jnp.ndarray] - Shape (num rho, num pitch, num well). - - """ - # We move num pitch axis to front so that the num rho axis broadcasts - # with the spectral coefficients (whose first axis is also num rho), - # assuming this axis exists. - z1, z2 = map(_swap_pl, points) - pitch_inv = atleast_nd(self._c["T(z)"].cheb.ndim - 1, pitch_inv).T - + z1, z2 = points shape = [*z1.shape, x.size] # num pitch, num rho, num well, num quad # ζ ∈ ℝ and θ ∈ ℝ coordinates of quadrature points - zeta = flatten_matrix( + _data = {} + _data["zeta"] = flatten_matrix( bijection_from_disc(x, z1[..., jnp.newaxis], z2[..., jnp.newaxis]) ) - theta = self._c["T(z)"].eval1d(zeta) + _data["theta"] = self._c["T(z)"].eval1d(_data["zeta"]) # Compute |B| from Fourier series instead of spline approximation # because integrals are sensitive to |B|. Using the ``polish_points`` # method should resolve any issues. For now, we integrate with √|1−λB| # as justified in doi.org/10.1063/5.0160282. - B = irfft2_non_uniform( - theta, - zeta, + _data["|B|"] = irfft2_non_uniform( + _data["theta"], + _data["zeta"], self._c["|B|"][..., jnp.newaxis, :, :], self._M, self._N, @@ -723,10 +724,10 @@ def _integrate( # To retain dℓ = |B|/(B⋅∇ζ) dζ > 0 after fixing dζ > 0, we require # B⋅∇ζ > 0. This is equivalent to changing the sign of ∇ζ # or (∂ℓ/∂ζ)|ρ,a. Recall dζ = ∇ζ⋅dR ⇔ 1 = ∇ζ⋅(e_ζ|ρ,a). - B_sup_z = jnp.abs( + _data["|B^zeta|"] = jnp.abs( irfft2_non_uniform( - theta, - zeta, + _data["theta"], + _data["zeta"], self._c["B^zeta"][..., jnp.newaxis, :, :], self._M, self._N, @@ -734,23 +735,40 @@ def _integrate( axes=(-1, -2), ) ) + + if is_fourier: + for name in names: + _data[name] = irfft2_non_uniform( + _data["theta"], + _data["zeta"], + data[name][..., jnp.newaxis, :, :], + self._M, + self._N, + domain1=(0, 2 * jnp.pi / self._NFP), + axes=(-1, -2), + ) + else: + for name in names: + _data[name] = interp_rfft2( + _data["theta"], + _data["zeta"], + data[name][..., jnp.newaxis, :, :], + domain1=(0, 2 * jnp.pi / self._NFP), + axes=(-1, -2), + ) + result = [ _swap_pl( ( - int_i( - *self._interp(theta, zeta, f_i, is_fourier), - B=B, - pitch=1 / pitch_inv[..., jnp.newaxis], - zeta=zeta, - ) - * B - / B_sup_z + f(_data, pitch=1 / pitch_inv[..., jnp.newaxis]) + * _data["|B|"] + / _data["|B^zeta|"] ) .reshape(shape) .dot(w) * grad_bijection_from_disc(z1, z2) ) - for int_i, f_i in zip(integrand, f) + for f in integrand ] if check: @@ -758,38 +776,14 @@ def _integrate( _check_interp( # shape is num alpha = 1, num rho, num pitch, num well, num quad (1, *shape), - *map(_swap_pl, (zeta, B_sup_z, B)), - result=result[0], + *map(_swap_pl, (_data["zeta"], _data["|B^zeta|"], _data["|B|"])), + result[0], + [_swap_pl(_data[name]) for name in names], plot=plot, ) return result - def _interp(self, theta, zeta, f, is_fourier): - if is_fourier: - return ( - irfft2_non_uniform( - theta, - zeta, - f_i[..., jnp.newaxis, :, :], - self._M, - self._N, - domain1=(0, 2 * jnp.pi / self._NFP), - axes=(-1, -2), - ) - for f_i in f - ) - return ( - interp_rfft2( - theta, - zeta, - f_i[..., jnp.newaxis, :, :], - domain1=(0, 2 * jnp.pi / self._NFP), - axes=(-1, -2), - ) - for f_i in f - ) - def interp_to_argmin(self, f, points, *, is_fourier=False): """Interpolates ``f`` to the deepest point pⱼ in magnetic well j. @@ -1103,7 +1097,7 @@ def __init__( """ assert grid.is_meshgrid - data = { + self._data = { # Strictly increasing zeta knots enforces dζ > 0. # To retain dℓ = |B|/(B⋅∇ζ) dζ > 0 after fixing dζ > 0, we require # B⋅∇ζ > 0. This is equivalent to changing the sign of ∇ζ @@ -1116,11 +1110,9 @@ def __init__( "|B|": data["|B|"] / Bref, "|B|_z|r,a": data["|B|_z|r,a"] / Bref, # This is already the correct sign. } - self._data = ( - data - if is_reshaped - else {name: Bounce1D.reshape_data(grid, data[name]) for name in data} - ) + if not is_reshaped: + for name in self._data: + self._data[name] = Bounce1D.reshape_data(grid, self._data[name]) self._x, self._w = get_quadrature(quad, automorphism) # Compute local splines. @@ -1142,10 +1134,6 @@ def __init__( # The point of Bounce2D is to do such a 2D interpolation but also do so # without rebuilding DESC transforms each time an objective is computed. - # Add axis here instead of in ``_bounce_quadrature``. - for name in self._data: - self._data[name] = self._data[name][..., jnp.newaxis, :] - @staticmethod def reshape_data(grid, f): """Reshape arrays for acceptable input to ``integrate``. @@ -1251,7 +1239,8 @@ def integrate( self, integrand, pitch_inv, - f=None, + data=None, + names=None, points=None, *, method="cubic", @@ -1267,22 +1256,23 @@ def integrate( Parameters ---------- integrand : callable - The composition operator on the set of functions in ``f`` that maps the - functions in ``f`` to the integrand f(λ, ℓ) in ∫ f(λ, ℓ) dℓ. It should - accept the arrays in ``f`` as arguments as well as the additional keyword - arguments: ``B`` and ``pitch``. A quadrature will be performed to - approximate the bounce integral of ``integrand(*f,B=B,pitch=pitch)``. + The composition operator on the set of functions in ``data`` that + maps that determines ``f`` in ∫ f(λ, ℓ) dℓ. It should accept a dictionary + which stores the interpolated data and the keyword argument ``pitch``. pitch_inv : jnp.ndarray Shape (num alpha, num rho, num pitch). 1/λ values to compute the bounce integrals. 1/λ(α,ρ) is specified by ``pitch_inv[α,ρ]`` where in the latter the labels are interpreted as the indices that correspond to that field line. - f : list[jnp.ndarray] or jnp.ndarray + data : dict[str, jnp.ndarray] Shape (num alpha, num rho, num zeta). - Real scalar-valued functions evaluated on the ``grid`` supplied to - construct this object. These functions should be arguments to the callable - ``integrand``. Use the method ``Bounce1D.reshape_data`` to reshape the data - into the expected shape. + Real scalar-valued periodic functions in (θ, ζ) ∈ [0, 2π) × [0, 2π/NFP) + evaluated on the ``grid`` supplied to construct this object. + Use the method ``Bounce1D.reshape_data`` to reshape the data into the + expected shape. Do not include the key ``|B|`, + which will be automatically added. + names : str or list[str] + Names in ``data`` to interpolate. Default is all keys in ``data``. points : tuple[jnp.ndarray] Shape (num alpha, num rho, num pitch, num well). Optional, output of method ``self.points``. @@ -1312,17 +1302,23 @@ def integrate( flux surface, and pitch value. """ + data = setdefault(data, {}) + if names is None: + names = data.keys() + elif isinstance(names, str): + names = [names] + if points is None: points = self.points(pitch_inv) return _bounce_quadrature( x=self._x if quad is None else quad[0], w=self._w if quad is None else quad[1], + knots=self._zeta, integrand=integrand, - points=points, pitch_inv=pitch_inv, - f=setdefault(f, []), - data=self._data, - knots=self._zeta, + data=data | self._data, + names=names, + points=points, method=method, batch=batch, check=check, diff --git a/tests/test_integrals.py b/tests/test_integrals.py index d8164f6eaa..acdb304b3d 100644 --- a/tests/test_integrals.py +++ b/tests/test_integrals.py @@ -14,7 +14,7 @@ from tests.test_interp_utils import _f_1d, _f_1d_nyquist_freq from tests.test_plotting import tol_1d -from desc.backend import jnp +from desc.backend import jnp, vmap from desc.basis import FourierZernikeBasis from desc.equilibrium import Equilibrium from desc.equilibrium.coords import get_rtz_grid @@ -57,7 +57,7 @@ from desc.integrals.singularities import _get_quadrature_nodes from desc.integrals.surface_integral import _get_grid_surface from desc.transform import Transform -from desc.utils import dot, errorif, safediv, setdefault +from desc.utils import dot, errorif, safediv class TestSurfaceIntegral: @@ -967,10 +967,12 @@ def test_bounce_quadrature(self, is_strong, quad, automorphism): pitch_inv = 2 - 1e-12 k = pitch_inv * m # m = k * pitch if is_strong: - integrand = lambda B, pitch: 1 / jnp.sqrt(1 - k * pitch * (B - 1)) + integrand = lambda data, pitch: 1 / jnp.sqrt( + 1 - k * pitch * (data["|B|"] - 1) + ) truth = v * 2 * ellipkm1(1 - m) else: - integrand = lambda B, pitch: jnp.sqrt(1 - k * pitch * (B - 1)) + integrand = lambda data, pitch: jnp.sqrt(1 - k * pitch * (data["|B|"] - 1)) truth = v * 2 * ellipe(m) np.testing.assert_allclose( bounce.integrate(integrand, pitch_inv, check=True, plot=False).sum(), @@ -1080,13 +1082,13 @@ class TestBounce: """Test bounce integration with one-dimensional local spline methods.""" @staticmethod - def _example_numerator(g_zz, B, pitch): - f = (1 - 0.5 * pitch * B) * g_zz - return safediv(f, jnp.sqrt(jnp.abs(1 - pitch * B))) + def _example_numerator(data, pitch): + f = (1 - 0.5 * pitch * data["|B|"]) * data["g_zz"] + return safediv(f, jnp.sqrt(jnp.abs(1 - pitch * data["|B|"]))) @staticmethod - def _example_denominator(B, pitch): - return safediv(1, jnp.sqrt(jnp.abs(1 - pitch * B))) + def _example_denominator(data, pitch): + return safediv(1, jnp.sqrt(jnp.abs(1 - pitch * data["|B|"]))) @pytest.mark.unit @pytest.mark.mpl_image_compare(remove_text=True, tolerance=tol_1d * 4) @@ -1129,7 +1131,7 @@ def test_bounce1d_checks(self): num = bounce.integrate( integrand=TestBounce._example_numerator, pitch_inv=pitch_inv, - f=Bounce1D.reshape_data(grid.source_grid, data["g_zz"]), + data={"g_zz": Bounce1D.reshape_data(grid.source_grid, data["g_zz"])}, points=points, check=True, ) @@ -1354,15 +1356,19 @@ def drift_analytic(data): return drift_analytic, cvdrift, gbdrift, pitch_inv @staticmethod - def drift_num_integrand(cvdrift, gbdrift, B, pitch): + def drift_num_integrand(data, pitch): """Integrand of numerator of bounce averaged binormal drift.""" - g = jnp.sqrt(jnp.abs(1 - pitch * B)) - return (cvdrift * g) - (0.5 * g * gbdrift) + (0.5 * gbdrift / g) + g = jnp.sqrt(jnp.abs(1 - pitch * data["|B|"])) + return ( + (data["cvdrift"] * g) + - (0.5 * g * data["gbdrift"]) + + (0.5 * data["gbdrift"] / g) + ) @staticmethod - def drift_den_integrand(B, pitch): + def drift_den_integrand(data, pitch): """Integrand of denominator of bounce averaged binormal drift.""" - return 1 / jnp.sqrt(jnp.abs(1 - pitch * B)) + return 1 / jnp.sqrt(jnp.abs(1 - pitch * data["|B|"])) @pytest.mark.unit @pytest.mark.mpl_image_compare(remove_text=True, tolerance=tol_1d) @@ -1380,14 +1386,14 @@ def test_binormal_drift_bounce1d(self): ) points = bounce.points(pitch_inv, num_well=1) bounce.check_points(points, pitch_inv, plot=False) - f = [ - Bounce1D.reshape_data(things["grid"].source_grid, cvdrift), - Bounce1D.reshape_data(things["grid"].source_grid, gbdrift), - ] + interp_data = { + "cvdrift": Bounce1D.reshape_data(things["grid"].source_grid, cvdrift), + "gbdrift": Bounce1D.reshape_data(things["grid"].source_grid, gbdrift), + } drift_numerical_num = bounce.integrate( integrand=TestBounce.drift_num_integrand, pitch_inv=pitch_inv, - f=f, + data=interp_data, points=points, check=True, ) @@ -1405,7 +1411,9 @@ def test_binormal_drift_bounce1d(self): drift_numerical, drift_analytic, atol=5e-3, rtol=5e-2 ) - TestBounce._test_bounce_autodiff(bounce, TestBounce.drift_num_integrand, f=f) + TestBounce._test_bounce_autodiff( + bounce, TestBounce.drift_num_integrand, interp_data + ) fig, ax = plt.subplots() ax.plot(pitch_inv, drift_analytic) @@ -1413,9 +1421,7 @@ def test_binormal_drift_bounce1d(self): return fig @staticmethod - def _test_bounce_autodiff( - bounce, integrand, pitch_argnum=-1, num_args=None, **kwargs - ): + def _test_bounce_autodiff(bounce, integrand, data): """Make sure reverse mode AD works correctly on this algorithm. Non-differentiable operations (e.g. ``take_mask``) are used in computation. @@ -1456,21 +1462,20 @@ def _test_bounce_autodiff( """ - def integrand_grad(*args, **kwargs2): - grad_fun = jnp.vectorize( - grad(integrand, pitch_argnum), - signature="()," * setdefault(num_args, len(kwargs["f"])) + "(),()->()", - ) - return grad_fun(*args, *kwargs2.values()) + def integrand_grad(data, pitch): + grad_fun = grad(integrand, -1) + for _ in range(data["|B|"].ndim): + grad_fun = vmap(grad_fun) + return grad_fun(data, jnp.broadcast_to(pitch, data["|B|"].shape)) def fun1(pitch): return bounce.integrate( - integrand=integrand, pitch_inv=1 / pitch, check=False, **kwargs + integrand=integrand, pitch_inv=1 / pitch, data=data, check=False ).sum() def fun2(pitch): return bounce.integrate( - integrand=integrand_grad, pitch_inv=1 / pitch, check=True, **kwargs + integrand=integrand_grad, pitch_inv=1 / pitch, data=data, check=True ).sum() pitch = 1.0 @@ -1517,15 +1522,6 @@ def g(z): rtol=1e-6, ) - @staticmethod - def _example_numerator(g_zz, B, pitch, zeta): - f = (1 - 0.5 * pitch * B) * g_zz - return safediv(f, jnp.sqrt(jnp.abs(1 - pitch * B))) - - @staticmethod - def _example_denominator(B, pitch, zeta): - return safediv(1, jnp.sqrt(jnp.abs(1 - pitch * B))) - @pytest.mark.unit @pytest.mark.mpl_image_compare(remove_text=True, tolerance=tol_1d * 4) def test_bounce2d_checks(self): @@ -1564,14 +1560,14 @@ def test_bounce2d_checks(self): bounce.check_points(points, pitch_inv, plot=False) # 8. Integrate. num = bounce.integrate( - integrand=TestBounce2D._example_numerator, + integrand=TestBounce._example_numerator, pitch_inv=pitch_inv, - f=Bounce2D.reshape_data(grid, data["g_zz"]), + data={"g_zz": Bounce2D.reshape_data(grid, data["g_zz"])}, points=points, check=True, ) den = bounce.integrate( - integrand=TestBounce2D._example_denominator, + integrand=TestBounce._example_denominator, pitch_inv=pitch_inv, points=points, check=True, @@ -1625,20 +1621,17 @@ def test_bounce2d_checks(self): return fig @staticmethod - def drift_num_integrand( - periodic_cvdrift, periodic_gbdrift, secular_gbdrift_over_phi, B, pitch, zeta - ): + def drift_num_integrand(data, pitch): """Integrand of numerator of bounce averaged binormal drift.""" - g = jnp.sqrt(jnp.abs(1 - pitch * B)) - cvdrift = periodic_cvdrift + secular_gbdrift_over_phi * zeta - gbdrift = periodic_gbdrift + secular_gbdrift_over_phi * zeta + g = jnp.sqrt(jnp.abs(1 - pitch * data["|B|"])) + cvdrift = ( + data["periodic(cvdrift)"] + data["secular(gbdrift)/phi"] * data["zeta"] + ) + gbdrift = ( + data["periodic(gbdrift)"] + data["secular(gbdrift)/phi"] * data["zeta"] + ) return (cvdrift * g) - (0.5 * g * gbdrift) + (0.5 * gbdrift / g) - @staticmethod - def drift_den_integrand(B, pitch, zeta): - """Integrand of denominator of bounce averaged binormal drift.""" - return 1 / jnp.sqrt(jnp.abs(1 - pitch * B)) - @pytest.mark.unit @pytest.mark.mpl_image_compare(remove_text=True, tolerance=tol_1d) def test_binormal_drift_bounce2d(self): @@ -1668,16 +1661,18 @@ def test_binormal_drift_bounce2d(self): ) points = bounce.points(pitch_inv, num_well=1) bounce.check_points(points, pitch_inv, plot=False) - f = [Bounce2D.reshape_data(grid, grid_data[name]) for name in names] + interp_data = { + name: Bounce2D.reshape_data(grid, grid_data[name]) for name in names + } drift_numerical_num = bounce.integrate( integrand=TestBounce2D.drift_num_integrand, pitch_inv=pitch_inv, - f=f, + data=interp_data, points=points, check=True, ) drift_numerical_den = bounce.integrate( - integrand=TestBounce2D.drift_den_integrand, + integrand=TestBounce.drift_den_integrand, pitch_inv=pitch_inv, points=points, check=True, @@ -1691,13 +1686,7 @@ def test_binormal_drift_bounce2d(self): ) TestBounce._test_bounce_autodiff( - bounce, - TestBounce2D.drift_num_integrand, - pitch_argnum=-2, - # add 1 to num args since the integrand functions expect the - # additional keyword argument "zeta" for computing secular terms - num_args=len(f) + 1, - f=f, + bounce, TestBounce2D.drift_num_integrand, interp_data ) fig, ax = plt.subplots() From bdf722568433c5473f098824cc33efd18173a6a9 Mon Sep 17 00:00:00 2001 From: unalmis Date: Sun, 10 Nov 2024 19:05:06 -0500 Subject: [PATCH 24/60] Make api match between 1d and 2d methods --- desc/compute/_neoclassical_1D.py | 63 +++++++++---------------- desc/integrals/_bounce_utils.py | 76 ++++++++++++------------------- desc/integrals/bounce_integral.py | 18 ++++---- 3 files changed, 60 insertions(+), 97 deletions(-) diff --git a/desc/compute/_neoclassical_1D.py b/desc/compute/_neoclassical_1D.py index 8ba2de3f66..0ba8f49b70 100644 --- a/desc/compute/_neoclassical_1D.py +++ b/desc/compute/_neoclassical_1D.py @@ -197,16 +197,14 @@ def eps_32(data): # Nemov's ∑ⱼ Hⱼ²/Iⱼ = (∂ψ/∂ρ)² (λB₀)³ ``(H**2 / I).sum(axis=-1)``. # (λB₀)³ d(λB₀)⁻¹ = B₀² λ³ d(λ⁻¹) = -B₀² λ dλ. bounce = Bounce1D(grid, data, quad, automorphism=None, is_reshaped=True) - points = bounce.points(data["pitch_inv"], num_well=num_well) - H = bounce.integrate( - _dH, + H, I = bounce.integrate( + [_dH, _dI], data["pitch_inv"], data, "|grad(rho)|*kappa_g", - points, + bounce.points(data["pitch_inv"], num_well=num_well), batch=batch, ) - I = bounce.integrate(_dI, data["pitch_inv"], points=points, batch=batch) return jnp.sum( safediv(H**2, I).sum(axis=-1) * data["pitch_inv weight"] @@ -319,26 +317,19 @@ def Gamma_c(data): """∫ dλ ∑ⱼ [v τ γ_c²]ⱼ.""" bounce = Bounce1D(grid, data, quad, automorphism=None, is_reshaped=True) points = bounce.points(data["pitch_inv"], num_well=num_well) - v_tau = bounce.integrate(_v_tau, data["pitch_inv"], points=points, batch=batch) + v_tau, f1, f2 = bounce.integrate( + [_v_tau, _f1, _f2], + data["pitch_inv"], + data, + ["|grad(psi)|*kappa_g", "|B|_r|v,p"], + points, + batch=batch, + ) gamma_c = jnp.arctan( safediv( - bounce.integrate( - _f1, - data["pitch_inv"], - data, - "|grad(psi)|*kappa_g", - points, - batch=batch, - ), + f1, ( - bounce.integrate( - _f2, - data["pitch_inv"], - data, - "|B|_r|v,p", - points, - batch=batch, - ) + f2 + bounce.integrate( _f3, data["pitch_inv"], @@ -438,27 +429,15 @@ def Gamma_c(data): """∫ dλ ∑ⱼ [v τ γ_c²]ⱼ.""" bounce = Bounce1D(grid, data, quad, automorphism=None, is_reshaped=True) points = bounce.points(data["pitch_inv"], num_well=num_well) - v_tau = bounce.integrate(_v_tau, data["pitch_inv"], points=points, batch=batch) - gamma_c = jnp.arctan( - safediv( - bounce.integrate( - _cvdrift0, - data["pitch_inv"], - data, - "cvdrift0", - points, - batch=batch, - ), - bounce.integrate( - _gbdrift, - data["pitch_inv"], - data, - "gbdrift", - points, - batch=batch, - ), - ) + v_tau, cvdrift0, gbdrift = bounce.integrate( + [_v_tau, _cvdrift0, _gbdrift], + data["pitch_inv"], + data, + ["cvdrift0", "gbdrift"], + points, + batch=batch, ) + gamma_c = jnp.arctan(safediv(cvdrift0, gbdrift)) return jnp.sum( jnp.sum(v_tau * gamma_c**2, axis=-1) * data["pitch_inv weight"] diff --git a/desc/integrals/_bounce_utils.py b/desc/integrals/_bounce_utils.py index 23eb21c999..ca223033fa 100644 --- a/desc/integrals/_bounce_utils.py +++ b/desc/integrals/_bounce_utils.py @@ -329,7 +329,7 @@ def _bounce_quadrature( knots : jnp.ndarray Shape (N, ). Unique ζ coordinates where the arrays in ``data`` and ``f`` were evaluated. - integrand : callable + integrand : callable or list[callable] The composition operator on the set of functions in ``data`` that maps that determines ``f`` in ∫ f(λ, ℓ) dℓ. It should accept a dictionary which stores the interpolated data and the keyword argument ``pitch``. @@ -343,8 +343,7 @@ def _bounce_quadrature( Real scalar-valued periodic functions in (θ, ζ) ∈ [0, 2π) × [0, 2π/NFP) evaluated on the ``grid`` supplied to construct this object. Use the method ``Bounce1D.reshape_data`` to reshape the data into the - expected shape. Do not include the keys ``|B|`` or ``|B^zeta|``, - which will be automatically added. + expected shape. names : str or list[str] Names in ``data`` to interpolate. Default is all keys in ``data``. points : tuple[jnp.ndarray] @@ -382,85 +381,70 @@ def _bounce_quadrature( # Integrate and complete the change of variable. if batch: result = _interpolate_and_integrate( + batch=True, + x=x, w=w, - Q=bijection_from_disc(x, z1[..., jnp.newaxis], z2[..., jnp.newaxis]), knots=knots, integrand=integrand, pitch_inv=pitch_inv, data=data, names=names, + points=points, method=method, check=check, plot=plot, ) else: - def loop(z): # over num well axis - z1, z2 = z + def loop(points): # over num well axis # Need to return tuple because input was tuple; artifact of JAX map. return None, _interpolate_and_integrate( + batch=False, + x=x, w=w, - Q=bijection_from_disc(x, z1[..., jnp.newaxis], z2[..., jnp.newaxis]), knots=knots, integrand=integrand, pitch_inv=pitch_inv, data=data, names=names, + points=points, method=method, check=False, plot=False, - batch=False, ) - result = jnp.moveaxis( - # TODO: Use batch_size arg of imap after increasing JAX version requirement. - imap(loop, (jnp.moveaxis(z1, -1, 0), jnp.moveaxis(z2, -1, 0)))[1], - source=0, - destination=-1, - ) + # TODO: Use batch_size arg of imap after increasing JAX version requirement. + result = imap(loop, (jnp.moveaxis(z1, -1, 0), jnp.moveaxis(z2, -1, 0)))[1] + result = [jnp.moveaxis(r, source=0, destination=-1) for r in result] - return result * grad_bijection_from_disc(z1, z2) + return result def _interpolate_and_integrate( + batch, + x, w, - Q, knots, integrand, pitch_inv, data, names, + points, *, - method, - check, - plot, - batch=True, + method="cubic", + check=False, + plot=False, ): - """Interpolate given functions to points ``Q`` and perform quadrature. - - Parameters - ---------- - w : jnp.ndarray - Shape (num quad, ). - Quadrature weights. - Q : jnp.ndarray - Shape (..., num pitch, num well, num quad). - Quadrature points in ζ coordinates. - - Returns - ------- - result : jnp.ndarray - Shape (..., num pitch, num well). - Quadrature result. - - """ + z1, z2 = points + # shape (..., num pitch, num well, num quad) + Q = bijection_from_disc(x, z1[..., jnp.newaxis], z2[..., jnp.newaxis]) assert w.ndim == 1 and Q.shape[-1] == w.size assert Q.shape[-3 + (not batch)] == pitch_inv.shape[-1] assert data["|B|"].shape[-1] == knots.size - shape = Q.shape if batch: Q = flatten_matrix(Q) + b_sup_z = interp1d_Hermite_vec( Q, knots, @@ -483,19 +467,19 @@ def _interpolate_and_integrate( for name in names } data["|B|"] = B - result = ( - (integrand(data, pitch=1 / pitch_inv[..., jnp.newaxis]) / b_sup_z) - .reshape(shape) - .dot(w) - ) + pitch = 1 / pitch_inv[..., jnp.newaxis] + cov = grad_bijection_from_disc(z1, z2) + result = [ + (f(data, pitch=pitch) / b_sup_z).reshape(shape).dot(w) * cov for f in integrand + ] if check: _check_interp( shape, Q, b_sup_z, - B, - result, + data["|B|"], + result[0], [data[name] for name in names], plot=plot, ) diff --git a/desc/integrals/bounce_integral.py b/desc/integrals/bounce_integral.py index 4167300501..dba189a43f 100644 --- a/desc/integrals/bounce_integral.py +++ b/desc/integrals/bounce_integral.py @@ -666,7 +666,6 @@ def integrate( if points is None: points = self.points(pitch_inv) - # We move num pitch axis to front so that the num rho axis broadcasts # with the spectral coefficients (whose first axis is also num rho), # assuming this axis exists. @@ -757,16 +756,14 @@ def _integrate( axes=(-1, -2), ) + pitch = 1 / pitch_inv[..., jnp.newaxis] + cov = grad_bijection_from_disc(z1, z2) result = [ _swap_pl( - ( - f(_data, pitch=1 / pitch_inv[..., jnp.newaxis]) - * _data["|B|"] - / _data["|B^zeta|"] - ) + (f(_data, pitch=pitch) * _data["|B|"] / _data["|B^zeta|"]) .reshape(shape) .dot(w) - * grad_bijection_from_disc(z1, z2) + * cov ) for f in integrand ] @@ -1255,7 +1252,7 @@ def integrate( Parameters ---------- - integrand : callable + integrand : callable or list[callable] The composition operator on the set of functions in ``data`` that maps that determines ``f`` in ∫ f(λ, ℓ) dℓ. It should accept a dictionary which stores the interpolated data and the keyword argument ``pitch``. @@ -1302,6 +1299,8 @@ def integrate( flux surface, and pitch value. """ + if not isinstance(integrand, (list, tuple)): + integrand = [integrand] data = setdefault(data, {}) if names is None: names = data.keys() @@ -1310,7 +1309,7 @@ def integrate( if points is None: points = self.points(pitch_inv) - return _bounce_quadrature( + result = _bounce_quadrature( x=self._x if quad is None else quad[0], w=self._w if quad is None else quad[1], knots=self._zeta, @@ -1324,6 +1323,7 @@ def integrate( check=check, plot=plot, ) + return result[0] if len(result) == 1 else result def interp_to_argmin(self, f, points, *, method="cubic"): """Interpolates ``f`` to the deepest point pⱼ in magnetic well j. From 78e902a52108e4d53433261ce727b644e0f7b47a Mon Sep 17 00:00:00 2001 From: unalmis Date: Tue, 12 Nov 2024 01:15:03 -0500 Subject: [PATCH 25/60] Remove useles multiply --- desc/compute/_neoclassical.py | 48 +++++++++++----------- desc/compute/_neoclassical_1D.py | 6 +-- desc/integrals/_bounce_utils.py | 5 +-- desc/integrals/bounce_integral.py | 68 +++++++++++++++---------------- tests/test_integrals.py | 34 ++++++++-------- 5 files changed, 77 insertions(+), 84 deletions(-) diff --git a/desc/compute/_neoclassical.py b/desc/compute/_neoclassical.py index 218b7a0cc6..16107267ed 100644 --- a/desc/compute/_neoclassical.py +++ b/desc/compute/_neoclassical.py @@ -157,19 +157,19 @@ def _effective_ripple(params, transforms, profiles, data, **kwargs): return data -def _dH(data, pitch): +def _dH(data, B, pitch): """Integrand of Nemov eq. 30 with |∂ψ/∂ρ| (λB₀)¹ᐧ⁵ removed.""" return ( - jnp.sqrt(jnp.abs(1 - pitch * data["|B|"])) - * (4 / (pitch * data["|B|"]) - 1) + jnp.sqrt(jnp.abs(1 - pitch * B)) + * (4 / (pitch * B) - 1) * data["|grad(rho)|*kappa_g"] - / data["|B|"] + / B ) -def _dI(data, pitch): +def _dI(data, B, pitch): """Integrand of Nemov eq. 31.""" - return jnp.sqrt(jnp.abs(1 - pitch * data["|B|"])) / data["|B|"] + return jnp.sqrt(jnp.abs(1 - pitch * B)) / B @register_compute_fun( @@ -302,35 +302,33 @@ def fun(pitch_inv): # (|∇ρ| ‖e_α|ρ,ϕ‖)ᵢ ∫ dℓ [ (1 − λ|B|/2)/√(1 − λ|B|) ∂|B|/∂ρ + √(1 − λ|B|) K ] / |B| -def _v_tau(data, pitch): +def _v_tau(data, B, pitch): # Note v τ = 4λ⁻²B₀⁻¹ ∂I/∂((λB₀)⁻¹) where v is the particle velocity, # τ is the bounce time, and I is defined in Nemov eq. 36. - return safediv(2.0, jnp.sqrt(jnp.abs(1 - pitch * data["|B|"]))) + return safediv(2.0, jnp.sqrt(jnp.abs(1 - pitch * B))) -def _f1(data, pitch): +def _f1(data, B, pitch): return ( safediv( - 1 - 0.5 * pitch * data["|B|"], - jnp.sqrt(jnp.abs(1 - pitch * data["|B|"])), + 1 - 0.5 * pitch * B, + jnp.sqrt(jnp.abs(1 - pitch * B)), ) * data["|grad(psi)|*kappa_g"] - / data["|B|"] + / B ) -def _f2(data, pitch): +def _f2(data, B, pitch): return ( - safediv( - 1 - 0.5 * pitch * data["|B|"], jnp.sqrt(jnp.abs(1 - pitch * data["|B|"])) - ) + safediv(1 - 0.5 * pitch * B, jnp.sqrt(jnp.abs(1 - pitch * B))) * data["|B|_r|v,p"] - / data["|B|"] + / B ) -def _f3(data, pitch): - return jnp.sqrt(jnp.abs(1 - pitch * data["|B|"])) * data["K"] / data["|B|"] +def _f3(data, B, pitch): + return jnp.sqrt(jnp.abs(1 - pitch * B)) * data["K"] / B @register_compute_fun( @@ -496,18 +494,18 @@ def fun(pitch_inv): return data -def _cvdrift0(data, pitch): +def _cvdrift0(data, B, pitch): return safediv( - data["cvdrift0"] * (1 - 0.5 * pitch * data["|B|"]), - jnp.sqrt(jnp.abs(1 - pitch * data["|B|"])), + data["cvdrift0"] * (1 - 0.5 * pitch * B), + jnp.sqrt(jnp.abs(1 - pitch * B)), ) -def _gbdrift(data, pitch): +def _gbdrift(data, B, pitch): return safediv( (data["periodic(gbdrift)"] + data["secular(gbdrift)/phi"] * data["zeta"]) - * (1 - 0.5 * pitch * data["|B|"]), - jnp.sqrt(jnp.abs(1 - pitch * data["|B|"])), + * (1 - 0.5 * pitch * B), + jnp.sqrt(jnp.abs(1 - pitch * B)), ) diff --git a/desc/compute/_neoclassical_1D.py b/desc/compute/_neoclassical_1D.py index 0ba8f49b70..db8dc5ce93 100644 --- a/desc/compute/_neoclassical_1D.py +++ b/desc/compute/_neoclassical_1D.py @@ -377,10 +377,10 @@ def Gamma_c(data): return data -def _gbdrift(data, pitch): +def _gbdrift(data, B, pitch): return safediv( - data["gbdrift"] * (1 - 0.5 * pitch * data["|B|"]), - jnp.sqrt(jnp.abs(1 - pitch * data["|B|"])), + data["gbdrift"] * (1 - 0.5 * pitch * B), + jnp.sqrt(jnp.abs(1 - pitch * B)), ) diff --git a/desc/integrals/_bounce_utils.py b/desc/integrals/_bounce_utils.py index ca223033fa..882adc46e5 100644 --- a/desc/integrals/_bounce_utils.py +++ b/desc/integrals/_bounce_utils.py @@ -466,11 +466,10 @@ def _interpolate_and_integrate( name: interp1d_vec(Q, knots, data[name][..., jnp.newaxis, :], method=method) for name in names } - data["|B|"] = B pitch = 1 / pitch_inv[..., jnp.newaxis] cov = grad_bijection_from_disc(z1, z2) result = [ - (f(data, pitch=pitch) / b_sup_z).reshape(shape).dot(w) * cov for f in integrand + (f(data, B, pitch) / b_sup_z).reshape(shape).dot(w) * cov for f in integrand ] if check: @@ -478,7 +477,7 @@ def _interpolate_and_integrate( shape, Q, b_sup_z, - data["|B|"], + B, result[0], [data[name] for name in names], plot=plot, diff --git a/desc/integrals/bounce_integral.py b/desc/integrals/bounce_integral.py index dba189a43f..9141dc11db 100644 --- a/desc/integrals/bounce_integral.py +++ b/desc/integrals/bounce_integral.py @@ -615,7 +615,7 @@ def integrate( integrand : callable or list[callable] The composition operator on the set of functions in ``data`` that maps that determines ``f`` in ∫ f(λ, ℓ) dℓ. It should accept a dictionary - which stores the interpolated data and the keyword argument ``pitch``. + which stores the interpolated data and the arguments ``B`` and ``pitch``. pitch_inv : jnp.ndarray Shape (num rho, num pitch). 1/λ values to compute the bounce integrals. 1/λ(ρ) is specified by @@ -626,8 +626,7 @@ def integrate( Real scalar-valued periodic functions in (θ, ζ) ∈ [0, 2π) × [0, 2π/NFP) evaluated on the ``grid`` supplied to construct this object. Use the method ``Bounce2D.reshape_data`` to reshape the data into the - expected shape. Do not include the keys ``|B|`` or ``|B^zeta|``, - which will be automatically added. + expected shape. names : str or list[str] Names in ``data`` to interpolate. Default is all keys in ``data``. points : tuple[jnp.ndarray] @@ -673,7 +672,9 @@ def integrate( x=self._x if quad is None else quad[0], w=self._w if quad is None else quad[1], integrand=integrand, - pitch_inv=atleast_nd(self._c["T(z)"].cheb.ndim - 1, pitch_inv).T, + pitch=atleast_nd(self._c["T(z)"].cheb.ndim - 1, 1 / pitch_inv).T[ + ..., jnp.newaxis + ], data=data, names=names, points=map(_swap_pl, points), @@ -688,7 +689,7 @@ def _integrate( x, w, integrand, - pitch_inv, + pitch, data, names, points, @@ -700,19 +701,18 @@ def _integrate( z1, z2 = points shape = [*z1.shape, x.size] # num pitch, num rho, num well, num quad # ζ ∈ ℝ and θ ∈ ℝ coordinates of quadrature points - _data = {} - _data["zeta"] = flatten_matrix( + zeta = flatten_matrix( bijection_from_disc(x, z1[..., jnp.newaxis], z2[..., jnp.newaxis]) ) - _data["theta"] = self._c["T(z)"].eval1d(_data["zeta"]) + theta = self._c["T(z)"].eval1d(zeta) # Compute |B| from Fourier series instead of spline approximation # because integrals are sensitive to |B|. Using the ``polish_points`` # method should resolve any issues. For now, we integrate with √|1−λB| # as justified in doi.org/10.1063/5.0160282. - _data["|B|"] = irfft2_non_uniform( - _data["theta"], - _data["zeta"], + B = irfft2_non_uniform( + theta, + zeta, self._c["|B|"][..., jnp.newaxis, :, :], self._M, self._N, @@ -723,10 +723,10 @@ def _integrate( # To retain dℓ = |B|/(B⋅∇ζ) dζ > 0 after fixing dζ > 0, we require # B⋅∇ζ > 0. This is equivalent to changing the sign of ∇ζ # or (∂ℓ/∂ζ)|ρ,a. Recall dζ = ∇ζ⋅dR ⇔ 1 = ∇ζ⋅(e_ζ|ρ,a). - _data["|B^zeta|"] = jnp.abs( + dl_dz = B / jnp.abs( irfft2_non_uniform( - _data["theta"], - _data["zeta"], + theta, + zeta, self._c["B^zeta"][..., jnp.newaxis, :, :], self._M, self._N, @@ -736,35 +736,34 @@ def _integrate( ) if is_fourier: - for name in names: - _data[name] = irfft2_non_uniform( - _data["theta"], - _data["zeta"], + data = { + name: irfft2_non_uniform( + theta, + zeta, data[name][..., jnp.newaxis, :, :], self._M, self._N, domain1=(0, 2 * jnp.pi / self._NFP), axes=(-1, -2), ) + for name in names + } else: - for name in names: - _data[name] = interp_rfft2( - _data["theta"], - _data["zeta"], + data = { + name: interp_rfft2( + theta, + zeta, data[name][..., jnp.newaxis, :, :], domain1=(0, 2 * jnp.pi / self._NFP), axes=(-1, -2), ) - - pitch = 1 / pitch_inv[..., jnp.newaxis] + for name in names + } + data["theta"] = theta + data["zeta"] = zeta cov = grad_bijection_from_disc(z1, z2) result = [ - _swap_pl( - (f(_data, pitch=pitch) * _data["|B|"] / _data["|B^zeta|"]) - .reshape(shape) - .dot(w) - * cov - ) + _swap_pl((f(data, B, pitch) * dl_dz).reshape(shape).dot(w) * cov) for f in integrand ] @@ -773,9 +772,9 @@ def _integrate( _check_interp( # shape is num alpha = 1, num rho, num pitch, num well, num quad (1, *shape), - *map(_swap_pl, (_data["zeta"], _data["|B^zeta|"], _data["|B|"])), + *map(_swap_pl, (zeta, 1 / dl_dz, B)), result[0], - [_swap_pl(_data[name]) for name in names], + [_swap_pl(data[name]) for name in names], plot=plot, ) @@ -1255,7 +1254,7 @@ def integrate( integrand : callable or list[callable] The composition operator on the set of functions in ``data`` that maps that determines ``f`` in ∫ f(λ, ℓ) dℓ. It should accept a dictionary - which stores the interpolated data and the keyword argument ``pitch``. + which stores the interpolated data and the arguments ``B`` and ``pitch``. pitch_inv : jnp.ndarray Shape (num alpha, num rho, num pitch). 1/λ values to compute the bounce integrals. 1/λ(α,ρ) is specified by @@ -1266,8 +1265,7 @@ def integrate( Real scalar-valued periodic functions in (θ, ζ) ∈ [0, 2π) × [0, 2π/NFP) evaluated on the ``grid`` supplied to construct this object. Use the method ``Bounce1D.reshape_data`` to reshape the data into the - expected shape. Do not include the key ``|B|`, - which will be automatically added. + expected shape. names : str or list[str] Names in ``data`` to interpolate. Default is all keys in ``data``. points : tuple[jnp.ndarray] diff --git a/tests/test_integrals.py b/tests/test_integrals.py index acdb304b3d..a080bc418b 100644 --- a/tests/test_integrals.py +++ b/tests/test_integrals.py @@ -967,12 +967,10 @@ def test_bounce_quadrature(self, is_strong, quad, automorphism): pitch_inv = 2 - 1e-12 k = pitch_inv * m # m = k * pitch if is_strong: - integrand = lambda data, pitch: 1 / jnp.sqrt( - 1 - k * pitch * (data["|B|"] - 1) - ) + integrand = lambda data, B, pitch: 1 / jnp.sqrt(1 - k * pitch * (B - 1)) truth = v * 2 * ellipkm1(1 - m) else: - integrand = lambda data, pitch: jnp.sqrt(1 - k * pitch * (data["|B|"] - 1)) + integrand = lambda data, B, pitch: jnp.sqrt(1 - k * pitch * (B - 1)) truth = v * 2 * ellipe(m) np.testing.assert_allclose( bounce.integrate(integrand, pitch_inv, check=True, plot=False).sum(), @@ -1082,13 +1080,13 @@ class TestBounce: """Test bounce integration with one-dimensional local spline methods.""" @staticmethod - def _example_numerator(data, pitch): - f = (1 - 0.5 * pitch * data["|B|"]) * data["g_zz"] - return safediv(f, jnp.sqrt(jnp.abs(1 - pitch * data["|B|"]))) + def _example_numerator(data, B, pitch): + f = (1 - 0.5 * pitch * B) * data["g_zz"] + return safediv(f, jnp.sqrt(jnp.abs(1 - pitch * B))) @staticmethod - def _example_denominator(data, pitch): - return safediv(1, jnp.sqrt(jnp.abs(1 - pitch * data["|B|"]))) + def _example_denominator(data, B, pitch): + return safediv(1, jnp.sqrt(jnp.abs(1 - pitch * B))) @pytest.mark.unit @pytest.mark.mpl_image_compare(remove_text=True, tolerance=tol_1d * 4) @@ -1356,9 +1354,9 @@ def drift_analytic(data): return drift_analytic, cvdrift, gbdrift, pitch_inv @staticmethod - def drift_num_integrand(data, pitch): + def drift_num_integrand(data, B, pitch): """Integrand of numerator of bounce averaged binormal drift.""" - g = jnp.sqrt(jnp.abs(1 - pitch * data["|B|"])) + g = jnp.sqrt(jnp.abs(1 - pitch * B)) return ( (data["cvdrift"] * g) - (0.5 * g * data["gbdrift"]) @@ -1366,9 +1364,9 @@ def drift_num_integrand(data, pitch): ) @staticmethod - def drift_den_integrand(data, pitch): + def drift_den_integrand(data, B, pitch): """Integrand of denominator of bounce averaged binormal drift.""" - return 1 / jnp.sqrt(jnp.abs(1 - pitch * data["|B|"])) + return 1 / jnp.sqrt(jnp.abs(1 - pitch * B)) @pytest.mark.unit @pytest.mark.mpl_image_compare(remove_text=True, tolerance=tol_1d) @@ -1462,11 +1460,11 @@ def _test_bounce_autodiff(bounce, integrand, data): """ - def integrand_grad(data, pitch): + def integrand_grad(data, B, pitch): grad_fun = grad(integrand, -1) - for _ in range(data["|B|"].ndim): + for _ in range(B.ndim): grad_fun = vmap(grad_fun) - return grad_fun(data, jnp.broadcast_to(pitch, data["|B|"].shape)) + return grad_fun(data, B, jnp.broadcast_to(pitch, B.shape)) def fun1(pitch): return bounce.integrate( @@ -1621,9 +1619,9 @@ def test_bounce2d_checks(self): return fig @staticmethod - def drift_num_integrand(data, pitch): + def drift_num_integrand(data, B, pitch): """Integrand of numerator of bounce averaged binormal drift.""" - g = jnp.sqrt(jnp.abs(1 - pitch * data["|B|"])) + g = jnp.sqrt(jnp.abs(1 - pitch * B)) cvdrift = ( data["periodic(cvdrift)"] + data["secular(gbdrift)/phi"] * data["zeta"] ) From 5c14f9f90c2b830607af0acf2aaf1d90abc14db2 Mon Sep 17 00:00:00 2001 From: unalmis Date: Sat, 16 Nov 2024 03:30:47 -0500 Subject: [PATCH 26/60] Update changelog --- CHANGELOG.md | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/CHANGELOG.md b/CHANGELOG.md index 931e5621d4..e8a752e965 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,6 +1,12 @@ Changelog ========= +New Features +- Bounce integrals. +- Some optimization metrics. +- Coordinate mapping utilities in desc/integrals. +- See GitHub pull requests #1003, #1042, #1119, and #1290 for more details. + New Features - Add ``from_input_file`` method to ``Equilibrium`` class to generate an ``Equilibrium`` object with boundary, profiles, resolution and flux specified in a given DESC or VMEC input file From ccd6e2bc112c166661e20ff2278aa4a31c5154f7 Mon Sep 17 00:00:00 2001 From: unalmis Date: Thu, 21 Nov 2024 03:17:26 -0500 Subject: [PATCH 27/60] Address Rory's request https://github.com/PlasmaControl/DESC/pull/1119#discussion_r1809250379 --- desc/compute/_metric.py | 30 +++++++++++------------ desc/compute/_neoclassical.py | 12 ++++----- tests/inputs/master_compute_data_rpz.pkl | Bin 8831903 -> 8825875 bytes tests/test_axis_limits.py | 8 +++--- tests/test_compute_funs.py | 6 ++--- tests/test_integrals.py | 6 ++--- 6 files changed, 31 insertions(+), 31 deletions(-) diff --git a/desc/compute/_metric.py b/desc/compute/_metric.py index 8aad617e3a..03e5a5a7e0 100644 --- a/desc/compute/_metric.py +++ b/desc/compute/_metric.py @@ -1952,15 +1952,15 @@ def _g_sup_ra(params, transforms, profiles, data, **kwargs): transforms={}, profiles=[], coordinates="rtz", - data=["periodic(gbdrift)", "secular(gbdrift)"], + data=["gbdrift (periodic)", "gbdrift (secular)"], ) def _gbdrift(params, transforms, profiles, data, **kwargs): - data["gbdrift"] = data["periodic(gbdrift)"] + data["secular(gbdrift)"] + data["gbdrift"] = data["gbdrift (periodic)"] + data["gbdrift (secular)"] return data @register_compute_fun( - name="periodic(gbdrift)", + name="gbdrift (periodic)", label="\\mathrm{periodic}(\\nabla \\vert B \\vert)_{\\mathrm{drift}}", units="1 / Wb", units_long="Inverse webers", @@ -1973,7 +1973,7 @@ def _gbdrift(params, transforms, profiles, data, **kwargs): data=["|B|^2", "b", "periodic(grad(alpha))", "grad(|B|)"], ) def _periodic_gbdrift(params, transforms, profiles, data, **kwargs): - data["periodic(gbdrift)"] = ( + data["gbdrift (periodic)"] = ( dot(data["b"], cross(data["grad(|B|)"], data["periodic(grad(alpha))"])) / data["|B|^2"] ) @@ -1981,7 +1981,7 @@ def _periodic_gbdrift(params, transforms, profiles, data, **kwargs): @register_compute_fun( - name="secular(gbdrift)", + name="gbdrift (secular)", label="\\mathrm{secular}(\\nabla \\vert B \\vert)_{\\mathrm{drift}}", units="1 / Wb", units_long="Inverse webers", @@ -1994,7 +1994,7 @@ def _periodic_gbdrift(params, transforms, profiles, data, **kwargs): data=["|B|^2", "b", "secular(grad(alpha))", "grad(|B|)"], ) def _secular_gbdrift(params, transforms, profiles, data, **kwargs): - data["secular(gbdrift)"] = ( + data["gbdrift (secular)"] = ( dot(data["b"], cross(data["grad(|B|)"], data["secular(grad(alpha))"])) / data["|B|^2"] ) @@ -2002,7 +2002,7 @@ def _secular_gbdrift(params, transforms, profiles, data, **kwargs): @register_compute_fun( - name="secular(gbdrift)/phi", + name="gbdrift (secular)/phi", label="\\mathrm{secular}(\\nabla \\vert B \\vert)_{\\mathrm{drift}} / \\phi", units="1 / Wb", units_long="Inverse webers", @@ -2016,7 +2016,7 @@ def _secular_gbdrift(params, transforms, profiles, data, **kwargs): data=["|B|^2", "b", "e^rho", "grad(|B|)", "iota_r"], ) def _secular_gbdrift_over_phi(params, transforms, profiles, data, **kwargs): - data["secular(gbdrift)/phi"] = ( + data["gbdrift (secular)/phi"] = ( dot(data["b"], cross(data["e^rho"], data["grad(|B|)"])) * data["iota_r"] / data["|B|^2"] @@ -2040,16 +2040,16 @@ def _secular_gbdrift_over_phi(params, transforms, profiles, data, **kwargs): transforms={}, profiles=[], coordinates="rtz", - data=["periodic(cvdrift)", "secular(gbdrift)"], + data=["cvdrift (periodic)", "gbdrift (secular)"], ) def _cvdrift(params, transforms, profiles, data, **kwargs): - data["cvdrift"] = data["periodic(cvdrift)"] + data["secular(gbdrift)"] + data["cvdrift"] = data["cvdrift (periodic)"] + data["gbdrift (secular)"] return data @register_compute_fun( - name="periodic(cvdrift)", - label="\\mathrm{periodic(cvdrift)}", + name="cvdrift (periodic)", + label="\\mathrm{cvdrift (periodic)}", units="1 / Wb", units_long="Inverse webers", description="Periodic, binormal, geometric part of the curvature drift.", @@ -2058,11 +2058,11 @@ def _cvdrift(params, transforms, profiles, data, **kwargs): transforms={}, profiles=[], coordinates="rtz", - data=["p_r", "psi_r", "|B|^2", "periodic(gbdrift)"], + data=["p_r", "psi_r", "|B|^2", "gbdrift (periodic)"], ) def _periodic_cvdrift(params, transforms, profiles, data, **kwargs): - data["periodic(cvdrift)"] = ( - mu_0 * data["p_r"] / data["psi_r"] / data["|B|^2"] + data["periodic(gbdrift)"] + data["cvdrift (periodic)"] = ( + mu_0 * data["p_r"] / data["psi_r"] / data["|B|^2"] + data["gbdrift (periodic)"] ) return data diff --git a/desc/compute/_neoclassical.py b/desc/compute/_neoclassical.py index 16107267ed..652afb192d 100644 --- a/desc/compute/_neoclassical.py +++ b/desc/compute/_neoclassical.py @@ -503,7 +503,7 @@ def _cvdrift0(data, B, pitch): def _gbdrift(data, B, pitch): return safediv( - (data["periodic(gbdrift)"] + data["secular(gbdrift)/phi"] * data["zeta"]) + (data["gbdrift (periodic)"] + data["gbdrift (secular)/phi"] * data["zeta"]) * (1 - 0.5 * pitch * B), jnp.sqrt(jnp.abs(1 - pitch * B)), ) @@ -528,8 +528,8 @@ def _gbdrift(data, B, pitch): "min_tz |B|", "max_tz |B|", "cvdrift0", - "periodic(gbdrift)", - "secular(gbdrift)/phi", + "gbdrift (periodic)", + "gbdrift (secular)/phi", ] + Bounce2D.required_names, resolution_requirement="tz", @@ -595,7 +595,7 @@ def fun(pitch_inv): [_v_tau, _cvdrift0, _gbdrift], pitch_inv, data, - ["cvdrift0", "periodic(gbdrift)", "secular(gbdrift)/phi"], + ["cvdrift0", "gbdrift (periodic)", "gbdrift (secular)/phi"], bounce.points(pitch_inv, num_well=num_well), is_fourier=True, ) @@ -614,8 +614,8 @@ def fun(pitch_inv): Gamma_c, fun_data={ "cvdrift0": data["cvdrift0"], - "periodic(gbdrift)": data["periodic(gbdrift)"], - "secular(gbdrift)/phi": data["secular(gbdrift)/phi"], + "gbdrift (periodic)": data["gbdrift (periodic)"], + "gbdrift (secular)/phi": data["gbdrift (secular)/phi"], }, data=data, theta=theta, diff --git a/tests/inputs/master_compute_data_rpz.pkl b/tests/inputs/master_compute_data_rpz.pkl index 0d832013b6db05a961c0994e88f7defd3362f3ea..d2cc43022da002f2e8d10900b7de89c0bfe10086 100644 GIT binary patch delta 28251 zcmeHw30#!r+IRCXFatB}&kP{jAc%}0iwldw0Or0TDB^~K8jCt2s~d=>(`JPs-dS0e zxwI+j(JRwDR;R4A#LUv%AeT-j6PFe>&G)+R`*~&tCF`8;J)QG?zwiD1^2|JQKlgI2 z|7*EP4O%M)?+ZO(MNZd9|`L(!B9eqmN7UOqJ+;+ZC zvk3doD83Nk>G}BYw$Uq(i`zaJ^A{t$_kiMvxNY8|CegX!h@0X*`hPH`PSGO5;1`6? z#ci*Cdqjkvh6woXPoL7Uv9C3WFtnrarC6V;aD+pXan-GRUp2y1Z^bbY%3Ou_ML0bY zKf5)2D$Q8EqOilmU|Od*FT$Khh0jEIxdJDLu(uTW`NeDW-;@Z&8%DVPAx;NDe-Vz0 zuzQ@tOGa3A%JHyB)~s?;!nm%k?~6i1G5Dk^&*D-pS{&P@k1Nikk8?OAl1~ejPUP#7 zuAQN7Q|d;Mq^g}<$a#0E$Og(Gnw1T`z^X9E6HVB{{%~7Rg?BwUX3cS*(PT23Kd3 zbHm#*?e^?ao)V!{p~6j(P~19<{?Y-D*I$oM$gFcpO*b~bGoQb-w0uQzH@gMtcO(6- z;sfw2t{)Mp3NR^BNl5j$NK)`{PB=_%Nxz;#Htq6pfk#}82SuScl_+j^4kIO7!vn~I zD~r{{BP}VYKEuxiUUN0BMgIQkD)IMHmhz-1I87r>djkDQ$q#BR%zWB#F$Fqba5yX~ zrjb}D?*LMAK=T~@GOkN*3iR^SY&8=1j$Udd-8}3+Ddgj!pOp{YHNfGBNG7TrG%&N+ z<^Dnl=;(DZ6PA4AazG@9vjcrpNX85Yd~@?>E=NR#ikPY+1KHlv{JrVkh`hH~Hg^p- zLGBVtv(!}%dJ|k-ul!Pk)lJIJL=u?qr~=D5rI!h&Cpvy8szH9wE8nrBi4oywNiNA~ z)w;uLYaClsVCGdv`NeFtlP9HOOTeOWe8^n2)0q^9hTE4M^Z zp_k^HOo)CiU}phbehO>X#q|(A!Wbe9&PB812 z+%qY8>#ep>D)blO)21hux8Vshj-NaHP!r zph!mC3Uq{xhXW6auwb?O7Nf!d(fiy3P4L;{nk`00Ca^H#fX34#CbY9jO5jw|bab>5 z>Kr{DSwOC4yL!8qqbU0@N#{o$xz*hd_BLf+Z$lp?X)YV3B&+Km^x-UuB_7|WfZsz} z%76x0;?6v){Z156GnyK;Of!%!_uF0t6o4x!&@|HXZ$^@G%T)~yo!#CSN%gI07xI0K zx5|<0^$YVon?%y>ma8{BR_EC)3hz6@%ypgzajD%huan>M3^qa4-vf`LL~im!Sw!-n zcJ~j~el9vpn>3FcT-dWSal4#T2WNX|duH0Rn_CHjRw5iGwQA3%2pvMno-gA%z~hHq zmz$8V!Cr1B&@ySGN);|9u$C zTa4t#XSMb-z}D~dt|qc}>KJc)4=vL`;<0XO7ie8E9N%+0)J+2^g+41xTwh#JJP-8_ zih!i&i#Lg+*45|?Z|?GG5fy#mnI@mhnPjse*cra;9rS_daP8oIB%~(E4|Zk*?J0n_ zDr5ak@aBs}$3Q&s86K-DKj0r;GvZx~WX`FF#h(edXYU z2*~K;x>+Qj?4F^5?}Xu=NR-cddYcs4aKIz}qDUpc5l#;ZN3HgFz4I3$nY2vp>`6V` zekVMRGgHe+rDWvCQDJcURx;x_axRTDDf7C~C&;;-o#IU-7hlwrQ-!9k3awk7vV01x znd84pgj+40RvXEn`ZNtOjgNDtie?mGwhrME>s$zoUCX>^dUgrQT!VQQ^)8!l)% zw>%aV#Qjg;OWh|j`+)k*O$w>o8m=Tk&5L}tgac90IG^|0PH4y$j_T$n z{OSZxj_M}jnm@{GW_Q$WH>-JG51YB(Zts4kc~1UzJ4YCP2B?e#b>^BzqoO85^?0r04L);H_bAj@d zh!rNPdM*nhP~pd3@zs*c&uT-#?5)IW20_}@od@Yl zJ&2mro{d3SU>Id_9(sa=2VxKpewx-nO~UdWL*d8A)A4CQztK4Vg~i@zqk;}rAP$;j^(nBYo|AMp-`5lxXECh7}Zkd)VAynoCj7mj$l!DqzV z$pkGp1nuK;SJHB>n>QT4lw&Y?EOTNS&mb8S`$dP7Ly3OeXb+h4Q#^v-UG*KJ7m(ZK zUK)rr^>s&*-_4@93WztwXs(p$;X@eigptQvU~(WOCQ!j!?TP z6`1{T8<*IdsWoEPP1Ll#c(XEr1b<|TfYbhZG)Pm){Rl6gyczZvqceB@)ESlR35$U8 z@J8oj->ekMK9?5bEh(~t?)9_z4_q;57L|-tt7Dr5W}QV+YL@%g(6>d zJp#Cdy|`d0vo>$>iTmWmz@BX;zRZgr3+#TQ1YS9-vNyL)Wb-Z`H9UOMw~4+8xL!JH zWFl<*DAq{_*W7!ZWyW<;^y0qcL`7w=WYNAnQGA%KwCH(LBsBH&`&xu&PQ{)PA@bq_ zJ`8l?I+3Kh`vj2~D&{Ex1>emi&Xs7;MzGN=NErQ-^Z{DZ+|MrzYWt@$22*hY6sK>k zs}WpH2_N;Hjxoi^Pf`#Oe6=9oL_X~~NDa3QgV2)qp4$l_I||1`ePY1$1lm7J>^lSt zP3DAlLY~GhNp9TwF%z#OdnYeZqR2`5R&yd8fhv^{7gZPOMCWL14~Q3**)35qDkvQtLJd@Sl3hPk(6mt{H_ z$cV~*Iqi^uMtv~qX7*QZARWI{>*2&l@8 z;HoiF@u2MXTz^SIWEikb3FwRK_N%hrMU!v z!})ISBiR$fB$X>z9ezgCEmKirRZcM_izm^jmlu*o_wM2F>y2)F|Ff56MUtG7{!y^! zlp}w1S)UzAf)`W;*RT226`o9VTq}|;YaCsuR8cGdxOIcci%-s@W8@0;7}3XiM1a3{ zAroaP=72`yhGe)RN#l+zB{`iNt|qa|s{GmP4|mj|av%J@>sKN?+%&`k4Q{?WNh`|{ zVZGZ>3;+?9y=EjiSA5-_@fZ`_nbAdPltXS`>>b1n$==yLYDB>yhl@nxEQe+VJXJU1 zQ!gmFoPa(d>Gk^$i6Cz7Uu`0PZ5gA7#_#)MF#F8e=#*T(u%WT@olXKnYm4Wk5+?WW*)L)?OTPPBi#T!n}?1H)X04aT<4iMw0>yhGKk1KlRaU6jvUxM zLk+DN16Alxr^wLbo!v9Sm|CJ=iG=w%gV92cf7~AvU5CC*^fAE~VkRbp_V1qILIzlR z_%t*}J_lrEN-m9Jm6^mjQH7&pQRE4q2a7z0T>SrJOs)Oq^DphMjnL^67Nl&_lN^Iop^-3PC^ zcfXiPk^{S{VO~{tW>i-8PtAab79-Vg50r$&Lpw-GPNYYpep1If=EYtz=!gMxbFWh( z`AMtm2H%b!_F-GU4VU}m2|8WFS9fUh1%i%XklVqy-<9oo$9yRsBhSImq}Qr=uhG@#f}iC?$2{d%%Y$! z21rPm3f@;4L7PM`uY&xkr9}^v8zM@kl@`sKS~P_$x?&6=&Dqf^XnZqh0}h!|`P)P4 zKEWZLp4M5)rcJ4skypwlp}ABK0etcj$~sd8bB2wHv0f%JK6sR~6UCv(c1GV+fcvy+QlAn5X+KpJev3^z5`7< zwPJp4Zae&D7ywZ2Vx_n+j3BNxa1oB(oqMQ_5i~GJ3e2KNKH|Tb%)Mt4BUr1`R54I$JQE z8r!pJG|C7DguZN-)Wp&xxPhcD&g%$GyL{dhVe;A$pCU!OOR+orC1B1CDLAM(4` zps88boxuzy>$iHRs3A5y-iq%#L*SDsMvR~9E7}9T7^<+~foRi`)G$eFqH(80P@0&< zSd%A@`s5{$J-fz5K;3DzRaCo0YVAPw zCdRIYmq!l7nV#{AIZ9VV+H$C|>tpHk_+li%Ai#rM8e}$SLB()=&An;r?k(nYo42BQ8pOx`e)2n4N?STl)u88$c!ADse@ zz2na^C*=&PoV+F~9Ei;ZlIqwBf0_tr#L8nNB)t{$cly(zN%pV~lMV>>(~^_~70qfM z?QqquhZ837ln2X|zsU(8Euq$K<$wpmpn3WLw$rf(W{#qeAO~E&jiwoLLeulm zI-$snl zl%AQ2mOi%YL}sno2^lDl^2hY$tcPI|4?xv_^>Q&yZ=92&`!>lWwpErtH0-SjmC{uow~RT(=C|$yqB_mQ@aWg# z?9-HTl+1v6HY~;m_wSF$R!kmceP2ykfNoBw|63xolw|jCgY&%oz+;WM2ta=a0@+ zFVIymF=*gcio!Ln3Ac?gn8LAz5fdhKzJr2ZvQjx z&$IK}h`Q0ESHp;=#B3Byy;sc%(ip*gB2 zhrF_Gs>vsvC0JkVIt`OUz4a;$i)~2vNL45?oHEtH%_rh{)rQKu4H4VqM%Ezhj`ZyP zA{k$mWlb!iG(}MB6$H)Qdhkp*GRxi?vVN$=7e$4sWA8_^yr{=0 zY&7Y4Z7QapcNGpnEn(QNc54FqS;e8;6I7q*_5hQ=oe+#oXiwIubi%3gX)I_*l5~fd z^GT?X15;-pgnXiUh#HRnCH7;H;BwyZ$VdIqZm!A7yuq{4m z0>QX4FW5v*Z%A?>KW#Jm(kh%6@t6_lK{oFxbRl~^bKJ?^{e`~tA0OhevY;F2S9L)| zwcu*3I}+eXd*v}6S5UWPGt73`<*i8i*^q zQ!^R`o2La?)gc0U>Bc3Rp!sk?n}nSQ8Bp0ToW>FqWQ6?&&mxK8Y?WkzX6RM8_;bx! zSVvJtOhvnV;$rAVBMd7^)tiXxhFleBzMRfLER}7*Y$uZZ@H1VxeHwYCnk8|tK6-4B znPS+H*;4Xtk7-EL9fzlm0T4chnINj$Fy`O@9bgw7B)*s0k%mfWZF<{PNn~TfEISsz z&xvq-dH%O0Y8Ovwl@+TK@S)$YQ$9j`xFMIJW=v>L1$0tq2=e-Mxg)DXY)JEHg{1Ik zX%K0Sb=7r8n+y25i6SqIM3p*NIJ@^(REhxK)9S#dI-lDU2G-V0Prl5p3(aX_%HuFn zpqrd(yYN8{^Ghg~ti;PwXdR$YlhB$%@w|p?&K}?dUk{(j=u1;zWJqPd34q1&Y7vee zO5^xW0-YSMw0@!IVj!CuC1CQIg9R4Q-CR8i1G*n0vsw9sft|fCRkj7Cazq#aCy!wk z)EU#$5P@oR>E?%dP0V{cggT zm;mPVSc(G0D1&75PrV~e2^f0^vXm^6%PuqaYg9DP##zIT-7iVPU?ng;48gegqEL+CLRmwtR za%14ieGjsg+M=B>xH%|+V>lM+&5Y~y}#8}w=@px3>k;cB*?^)|K-Pc6W zkEmhO*y*Y}S{ta>qQFE7n6aYJPCZY%qI^X|tL*odR1f(^gm^DRx6pUBBq)@)fFR>4 zRtItuX1#Oei;&117t$e^3q8kqjnkRTJh^3xdH=lL7dZBrKsZ#4{1 zq0`&l9%htLnwoU&Tg{W(mt{38 z#YE7QG1JW1>lfLT2iV~z{$t`TamSMbd0m+5GupaXz(^ZcnOSaPcG|8{s%^${)oZv% zIDD%B@pWi5COn-Ry0W(5`|f+F%kW9iW%%R=s~m>(QV`Gmy=ZS2uE|sU%(+_=bh45e z2xikT;J;bU&7oZErqFO@VZJT(foZx)&J)~)or?8-Wu{Tzxya#9aONC&&9|;O{P#fZ*LK`4C3lp?RWNfhN zOG;i{AXVkK=Q(-7?{CN+qwGlIH$OlfJ7C&FDI0TEW+hy}G>bC%4gs6j+ ze^18ZOKq9Ci%{%NMqZe!CmFArv5R$yxl!1wCnHywF#=g)-t4eUF^4SLRf3(`OU?Z7(WATNL-k@`3*dD{?ZMb>GSi2{yR?{c>w)M!K z7jVIQa(MeX8;9|D9^~0I=1u`VI`S^o!A ztPShn`awE{J=cCdLZ8@k?e)F%iNrP8inx%Lcg^eX#kxT9^FG|Lq@3&o>)%6e|I^AD zNCJ+cb$>rc>B+tKet)#GYGzXXq1q9W$M4U&q$z z8;&dP^fJY=Wu5sg8q&K(+TPaso&VQt?NirL6L;J+$15DjNS}pWg~Fxvo(f;0_F1SG zvb@P6pM|lCR-!m)mh56LpM^Sy;zteimk#6;9HyAb-ndCWx&!*R1eJaR_OTW}-Ua{p z8Jo`eCl6;>q@5M7Lf_3G5$oN+8bdHNx|ViSDI!2Itt3IEyjbCF3q4edcj+!7z^8JdyGparx{LjE7ojBMgV`!rxTrK(Ck%Eap1+z61drqd zGyXBhLnUBWFk8%Yc%e?GZ%DdZf-)VT<*B7e^Yz3tevXb@QkCfKj;1|tT@XW*kmj-o zs998s8~;WC^o>y}#U4=nb#a1X>gAEFYnIgV@&6ES)gWAPL45GP|rK0$QEsx~mkf1jQi) z3~xTDR|(GUl#rca#Qa4_CZ(gyEH5xLmzi|I4f`DK(w-11d5onYTq;ox(sgrv8X8L$ z1IoekP6*KuqApblKQP*c!_DKAtUYD1`-S9PpM_g+LkUqh0=_&*r%2~w8tiK&oyxk9 z!MZWl4}#rI(~}dp#A=s1<93)zpjzW$o(AoE<+ulizBVovI}g z|6x#9O2x|^*RsysqLMAka1ZN_Zqb8=!mXjTs0wkUW$%3ZQ%A4|+Z#&^D)a!H_QLWu z40_IPh)O1h8zUco&rf(!6IiR5%b@sNq7=qI8wQ$97aj2>on?n!+Wh7?@I~S_p#@ zYEdkGyd>%^spoX-^N7@7duvG2hYdQQxzU>jV@V)ljQG}C;m$I2wN z>*2548ZJwet)oSHB4oMpLn?YPp&)5jX1RdJql-`{`qC$%B&}Pi8pf@y_Qr;~vD&*7 z(T)X#mdD_@)cG_^NH()(2%YIkBM6RTvDP=AXqu$4AN>svN4~fL=2zFP70Iv)U(FvjlK{MVN zMrmu^RfsI5(JWY#Ob4FcdV!JP1x6o0TW>^$#5moPA+%sdnq4bx=fi#$G>L)-K_e9o zO{>sL2^vZ4qtDDi`3{%9^~r7E~4KOrEl9y=(lv~+pi(zC@z?GU%!acj;b2g z(NWb70!Ew(DvS-&Q!8wTky&YLHL+2bC8Dr2B}u4uxQnd+1}|=nI4rn9Bj6DDz6!U( zv0w;wpL1Z1Vj;Eul*_CggcV2qN$k#9Zh$Tqm3A;S{XT$*qMJ@Q8VHRY%F!EQvyaq> zA}viaF3eS`B->*rq1cmx#-)qRnArphi%Hg#0Gb@6^_EV2*CmT8+j4%>NtPj4RKX+^u#J~do7KRv_e63<0^UNx^K>SLsdG!f-DBYj zCz^f5#*wL3A;)vFSFuCIW?N882Xo1#NS*mGe7oL>nEq168dPcL%Ftd*nZ1!2$Wtk# zRy#)$F`>oJx>GDMv1Mq}3SiR;eG{-vg*|N3pkk#NXBxeW0C*Q+h>kR^uE2{wyGnE_ z3S|9=Wm`p{f}>dc^8-$#z%AB8icO&TrON9H4MV3jaVRu;3NrNkF>;sH5wLFD)y z8N`r<$p_N7(NW(JBHU%95nHfH;MGqmJp|z!fvkC|Dj2T5UwKZUW#I~=3nKi>#ws^K zM)+%zE0+TPaR{R$+Y3kdY-B|M%#N>Yas{J?tU)gFKrN>OFo}m=S($W8+jALxUkAU07uwoLI zP>e04O)?ia9yr(VMABa`!1Qx+#G%u}Oq$Eur&h;Tk-o2#hR7D&)?T11$gvs}BYe+w`ym2-rVqdDvY)|MkEKp%Y zW5`_Alyp1WgzlK{T`+h_hkf|BrFc1)Vj*7=Az`}oLBS%LdnmIbKgu80GND{vqT0(& zoCJ&gH)_&PR)sntlD64IWP)5UQ34k00|k77(b!bUGz7ELQ=)otMktK@3GNNcBfrTE z)?>$701eVi4DS!-79Ar!iH;cL$-=;EK~k5yKS5#Xbk7BtUBSu&YbNabn}*10qa=%@ zV{szmGm8`1C;K>&`5Yc6GUIolgS15{L65ZXgty2JC+D6KJ@}w#>s#Mm%XRa@Q=vVP^hokB(;d#U$6zotp-_^94&~ z(c`q+F{`qtz=KVRqKHSNAw1$dN8Kxy5@*SeIa`KH=4P-gY7<{XDE8ZIqsF+Q>9G;W>U z&ya+lMzdVH?FrACHZdx-ZHb1TfERm@JF+;F`9OQ6!;S)3omgCM^E&dbr5Kd!6vm)z zRT^x{%gaZ=9=Y&%N%`;`lwyF*pJ))1nd9KJ)UY5Yy9bhI1otPXS7(0*k1S^nO2YzM z_9{QLwTBe2fy9$a0>-qm^rtaTPkzf=;b8fMwx$N#?pfH5fv>@8UgXjC(XY%!*3*PN zp@9Mofn~zr(*&s5jxtI^UH(+6OSUnA$Z_e)#*?e60?DO)mA&sl5B$jn4cmsw)a2WP zCdvi8Q4Dya*pE_&StZ;iYl;Z4_enNl_!2pi9!%laPAdwPQ#@+G9#rP#Fu<0H&E97P zb-d6tz3MnsHYUgz-(dFe_dF4X)7F^)xg8p$fK3;@_%2@^!@ zwy^1v%rpDoTjCjD(-~ienow*Yl})Hr9%CHh@epps+JS`^KQN%6$d@L?k*5XiK_MP? zGpPN?M4K{)>I=44Fw)AzmRc$5RDNjqnODOY9`Uo1nLYY9a^xmdo9Nm?d-ev8-t9~g z(;61N%i@cawvykf70H~^!jtw8h{o|8rZZ{cKpXHPD6_+IpM=CQEU#O20eK@eLtq23 z%uyt4g;ihC{6y8*wqc9)`MELH$8&dv=GZwW6&jWz=7t+E=AKB&f#*HvV^$3KW!;t~i)RHmY{5NX9>BH-`38&48e>Ml z_VXQS0eOEkg$UR@<|ojMfDh%uH3f0*Ij7&hp|o|d7usQ#9bljCS=tIw!GR;yaVnv> zO@-@6I>nz|;bM#a$17ZH7r$TOa>PWJ;cmoaSM|c|?H{Ueu?7F73K!-uOC#-aihsPk z^@L7%rOliFT$xL$3T}wGyQswyBJ4P<^fgGwqeu3n{W8~TC#ZU}I+iBZ(9SGTf!Q=a zPKCWjL&)Wos7<>88s(?kJjNW&5GWL&D#TX@+|6+e)2>%XU(%ev$3(XndWT(Do0gMyIz5ph@ zWLE%_RUQF%(+`1R7-TU0_n-3IFy!BWc5kQ4XqSDuC)&l{tZ#Zr^*x4nqf~~5DR+0Bv+_`QpZ@>`W{dvE zF)-W3?_=P$U0#0_@3P75@Gk8Rb925cQu~8lUjH!+EVp{G`D80_jxBFE}0jn z-+E?=U6a>`A(fy zHYIw>tfCoZ(fwytlom}Z%^Y_>e#QT1IuY_sK#wt&i?l=a@*s-?Z3=4XZ}A~b<1AWI zmu_)_z}}WRcFzfa??i%!S_(Y&)4YQnVb3aEj+(K`& z*cLq$5sZuC8_LX-2v?w;1ggqicK&v-*S@l zon{GijVwuSI=VU;Bm!pra%`63hBQ_D=;lYFrdr&f~% zrTEXW*DKt}=~A`sx3%!?STSQ_N&ijPSCH8p$;9INM z9YUOnlrP6CTK|}D$yHDW(aCQX)5(!R(&X-B)eK7wy@SRkpIm_};Vn^lrTO}XkpuaK zY&&H^=E(z`NaAcut;|7o&SZK{yrCu!vGD7odO~+dZ;o1jpe055ixZhyZCOa-7h1w( zPF{K%$rJmSWj*Dj=VIg}`y!LDWT9o9%+}KuWNT8b|AD9-G;ZNkK1_5Ub?b`zJ$EBE-haiWk3J&B>pTjm~D0Xqn7pZbu~7`fzTn+bu}Ea zi89ePo5V!+?xp4Uu2d|yJ&*gpYt-n%EvM&psv#cYp zJ#R6{Osw0C#LfWA2b76h-bSH3`L5-!4#hGTKX@C}we@)m$gFJKfUNxZ1xq}$pZG=~ z34Y1)fy__#v-4W|v&_%Mn=J3QVda#~HdeCnQ`XV($V%%5gkncB`z=(6p=+hqO?_PAO;ac6ahuiMVhO-SkV9Pz4v`H6B1Y4@;`gddXAj=+I#oi`n&hO zmo;bpVA!zyaf4y8!P)&0LwjFS?zqWiv!~3oKa%~d>38D4TZGF=tJPq34>bx;AUx(Dzz%&8yv-KwZl<&+D?*yzJF-&1_xgHSzk)H4p1MtjW=3 zu9@qVy(ZXe%3fpI`^w&zhkc;z{kY4=%3kO63(DRf4?dr~ciB%h%HFW;pDVOxzOF{0 z2K#h>Os3E*-6>^nO2ZS1uk(DMP7p(TKGj`PXx0PzoyjyQK!05Eu3THxXvN+?e)*xY zx6iuM3QY;s;oqKd`U?uZov(jap#zioKxIpCdqWw&;k>0gf+N>+kyL-%}{DE&nV#Nr&Gz-_U=kQ1tWqlZwHsq-Z7!jEfpTouYjL zZR>9K^P@4NeU4&qKW*@pGrc}iSk5*-6C1M4FNPM6>$p>)qv!OSld17Gq{0Hz0*s~-ZOWZZ zOpR>RehPp7+C}zRAHCf7^6t=60$w=Ggn1XFA zUT0{{j&(23WY%fMAUZb3bTx}+7`?!-uy3^q%_Z~JPW>JOuQX0#EpnSgvEXM7{xq$Z z@26S*?wO`;XX9rKO<@a9&P|uY;f+gK`g3tK(Bb=~LjAY-J)dkAt2Ip;$7S%ybH!ou z)s`pyF!RL0hEocid(`lr!Vau!W;B+RfPLTV=-O68lufstVnfVBY`)HOajIUG4=^80 zHVfL+Av<4)YeH|4`D&IP1a0bGp2G4?R)uA(>|&seWWJe47e>cZvd)VhbHs;Yuru0V z4R1F1bFv<@oof`@z{Y~T63jXbaVoU0^M^T+lFsHw;z4InUgRl-ZTP8~H+5MPdrn~y zq3NoM_^$L7Ya3U>I?pvH(8FE{m$H=4RkfgwfKitd$C&rm+ zb?1btWa{v^??(z{&hqJ6L<2e-A(Mhs<1r|ykEW#ND&LC=HT%ZjX2n*Da*TM7$^Pc_rPPXaF}{ztu_1(MU_*sLj>^dWt|&jOpUm|j?np&9LO z9rS6Iud`AkvP~4!iDmR2Xr@<2@}E+&d}i?4^om!ctsYTfr~n&-6`I-h*+G7EAT(sP z4MH1`7XrJSkriU1>Fa~IKlnn`d3K`2Kis<%!?vYPg(27TC_T5yX@xzM6cR#D`T6e@ zvK`pU{|`1cq_4$7!GG&O3f(C2|0K^eOr!R>v;LnbEM;GaFI_w0|BgaMhJZa>TNQPso1xyM@E zKRJmOEzS8fi=}j%#t7_or+KF(zOS$=&cr|pPfYT$c{z1$*;!{|47HhrOWJ%Z#A>5sZ5qVd$Tu$P z4JBlyxA1eSHhb}Pe36wzhh}lPrsK&E7kM0X(AH>D*YY>|3Be z>P0&OEUzW||J^9{X&zQ2qJ@;=$C*QRDKr4~Vq?2EwDqBr6}{hj(KIedj?ETqiH`7> z44OWE#)N|LEOu0j!L(#kYNf)Gk7WiKvB1UvCA4})_B%@Lcp=>Lp*gw1YErAIF&em-K>pT_-z%(YtlglS$2OJe z<7i+1;hPmw0(!*RSbD=mBYk`{_qak2|1BwPfyLQT<(blJvGQW8Ul#teB$VSOJO z?@#@wwnx~&PoSzdpK0?N$W_{yY4g4|onZ<4HDkUM(Dq}PUfWazhr@Ag?-@iV!~I?? zq;KX&`oriqsuokdFY>0M-|k!ePNeT3dT^27QH92>^~2a}ulvKX3$N*)&KdjMa2{gz zpY=D9`JIr>$t+-Im@mzE!19`+&!}OM=esnd{u?X@3mb$KPb!%*vtY`^q{0aWB~vDs zCbL-TkV`#2u`N_Qo=z7}>jXJ-mUmC|YJux+u!sAmvP$;4Mm@TmSC!>65Z(*A- z8+AE51WPNKHwnKpUx0J)_Tv`M#?McQVj0!mPtfVNVg@19g{gui^NeN(lXV;E=(=X1 zHnyyXRiPi=g8+$~X(v@Jya#HTMgHs3U?0(EtUlDW*!qqX<6nkmvhkd62Fpzgc!2zOw*YcHw;&oC?Ws1DpD-TS zs!vLvw-wqxG4~6F-CmpEOT|-K3I(IiBc?UB5HQUp#h*uctd+Y0>D;Q1kGc+z@|CJE zwKQ0G6!<$hp9hv2*o7bZG^56+(ynDu&a{M6f(nkI*aI(=L{in~u|H->X<*FEPn?ZapK^WfP2%}2lh3*|Cj2cdiTVvzsZP%taAcQgVQ%p4T zXx!O6b|j;x!g`)AjF28}MRfeV$?T`K34Y*-_i?4cN~7@29Od5j<}2^Q#ts}6!`}w( zS)4E*d=Js)T2vhuL6^2AwB17A7c{w@N3R?l$5F_)nk^NV3`w*x+v!3-nmlk+un6Uk zTq#dy+hZ5T3zu|sMxK!F=`Y6>u?%a+B#N99w@azMoz)N+mxJg;%8s1a1eP~Sot92? zNo;M?CwP--Ng_gdhrAFoAv{Kl;bH&X*6os(zfUq8xR>Bq;q8vS)LEcPKiV-cWlM65 zGqsKzk_?!~1KUPgxIP!}vrRCRDtGo=AZB+v z>a_POiQO6%i-(nk)aWwTw2%S@~$qf-J; zvo?d9b2N*3@${I#D5RTajIz=84w+}gH?A3}z0bstgm1 zTztKvEz7tEj9xv;ifA^|kO!~0@Ttu0$=pWr2Mx-k$P;5vV&bdX#548`Y-nTsvhU+j z07S;KoMU~hY-5*MP~zcvFY#INVO#dm4}Ib|)_xIIexlF&DmC5c#*_j$mBH_%ys6N| zHW`?(!)r~?3Hm`#I;Gs4z)7cB$wej$Cj$nU!`>cTU}A?(mr4)+(U7do2uzb`@74id z@R6Y#@$5ivdjt=dF+!WNcefMTgwMONn!q_GcHT5g#y&)=oj^uHy-RtlxbM zE{NozLMjZXh-Zi1p5)IK^y!hx4t=dRl07kSi=a35$h{L~RH0F=vjNWnjA4;B`oobC zHHw!rAdtF#lj>uku8%i|Y94=dn28px8U>UVYi6bSdtWDvrcV{UkqZk&J z|EJzf6&rhacxyklD@*ZJ#F~YVbV0Qek+n!ilTx1Hb~J=U%nLDbf@bKmCZ|Nvs=+Of zD1L5tM*|kN{6Jwa24B`RyuIpC4n5iNl{^{Yezf(fQCPn}_cYOiH#;H_9v#%{G?yG- z8zB?@DbM0uq|V_U7edjzT@+1Ai9J~uBBka6n{Y~1C%Xx!wA`t%MNf7NqLL{s z!4cu@zUx%L6i~->cA0x>z*eQ-z=zE(gcp;1r?6ET?Sr2D*REFpT-kCzGVb z9{$VFbY_3l?M@`n8Q*1AM;1JKnXquFxUh(9HY%e~%{wj5fx-2lUId^7y1uaBHoSfC z9d0R^Li(j<=;?Am_UuG%h%Q^8-4h0%Rp^^(<4~|!8$IH*um)~}1RDetk}qev4R+CW zj+Q(BEfcKC>OByV-|Kp^^a*@LJFGBI;fS;dugwMbw|s&LA$({O9sIm#vtn^ZCe*VK z?sDk%@7uw(bZMA}@n_!1KEw4Z#A}YQQI|QVuu)-);;Fb_45|QwpGg6Rh+WhknOy2q z1x~nwyj(cBhiP;ZD71! ztma^v!JTs4@dosDr0O_d+%gCuto4$Suis&O2xjrrzWAQ=h(1MHxPNA>{k(L&t{Tye zZaKUJ#>ASBS(nsVv){YzBl!!UIg#ybHXwqoSN4MSB8K_Vo72+3ik}i@9EE22G^s}n zB8j-Mr83bS6nLB^q+p+L1#^cdq_s(eybATu&;K|Q;b6syqO%J7u*5&m7eQvG3^Ls0 z7)&mKa(@_hmXCnpgsB+V#_5$Zz>O@*hsdUerucDN;#N;V6Hs+ZDr5llzCR+Nb)!Ybaf zkAbUfZWxN-{OY4)<9UT~Pm6m-VC*L~955m&l9IiRUB;rKa5JE7JlWzhq@~Qto!?(I zuS+rgP^c|x(E`Qc4&Ucr;Kbl@CY^V{Y2ZTmpBXt>w~?3qxu-9s?CSJ%GR^%v+?~bQ zvp$8?G%rFp7Z>hDUKkV5!$>h7HkC#PvGj85pRi>u<%Of_C|#^5?vANWMZM|g&kUlf z$qS)2JW`|!@r@4Y! zHKLS(<)`H((Y4R}AP{DqE;Q3mn}+*9aFMEup?1TY!4WBDkWH8Ov??D&-%^tkKw)hr zf2gpHpNE^MrX<6MHslUy7B%c;aLtS<`iBrNVZe?B++Q%kJTtcT%&{xpO)U zDH5v7%L~2*ed7fruI1GYY~>Jv)w1Z#_5Eu5m0+6NsCA5u1zs5LOOyzBE~QiDu#sRuW3wIFeL1F8 zCFowEh7>9o+v*L0eea-@dpYg_8PZ4-HGXl@G=(j!7%Z$)$n#LM3J=sMY#eHBb)g5; zFVpf+8_#;>9wVK(G)RJcZI)nO;z_y#U220wv1{LUKpcE~l7Srz>YYUUbF$!KAl#6; zLP}yCGYZABqgh5(^CxJ-@23sUGW|&tOvjs(r31y(DU{Z5C{%dD%E4g8k7wEi+F0`; z?fvN4twka$$I7~~w4(e}wafEmRWji1%)a)E^oW1kdB;d8x3y9s7Qon+KQx0-~&y**1V}y>iGp`fQ2>}`_?Fd z-d)C`A>u;l+;`CqpH4!`V*atAbEL-~+iHf~f|B3m3g*+!3lqpqU@ewDYB-R~k#d%cCqI$|l2i#;X?V$vuwe6KLe>l<$NNxg}moDg>aB2N(IWu7L=z#z*l`G;G- zD_%jMZOf`Ei;^gNLMm6-U7A@GT+9UfhUWJ;eg_J1(>Hwfz!)Jt;hzDCOtPeN$k|P1 zOHhk!ccLksJ3~fjq!rDkBN+f%yHcK~p~}t5@`&?YDB^tARTcUpfwJJ%Zhw18snBy& zZ9!D--W~wW1Fny_p2t#GwDPBlvHjq>m4}AAkWe=^V{&&CcncSVQ}NQAuSNI7kG{Lo z^F8FDp9ItEgNA*gP|!Mvi?a%RNT+5+`DmPK5CbZi$pXwBQ|We-Of`;c3P3k1hsgw8 zs7k*zElrg3^SBShSR5@gP4HxG?;ZwluXmK02jDItJ?% z;TQAV0VSj5zUJy z=t`#_Zry?&=-+{RO2Qi)BM`>7@wJFA0Fo8<#Mc=~6!(f+A4TDd=S&8MxkTbB)&OAM zm&XxzGeNU`fBAjKZ%yze-TIFgjzI_#7z8+;+YA(gr(ehGb1UF!Hx9@ogjIpf#(sm( zbB1a*6v0VS0S(%}uxQ@drClex0V{u!pYfsR%fSSfjNVG%^BE$_ifG7TGp`IHA=gSl z*^7|eSe%d6N0o3j04?7u>uzTmDe2hw2HXs_MVn~Uv#46oYi!~%g(38Z(YE-(u&vcQ z3gOg|-ACG3%<~p+I&@{?acrJ2kLGflp&_ZvSMCwv3(%vRv!=kbZfm8eFI6{BLws)J zQ;7Hgi^ab_mHC1burike0Hbp^C&dYuB77GLEm0i8fkSGu>Z;m6P9g;L=5VOb)aOun zbYqBaQEo3FoQ&vDu^{STrXugw!oV~pTDfkbD+16#HQA_{aIYXhZC3SQVFY|l9_2@m z{*FKx9&-`u6t}ae=W`tDKeH`M76ag<>0MEu*k5A{vt6JK}dzt_{0zjh7D3-6OY%mLYry^bk6KrwdO-5H41UPy5 z1Wb-lC^b|~9fIk*vJ7-#LkINbu(h*h=0CLR_!ZZ1El?@!=#WZiXu!y(WsVSz<>I>wdl70(#}sAEAh{RJ zb6te2aHx$&H_G`yS)SNr3MDp~I;TRvEr>^E*WhSvCeXo-lMs>DRSm&bfqQ26dyhXA zpg<;V!pC`9uvWA)(fN^`kOzJrs+eV;<#^=)K{(evXV5T|sB7U?QAp8x0F5LR3Leo~ zXdyTv10D5m1O>J@=QXb4uoJ?!4|e@aauO%ZTYCH>34fewba`OLm=oet;Ty!>DYsuj z!xLrNuasd>jMGo2%kCbxID!vM;z36SQ&&hvuM08ai*JUX5o3y1VVoa=ko)VaZz5); zu$>*2#?Xb_Nv>L^aIq%##@myc684^n{Q)3PmbrKh0cC=!=Id$1+CHO20ea7bQV&UF}xrAB@ z*AfNZSfSfIKcWMl_W}A1{d~G86MML~gz>0vES=^;WduM9Wecfljv{VKj%+oF$bZb(exjn%c|xjFyuc8qGu)|HQE+pHN1k(yI4^I|H)){ zw|9;tKogdg{`8|7q|{2HRVLvG0}K@dk_F4M8|*7E0_MCJ51DsEJ_n(iHg! zghu7JLImOpl|f@0RZdy`^qXQTj}7DDa}@ z{7rOYXxdqcZd>0!*$9YuqrRy%J=eM^yih%EWSC?gJd?j@w7NCy$_})T>B5dNLX|Zz zgsxW6bWv*;%ZJlO&qE0B^{NrlH)5hpj`EX87IALI*ntW|UhWJtFi?juy4XLLi`o7Q zRHiW0b4-NDgIXC1_kNTZ-agny(+(H9663+F@5CA(NX{)8EyjoWK9BeU1(3&>n_L0Y7}%%1GYi(uC1Y5Qi+P=Ac!op}1|A2`!a@r&fG)+g-Hv!^iY)AkKI>~-B|Z_GB% zv+vMPjb*ddV848&Dmf!ey@GkFL3sN&c?rtr-qw2p?AmNgStZb(fB{| zkBa5Rr%&^Xx%@(1s%a~h;^zMW-2?K?2Y292y_7-|_5j&;YEpQ^;@qaIqw=1TY5OO8 znqvogCMOFn7eQcE^7 zPHVEsdCh*{7sc|6qWH@pwOK@-5qJIx@RJ#^L{s`J#Zm(OBRLK8I+FgT3}T6)fYO;<|}@Eocf z5@^~5yEm7^tWP}TQ1CUU)-4AkyZ;+};^|uGmWONkWf8dbJ&=X}{TDrn#%Z==p*@&h z`pjOVW7|K&E}jQ3+XH_q@yz_AeYbw9hw{`fg?&HT z+u&r-O|J-6EI zxUcI^CuT2dYm_P-ONSE6!i>7d*q-IZ;bc{2T8$h?0jLlf(Y=lSd-&d7XEXd$mtLH0N(~KvzeP8FZZpai_OMS0KZ~jrfuf@^4fc zY}9pEzj+kjn1^9=)6{P`A;Wo~LSA&=f~FSzWj_Y;trWe#B+RHkWsz65*iu~i2Z<|A zjt}*{y2#sTaeC?NxTAqQq9oJKPiI;z>~Y`4X5DUfxXG+=wt7@)2z7d=ILN5`lej}0 zqi0!-=EJ-XFG%?_;lM;X5JZk0!TEAxr^YP!rM-bCJrH;_&@H~uQ2$$c?ytfkH z1gKZL()rTE)T{HW@l1D+N9$O6;-&j=(UjfXQXWR&bF5LXm{fXG4HP?YRvV+vD!E%T zs}%CQSHgykJ&SQPX+rrSR`YpTmHZ_x|H*%9=2e{Gigd>C%VSl2QZ|JhTst!mh(OW^ z4Xy=44Gb-S7|M^F8E4cjaH*8p7~_22ua1-*E{&Ia9|(INIvaJHJeMmf&Ep8m&9vx_ z*M5T3Dur+YYobNJ)lHDdanT9@;!MGCzOP_|@6?x5u&r}R&*D5@V8?eI2|IoUS4>Iv2l!xCTgTDQLV4x>TaZ9SPJ-}C1NXpD>YQxPQh0|$*DFKmAxm+Lg#|rt z_h#>{SQtkeN0oXTbrV=f`{H=|u|;v1kvT)l!x^m2Oab>ShW$;H#2zZ28_Q|pyIFYE zE>fLla-d7wdC7)QvS|aqHOp9+@q}W`VwXms($X6jgc{3Yqj^RUSS%d8Q1=`{-K4wv zZnx@PB{^s+K36=*rJ>mMI>@5$W$~Omov<4v%V_SUDYewwt~@_e$u&RZ5+&-=*q1^m z9%mW#7U_Cv7jf^_IGzUn{@z}yD$2$Ztt!FTfc=u!mI@ca-*We=k`Bv|o0#dwgtGRW zex93CAKNmq7;ap=z>b|R=gT8h!xj22n@NQIP+1y>#5QKaHs&@)aR|l#ZLaU!Sf?hc zks@u-5))-#UL437iIRuL-EO==sks^znL?yXX=Zxa8XuN1s!Z)Gi>)^7Z}6FlPJ~PRuQtbwnqO2E^1o&u@fs6Cen>>?t@-G z#>TZGH0xaa{Y=s(BaTdvU4-&3BVk*GV6RYnRPu$|Ykn+(u$_AVXNA_? zajl2&fu<4ZswzUI-(4tfLUI$;rF~S3JA_gL)+ds@aBS)?wF=py^TBu5x<=;_OKw#l z?1|@EN)W~Z{w~Bgk}^&%ZDr9-EfjFK)sr|(T$(Vztc&W3q&I>q*^k-Tm%t* z$1Je!!!0ngNHD`FXK&d{-da+EcS0!aRK*uMT>y{x+BnIc7Y@%0fey9TKIOnrz0fBH zN%Hig#1AjM#o52EDiqL-!tx+JaJGB8td86l-R4A!D7=pU5;#-b6E0CKK^VWdCp^5k zXRn@Ge!?5Pcei_P>@V*`R;pm$62XfvWYI?D(<+`DgfT3?B`dyF(T-VbI#}1Ghb6J% zDdiczcGXa1031FFc~GBM%7XPevlvrOpszHNZY7u10*`fu2}dVZCjgnCf4PxD9xku( z)_o?qeCT#(Xz_TX=DG2?{(k@_g{?f^cLv20(ydvs4Ngcz&Vc7!HhmpL%ncnW@jeI1Wm#pzzws2S??qmqIc|7AdUoP>w z933o&x0&jp(BkcC=WmI~=F0IXOTGL}0ysz=&#$1Si18`%qKaj%M(y=5XJK7No;V24weizcLm zvEo8)97nP$-||ojzEyEqrxRI?7BepUx$FoA(?=SG%uIxHREvkuy%6aDke+zD12spH zMyE&ypi~uA5zo;)hW9-`7u;iA9XB zXd-9OBYD!C5>K9Zzgu%NklTb(q}(1LfiiSbN=TX9PdL(I$d(e+B>|v>Gr@j|5`={L zsZjUGBFE1jQt_cT&!9Xg5c~OoWz|Ww*09@0qW8rA21;W|KiJ_41%xx7jrB7366+T= z12y;3T&w`_$hg!g^e8dip|5(>jPAVUufY^#X&@GV{6fe=)WPa_NF;AeH?=&8-btu< z*4r$~Swb--A9yZkV94b(641vHW6EHKm;N#|k1KzqXG9lJr7yFNuV~C8PRII#4WhgZ z>t>N0sWLZ(f@>+oB&vy-Y z^gXpPbHhAjsUP8a1zsRKb8EQZfJkVi9^F!Xmq=B^>4I1JK5w%q0jVr^BO4s5K#FTF zZz91Z=d!!ekII#*=ktOsjbW(eJ;$u%e~v zE`=o18BSfe?Z%zxeNYKWpRQ`~={d`speH zJwbYXD?d8?S%pD!>b!oSMKU#=vz5R`C41fHJXI~xZ_ttzDF^TE1`AXKrbD0Z<#351l#KQ7C6Kb&zRN_@#FOT-nOV9y* z87pm(H>_X}g>_J@NN3&Zihg%5aSVn~8_h%UskPXpy{346S=cY3Ifs7VKi7y8 zq}**IPH_5PYQ%}@{?{6D4cC^gb>6Cr&VOTT4sBdf^$}8#f#W~YhLdS>U?=D((qz$e zmF+H>A$zvty7QM1mF}t?cb(hmueIZZg8Vb>xJdNZzNp)tuG^v$WC(mF80pcXv+`Q7 zaMHh_9Ty_naeUB~-nsZ&YV+2zs%FKF>7{=2{Ehml{{<~NvCRKei_UEHb(X6g8TLSE zdECF&tmFNbUv12}4WLeAt}|NsY4zyruQup}x(iLN+n^H~^Y3WT3BpA+T3v!G8~cwn z=)}5ysXKxmkPTD2)St#uEn$hUE6^1cho%^@@re)1gHNc#4SkpUqjsg)Ydl* zUkjf9W_-=@XXCmUUlx;ob?ckN+&#KNOMeY>SMrzc7IPtD z!kInT;ZKb(E<4^pztT^hOHp4xL*ss0w$P;Chy4NkxC*~rZFCIr#a~#l`!Ho64&Z#& z&@sZ-d!^TcE(_SKP@O^;ZkTVV^Yn^4|6T&K#XGF>#8()*(Ag0{E1NjhxsH9EPj>{f z-bs#+<*_gIl|IS*6>%(2z0OPMR-5uBXS;&xVM;P1K-Eoy4h!htW z(j8Z|Q;{F1JFd$^d+Hc-JMl5ZnKAXw_SXE4I5?&={3LJ~o1E|9s4{IXA$boFp5XWLo zPVO73u-Z%n=fC)@qL>}JT;Z(=%Xg4tSuJ7xagbYBVvMgRVo>!kpLpHjHXwkB$TmSFbO>5eU$4T@L(Hl4pBZIE#1Q!Y^)hYh3Lh5SMs{tILH zIFLooaWr647ej#R2|zLA z-SQNJZn_tPu3}5(LYF|rM$P!#3?t> zQYGuYRs{=+5s+3n_SX_@>1vl?#fa~2!HCjM-6Kddbzj@qzzuLpSJ!Z2rBw0oxDe`c zm}cNJjzdDI%b~EUD1Uw$q7?KM%C8%(=U*4gi&Vxh=JE?1iQnolvL(L Redl", # may not exist for all configurations @@ -294,8 +294,8 @@ def test_limit_continuity(self): "grad(B)": {"rtol": 1e-4}, "secular(alpha_r)": {"atol": 1e-4}, "secular(grad(alpha))": {"atol": 1e-4}, - "secular(gbdrift)": {"atol": 1e-4}, - "secular(gbdrift)/phi": {"atol": 1e-4}, + "gbdrift (secular)": {"atol": 1e-4}, + "gbdrift (secular)/phi": {"atol": 1e-4}, } zero_map = dict.fromkeys(zero_limits, {"desired_at_axis": 0}) kwargs = weaker_tolerance | zero_map diff --git a/tests/test_compute_funs.py b/tests/test_compute_funs.py index fdf1a44661..6a5fdd14c6 100644 --- a/tests/test_compute_funs.py +++ b/tests/test_compute_funs.py @@ -1565,8 +1565,8 @@ def test(eq): "grad(alpha)", "grad(phi)", "B_phi", - "secular(gbdrift)", - "secular(gbdrift)/phi", + "gbdrift (secular)", + "gbdrift (secular)/phi", "phi", ], ) @@ -1592,7 +1592,7 @@ def test(eq): np.testing.assert_allclose(data["B^phi"], dot(data["B"], data["grad(phi)"])) np.testing.assert_allclose(data["B_phi"], data["B"][:, 1]) np.testing.assert_allclose( - data["secular(gbdrift)"], data["secular(gbdrift)/phi"] * data["phi"] + data["gbdrift (secular)"], data["gbdrift (secular)/phi"] * data["phi"] ) test(get("W7-X")) diff --git a/tests/test_integrals.py b/tests/test_integrals.py index c3d04d1631..aaa557a0f9 100644 --- a/tests/test_integrals.py +++ b/tests/test_integrals.py @@ -1619,10 +1619,10 @@ def drift_num_integrand(data, B, pitch): """Integrand of numerator of bounce averaged binormal drift.""" g = jnp.sqrt(jnp.abs(1 - pitch * B)) cvdrift = ( - data["periodic(cvdrift)"] + data["secular(gbdrift)/phi"] * data["zeta"] + data["cvdrift (periodic)"] + data["gbdrift (secular)/phi"] * data["zeta"] ) gbdrift = ( - data["periodic(gbdrift)"] + data["secular(gbdrift)/phi"] * data["zeta"] + data["gbdrift (periodic)"] + data["gbdrift (secular)/phi"] * data["zeta"] ) return (cvdrift * g) - (0.5 * g * gbdrift) + (0.5 * gbdrift / g) @@ -1637,7 +1637,7 @@ def test_binormal_drift_bounce2d(self): grid = LinearGrid( rho=data["rho"], M=eq.M_grid, N=max(1, eq.N_grid), NFP=eq.NFP, sym=False ) - names = ["periodic(cvdrift)", "periodic(gbdrift)", "secular(gbdrift)/phi"] + names = ["cvdrift (periodic)", "gbdrift (periodic)", "gbdrift (secular)/phi"] grid_data = eq.compute(names=Bounce2D.required_names + names, grid=grid) for name in names: grid_data[name] = grid_data[name] * data["normalization"] From 10b547f7bee70cc1e41f028f08b6b906fd67327d Mon Sep 17 00:00:00 2001 From: unalmis Date: Sat, 23 Nov 2024 19:26:01 -0500 Subject: [PATCH 28/60] Change defaults for reverse mode jacobian chunk size for eps_eff --- desc/objectives/_neoclassical.py | 74 ++++++++++++++----- desc/objectives/objective_funs.py | 6 +- .../notebooks/tutorials/EffectiveRipple.ipynb | 6 +- 3 files changed, 62 insertions(+), 24 deletions(-) diff --git a/desc/objectives/_neoclassical.py b/desc/objectives/_neoclassical.py index b32507d9d6..9c668edd2d 100644 --- a/desc/objectives/_neoclassical.py +++ b/desc/objectives/_neoclassical.py @@ -29,6 +29,20 @@ from .objective_funs import _Objective, collect_docs from .utils import _parse_callable_target_bounds +_bounce_overwrite = { + "deriv_mode": """ + deriv_mode : {"auto", "fwd", "rev"} + Specify how to compute Jacobian matrix, either forward mode or reverse mode AD. + "auto" selects forward or reverse mode based on the size of the input and output + of the objective. Has no effect on ``self.grad`` or ``self.hess`` which always + use reverse mode and forward over reverse mode respectively. + + Default is ``fwd``. If ``rev`` is chosen, then ``jac_chunk_size=1`` is chosen + by default. In ``rev`` mode, reducing the pitch angle parameter ``batch_size`` + does not reduce memory, so it is recommended to retain the default for that. + """ +} + class EffectiveRipple(_Objective): """The effective ripple is a proxy for neoclassical transport. @@ -96,6 +110,7 @@ class EffectiveRipple(_Objective): bounds_default="``target=0``.", normalize_detail=" Note: Has no effect for this objective.", normalize_target_detail=" Note: Has no effect for this objective.", + overwrite=_bounce_overwrite, ) _coordinates = "r" @@ -111,7 +126,7 @@ def __init__( normalize=True, normalize_target=True, loss_function=None, - deriv_mode="auto", + deriv_mode="fwd", grid=None, name="Effective ripple", jac_chunk_size=None, @@ -142,6 +157,10 @@ def __init__( "num_pitch": num_pitch, "batch_size": batch_size, } + if deriv_mode == "rev" and jac_chunk_size is None: + # Reverse mode is bottlenecked by coordinate mapping. + # Compute Jacobian one flux surface at a time. + jac_chunk_size = 1 super().__init__( things=eq, @@ -171,14 +190,19 @@ def build(self, use_jit=True, verbose=1): if self._grid is None: self._grid = LinearGrid(M=eq.M_grid, N=eq.N_grid, NFP=eq.NFP, sym=False) assert self._grid.can_fft + # Constants can only hold 1D arrays for some reason. self._constants["clebsch"] = FourierChebyshevSeries.nodes( self._X, self._Y, self._grid.compress(self._grid.nodes[:, 0]), domain=(0, 2 * np.pi), + ).ravel() + self._constants["fieldline quad x"], self._constants["fieldline quad w"] = ( + leggauss(self._hyperparam["Y_B"] // 2) + ) + self._constants["quad x"], self._constants["quad w"] = chebgauss2( + self._hyperparam.pop("num_quad") ) - self._constants["fieldline_quad"] = leggauss(self._hyperparam["Y_B"] // 2) - self._constants["quad"] = chebgauss2(self._hyperparam.pop("num_quad")) self._dim_f = self._grid.num_rho self._target, self._bounds = _parse_callable_target_bounds( @@ -239,13 +263,16 @@ def compute(self, params, constants=None): self._X, self._Y, iota=constants["transforms"]["grid"].compress(data["iota"]), - clebsch=constants["clebsch"], + clebsch=constants["clebsch"].reshape(-1, 3), # Pass in params so that root finding is done with the new # perturbed λ coefficients and not the original equilibrium's. params=params, ), - fieldline_quad=constants["fieldline_quad"], - quad=constants["quad"], + fieldline_quad=( + constants["fieldline quad x"], + constants["fieldline quad w"], + ), + quad=(constants["quad x"], constants["quad w"]), **self._hyperparam, ) return constants["transforms"]["grid"].compress(data["effective ripple"]) @@ -313,10 +340,10 @@ class GammaC(_Objective): Note that Nemov's Γ_c converges to a finite nonzero value in the infinity limit of the number of toroidal transits. - Velasco's expression has a secular term that will drive the result - to zero as the number of toroidal transits increases unless the - secular term is averaged out from all the singular integrals. - Therefore, an optimization using Velasco's metric should be evaluated by + Velasco's expression has a secular term that may drive the result + to zero as the number of toroidal transits increases if the quadratures + are unable to average out the secular term from all the singular integrals. + So an optimization using Velasco's metric may need to be evaluated by measuring decrease in Γ_c at a fixed number of toroidal transits until unless an adaptive quadrature is used. @@ -327,6 +354,7 @@ class GammaC(_Objective): bounds_default="``target=0``.", normalize_detail=" Note: Has no effect for this objective.", normalize_target_detail=" Note: Has no effect for this objective.", + overwrite=_bounce_overwrite, ) _coordinates = "r" @@ -342,7 +370,7 @@ def __init__( normalize=True, normalize_target=True, loss_function=None, - deriv_mode="auto", + deriv_mode="fwd", grid=None, name="Gamma_c", jac_chunk_size=None, @@ -378,6 +406,10 @@ def __init__( self._key = "Gamma_c" else: self._key = "Gamma_c Velasco" + if deriv_mode == "rev" and jac_chunk_size is None: + # Reverse mode is bottlenecked by coordinate mapping. + # Compute Jacobian one flux surface at a time. + jac_chunk_size = 1 super().__init__( things=eq, @@ -407,19 +439,22 @@ def build(self, use_jit=True, verbose=1): if self._grid is None: self._grid = LinearGrid(M=eq.M_grid, N=eq.N_grid, NFP=eq.NFP, sym=False) assert self._grid.can_fft + # Constants can only hold 1D arrays for some reason. self._constants["clebsch"] = FourierChebyshevSeries.nodes( self._X, self._Y, self._grid.compress(self._grid.nodes[:, 0]), domain=(0, 2 * np.pi), + ).ravel() + self._constants["fieldline quad x"], self._constants["fieldline quad w"] = ( + leggauss(self._hyperparam["Y_B"] // 2) ) - self._constants["fieldline_quad"] = leggauss(self._hyperparam["Y_B"] // 2) num_quad = self._hyperparam.pop("num_quad") - self._constants["quad"] = get_quadrature( + self._constants["quad x"], self._constants["quad w"] = get_quadrature( leggauss(num_quad), (automorphism_sin, grad_automorphism_sin), ) - self._constants["quad2"] = chebgauss2(num_quad) + self._constants["quad2 x"], self._constants["quad2 w"] = chebgauss2(num_quad) self._dim_f = self._grid.num_rho self._target, self._bounds = _parse_callable_target_bounds( @@ -459,7 +494,7 @@ def compute(self, params, constants=None): if constants is None: constants = self.constants if "quad2" in constants: - self._hyperparam["quad2"] = constants["quad2"] + self._hyperparam["quad2"] = (constants["quad2 x"], constants["quad2 w"]) eq = self.things[0] data = compute_fun( @@ -478,13 +513,16 @@ def compute(self, params, constants=None): self._X, self._Y, iota=constants["transforms"]["grid"].compress(data["iota"]), - clebsch=constants["clebsch"], + clebsch=constants["clebsch"].reshape(-1, 3), # Pass in params so that root finding is done with the new # perturbed λ coefficients and not the original equilibrium's. params=params, ), - fieldline_quad=constants["fieldline_quad"], - quad=constants["quad"], + fieldline_quad=( + constants["fieldline quad x"], + constants["fieldline quad w"], + ), + quad=(constants["quad x"], constants["quad w"]), **self._hyperparam, ) return constants["transforms"]["grid"].compress(data[self._key]) diff --git a/desc/objectives/objective_funs.py b/desc/objectives/objective_funs.py index 31a5501660..0074e090e4 100644 --- a/desc/objectives/objective_funs.py +++ b/desc/objectives/objective_funs.py @@ -66,9 +66,9 @@ doc_deriv_mode = """ deriv_mode : {"auto", "fwd", "rev"} Specify how to compute Jacobian matrix, either forward mode or reverse mode AD. - "auto" selects forward or reverse mode based on the size of the input and output - of the objective. Has no effect on ``self.grad`` or ``self.hess`` which always - use reverse mode and forward over reverse mode respectively. + ``auto`` selects forward or reverse mode based on the size of the input and + output of the objective. Has no effect on ``self.grad`` or ``self.hess`` which + always use reverse mode and forward over reverse mode respectively. """ doc_name = """ name : str, optional diff --git a/docs/notebooks/tutorials/EffectiveRipple.ipynb b/docs/notebooks/tutorials/EffectiveRipple.ipynb index 00bccd7247..389f0920f5 100644 --- a/docs/notebooks/tutorials/EffectiveRipple.ipynb +++ b/docs/notebooks/tutorials/EffectiveRipple.ipynb @@ -385,9 +385,9 @@ " num_well=30 * 10,\n", " num_quad=32,\n", " num_pitch=45,\n", - " # TODO: It seems batch_size has no effect on memory consumed by Jacobian in reverse mode.\n", - " batch_size=1,\n", - " deriv_mode=\"fwd\",\n", + " # Uncomment to compute at only batch_size pitch angles at a time.\n", + " # This will reduce peak memory by 2.5 GB.\n", + " # batch_size=1,\n", " ),\n", " AspectRatio(eq1, bounds=(8, 11), weight=1e3),\n", " GenericObjective(\n", From 5511ce6086a8368560d883c4786bb159402ad3af Mon Sep 17 00:00:00 2001 From: unalmis Date: Sun, 24 Nov 2024 00:16:19 -0500 Subject: [PATCH 29/60] Fix if statement from previous commit --- desc/objectives/_neoclassical.py | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/desc/objectives/_neoclassical.py b/desc/objectives/_neoclassical.py index 9c668edd2d..97755f23c1 100644 --- a/desc/objectives/_neoclassical.py +++ b/desc/objectives/_neoclassical.py @@ -33,9 +33,9 @@ "deriv_mode": """ deriv_mode : {"auto", "fwd", "rev"} Specify how to compute Jacobian matrix, either forward mode or reverse mode AD. - "auto" selects forward or reverse mode based on the size of the input and output - of the objective. Has no effect on ``self.grad`` or ``self.hess`` which always - use reverse mode and forward over reverse mode respectively. + ``auto`` selects forward or reverse mode based on the size of the input and + output of the objective. Has no effect on ``self.grad`` or ``self.hess`` which + always use reverse mode and forward over reverse mode respectively. Default is ``fwd``. If ``rev`` is chosen, then ``jac_chunk_size=1`` is chosen by default. In ``rev`` mode, reducing the pitch angle parameter ``batch_size`` @@ -493,7 +493,7 @@ def compute(self, params, constants=None): """ if constants is None: constants = self.constants - if "quad2" in constants: + if "quad2 x" in constants: self._hyperparam["quad2"] = (constants["quad2 x"], constants["quad2 w"]) eq = self.things[0] From 48cfedc01850c800fad01b6f7f32d49ed69ee671 Mon Sep 17 00:00:00 2001 From: unalmis Date: Tue, 3 Dec 2024 16:40:49 -0500 Subject: [PATCH 30/60] Cosmetic changes requested by review --- desc/objectives/_neoclassical.py | 16 ++++++++++------ docs/write_variables.py | 2 ++ tests/test_neoclassical.py | 3 +++ tests/test_neoclassical_1D.py | 4 ++++ 4 files changed, 19 insertions(+), 6 deletions(-) diff --git a/desc/objectives/_neoclassical.py b/desc/objectives/_neoclassical.py index 97755f23c1..67e971c11a 100644 --- a/desc/objectives/_neoclassical.py +++ b/desc/objectives/_neoclassical.py @@ -76,8 +76,10 @@ class EffectiveRipple(_Objective): Grid resolution in toroidal direction for Clebsch coordinate grid. Preferably power of 2. Y_B : int - Desired resolution for |B| along field lines to compute bounce points. - Default is double ``Y``. + Desired resolution for algorithm to compute bounce points. + Default is double ``Y``. Something like 100 is usually sufficient. + Currently, this is the number of knots per toroidal transit over + to approximate |B| with cubic splines. num_transit : int Number of toroidal transits to follow field line. For axisymmetric devices, one poloidal transit is sufficient. Otherwise, @@ -308,8 +310,10 @@ class GammaC(_Objective): Grid resolution in toroidal direction for Clebsch coordinate grid. Preferably power of 2. Y_B : int - Desired resolution for |B| along field lines to compute bounce points. - Default is double ``Y``. + Desired resolution for algorithm to compute bounce points. + Default is double ``Y``. Something like 100 is usually sufficient. + Currently, this is the number of knots per toroidal transit over + to approximate |B| with cubic splines. num_transit : int Number of toroidal transits to follow field line. For axisymmetric devices, one poloidal transit is sufficient. Otherwise, @@ -344,8 +348,8 @@ class GammaC(_Objective): to zero as the number of toroidal transits increases if the quadratures are unable to average out the secular term from all the singular integrals. So an optimization using Velasco's metric may need to be evaluated by - measuring decrease in Γ_c at a fixed number of toroidal transits until - unless an adaptive quadrature is used. + measuring decrease in Γ_c at a fixed number of toroidal transits + unless a high resolution or adaptive quadrature is used. """ diff --git a/docs/write_variables.py b/docs/write_variables.py index 13b15b9061..9fdce882d9 100644 --- a/docs/write_variables.py +++ b/docs/write_variables.py @@ -51,6 +51,8 @@ def write_csv(parameterization): } # stuff like |x| is interpreted as a substitution by rst, need to escape d["Description"] = _escape(d["Description"]) + if "deprecated" in d["Name"]: + continue writer.writerow(d) diff --git a/tests/test_neoclassical.py b/tests/test_neoclassical.py index 8c7cfc5c12..d977674261 100644 --- a/tests/test_neoclassical.py +++ b/tests/test_neoclassical.py @@ -15,6 +15,7 @@ @pytest.mark.unit +@pytest.mark.slow @pytest.mark.mpl_image_compare(remove_text=True, tolerance=tol_1d) def test_effective_ripple(): """Test effective ripple with W7-X against NEO.""" @@ -43,6 +44,7 @@ def test_effective_ripple(): @pytest.mark.unit +@pytest.mark.slow @pytest.mark.mpl_image_compare(remove_text=True, tolerance=tol_1d) def test_Gamma_c(): """Test Γ_c Nemov with W7-X.""" @@ -65,6 +67,7 @@ def test_Gamma_c(): @pytest.mark.unit +@pytest.mark.slow @pytest.mark.mpl_image_compare(remove_text=True, tolerance=tol_1d) def test_Gamma_c_Velasco(): """Test Γ_c Nemov with W7-X.""" diff --git a/tests/test_neoclassical_1D.py b/tests/test_neoclassical_1D.py index 5a0faf1d3e..f3a32e4c46 100644 --- a/tests/test_neoclassical_1D.py +++ b/tests/test_neoclassical_1D.py @@ -13,6 +13,7 @@ @pytest.mark.unit +@pytest.mark.slow def test_fieldline_average(): """Test that fieldline average converges to surface average.""" rho = np.array([1]) @@ -51,6 +52,7 @@ def test_fieldline_average(): @pytest.mark.unit +@pytest.mark.slow @pytest.mark.mpl_image_compare(remove_text=True, tolerance=tol_1d) def test_effective_ripple_1D(): """Test effective ripple 1D with W7-X against NEO.""" @@ -86,6 +88,7 @@ def test_effective_ripple_1D(): @pytest.mark.unit +@pytest.mark.slow @pytest.mark.mpl_image_compare(remove_text=True, tolerance=tol_1d) def test_Gamma_c_1D(): """Test Γ_c Nemov 1D with W7-X.""" @@ -108,6 +111,7 @@ def test_Gamma_c_1D(): @pytest.mark.unit +@pytest.mark.slow @pytest.mark.mpl_image_compare(remove_text=True, tolerance=tol_1d) def test_Gamma_c_Velasco_1D(): """Test Γ_c Velasco 1D with W7-X.""" From 8ed49f5c126bcadba045fd899a19695f6fd03638 Mon Sep 17 00:00:00 2001 From: unalmis Date: Wed, 4 Dec 2024 21:11:06 -0500 Subject: [PATCH 31/60] More fallout from renaming grid attribute --- desc/compute/_neoclassical.py | 6 +++--- desc/equilibrium/equilibrium.py | 4 ++-- 2 files changed, 5 insertions(+), 5 deletions(-) diff --git a/desc/compute/_neoclassical.py b/desc/compute/_neoclassical.py index 652afb192d..9695855ddb 100644 --- a/desc/compute/_neoclassical.py +++ b/desc/compute/_neoclassical.py @@ -192,7 +192,7 @@ def _dI(data, B, pitch): data=["min_tz |B|", "max_tz |B|", "kappa_g", "R0", "|grad(rho)|", "<|grad(rho)|>"] + Bounce2D.required_names, resolution_requirement="tz", - grid_requirement={"can_fft": True}, + grid_requirement={"can_fft2": True}, **_bounce_doc, ) @partial( @@ -363,7 +363,7 @@ def _f3(data, B, pitch): ] + Bounce2D.required_names, resolution_requirement="tz", - grid_requirement={"can_fft": True}, + grid_requirement={"can_fft2": True}, **_bounce_doc, quad2="Same as ``quad`` for the weak singular integrals in particular.", ) @@ -533,7 +533,7 @@ def _gbdrift(data, B, pitch): ] + Bounce2D.required_names, resolution_requirement="tz", - grid_requirement={"can_fft": True}, + grid_requirement={"can_fft2": True}, **_bounce_doc, ) @partial( diff --git a/desc/equilibrium/equilibrium.py b/desc/equilibrium/equilibrium.py index da19afe8e1..9a155d7a11 100644 --- a/desc/equilibrium/equilibrium.py +++ b/desc/equilibrium/equilibrium.py @@ -1062,7 +1062,7 @@ def need_src(name): and all( data_index[p][dep]["grid_requirement"].get("sym", True) # TODO: GitHub issue #1206. - and not data_index[p][dep]["grid_requirement"].get("can_fft", False) + and not data_index[p][dep]["grid_requirement"].get("can_fft2", False) for dep in dep1dr ), ) @@ -1110,7 +1110,7 @@ def need_src(name): and all( data_index[p][dep]["grid_requirement"].get("sym", True) # TODO: GitHub issue #1206. - and not data_index[p][dep]["grid_requirement"].get("can_fft", False) + and not data_index[p][dep]["grid_requirement"].get("can_fft2", False) for dep in dep1dz ), ) From 0dad867a1b4d5233a8514707de5a30e98982ffcb Mon Sep 17 00:00:00 2001 From: unalmis Date: Thu, 5 Dec 2024 00:22:45 -0500 Subject: [PATCH 32/60] Make quadratures public --- CHANGELOG.md | 6 +++--- desc/compute/_neoclassical.py | 4 ++-- desc/compute/_neoclassical_1D.py | 4 ++-- desc/integrals/_bounce_utils.py | 12 ++++++------ desc/integrals/_interp_utils.py | 2 +- desc/integrals/basis.py | 2 +- desc/integrals/bounce_integral.py | 4 ++-- desc/integrals/{_quad_utils.py => quad_utils.py} | 0 desc/objectives/_neoclassical.py | 4 ++-- tests/test_integrals.py | 4 ++-- tests/test_interp_utils.py | 2 +- tests/test_neoclassical.py | 2 +- tests/test_quad_utils.py | 2 +- 13 files changed, 24 insertions(+), 24 deletions(-) rename desc/integrals/{_quad_utils.py => quad_utils.py} (100%) diff --git a/CHANGELOG.md b/CHANGELOG.md index ec14c31b7b..851ce09787 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -10,9 +10,9 @@ v0.13.0 New Features -- Bounce integrals. (See desc/integrals/bounce_integral.) -- Effective ripple and Gamma_c optimization metrics. -- See GitHub pull requests #1003, #1042, #1119, and #1290 for more details. +- Bounce integrals methods with ``desc.integrals.Bounce1D`` and ``desc.integrals.Bounce2D``. +- Effective ripple ``desc.objectives.EffectiveRipple`` and Gamma_c ``desc.objectives.Gamma_c`` optimization objectives. +- See GitHub pull requests [#1003](https://github.com/PlasmaControl/DESC/pull/1003), [#1042](https://github.com/PlasmaControl/DESC/pull/1042), [#1119](https://github.com/PlasmaControl/DESC/pull/1119), and [#1290](https://github.com/PlasmaControl/DESC/pull/1290) for more details. New Features diff --git a/desc/compute/_neoclassical.py b/desc/compute/_neoclassical.py index 9695855ddb..5f7098f901 100644 --- a/desc/compute/_neoclassical.py +++ b/desc/compute/_neoclassical.py @@ -14,13 +14,13 @@ from desc.backend import imap, jit, jnp -from ..integrals._quad_utils import ( +from ..integrals.bounce_integral import Bounce2D +from ..integrals.quad_utils import ( automorphism_sin, chebgauss2, get_quadrature, grad_automorphism_sin, ) -from ..integrals.bounce_integral import Bounce2D from ..utils import cross, dot, safediv from .data_index import register_compute_fun diff --git a/desc/compute/_neoclassical_1D.py b/desc/compute/_neoclassical_1D.py index db8dc5ce93..7942a1d174 100644 --- a/desc/compute/_neoclassical_1D.py +++ b/desc/compute/_neoclassical_1D.py @@ -7,13 +7,13 @@ from desc.backend import imap, jit, jnp -from ..integrals._quad_utils import ( +from ..integrals.bounce_integral import Bounce1D +from ..integrals.quad_utils import ( automorphism_sin, chebgauss2, get_quadrature, grad_automorphism_sin, ) -from ..integrals.bounce_integral import Bounce1D from ..utils import cross, dot, safediv from ._neoclassical import _bounce_doc, _cvdrift0, _dH, _dI, _f1, _f2, _f3, _v_tau from .data_index import register_compute_fun diff --git a/desc/integrals/_bounce_utils.py b/desc/integrals/_bounce_utils.py index b49f18d615..3c3fa99e2b 100644 --- a/desc/integrals/_bounce_utils.py +++ b/desc/integrals/_bounce_utils.py @@ -16,12 +16,6 @@ polyroot_vec, polyval_vec, ) -from desc.integrals._quad_utils import ( - bijection_from_disc, - grad_bijection_from_disc, - simpson2, - uniform, -) from desc.integrals.basis import ( FourierChebyshevSeries, PiecewiseChebyshevSeries, @@ -29,6 +23,12 @@ _in_epigraph_and, _plot_intersect, ) +from desc.integrals.quad_utils import ( + bijection_from_disc, + grad_bijection_from_disc, + simpson2, + uniform, +) from desc.utils import ( atleast_nd, errorif, diff --git a/desc/integrals/_interp_utils.py b/desc/integrals/_interp_utils.py index 75112a56c4..e7bdfe98da 100644 --- a/desc/integrals/_interp_utils.py +++ b/desc/integrals/_interp_utils.py @@ -14,7 +14,7 @@ from orthax.chebyshev import chebroots from desc.backend import dct, jnp, rfft, rfft2, take -from desc.integrals._quad_utils import bijection_from_disc +from desc.integrals.quad_utils import bijection_from_disc from desc.utils import Index, errorif, safediv # TODO (#1154): diff --git a/desc/integrals/basis.py b/desc/integrals/basis.py index 171620f972..9d7e47529f 100644 --- a/desc/integrals/basis.py +++ b/desc/integrals/basis.py @@ -19,7 +19,7 @@ idct_non_uniform, irfft_non_uniform, ) -from desc.integrals._quad_utils import bijection_from_disc, bijection_to_disc +from desc.integrals.quad_utils import bijection_from_disc, bijection_to_disc from desc.io import IOAble from desc.utils import ( atleast_2d_end, diff --git a/desc/integrals/bounce_integral.py b/desc/integrals/bounce_integral.py index 07f6f80f01..b18d607152 100644 --- a/desc/integrals/bounce_integral.py +++ b/desc/integrals/bounce_integral.py @@ -26,14 +26,14 @@ irfft2_non_uniform, polyder_vec, ) -from desc.integrals._quad_utils import ( +from desc.integrals.basis import FourierChebyshevSeries, PiecewiseChebyshevSeries +from desc.integrals.quad_utils import ( automorphism_sin, bijection_from_disc, get_quadrature, grad_automorphism_sin, grad_bijection_from_disc, ) -from desc.integrals.basis import FourierChebyshevSeries, PiecewiseChebyshevSeries from desc.io import IOAble from desc.utils import atleast_nd, errorif, flatten_matrix, setdefault diff --git a/desc/integrals/_quad_utils.py b/desc/integrals/quad_utils.py similarity index 100% rename from desc/integrals/_quad_utils.py rename to desc/integrals/quad_utils.py diff --git a/desc/objectives/_neoclassical.py b/desc/objectives/_neoclassical.py index 67e971c11a..8ac603d0b6 100644 --- a/desc/objectives/_neoclassical.py +++ b/desc/objectives/_neoclassical.py @@ -19,13 +19,13 @@ from desc.utils import Timer, setdefault from ..integrals import Bounce2D -from ..integrals._quad_utils import ( +from ..integrals.basis import FourierChebyshevSeries +from ..integrals.quad_utils import ( automorphism_sin, chebgauss2, get_quadrature, grad_automorphism_sin, ) -from ..integrals.basis import FourierChebyshevSeries from .objective_funs import _Objective, collect_docs from .utils import _parse_callable_target_bounds diff --git a/tests/test_integrals.py b/tests/test_integrals.py index aaa557a0f9..62e364946b 100644 --- a/tests/test_integrals.py +++ b/tests/test_integrals.py @@ -42,7 +42,8 @@ interp_to_argmin_hard, ) from desc.integrals._interp_utils import fourier_pts -from desc.integrals._quad_utils import ( +from desc.integrals.basis import FourierChebyshevSeries +from desc.integrals.quad_utils import ( automorphism_sin, bijection_from_disc, chebgauss1, @@ -53,7 +54,6 @@ leggauss_lob, tanh_sinh, ) -from desc.integrals.basis import FourierChebyshevSeries from desc.integrals.singularities import _get_quadrature_nodes from desc.integrals.surface_integral import _get_grid_surface from desc.transform import Transform diff --git a/tests/test_interp_utils.py b/tests/test_interp_utils.py index 4c7df8d005..265de4b821 100644 --- a/tests/test_interp_utils.py +++ b/tests/test_interp_utils.py @@ -27,8 +27,8 @@ polyroot_vec, polyval_vec, ) -from desc.integrals._quad_utils import bijection_to_disc from desc.integrals.basis import FourierChebyshevSeries +from desc.integrals.quad_utils import bijection_to_disc class TestPolyUtils: diff --git a/tests/test_neoclassical.py b/tests/test_neoclassical.py index d977674261..e4bd5746dd 100644 --- a/tests/test_neoclassical.py +++ b/tests/test_neoclassical.py @@ -70,7 +70,7 @@ def test_Gamma_c(): @pytest.mark.slow @pytest.mark.mpl_image_compare(remove_text=True, tolerance=tol_1d) def test_Gamma_c_Velasco(): - """Test Γ_c Nemov with W7-X.""" + """Test Γ_c Velasco with W7-X.""" eq = get("W7-X") rho = np.linspace(1e-12, 1, 10) grid = LinearGrid(rho=rho, M=eq.M_grid, N=eq.N_grid, NFP=eq.NFP, sym=False) diff --git a/tests/test_quad_utils.py b/tests/test_quad_utils.py index 81a2d41197..9ee62b1a1d 100644 --- a/tests/test_quad_utils.py +++ b/tests/test_quad_utils.py @@ -8,7 +8,7 @@ from scipy.special import roots_chebyu from desc.backend import jnp -from desc.integrals._quad_utils import ( +from desc.integrals.quad_utils import ( automorphism_arcsin, automorphism_sin, bijection_from_disc, From 48af6804e074689daecbf50733b3ce0491fb22f1 Mon Sep 17 00:00:00 2001 From: unalmis Date: Thu, 5 Dec 2024 14:05:55 -0500 Subject: [PATCH 33/60] Remove option to supress higher order singularities as all bounce integrals are 1/2 power singularities --- desc/integrals/quad_utils.py | 39 +++++++++++++----------------------- 1 file changed, 14 insertions(+), 25 deletions(-) diff --git a/desc/integrals/quad_utils.py b/desc/integrals/quad_utils.py index 9d563307bf..1ba4c86b91 100644 --- a/desc/integrals/quad_utils.py +++ b/desc/integrals/quad_utils.py @@ -2,13 +2,15 @@ Notes ----- -Bounce integrals with bounce points where the derivative of |B| does -not vanish have 1/2 power law singularities. The strongly singular integrals -at the local extrema of |B| are not integrable. Hence, everywhere except the -extrema, a Chebyshev or Legendre quadrature under a change of variables works -because √(1−z²) / √(1−λ|B|(z)) ~ g(z, λ) where g(z, λ) is smooth in z. -Empirically, quadratic node clustering near the singularities is sufficient -for estimation of g(z). +Bounce integrals with bounce points where the derivative of |B| does not vanish +have 1/2 power law singularities. However, strongly singular integrals where the +domain of the integral ends at the local extrema of |B| are not integrable. + +Hence, everywhere except for the extrema, an implicit Chebyshev (``chebgauss1`` +or ``chebgauss2`` or modified Legendre quadrature (with ``automorphism_sin``) +captures the integral because √(1−ζ²) / √ (1−λ|B|) ∼ k(λ, ζ) is smooth in ζ. +The clustering of the nodes near the singularities is sufficient to estimate +k(ζ, λ). """ from orthax.chebyshev import chebgauss, chebweight @@ -33,10 +35,6 @@ def grad_bijection_from_disc(a, b): return 0.5 * (b - a) -# This map was tested as a change of variables to interpolate with -# Chebyshev series on a more uniform grid. Although it fit to -# oscillatory functions better, it gives small wiggles due to Runge -# effects near boundary. def automorphism_arcsin(x, gamma=jnp.cos(0.5)): """[-1, 1] ∋ x ↦ y ∈ [−1, 1]. @@ -74,18 +72,16 @@ def grad_automorphism_arcsin(x, gamma=jnp.cos(0.5)): grad_automorphism_arcsin.__doc__ += "\n" + automorphism_arcsin.__doc__ -def automorphism_sin(x, s=0, m=10): +def automorphism_sin(x, m=10): """[-1, 1] ∋ x ↦ y ∈ [−1, 1]. This map increases node density near the boundary by the asymptotic factor - 1/√(1−x²) and adds a cosine factor to the integrand when ``s=0``. + 1/√(1−x²) and adds a cosine factor to the integrand. Parameters ---------- x : jnp.ndarray Points to transform. - s : float - Strength of derivative suppression, s ∈ [0, 1]. m : float Number of machine epsilons used for floating point error buffer. @@ -95,23 +91,16 @@ def automorphism_sin(x, s=0, m=10): Transformed points. """ - errorif(not (0 <= s <= 1)) - # s = 0 -> derivative vanishes like cosine. - # s = 1 -> derivative vanishes like cosine^k. - y0 = jnp.sin(0.5 * jnp.pi * x) - y1 = x + jnp.sin(jnp.pi * x) / jnp.pi # k = 2 - y = (1 - s) * y0 + s * y1 + y = jnp.sin(0.5 * jnp.pi * x) # y is an expansion, so y(x) > x near x ∈ {−1, 1} and there is a tendency # for floating point error to overshoot the true value. eps = m * jnp.finfo(jnp.array(1.0).dtype).eps return jnp.clip(y, -1 + eps, 1 - eps) -def grad_automorphism_sin(x, s=0): +def grad_automorphism_sin(x): """Gradient of sin automorphism.""" - dy0_dx = 0.5 * jnp.pi * jnp.cos(0.5 * jnp.pi * x) - dy1_dx = 1.0 + jnp.cos(jnp.pi * x) - return (1 - s) * dy0_dx + s * dy1_dx + return 0.5 * jnp.pi * jnp.cos(0.5 * jnp.pi * x) grad_automorphism_sin.__doc__ += "\n" + automorphism_sin.__doc__ From ceb610afce84af75578b80ffa8381a68fae112d7 Mon Sep 17 00:00:00 2001 From: unalmis Date: Thu, 5 Dec 2024 15:32:38 -0500 Subject: [PATCH 34/60] Fallout from reviewer requested change --- desc/compute/_neoclassical.py | 5 +++++ desc/compute/_neoclassical_1D.py | 5 +++++ desc/objectives/_neoclassical.py | 8 +++++--- 3 files changed, 15 insertions(+), 3 deletions(-) diff --git a/desc/compute/_neoclassical.py b/desc/compute/_neoclassical.py index 5f7098f901..9741aaf336 100644 --- a/desc/compute/_neoclassical.py +++ b/desc/compute/_neoclassical.py @@ -441,6 +441,11 @@ def fun(pitch_inv): f1, ( f2 + # TODO: Once people are happy with benchmarking + # we can push this integral into f2. + # The quadrature is less optimal, but + # it still works and it would be more efficient + # since we don't have to interpolate twice. + bounce.integrate( _f3, pitch_inv, diff --git a/desc/compute/_neoclassical_1D.py b/desc/compute/_neoclassical_1D.py index 7942a1d174..89606363ff 100644 --- a/desc/compute/_neoclassical_1D.py +++ b/desc/compute/_neoclassical_1D.py @@ -330,6 +330,11 @@ def Gamma_c(data): f1, ( f2 + # TODO: Once people are happy with benchmarking + # we can push this integral into f2. + # The quadrature is less optimal, but + # it still works and it would be more efficient + # since we don't have to interpolate twice. + bounce.integrate( _f3, data["pitch_inv"], diff --git a/desc/objectives/_neoclassical.py b/desc/objectives/_neoclassical.py index 8ac603d0b6..4395134730 100644 --- a/desc/objectives/_neoclassical.py +++ b/desc/objectives/_neoclassical.py @@ -191,7 +191,7 @@ def build(self, use_jit=True, verbose=1): eq = self.things[0] if self._grid is None: self._grid = LinearGrid(M=eq.M_grid, N=eq.N_grid, NFP=eq.NFP, sym=False) - assert self._grid.can_fft + assert self._grid.can_fft2 # Constants can only hold 1D arrays for some reason. self._constants["clebsch"] = FourierChebyshevSeries.nodes( self._X, @@ -442,7 +442,7 @@ def build(self, use_jit=True, verbose=1): eq = self.things[0] if self._grid is None: self._grid = LinearGrid(M=eq.M_grid, N=eq.N_grid, NFP=eq.NFP, sym=False) - assert self._grid.can_fft + assert self._grid.can_fft2 # Constants can only hold 1D arrays for some reason. self._constants["clebsch"] = FourierChebyshevSeries.nodes( self._X, @@ -497,8 +497,9 @@ def compute(self, params, constants=None): """ if constants is None: constants = self.constants + quad2 = {} if "quad2 x" in constants: - self._hyperparam["quad2"] = (constants["quad2 x"], constants["quad2 w"]) + quad2["quad2"] = (constants["quad2 x"], constants["quad2 w"]) eq = self.things[0] data = compute_fun( @@ -527,6 +528,7 @@ def compute(self, params, constants=None): constants["fieldline quad w"], ), quad=(constants["quad x"], constants["quad w"]), + **quad2, **self._hyperparam, ) return constants["transforms"]["grid"].compress(data[self._key]) From 6e35fe7708d3b710edf6d9dcbe57cd0827d08416 Mon Sep 17 00:00:00 2001 From: unalmis Date: Thu, 5 Dec 2024 15:49:43 -0500 Subject: [PATCH 35/60] Bumpy python version from 3.9 to 3.10 --- .github/workflows/benchmark.yml | 2 +- .github/workflows/cache_dependencies.yml | 2 +- .github/workflows/unit_tests.yml | 9 ++++----- .github/workflows/weekly_tests.yml | 7 +++---- 4 files changed, 9 insertions(+), 11 deletions(-) diff --git a/.github/workflows/benchmark.yml b/.github/workflows/benchmark.yml index 06bf52a7e5..df93a8b33a 100644 --- a/.github/workflows/benchmark.yml +++ b/.github/workflows/benchmark.yml @@ -24,7 +24,7 @@ jobs: GH_TOKEN: ${{ github.token }} strategy: matrix: - python-version: ['3.9'] + python-version: ['3.10'] group: [1, 2] steps: diff --git a/.github/workflows/cache_dependencies.yml b/.github/workflows/cache_dependencies.yml index dd648d78f4..de2559298f 100644 --- a/.github/workflows/cache_dependencies.yml +++ b/.github/workflows/cache_dependencies.yml @@ -14,7 +14,7 @@ jobs: GH_TOKEN: ${{ github.token }} strategy: matrix: - python-version: ['3.9', '3.10', '3.11', '3.12'] + python-version: ['3.10', '3.11', '3.12'] steps: - uses: actions/checkout@v4 diff --git a/.github/workflows/unit_tests.yml b/.github/workflows/unit_tests.yml index 1ce8b55c7a..04d77f0e8b 100644 --- a/.github/workflows/unit_tests.yml +++ b/.github/workflows/unit_tests.yml @@ -22,14 +22,13 @@ jobs: GH_TOKEN: ${{ github.token }} strategy: matrix: - combos: [{group: 1, python_version: '3.9'}, - {group: 2, python_version: '3.10'}, - {group: 3, python_version: '3.11'}, + combos: [{group: 1, python_version: '3.10'}, + {group: 2, python_version: '3.11'}, + {group: 3, python_version: '3.12'}, {group: 4, python_version: '3.12'}, {group: 5, python_version: '3.12'}, {group: 6, python_version: '3.12'}, - {group: 7, python_version: '3.12'}, - {group: 8, python_version: '3.12'}] + {group: 7, python_version: '3.12'}] steps: - uses: actions/checkout@v4 diff --git a/.github/workflows/weekly_tests.yml b/.github/workflows/weekly_tests.yml index b1ac1e5614..b61b08fb72 100644 --- a/.github/workflows/weekly_tests.yml +++ b/.github/workflows/weekly_tests.yml @@ -11,10 +11,9 @@ jobs: runs-on: ubuntu-latest strategy: matrix: - combos: [{group: 1, python_version: '3.9'}, - {group: 2, python_version: '3.10'}, - {group: 3, python_version: '3.11'}, - {group: 4, python_version: '3.12'}] + combos: [{group: 1, python_version: '3.10'}, + {group: 2, python_version: '3.11'}, + {group: 3, python_version: '3.12'}] steps: - uses: actions/checkout@v4 From 35469794846da75ba1608f4cd582308e50eeb705 Mon Sep 17 00:00:00 2001 From: unalmis Date: Thu, 5 Dec 2024 16:13:24 -0500 Subject: [PATCH 36/60] Exclude grid requirement quantities from test axis limit and compute everything tests --- docs/adding_objectives.rst | 1 - tests/test_axis_limits.py | 8 +++++--- tests/test_compute_everything.py | 10 ++++------ 3 files changed, 9 insertions(+), 10 deletions(-) diff --git a/docs/adding_objectives.rst b/docs/adding_objectives.rst index b7572410eb..2fa3028bad 100644 --- a/docs/adding_objectives.rst +++ b/docs/adding_objectives.rst @@ -192,7 +192,6 @@ A full example objective with comments describing the key points is given below: # and to make the objective value independent of grid resolution. return f - Converting to Cartesian coordinates ----------------------------------- diff --git a/tests/test_axis_limits.py b/tests/test_axis_limits.py index aeec203f97..51e0de5485 100644 --- a/tests/test_axis_limits.py +++ b/tests/test_axis_limits.py @@ -139,14 +139,16 @@ def _skip_this(eq, name): or (eq.anisotropy is None and "beta_a" in name) or (eq.pressure is not None and " Redl" in name) or (eq.current is None and "iota_num" in name) - # These quantities require a coordinate mapping to compute and special grids, so - # it's not economical to test their axis limits here. Instead, a grid that - # includes the axis should be used in existing unit tests for these quantities. or bool( data_index["desc.equilibrium.equilibrium.Equilibrium"][name][ "source_grid_requirement" ] ) + or bool( + data_index["desc.equilibrium.equilibrium.Equilibrium"][name][ + "grid_requirement" + ] + ) ) diff --git a/tests/test_compute_everything.py b/tests/test_compute_everything.py index 335a5e2480..1a16eb7908 100644 --- a/tests/test_compute_everything.py +++ b/tests/test_compute_everything.py @@ -221,14 +221,12 @@ def test_compute_everything(): names = set(data_index[p].keys()) - def need_src(name): - return ( - bool(data_index[p][name]["source_grid_requirement"]) - or "effective ripple" in name - or "Gamma_c" in name + def need_special(name): + return bool(data_index[p][name]["source_grid_requirement"]) or bool( + data_index[p][name]["grid_requirement"] ) - names -= _grow_seeds(p, set(filter(need_src, names)), names) + names -= _grow_seeds(p, set(filter(need_special, names)), names) this_branch_data_rpz[p] = things[p].compute( list(names), **grid.get(p, {}), basis="rpz" From 9e6e73e15df6eb7b8014b5582c790f661b5b31ba Mon Sep 17 00:00:00 2001 From: unalmis Date: Thu, 5 Dec 2024 18:46:21 -0500 Subject: [PATCH 37/60] Fix failing test that compares string to hardcoded valu --- desc/objectives/_coils.py | 2 +- desc/objectives/_profiles.py | 4 +- desc/objectives/_stability.py | 51 +++------ desc/objectives/getters.py | 4 +- desc/objectives/linear_objectives.py | 148 +++++++++++++-------------- desc/objectives/objective_funs.py | 63 +++--------- 6 files changed, 107 insertions(+), 165 deletions(-) diff --git a/desc/objectives/_coils.py b/desc/objectives/_coils.py index b13e024f01..146d092361 100644 --- a/desc/objectives/_coils.py +++ b/desc/objectives/_coils.py @@ -1921,7 +1921,7 @@ class SurfaceCurrentRegularization(_Objective): weight_str = ( "weight : {float, ndarray}, optional" "\n\tWeighting to apply to the Objective, relative to other Objectives." - "\n\tMust be broadcastable to to Objective.dim_f" + "\n\tMust be broadcastable to to ``Objective.dim_f``" "\n\tWhen used with QuadraticFlux objective, this acts as the regularization" "\n\tparameter (with w^2 = lambda), with 0 corresponding to no regularization." "\n\tThe larger this parameter is, the less complex the surface current will " diff --git a/desc/objectives/_profiles.py b/desc/objectives/_profiles.py index 0d0a522e43..0740c6142d 100644 --- a/desc/objectives/_profiles.py +++ b/desc/objectives/_profiles.py @@ -15,14 +15,14 @@ "target": """ target : {float, ndarray, callable}, optional Target value(s) of the objective. Only used if bounds is None. - Must be broadcastable to Objective.dim_f. If a callable, should take a + Must be broadcastable to ``Objective.dim_f``. If a callable, should take a single argument `rho` and return the desired value of the profile at those locations. Defaults to ``target=0``. """, "bounds": """ bounds : tuple of {float, ndarray, callable}, optional Lower and upper bounds on the objective. Overrides target. - Both bounds must be broadcastable to to Objective.dim_f + Both bounds must be broadcastable to to ``Objective.dim_f`` If a callable, each should take a single argument `rho` and return the desired bound (lower or upper) of the profile at those locations. Defaults to ``target=0``. diff --git a/desc/objectives/_stability.py b/desc/objectives/_stability.py index 3ff6a6aa1d..c066fd2f4c 100644 --- a/desc/objectives/_stability.py +++ b/desc/objectives/_stability.py @@ -16,15 +16,15 @@ "target": """ target : {float, ndarray, callable}, optional Target value(s) of the objective. Only used if bounds is None. - Must be broadcastable to Objective.dim_f. If a callable, should take a - single argument `rho` and return the desired value of the profile at those + Must be broadcastable to ``Objective.dim_f``. If a callable, should take a + single argument ``rho`` and return the desired value of the profile at those locations. Defaults to ``bounds=(0, np.inf)`` """, "bounds": """ bounds : tuple of {float, ndarray, callable}, optional Lower and upper bounds on the objective. Overrides target. - Both bounds must be broadcastable to to Objective.dim_f - If a callable, each should take a single argument `rho` and return the + Both bounds must be broadcastable to ``Objective.dim_f`` + If a callable, each should take a single argument ``rho`` and return the desired bound (lower or upper) of the profile at those locations. Defaults to ``bounds=(0, np.inf)`` """, @@ -355,44 +355,16 @@ class BallooningStability(_Objective): Parameters ---------- - eq : Equilibrium - Equilibrium that will be optimized to satisfy the Objective. - target : {float, ndarray}, optional - Target value(s) of the objective. Only used if bounds is None. - Must be broadcastable to Objective.dim_f. Default is ``target=0`` - bounds : tuple of {float, ndarray}, optional - Lower and upper bounds on the objective. Overrides target. - Both bounds must be broadcastable to to Objective.dim_f. Default is ``target=0`` - weight : {float, ndarray}, optional - Weighting to apply to the Objective, relative to other Objectives. - Must be broadcastable to to Objective.dim_f - normalize : bool, optional - Whether to compute the error in physical units or non-dimensionalize. - Not used since the growth rate is always normalized. - normalize_target : bool, optional - Whether target and bounds should be normalized before comparing to computed - values. If `normalize` is `True` and the target is in physical units, - this should also be set to True. Not used since the growth rate is always - normalized. - loss_function : {None, 'mean', 'min', 'max'}, optional - Loss function to apply to the objective values once computed. This loss function - is called on the raw compute value, before any shifting, scaling, or - normalization. Has no effect for this objective. - deriv_mode : {"auto", "fwd", "rev"} - Specify how to compute jacobian matrix, either forward mode or reverse mode AD. - "auto" selects forward or reverse mode based on the size of the input and output - of the objective. Has no effect on self.grad or self.hess which always use - reverse mode and forward over reverse mode respectively. rho : float Flux surface to optimize on. To optimize over multiple surfaces, use multiple objectives each with a single rho value. alpha : float, ndarray - Field line labels to optimize. Values should be in [0, 2pi). Default is alpha=0 - for axisymmetric equilibria, or 8 field lines linearly spaced in [0, pi] for - non-axisymmetric cases. + Field line labels to optimize. Values should be in [0, 2π). Default is + ``alpha=0`` for axisymmetric equilibria, or 8 field lines linearly spaced + in [0, π] for non-axisymmetric cases. nturns : int Number of toroidal transits of a field line to consider. Field line - will run from -π*nturns to π*nturns. Default 3. + will run from -π*``nturns`` to π*``nturns``. Default 3. nzetaperturn : int Number of points along the field line per toroidal transit. Total number of points is ``nturns*nzetaperturn``. Default 100. @@ -408,6 +380,13 @@ class BallooningStability(_Objective): """ + __doc__ = __doc__.rstrip() + collect_docs( + target_default="``target=0``.", + bounds_default="``target=0``.", + normalize_detail=" Note: Has no effect for this objective.", + normalize_target_detail=" Note: Has no effect for this objective.", + ) + _coordinates = "" # not vectorized over rho, always a scalar _scalar = True _units = "(dimensionless)" diff --git a/desc/objectives/getters.py b/desc/objectives/getters.py index 7d4772a8b0..03e1b75631 100644 --- a/desc/objectives/getters.py +++ b/desc/objectives/getters.py @@ -57,14 +57,14 @@ def get_equilibrium_objective(eq, mode="force", normalize=True, jac_chunk_size=" for minimizing MHD energy. normalize : bool Whether to normalize units of objective. - jac_chunk_size : int or "auto", optional + jac_chunk_size : int or ``auto``, optional If `"batched"` deriv_mode is used, will calculate the Jacobian ``jac_chunk_size`` columns at a time, instead of all at once. The memory usage of the Jacobian calculation is roughly ``memory usage = m0 + m1*jac_chunk_size``: the smaller the chunk size, the less memory the Jacobian calculation will require (with some baseline memory usage). The time it takes to compute the Jacobian is roughly - ``t= t0 + t1/jac_chunk_size` so the larger the ``jac_chunk_size``, the faster + ``t = t0 + t1/jac_chunk_size`` so the larger the ``jac_chunk_size``, the faster the calculation takes, at the cost of requiring more memory. If None, it will use the largest size i.e ``obj.dim_x``. Defaults to ``chunk_size="auto"`` which will use a conservative diff --git a/desc/objectives/linear_objectives.py b/desc/objectives/linear_objectives.py index 537ede2f1e..94c4294f09 100644 --- a/desc/objectives/linear_objectives.py +++ b/desc/objectives/linear_objectives.py @@ -621,14 +621,14 @@ class FixBoundaryR(FixParameters): Equilibrium that will be optimized to satisfy the Objective. target : {float, ndarray}, optional Target value(s) of the objective. Only used if bounds is None. - Must be broadcastable to Objective.dim_f. Defaults to ``target=eq.Rb_lmn``. + Must be broadcastable to ``Objective.dim_f``. Defaults to ``target=eq.Rb_lmn``. bounds : tuple of {float, ndarray}, optional Lower and upper bounds on the objective. Overrides target. - Both bounds must be broadcastable to Objective.dim_f. + Both bounds must be broadcastable to ``Objective.dim_f``. Defaults to ``target=eq.Rb_lmn``. weight : {float, ndarray}, optional Weighting to apply to the Objective, relative to other Objectives. - Must be broadcastable to Objective.dim_f + Must be broadcastable to ``Objective.dim_f`` normalize : bool, optional Whether to compute the error in physical units or non-dimensionalize. normalize_target : bool, optional @@ -702,14 +702,14 @@ class FixBoundaryZ(FixParameters): Equilibrium that will be optimized to satisfy the Objective. target : {float, ndarray}, optional Target value(s) of the objective. Only used if bounds is None. - Must be broadcastable to Objective.dim_f. Defaults to ``target=eq.Zb_lmn``. + Must be broadcastable to ``Objective.dim_f``. Defaults to ``target=eq.Zb_lmn``. bounds : tuple of {float, ndarray}, optional Lower and upper bounds on the objective. Overrides target. - Both bounds must be broadcastable to Objective.dim_f. + Both bounds must be broadcastable to ``Objective.dim_f``. Defaults to ``target=eq.Zb_lmn``. weight : {float, ndarray}, optional Weighting to apply to the Objective, relative to other Objectives. - Must be broadcastable to Objective.dim_f + Must be broadcastable to ``Objective.dim_f`` normalize : bool, optional Whether to compute the error in physical units or non-dimensionalize. normalize_target : bool, optional @@ -828,7 +828,7 @@ class FixThetaSFL(FixParameters): Equilibrium that will be optimized to satisfy the Objective. weight : {float, ndarray}, optional Weighting to apply to the Objective, relative to other Objectives. - Must be broadcastable to Objective.dim_f + Must be broadcastable to ``Objective.dim_f`` normalize : bool, optional Has no effect for this objective. normalize_target : bool, optional @@ -870,14 +870,14 @@ class FixAxisR(FixParameters): Equilibrium that will be optimized to satisfy the Objective. target : {float, ndarray}, optional Target value(s) of the objective. Only used if bounds is None. - Must be broadcastable to Objective.dim_f. Defaults to ``target=eq.Ra_n``. + Must be broadcastable to ``Objective.dim_f``. Defaults to ``target=eq.Ra_n``. bounds : tuple of {float, ndarray}, optional Lower and upper bounds on the objective. Overrides target. - Both bounds must be broadcastable to Objective.dim_f. + Both bounds must be broadcastable to ``Objective.dim_f``. Defaults to ``target=eq.Ra_n``. weight : {float, ndarray}, optional Weighting to apply to the Objective, relative to other Objectives. - Must be broadcastable to Objective.dim_f + Must be broadcastable to ``Objective.dim_f`` normalize : bool, optional Whether to compute the error in physical units or non-dimensionalize. normalize_target : bool, optional @@ -951,14 +951,14 @@ class FixAxisZ(FixParameters): Equilibrium that will be optimized to satisfy the Objective. target : {float, ndarray}, optional Target value(s) of the objective. Only used if bounds is None. - Must be broadcastable to Objective.dim_f. Defaults to ``target=eq.Za_n``. + Must be broadcastable to ``Objective.dim_f``. Defaults to ``target=eq.Za_n``. bounds : tuple of {float, ndarray}, optional Lower and upper bounds on the objective. Overrides target. - Both bounds must be broadcastable to Objective.dim_f. + Both bounds must be broadcastable to ``Objective.dim_f``. Defaults to ``target=eq.Za_n``. weight : {float, ndarray}, optional Weighting to apply to the Objective, relative to other Objectives. - Must be broadcastable to Objective.dim_f + Must be broadcastable to ``Objective.dim_f`` normalize : bool, optional Whether to compute the error in physical units or non-dimensionalize. normalize_target : bool, optional @@ -1032,14 +1032,14 @@ class FixModeR(FixParameters): Equilibrium that will be optimized to satisfy the Objective. target : {float, ndarray}, optional Target value(s) of the objective. Only used if bounds is None. - Must be broadcastable to Objective.dim_f. Defaults to ``target=eq.R_lmn``. + Must be broadcastable to ``Objective.dim_f``. Defaults to ``target=eq.R_lmn``. bounds : tuple of {float, ndarray}, optional Lower and upper bounds on the objective. Overrides target. - Both bounds must be broadcastable to Objective.dim_f. + Both bounds must be broadcastable to ``Objective.dim_f``. Defaults to ``target=eq.R_lmn``. weight : {float, ndarray}, optional Weighting to apply to the Objective, relative to other Objectives. - Must be broadcastable to Objective.dim_f + Must be broadcastable to ``Objective.dim_f`` normalize : bool, optional Whether to compute the error in physical units or non-dimensionalize. normalize_target : bool, optional @@ -1113,14 +1113,14 @@ class FixModeZ(FixParameters): Equilibrium that will be optimized to satisfy the Objective. target : {float, ndarray}, optional Target value(s) of the objective. Only used if bounds is None. - Must be broadcastable to Objective.dim_f. Defaults to ``target=eq.Z_lmn``. + Must be broadcastable to ``Objective.dim_f``. Defaults to ``target=eq.Z_lmn``. bounds : tuple of {float, ndarray}, optional Lower and upper bounds on the objective. Overrides target. - Both bounds must be broadcastable to Objective.dim_f. + Both bounds must be broadcastable to ``Objective.dim_f``. Defaults to ``target=eq.Z_lmn``. weight : {float, ndarray}, optional Weighting to apply to the Objective, relative to other Objectives. - Must be broadcastable to Objective.dim_f + Must be broadcastable to ``Objective.dim_f`` normalize : bool, optional Whether to compute the error in physical units or non-dimensionalize. normalize_target : bool, optional @@ -1194,15 +1194,15 @@ class FixModeLambda(FixParameters): Equilibrium that will be optimized to satisfy the Objective. target : float, ndarray, optional Fourier-Zernike lambda coefficient target values. - Must be broadcastable to Objective.dim_f. + Must be broadcastable to ``Objective.dim_f``. Defaults to ``target=eq.L_lmn``. bounds : tuple, optional Lower and upper bounds on the objective. Overrides target. - Both bounds must be broadcastable to Objective.dim_f. + Both bounds must be broadcastable to ``Objective.dim_f``. Defaults to ``target=eq.L_lmn``. weight : float, ndarray, optional Weighting to apply to the Objective, relative to other Objectives. - Must be broadcastable to Objective.dim_f. + Must be broadcastable to ``Objective.dim_f``. normalize : bool, optional Has no effect for this objective. normalize_target : bool, optional @@ -1257,14 +1257,14 @@ class FixSumModesR(_FixedObjective): Equilibrium that will be optimized to satisfy the Objective. target : {float, ndarray}, optional Target value(s) of the objective. Only used if bounds is None. - Must be broadcastable to Objective.dim_f. Defaults to ``target=eq.R_lmn``. + Must be broadcastable to ``Objective.dim_f``. Defaults to ``target=eq.R_lmn``. bounds : tuple of {float, ndarray}, optional Lower and upper bounds on the objective. Overrides target. - Both bounds must be broadcastable to Objective.dim_f. + Both bounds must be broadcastable to ``Objective.dim_f``. Defaults to ``target=eq.R_lmn``. weight : {float, ndarray}, optional Weighting to apply to the Objective, relative to other Objectives. - Must be broadcastable to Objective.dim_f + Must be broadcastable to ``Objective.dim_f`` normalize : bool, optional Whether to compute the error in physical units or non-dimensionalize. normalize_target : bool, optional @@ -1423,14 +1423,14 @@ class FixSumModesZ(_FixedObjective): Equilibrium that will be optimized to satisfy the Objective. target : {float, ndarray}, optional Target value(s) of the objective. Only used if bounds is None. - Must be broadcastable to Objective.dim_f. Defaults to ``target=eq.Z_lmn``. + Must be broadcastable to ``Objective.dim_f``. Defaults to ``target=eq.Z_lmn``. bounds : tuple of {float, ndarray}, optional Lower and upper bounds on the objective. Overrides target. - Both bounds must be broadcastable to Objective.dim_f. + Both bounds must be broadcastable to ``Objective.dim_f``. Defaults to ``target=eq.Z_lmn``. weight : {float, ndarray}, optional Weighting to apply to the Objective, relative to other Objectives. - Must be broadcastable to Objective.dim_f + Must be broadcastable to ``Objective.dim_f`` normalize : bool, optional Whether to compute the error in physical units or non-dimensionalize. normalize_target : bool, optional @@ -1590,14 +1590,14 @@ class FixSumModesLambda(_FixedObjective): Equilibrium that will be optimized to satisfy the Objective. target : {float, ndarray}, optional Target value(s) of the objective. Only used if bounds is None. - Must be broadcastable to Objective.dim_f. Defaults to ``target=eq.L_lmn``. + Must be broadcastable to ``Objective.dim_f``. Defaults to ``target=eq.L_lmn``. bounds : tuple of {float, ndarray}, optional Lower and upper bounds on the objective. Overrides target. - Both bounds must be broadcastable to Objective.dim_f. + Both bounds must be broadcastable to ``Objective.dim_f``. Defaults to ``target=eq.L_lmn``. weight : {float, ndarray}, optional Weighting to apply to the Objective, relative to other Objectives. - Must be broadcastable to Objective.dim_f. + Must be broadcastable to ``Objective.dim_f``. normalize : bool, optional Has no effect for this objective. normalize_target : bool, optional @@ -1759,14 +1759,14 @@ class FixPressure(FixParameters): Equilibrium that will be optimized to satisfy the Objective. target : {float, ndarray}, optional Target value(s) of the objective. Only used if bounds is None. - Must be broadcastable to Objective.dim_f. Defaults to ``target=eq.p_l``. + Must be broadcastable to ``Objective.dim_f``. Defaults to ``target=eq.p_l``. bounds : tuple of {float, ndarray}, optional Lower and upper bounds on the objective. Overrides target. - Both bounds must be broadcastable to Objective.dim_f. + Both bounds must be broadcastable to ``Objective.dim_f``. Defaults to ``target=eq.p_l``. weight : {float, ndarray}, optional Weighting to apply to the Objective, relative to other Objectives. - Must be broadcastable to Objective.dim_f + Must be broadcastable to ``Objective.dim_f`` normalize : bool, optional Whether to compute the error in physical units or non-dimensionalize. normalize_target : bool, optional @@ -1841,14 +1841,14 @@ class FixAnisotropy(FixParameters): Equilibrium that will be optimized to satisfy the Objective. target : {float, ndarray}, optional Target value(s) of the objective. Only used if bounds is None. - Must be broadcastable to Objective.dim_f. Defaults to ``target=eq.a_lmn``. + Must be broadcastable to ``Objective.dim_f``. Defaults to ``target=eq.a_lmn``. bounds : tuple of {float, ndarray}, optional Lower and upper bounds on the objective. Overrides target. - Both bounds must be broadcastable to Objective.dim_f. + Both bounds must be broadcastable to ``Objective.dim_f``. Defaults to ``target=eq.a_lmn``. weight : {float, ndarray}, optional Weighting to apply to the Objective, relative to other Objectives. - Must be broadcastable to Objective.dim_f + Must be broadcastable to ``Objective.dim_f`` normalize : bool, optional Has no effect for this objective. normalize_target : bool, optional @@ -1918,14 +1918,14 @@ class FixIota(FixParameters): Equilibrium that will be optimized to satisfy the Objective. target : {float, ndarray}, optional Target value(s) of the objective. Only used if bounds is None. - Must be broadcastable to Objective.dim_f. Defaults to ``target=eq.i_l``. + Must be broadcastable to ``Objective.dim_f``. Defaults to ``target=eq.i_l``. bounds : tuple of {float, ndarray}, optional Lower and upper bounds on the objective. Overrides target. - Both bounds must be broadcastable to Objective.dim_f. + Both bounds must be broadcastable to ``Objective.dim_f``. Defaults to ``target=eq.i_l``. weight : {float, ndarray}, optional Weighting to apply to the Objective, relative to other Objectives. - Must be broadcastable to Objective.dim_f + Must be broadcastable to ``Objective.dim_f`` normalize : bool, optional Has no effect for this objective. normalize_target : bool, optional @@ -1995,14 +1995,14 @@ class FixCurrent(FixParameters): Equilibrium that will be optimized to satisfy the Objective. target : {float, ndarray}, optional Target value(s) of the objective. Only used if bounds is None. - Must be broadcastable to Objective.dim_f. Defaults to ``target=eq.c_l``. + Must be broadcastable to ``Objective.dim_f``. Defaults to ``target=eq.c_l``. bounds : tuple of {float, ndarray}, optional Lower and upper bounds on the objective. Overrides target. - Both bounds must be broadcastable to Objective.dim_f. + Both bounds must be broadcastable to ``Objective.dim_f``. Defaults to ``target=eq.c_l``. weight : {float, ndarray}, optional Weighting to apply to the Objective, relative to other Objectives. - Must be broadcastable to Objective.dim_f + Must be broadcastable to ``Objective.dim_f`` normalize : bool, optional Whether to compute the error in physical units or non-dimensionalize. normalize_target : bool, optional @@ -2077,14 +2077,14 @@ class FixElectronTemperature(FixParameters): Equilibrium that will be optimized to satisfy the Objective. target : {float, ndarray}, optional Target value(s) of the objective. Only used if bounds is None. - Must be broadcastable to Objective.dim_f. Defaults to ``target=eq.Te_l``. + Must be broadcastable to ``Objective.dim_f``. Defaults to ``target=eq.Te_l``. bounds : tuple of {float, ndarray}, optional Lower and upper bounds on the objective. Overrides target. - Both bounds must be broadcastable to Objective.dim_f. + Both bounds must be broadcastable to ``Objective.dim_f``. Defaults to ``target=eq.Te_l``. weight : {float, ndarray}, optional Weighting to apply to the Objective, relative to other Objectives. - Must be broadcastable to Objective.dim_f + Must be broadcastable to ``Objective.dim_f`` normalize : bool, optional Whether to compute the error in physical units or non-dimensionalize. normalize_target : bool, optional @@ -2159,14 +2159,14 @@ class FixElectronDensity(FixParameters): Equilibrium that will be optimized to satisfy the Objective. target : {float, ndarray}, optional Target value(s) of the objective. Only used if bounds is None. - Must be broadcastable to Objective.dim_f. Defaults to ``target=eq.ne_l``. + Must be broadcastable to ``Objective.dim_f``. Defaults to ``target=eq.ne_l``. bounds : tuple of {float, ndarray}, optional Lower and upper bounds on the objective. Overrides target. - Both bounds must be broadcastable to Objective.dim_f. + Both bounds must be broadcastable to ``Objective.dim_f``. Defaults to ``target=eq.ne_l``. weight : {float, ndarray}, optional Weighting to apply to the Objective, relative to other Objectives. - Must be broadcastable to Objective.dim_f + Must be broadcastable to ``Objective.dim_f`` normalize : bool, optional Whether to compute the error in physical units or non-dimensionalize. normalize_target : bool, optional @@ -2243,14 +2243,14 @@ class FixIonTemperature(FixParameters): Equilibrium that will be optimized to satisfy the Objective. target : {float, ndarray}, optional Target value(s) of the objective. Only used if bounds is None. - Must be broadcastable to Objective.dim_f. Defaults to ``target=eq.Ti_l``. + Must be broadcastable to ``Objective.dim_f``. Defaults to ``target=eq.Ti_l``. bounds : tuple of {float, ndarray}, optional Lower and upper bounds on the objective. Overrides target. - Both bounds must be broadcastable to Objective.dim_f. + Both bounds must be broadcastable to ``Objective.dim_f``. Defaults to ``target=eq.Ti_l``. weight : {float, ndarray}, optional Weighting to apply to the Objective, relative to other Objectives. - Must be broadcastable to Objective.dim_f + Must be broadcastable to ``Objective.dim_f`` normalize : bool, optional Whether to compute the error in physical units or non-dimensionalize. normalize_target : bool, optional @@ -2325,14 +2325,14 @@ class FixAtomicNumber(FixParameters): Equilibrium that will be optimized to satisfy the Objective. target : {float, ndarray}, optional Target value(s) of the objective. Only used if bounds is None. - Must be broadcastable to Objective.dim_f. Defaults to ``target=eq.Zeff_l``. + Must be broadcastable to ``Objective.dim_f``. Defaults to ``target=eq.Zeff_l``. bounds : tuple of {float, ndarray}, optional Lower and upper bounds on the objective. Overrides target. - Both bounds must be broadcastable to Objective.dim_f. + Both bounds must be broadcastable to ``Objective.dim_f``. Defaults to ``target=eq.Zeff_l``. weight : {float, ndarray}, optional Weighting to apply to the Objective, relative to other Objectives. - Must be broadcastable to Objective.dim_f + Must be broadcastable to ``Objective.dim_f`` normalize : bool, optional Has no effect for this objective. normalize_target : bool, optional @@ -2402,14 +2402,14 @@ class FixPsi(FixParameters): Equilibrium that will be optimized to satisfy the Objective. target : {float, ndarray}, optional Target value(s) of the objective. Only used if bounds is None. - Must be broadcastable to Objective.dim_f. Default is ``target=eq.Psi``. + Must be broadcastable to ``Objective.dim_f``. Default is ``target=eq.Psi``. bounds : tuple of {float, ndarray}, optional Lower and upper bounds on the objective. Overrides target. - Both bounds must be broadcastable to Objective.dim_f. + Both bounds must be broadcastable to ``Objective.dim_f``. Default is ``target=eq.Psi``. weight : {float, ndarray}, optional Weighting to apply to the Objective, relative to other Objectives. - Must be broadcastable to Objective.dim_f + Must be broadcastable to ``Objective.dim_f`` normalize : bool, optional Whether to compute the error in physical units or non-dimensionalize. normalize_target : bool, optional @@ -2472,13 +2472,13 @@ class FixCurveShift(FixParameters): Curve that will be optimized to satisfy the Objective. target : {float, ndarray}, optional Target value(s) of the objective. Only used if bounds is None. - Must be broadcastable to Objective.dim_f. + Must be broadcastable to ``Objective.dim_f``. bounds : tuple of {float, ndarray}, optional Lower and upper bounds on the objective. Overrides target. - Both bounds must be broadcastable to Objective.dim_f + Both bounds must be broadcastable to ``Objective.dim_f`` weight : {float, ndarray}, optional Weighting to apply to the Objective, relative to other Objectives. - Must be broadcastable to Objective.dim_f + Must be broadcastable to ``Objective.dim_f`` normalize : bool, optional Whether to compute the error in physical units or non-dimensionalize. normalize_target : bool, optional @@ -2524,13 +2524,13 @@ class FixCurveRotation(FixParameters): Curve that will be optimized to satisfy the Objective. target : {float, ndarray}, optional Target value(s) of the objective. Only used if bounds is None. - Must be broadcastable to Objective.dim_f. + Must be broadcastable to ``Objective.dim_f``. bounds : tuple of {float, ndarray}, optional Lower and upper bounds on the objective. Overrides target. - Both bounds must be broadcastable to Objective.dim_f + Both bounds must be broadcastable to ``Objective.dim_f`` weight : {float, ndarray}, optional Weighting to apply to the Objective, relative to other Objectives. - Must be broadcastable to Objective.dim_f + Must be broadcastable to ``Objective.dim_f`` normalize : bool, optional Has no effect for this objective. normalize_target : bool, optional @@ -2691,15 +2691,15 @@ class FixSumCoilCurrent(FixCoilCurrent): Coil(s) that will be optimized to satisfy the Objective. target : {float, ndarray}, optional Target value(s) of the objective. Only used if bounds is None. - Must be broadcastable to Objective.dim_f. + Must be broadcastable to ``Objective.dim_f``. Default is the objective value for the coil. bounds : tuple of {float, ndarray}, optional Lower and upper bounds on the objective. Overrides target. - Both bounds must be broadcastable to to Objective.dim_f. + Both bounds must be broadcastable to ``Objective.dim_f``. Default is to use the target instead. weight : {float, ndarray}, optional Weighting to apply to the Objective, relative to other Objectives. - Must be broadcastable to to Objective.dim_f + Must be broadcastable to ``Objective.dim_f`` normalize : bool, optional Whether to compute the error in physical units or non-dimensionalize. normalize_target : bool, optional @@ -3049,15 +3049,15 @@ class FixSheetCurrent(FixParameters): Equilibrium that will be optimized to satisfy the Objective. target : {float, ndarray}, optional Target value(s) of the objective. Only used if bounds is None. - Must be broadcastable to Objective.dim_f. + Must be broadcastable to ``Objective.dim_f``. Defaults to the equilibrium sheet current parameters. bounds : tuple of {float, ndarray}, optional Lower and upper bounds on the objective. Overrides target. - Both bounds must be broadcastable to Objective.dim_f. + Both bounds must be broadcastable to ``Objective.dim_f``. Default is to use target. weight : {float, ndarray}, optional Weighting to apply to the Objective, relative to other Objectives. - Must be broadcastable to Objective.dim_f + Must be broadcastable to ``Objective.dim_f`` normalize : bool, optional Whether to compute the error in physical units or non-dimensionalize. normalize_target : bool, optional @@ -3112,7 +3112,7 @@ class FixNearAxisR(_FixedObjective): axis behavior. weight : {float, ndarray}, optional Weighting to apply to the Objective, relative to other Objectives. - Must be broadcastable to to Objective.dim_f + Must be broadcastable to ``Objective.dim_f`` normalize : bool, optional Whether to compute the error in physical units or non-dimensionalize. Unused by this objective @@ -3262,7 +3262,7 @@ class FixNearAxisZ(_FixedObjective): axis behavior. weight : {float, ndarray}, optional Weighting to apply to the Objective, relative to other Objectives. - Must be broadcastable to to Objective.dim_f + Must be broadcastable to ``Objective.dim_f`` normalize : bool, optional Whether to compute the error in physical units or non-dimensionalize. Unused by this objective @@ -3413,12 +3413,12 @@ class FixNearAxisLambda(_FixedObjective): axis behavior. bounds : tuple of {float, ndarray}, optional Lower and upper bounds on the objective. Overrides target. - Both bounds must be broadcastable to to Objective.dim_f + Both bounds must be broadcastable to ``Objective.dim_f`` Unused for this objective, as target will be automatically set according to the ``nae_eq`` weight : {float, ndarray}, optional Weighting to apply to the Objective, relative to other Objectives. - Must be broadcastable to to Objective.dim_f + Must be broadcastable to ``Objective.dim_f`` normalize : bool, optional Whether to compute the error in physical units or non-dimensionalize. Unused by this objective diff --git a/desc/objectives/objective_funs.py b/desc/objectives/objective_funs.py index 0074e090e4..3e3af89836 100644 --- a/desc/objectives/objective_funs.py +++ b/desc/objectives/objective_funs.py @@ -75,7 +75,7 @@ Name of the objective. """ doc_jac_chunk_size = """ - jac_chunk_size : int or "auto", optional + jac_chunk_size : int or ``auto``, optional Will calculate the Jacobian ``jac_chunk_size`` columns at a time, instead of all at once. The memory usage of the Jacobian calculation is roughly @@ -87,7 +87,7 @@ If ``None``, it will use the largest size i.e ``obj.dim_x``. Defaults to ``chunk_size=None``. Note: When running on a CPU (not a GPU) on a HPC cluster, DESC is unable to - accurately estimate the available device memory, so the "auto" chunk_size + accurately estimate the available device memory, so the ``auto`` chunk_size option will yield a larger chunk size than may be needed. It is recommended to manually choose a chunk_size if an OOM error is experienced in this case. """ @@ -194,19 +194,19 @@ class ObjectiveFunction(IOAble): use_jit : bool, optional Whether to just-in-time compile the objectives and derivatives. deriv_mode : {"auto", "batched", "blocked"} - Method for computing Jacobian matrices. "batched" uses forward mode, applied to - the entire objective at once, and is generally the fastest for vector valued - objectives. Its memory intensity vs. speed may be traded off through the - ``jac_chunk_size`` keyword argument. "blocked" builds the Jacobian for + Method for computing Jacobian matrices. ``batched`` uses forward mode, applied + to the entire objective at once, and is generally the fastest for vector + valued objectives. Its memory intensity vs. speed may be traded off through + the ``jac_chunk_size`` keyword argument. "blocked" builds the Jacobian for each objective separately, using each objective's preferred AD mode (and each objective's `jac_chunk_size`). Generally the most efficient option when mixing scalar and vector valued objectives. - "auto" defaults to "batched" if all sub-objectives are set to "fwd", - otherwise "blocked". + ``auto`` defaults to ``batched`` if all sub-objectives are set to ``fwd``, + otherwise ``blocked``. name : str Name of the objective function. - jac_chunk_size : int or "auto", optional - Will calculate the Jacobian + jac_chunk_size : int or ``auto``, optional + If ``batched`` deriv_mode is used, will calculate the Jacobian ``jac_chunk_size`` columns at a time, instead of all at once. The memory usage of the Jacobian calculation is roughly ``memory usage = m0+m1*jac_chunk_size``: the smaller the chunk size, @@ -1010,46 +1010,7 @@ class _Objective(IOAble, ABC): Parameters ---------- things : Optimizable or tuple/list of Optimizable - Objects that will be optimized to satisfy the Objective. - target : {float, ndarray}, optional - Target value(s) of the objective. Only used if bounds is None. - Must be broadcastable to Objective.dim_f. - bounds : tuple of {float, ndarray}, optional - Lower and upper bounds on the objective. Overrides target. - Both bounds must be broadcastable to Objective.dim_f - weight : {float, ndarray}, optional - Weighting to apply to the Objective, relative to other Objectives. - Must be broadcastable to Objective.dim_f - normalize : bool, optional - Whether to compute the error in physical units or non-dimensionalize. - normalize_target : bool, optional - Whether target and bounds should be normalized before comparing to computed - values. If `normalize` is `True` and the target is in physical units, - this should also be set to True. - loss_function : {None, 'mean', 'min', 'max'}, optional - Loss function to apply to the objective values once computed. This loss function - is called on the raw compute value, before any shifting, scaling, or - normalization. - deriv_mode : {"auto", "fwd", "rev"} - Specify how to compute Jacobian matrix, either forward mode or reverse mode AD. - "auto" selects forward or reverse mode based on the size of the input and output - of the objective. Has no effect on self.grad or self.hess which always use - reverse mode and forward over reverse mode respectively. - name : str, optional - Name of the objective. - jac_chunk_size : int or "auto", optional - Will calculate the Jacobian - ``jac_chunk_size`` columns at a time, instead of all at once. - The memory usage of the Jacobian calculation is roughly - ``memory usage = m0 + m1*jac_chunk_size``: the smaller the chunk size, - the less memory the Jacobian calculation will require (with some baseline - memory usage). The time it takes to compute the Jacobian is roughly - ``t= t0 + t1/jac_chunk_size` so the larger the ``jac_chunk_size``, the faster - the calculation takes, at the cost of requiring more memory. - If None, it will use the largest size i.e ``obj.dim_x``. - Defaults to ``chunk_size=None``. - - """ + Objects that will be optimized to satisfy the Objective.""" # noqa: D208, D209 _scalar = False _linear = False @@ -1634,6 +1595,8 @@ def things(self, new): self._built = False +_Objective.__doc__ += "".join(value.rstrip("\n") for value in docs.values()) + # local functions assigned as attributes aren't hashable so they cause stuff to # recompile, so instead we define a hashable class to do the same thing. From 3b34fb1a0cc7726ae49c7f518434fc292d0c5fe6 Mon Sep 17 00:00:00 2001 From: unalmis Date: Tue, 10 Dec 2024 19:13:53 -0500 Subject: [PATCH 38/60] Update for #1441 --- desc/compute/_neoclassical_1D.py | 7 ++-- desc/objectives/_neoclassical.py | 65 ++++++++++++-------------------- tests/test_neoclassical_1D.py | 51 ++++++++++--------------- 3 files changed, 48 insertions(+), 75 deletions(-) diff --git a/desc/compute/_neoclassical_1D.py b/desc/compute/_neoclassical_1D.py index 89606363ff..d9698361eb 100644 --- a/desc/compute/_neoclassical_1D.py +++ b/desc/compute/_neoclassical_1D.py @@ -314,7 +314,7 @@ def _Gamma_c_1D(params, transforms, profiles, data, **kwargs): quad2 = kwargs["quad2"] if "quad2" in kwargs else chebgauss2(quad[0].size) def Gamma_c(data): - """∫ dλ ∑ⱼ [v τ γ_c²]ⱼ.""" + """∫ dλ ∑ⱼ [v τ γ_c²]ⱼ π²/4.""" bounce = Bounce1D(grid, data, quad, automorphism=None, is_reshaped=True) points = bounce.points(data["pitch_inv"], num_well=num_well) v_tau, f1, f2 = bounce.integrate( @@ -325,6 +325,7 @@ def Gamma_c(data): points, batch=batch, ) + # This is γ_c π/2. gamma_c = jnp.arctan( safediv( f1, @@ -431,7 +432,7 @@ def _Gamma_c_Velasco_1D(params, transforms, profiles, data, **kwargs): ) def Gamma_c(data): - """∫ dλ ∑ⱼ [v τ γ_c²]ⱼ.""" + """∫ dλ ∑ⱼ [v τ γ_c²]ⱼ π²/4.""" bounce = Bounce1D(grid, data, quad, automorphism=None, is_reshaped=True) points = bounce.points(data["pitch_inv"], num_well=num_well) v_tau, cvdrift0, gbdrift = bounce.integrate( @@ -442,7 +443,7 @@ def Gamma_c(data): points, batch=batch, ) - gamma_c = jnp.arctan(safediv(cvdrift0, gbdrift)) + gamma_c = jnp.arctan(safediv(cvdrift0, gbdrift)) # This is γ_c π/2. return jnp.sum( jnp.sum(v_tau * gamma_c**2, axis=-1) * data["pitch_inv weight"] diff --git a/desc/objectives/_neoclassical.py b/desc/objectives/_neoclassical.py index 4395134730..796f368309 100644 --- a/desc/objectives/_neoclassical.py +++ b/desc/objectives/_neoclassical.py @@ -147,7 +147,7 @@ def __init__( target = 0.0 self._grid = grid - self._constants = {"quad_weights": 1} + self._constants = {"quad_weights": 1.0} self._X = X self._Y = Y Y_B = setdefault(Y_B, 2 * Y) @@ -192,19 +192,14 @@ def build(self, use_jit=True, verbose=1): if self._grid is None: self._grid = LinearGrid(M=eq.M_grid, N=eq.N_grid, NFP=eq.NFP, sym=False) assert self._grid.can_fft2 - # Constants can only hold 1D arrays for some reason. self._constants["clebsch"] = FourierChebyshevSeries.nodes( self._X, self._Y, self._grid.compress(self._grid.nodes[:, 0]), domain=(0, 2 * np.pi), - ).ravel() - self._constants["fieldline quad x"], self._constants["fieldline quad w"] = ( - leggauss(self._hyperparam["Y_B"] // 2) - ) - self._constants["quad x"], self._constants["quad w"] = chebgauss2( - self._hyperparam.pop("num_quad") ) + self._constants["fieldline quad"] = leggauss(self._hyperparam["Y_B"] // 2) + self._constants["quad"] = chebgauss2(self._hyperparam.pop("num_quad")) self._dim_f = self._grid.num_rho self._target, self._bounds = _parse_callable_target_bounds( @@ -265,16 +260,13 @@ def compute(self, params, constants=None): self._X, self._Y, iota=constants["transforms"]["grid"].compress(data["iota"]), - clebsch=constants["clebsch"].reshape(-1, 3), + clebsch=constants["clebsch"], # Pass in params so that root finding is done with the new # perturbed λ coefficients and not the original equilibrium's. params=params, ), - fieldline_quad=( - constants["fieldline quad x"], - constants["fieldline quad w"], - ), - quad=(constants["quad x"], constants["quad w"]), + fieldline_quad=constants["fieldline quad"], + quad=constants["quad"], **self._hyperparam, ) return constants["transforms"]["grid"].compress(data["effective ripple"]) @@ -342,14 +334,13 @@ class GammaC(_Objective): Whether to use the Γ_c as defined by Nemov et al. or Velasco et al. Default is Nemov. Set to ``False`` to use Velascos's. - Note that Nemov's Γ_c converges to a finite nonzero value in the - infinity limit of the number of toroidal transits. - Velasco's expression has a secular term that may drive the result - to zero as the number of toroidal transits increases if the quadratures - are unable to average out the secular term from all the singular integrals. - So an optimization using Velasco's metric may need to be evaluated by - measuring decrease in Γ_c at a fixed number of toroidal transits - unless a high resolution or adaptive quadrature is used. + Nemov's Γ_c converges to a finite nonzero value in the infinity limit + of the number of toroidal transits. Velasco's expression has a secular + term that drives the result to zero as the number of toroidal transits + increases if the secular term is not averaged out from the singular + integrals. Currently, an optimization using Velasco's metric may need + to be evaluated by measuring decrease in Γ_c at a fixed number of toroidal + transits. """ @@ -394,7 +385,7 @@ def __init__( target = 0.0 self._grid = grid - self._constants = {"quad_weights": 1} + self._constants = {"quad_weights": 1.0} self._X = X self._Y = Y Y_B = setdefault(Y_B, 2 * Y) @@ -406,10 +397,7 @@ def __init__( "num_pitch": num_pitch, "batch_size": batch_size, } - if Nemov: - self._key = "Gamma_c" - else: - self._key = "Gamma_c Velasco" + self._key = "Gamma_c" if Nemov else "Gamma_c Velasco" if deriv_mode == "rev" and jac_chunk_size is None: # Reverse mode is bottlenecked by coordinate mapping. # Compute Jacobian one flux surface at a time. @@ -443,22 +431,20 @@ def build(self, use_jit=True, verbose=1): if self._grid is None: self._grid = LinearGrid(M=eq.M_grid, N=eq.N_grid, NFP=eq.NFP, sym=False) assert self._grid.can_fft2 - # Constants can only hold 1D arrays for some reason. self._constants["clebsch"] = FourierChebyshevSeries.nodes( self._X, self._Y, self._grid.compress(self._grid.nodes[:, 0]), domain=(0, 2 * np.pi), - ).ravel() - self._constants["fieldline quad x"], self._constants["fieldline quad w"] = ( - leggauss(self._hyperparam["Y_B"] // 2) ) + self._constants["fieldline quad"] = leggauss(self._hyperparam["Y_B"] // 2) num_quad = self._hyperparam.pop("num_quad") - self._constants["quad x"], self._constants["quad w"] = get_quadrature( + self._constants["quad"] = get_quadrature( leggauss(num_quad), (automorphism_sin, grad_automorphism_sin), ) - self._constants["quad2 x"], self._constants["quad2 w"] = chebgauss2(num_quad) + if self._key == "Gamma_c": + self._constants["quad2"] = chebgauss2(num_quad) self._dim_f = self._grid.num_rho self._target, self._bounds = _parse_callable_target_bounds( @@ -498,8 +484,8 @@ def compute(self, params, constants=None): if constants is None: constants = self.constants quad2 = {} - if "quad2 x" in constants: - quad2["quad2"] = (constants["quad2 x"], constants["quad2 w"]) + if self._key == "Gamma_c": + quad2["quad2"] = constants["quad2"] eq = self.things[0] data = compute_fun( @@ -518,16 +504,13 @@ def compute(self, params, constants=None): self._X, self._Y, iota=constants["transforms"]["grid"].compress(data["iota"]), - clebsch=constants["clebsch"].reshape(-1, 3), + clebsch=constants["clebsch"], # Pass in params so that root finding is done with the new # perturbed λ coefficients and not the original equilibrium's. params=params, ), - fieldline_quad=( - constants["fieldline quad x"], - constants["fieldline quad w"], - ), - quad=(constants["quad x"], constants["quad w"]), + fieldline_quad=constants["fieldline quad"], + quad=constants["quad"], **quad2, **self._hyperparam, ) diff --git a/tests/test_neoclassical_1D.py b/tests/test_neoclassical_1D.py index f3a32e4c46..78e5fda607 100644 --- a/tests/test_neoclassical_1D.py +++ b/tests/test_neoclassical_1D.py @@ -56,20 +56,15 @@ def test_fieldline_average(): @pytest.mark.mpl_image_compare(remove_text=True, tolerance=tol_1d) def test_effective_ripple_1D(): """Test effective ripple 1D with W7-X against NEO.""" + eq = get("W7-X") Y_B = 100 num_transit = 10 - eq = get("W7-X") + num_well = 20 * num_transit rho = np.linspace(0, 1, 10) - grid = get_rtz_grid( - eq, - rho, - poloidal=np.array([0]), - toroidal=np.linspace(0, num_transit * 2 * np.pi, num_transit * Y_B), - coordinates="raz", - ) - data = eq.compute( - "deprecated(effective ripple)", grid=grid, num_well=20 * num_transit - ) + alpha = np.array([0]) + zeta = np.linspace(0, num_transit * 2 * np.pi, num_transit * Y_B) + grid = get_rtz_grid(eq, rho, alpha, zeta, coordinates="raz") + data = eq.compute("deprecated(effective ripple)", grid=grid, num_well=num_well) assert np.isfinite(data["deprecated(effective ripple)"]).all() np.testing.assert_allclose( @@ -92,18 +87,16 @@ def test_effective_ripple_1D(): @pytest.mark.mpl_image_compare(remove_text=True, tolerance=tol_1d) def test_Gamma_c_1D(): """Test Γ_c Nemov 1D with W7-X.""" + eq = get("W7-X") Y_B = 100 num_transit = 10 - eq = get("W7-X") + num_well = 20 * num_transit rho = np.linspace(0, 1, 10) - grid = get_rtz_grid( - eq, - rho, - poloidal=np.array([0]), - toroidal=np.linspace(0, num_transit * 2 * np.pi, num_transit * Y_B), - coordinates="raz", - ) - data = eq.compute("deprecated(Gamma_c)", grid=grid, num_well=20 * num_transit) + alpha = np.array([0]) + zeta = np.linspace(0, num_transit * 2 * np.pi, num_transit * Y_B) + grid = get_rtz_grid(eq, rho, alpha, zeta, coordinates="raz") + data = eq.compute("deprecated(Gamma_c)", grid=grid, num_well=num_well) + assert np.isfinite(data["deprecated(Gamma_c)"]).all() fig, ax = plt.subplots() ax.plot(rho, grid.compress(data["deprecated(Gamma_c)"]), marker="o") @@ -115,20 +108,16 @@ def test_Gamma_c_1D(): @pytest.mark.mpl_image_compare(remove_text=True, tolerance=tol_1d) def test_Gamma_c_Velasco_1D(): """Test Γ_c Velasco 1D with W7-X.""" + eq = get("W7-X") Y_B = 100 num_transit = 10 - eq = get("W7-X") + num_well = 20 * num_transit rho = np.linspace(0, 1, 10) - grid = get_rtz_grid( - eq, - rho, - poloidal=np.array([0]), - toroidal=np.linspace(0, num_transit * 2 * np.pi, num_transit * Y_B), - coordinates="raz", - ) - data = eq.compute( - "deprecated(Gamma_c Velasco)", grid=grid, num_well=20 * num_transit - ) + alpha = np.array([0]) + zeta = np.linspace(0, num_transit * 2 * np.pi, num_transit * Y_B) + grid = get_rtz_grid(eq, rho, alpha, zeta, coordinates="raz") + data = eq.compute("deprecated(Gamma_c Velasco)", grid=grid, num_well=num_well) + assert np.isfinite(data["deprecated(Gamma_c Velasco)"]).all() fig, ax = plt.subplots() ax.plot(rho, grid.compress(data["deprecated(Gamma_c Velasco)"]), marker="o") From 7aa45d0ae4ac3ff7775094ef7ae6f1660123df80 Mon Sep 17 00:00:00 2001 From: unalmis Date: Wed, 11 Dec 2024 18:35:38 -0500 Subject: [PATCH 39/60] Review changes from other branch --- desc/compute/_neoclassical.py | 19 +++++++++++-------- desc/compute/_neoclassical_1D.py | 12 +++++++----- 2 files changed, 18 insertions(+), 13 deletions(-) diff --git a/desc/compute/_neoclassical.py b/desc/compute/_neoclassical.py index 9741aaf336..8a1c2d1ff7 100644 --- a/desc/compute/_neoclassical.py +++ b/desc/compute/_neoclassical.py @@ -144,7 +144,7 @@ def _foreach_pitch(fun, pitch_inv, batch_size): label="\\epsilon_{\\mathrm{eff}}", units="~", units_long="None", - description="Effective ripple modulation amplitude.", + description="Effective ripple modulation amplitude", dim=1, params=[], transforms={}, @@ -183,7 +183,7 @@ def _dI(data, B, pitch): ), units="~", units_long="None", - description="Effective ripple modulation amplitude to 3/2 power.", + description="Effective ripple modulation amplitude to 3/2 power", dim=1, params=[], transforms={"grid": []}, @@ -208,10 +208,11 @@ def _dI(data, B, pitch): ], ) def _epsilon_32(params, transforms, profiles, data, **kwargs): - """https://doi.org/10.1063/1.873749. + """Effective ripple modulation amplitude to 3/2 power. Evaluation of 1/ν neoclassical transport in stellarators. V. V. Nemov, S. V. Kasilov, W. Kernbichler, M. F. Heyn. + https://doi.org/10.1063/1.873749. Phys. Plasmas 1 December 1999; 6 (12): 4622–4632. """ # noqa: unused dependency @@ -340,7 +341,7 @@ def _f3(data, B, pitch): ), units="~", units_long="None", - description="Energetic ion confinement proxy, Nemov et al.", + description="Energetic ion confinement proxy", dim=1, params=[], transforms={"grid": []}, @@ -413,7 +414,7 @@ def _Gamma_c(params, transforms, profiles, data, **kwargs): quad2 = kwargs["quad2"] if "quad2" in kwargs else chebgauss2(quad[0].size) def Gamma_c(data): - """∫ dλ ∑ⱼ [v τ γ_c²]ⱼ.""" + """∫ dλ ∑ⱼ [v τ γ_c²]ⱼ π²/4.""" bounce = Bounce2D( grid, data, @@ -436,6 +437,7 @@ def fun(pitch_inv): points, is_fourier=True, ) + # This is γ_c π/2. gamma_c = jnp.arctan( safediv( f1, @@ -523,7 +525,8 @@ def _gbdrift(data, B, pitch): ), units="~", units_long="None", - description="Energetic ion confinement proxy, Velasco et al.", + description="Energetic ion confinement proxy " + "as defined by Velasco et al. (doi:10.1088/1741-4326/ac2994)", dim=1, params=[], transforms={"grid": []}, @@ -582,7 +585,7 @@ def _Gamma_c_Velasco(params, transforms, profiles, data, **kwargs): ) def Gamma_c(data): - """∫ dλ ∑ⱼ [v τ γ_c²]ⱼ.""" + """∫ dλ ∑ⱼ [v τ γ_c²]ⱼ π²/4.""" bounce = Bounce2D( grid, data, @@ -604,7 +607,7 @@ def fun(pitch_inv): bounce.points(pitch_inv, num_well=num_well), is_fourier=True, ) - gamma_c = jnp.arctan(safediv(cvdrift0, gbdrift)) + gamma_c = jnp.arctan(safediv(cvdrift0, gbdrift)) # This is γ_c π/2. return jnp.sum(v_tau * gamma_c**2, axis=-1) return jnp.sum( diff --git a/desc/compute/_neoclassical_1D.py b/desc/compute/_neoclassical_1D.py index d9698361eb..b142315f7e 100644 --- a/desc/compute/_neoclassical_1D.py +++ b/desc/compute/_neoclassical_1D.py @@ -154,7 +154,7 @@ def _fieldline_length_over_volume(data, transforms, profiles, **kwargs): ), units="~", units_long="None", - description="Effective ripple modulation amplitude to 3/2 power.", + description="Effective ripple modulation amplitude to 3/2 power", dim=1, params=[], transforms={"grid": []}, @@ -176,10 +176,11 @@ def _fieldline_length_over_volume(data, transforms, profiles, **kwargs): ) @partial(jit, static_argnames=["num_well", "num_quad", "num_pitch", "batch"]) def _epsilon_32_1D(params, transforms, profiles, data, **kwargs): - """https://doi.org/10.1063/1.873749. + """Effective ripple modulation amplitude to 3/2 power. Evaluation of 1/ν neoclassical transport in stellarators. V. V. Nemov, S. V. Kasilov, W. Kernbichler, M. F. Heyn. + https://doi.org/10.1063/1.873749. Phys. Plasmas 1 December 1999; 6 (12): 4622–4632. """ # noqa: unused dependency @@ -236,7 +237,7 @@ def eps_32(data): label="\\epsilon_{\\mathrm{eff}}", units="~", units_long="None", - description="Effective ripple modulation amplitude.", + description="Effective ripple modulation amplitude", dim=1, params=[], transforms={}, @@ -260,7 +261,7 @@ def _effective_ripple_1D(params, transforms, profiles, data, **kwargs): ), units="~", units_long="None", - description="Energetic ion confinement proxy, Nemov et al.", + description="Energetic ion confinement proxy", dim=1, params=[], transforms={"grid": []}, @@ -399,7 +400,8 @@ def _gbdrift(data, B, pitch): ), units="~", units_long="None", - description="Energetic ion confinement proxy.", + description="Energetic ion confinement proxy " + "as defined by Velasco et al. (doi:10.1088/1741-4326/ac2994)", dim=1, params=[], transforms={"grid": []}, From c261d03ba9249f65fd6c7270509d061f27d4772a Mon Sep 17 00:00:00 2001 From: unalmis Date: Tue, 17 Dec 2024 16:18:11 -0500 Subject: [PATCH 40/60] Missing edits from previous merge --- desc/objectives/_neoclassical.py | 12 ++++++------ .../baseline/test_binormal_drift_bounce2d.png | Bin 18392 -> 18428 bytes tests/baseline/test_bounce1d_checks.png | Bin 67231 -> 66933 bytes tests/baseline/test_bounce2d_checks.png | Bin 68832 -> 68751 bytes tests/test_neoclassical_1D.py | 2 +- 5 files changed, 7 insertions(+), 7 deletions(-) diff --git a/desc/objectives/_neoclassical.py b/desc/objectives/_neoclassical.py index 796f368309..50c0e74e56 100644 --- a/desc/objectives/_neoclassical.py +++ b/desc/objectives/_neoclassical.py @@ -122,6 +122,7 @@ class EffectiveRipple(_Objective): def __init__( self, eq, + *, target=None, bounds=None, weight=1, @@ -129,10 +130,9 @@ def __init__( normalize_target=True, loss_function=None, deriv_mode="fwd", - grid=None, - name="Effective ripple", jac_chunk_size=None, - *, + name="Effective ripple", + grid=None, X=16, # X is cheap to increase. Y=32, # Y_B is expensive to increase if one does not fix num well per transit. @@ -359,6 +359,7 @@ class GammaC(_Objective): def __init__( self, eq, + *, target=None, bounds=None, weight=1, @@ -366,10 +367,9 @@ def __init__( normalize_target=True, loss_function=None, deriv_mode="fwd", - grid=None, - name="Gamma_c", jac_chunk_size=None, - *, + name="Gamma_c", + grid=None, X=16, # X is cheap to increase. Y=32, # Y_B is expensive to increase if one does not fix num well per transit. diff --git a/tests/baseline/test_binormal_drift_bounce2d.png b/tests/baseline/test_binormal_drift_bounce2d.png index 0af4fae29436bc406a4f4bf4d2a0c7ae996bdee6..eacf7e2eb0839f07b74e83dcce4f230c388796ae 100644 GIT binary patch literal 18428 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 z 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 z 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%0AQ^Iv=l4gur^^NsWv%<+x5ZLrh(a-7LG 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≠^c1&Dt` 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%0AaDH-j-*h(HxMyjL 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 z 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%0AX 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 Um^arFT(Q8W@K6O&AYok2mk;8 diff --git a/tests/test_neoclassical_1D.py b/tests/test_neoclassical_1D.py index 78e5fda607..130f1d3f12 100644 --- a/tests/test_neoclassical_1D.py +++ b/tests/test_neoclassical_1D.py @@ -45,7 +45,7 @@ def test_fieldline_average(): np.testing.assert_allclose( data["fieldline length"] / data["fieldline length/volume"], data["V_r(r)"] / (4 * np.pi**2), - rtol=1e-3, + rtol=2e-3, ) assert np.all(data["fieldline length"] > 0) assert np.all(data["fieldline length/volume"] > 0) From 1cf86c2c592624904c2f60a59c9a3432eea00a06 Mon Sep 17 00:00:00 2001 From: unalmis Date: Tue, 17 Dec 2024 16:50:40 -0500 Subject: [PATCH 41/60] Increase tolerance in compute_scalar_resolution test --- tests/test_objective_funs.py | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/tests/test_objective_funs.py b/tests/test_objective_funs.py index b54897f2a3..8fad7ec774 100644 --- a/tests/test_objective_funs.py +++ b/tests/test_objective_funs.py @@ -3075,7 +3075,9 @@ def test_compute_scalar_resolution_others(self, objective): ) obj.build(verbose=0) f[i] = obj.compute_scalar(obj.x()) - np.testing.assert_allclose(f, f[-1], rtol=6e-2) + np.testing.assert_allclose( + f, f[-1], rtol=6e-2, atol=1e-4 if np.max(f) < 1e-3 else 0 + ) @pytest.mark.regression @pytest.mark.parametrize( From 3b7e5e1f1b3c502bf75dc5d704018741dc746b09 Mon Sep 17 00:00:00 2001 From: unalmis Date: Tue, 17 Dec 2024 17:15:01 -0500 Subject: [PATCH 42/60] Switch to using same quad for weak and strong integrals in GammaC to improve performance --- desc/compute/_neoclassical.py | 45 +++++++---------------------- desc/compute/_neoclassical_1D.py | 30 ++++--------------- desc/objectives/_neoclassical.py | 10 +------ tests/baseline/test_Gamma_c.png | Bin 17523 -> 17543 bytes tests/baseline/test_Gamma_c_1D.png | Bin 16976 -> 17151 bytes 5 files changed, 17 insertions(+), 68 deletions(-) diff --git a/desc/compute/_neoclassical.py b/desc/compute/_neoclassical.py index 8a1c2d1ff7..a6556553b9 100644 --- a/desc/compute/_neoclassical.py +++ b/desc/compute/_neoclassical.py @@ -309,27 +309,20 @@ def _v_tau(data, B, pitch): return safediv(2.0, jnp.sqrt(jnp.abs(1 - pitch * B))) -def _f1(data, B, pitch): +def _drift1(data, B, pitch): return ( - safediv( - 1 - 0.5 * pitch * B, - jnp.sqrt(jnp.abs(1 - pitch * B)), - ) + safediv(1 - 0.5 * pitch * B, jnp.sqrt(jnp.abs(1 - pitch * B))) * data["|grad(psi)|*kappa_g"] / B ) -def _f2(data, B, pitch): +def _drift2(data, B, pitch): return ( safediv(1 - 0.5 * pitch * B, jnp.sqrt(jnp.abs(1 - pitch * B))) * data["|B|_r|v,p"] - / B - ) - - -def _f3(data, B, pitch): - return jnp.sqrt(jnp.abs(1 - pitch * B)) * data["K"] / B + + jnp.sqrt(jnp.abs(1 - pitch * B)) * data["K"] + ) / B @register_compute_fun( @@ -366,7 +359,6 @@ def _f3(data, B, pitch): resolution_requirement="tz", grid_requirement={"can_fft2": True}, **_bounce_doc, - quad2="Same as ``quad`` for the weak singular integrals in particular.", ) @partial( jit, @@ -411,7 +403,6 @@ def _Gamma_c(params, transforms, profiles, data, **kwargs): leggauss(kwargs.get("num_quad", 32)), (automorphism_sin, grad_automorphism_sin), ) - quad2 = kwargs["quad2"] if "quad2" in kwargs else chebgauss2(quad[0].size) def Gamma_c(data): """∫ dλ ∑ⱼ [v τ γ_c²]ⱼ π²/4.""" @@ -429,35 +420,19 @@ def Gamma_c(data): def fun(pitch_inv): points = bounce.points(pitch_inv, num_well=num_well) - v_tau, f1, f2 = bounce.integrate( - [_v_tau, _f1, _f2], + v_tau, drift1, drift2 = bounce.integrate( + [_v_tau, _drift1, _drift2], pitch_inv, data, - ["|grad(psi)|*kappa_g", "|B|_r|v,p"], + ["|grad(psi)|*kappa_g", "|B|_r|v,p", "K"], points, is_fourier=True, ) # This is γ_c π/2. gamma_c = jnp.arctan( safediv( - f1, - ( - f2 - # TODO: Once people are happy with benchmarking - # we can push this integral into f2. - # The quadrature is less optimal, but - # it still works and it would be more efficient - # since we don't have to interpolate twice. - + bounce.integrate( - _f3, - pitch_inv, - data, - "K", - points, - quad=quad2, - is_fourier=True, - ) - ) + drift1, + drift2 * bounce.interp_to_argmin( data["|grad(rho)|*|e_alpha|r,p|"], points, is_fourier=True ), diff --git a/desc/compute/_neoclassical_1D.py b/desc/compute/_neoclassical_1D.py index b142315f7e..230a59ec7f 100644 --- a/desc/compute/_neoclassical_1D.py +++ b/desc/compute/_neoclassical_1D.py @@ -15,7 +15,7 @@ grad_automorphism_sin, ) from ..utils import cross, dot, safediv -from ._neoclassical import _bounce_doc, _cvdrift0, _dH, _dI, _f1, _f2, _f3, _v_tau +from ._neoclassical import _bounce_doc, _cvdrift0, _dH, _dI, _drift1, _drift2, _v_tau from .data_index import register_compute_fun _bounce1D_doc = { @@ -286,7 +286,6 @@ def _effective_ripple_1D(params, transforms, profiles, data, **kwargs): + Bounce1D.required_names, source_grid_requirement={"coordinates": "raz", "is_meshgrid": True}, **_bounce1D_doc, - quad2="Same as ``quad`` for the weak singular integrals in particular.", ) @partial(jit, static_argnames=["num_well", "num_quad", "num_pitch", "batch"]) def _Gamma_c_1D(params, transforms, profiles, data, **kwargs): @@ -312,41 +311,24 @@ def _Gamma_c_1D(params, transforms, profiles, data, **kwargs): leggauss(kwargs.get("num_quad", 32)), (automorphism_sin, grad_automorphism_sin), ) - quad2 = kwargs["quad2"] if "quad2" in kwargs else chebgauss2(quad[0].size) def Gamma_c(data): """∫ dλ ∑ⱼ [v τ γ_c²]ⱼ π²/4.""" bounce = Bounce1D(grid, data, quad, automorphism=None, is_reshaped=True) points = bounce.points(data["pitch_inv"], num_well=num_well) - v_tau, f1, f2 = bounce.integrate( - [_v_tau, _f1, _f2], + v_tau, drift1, drift2 = bounce.integrate( + [_v_tau, _drift1, _drift2], data["pitch_inv"], data, - ["|grad(psi)|*kappa_g", "|B|_r|v,p"], + ["|grad(psi)|*kappa_g", "|B|_r|v,p", "K"], points, batch=batch, ) # This is γ_c π/2. gamma_c = jnp.arctan( safediv( - f1, - ( - f2 - # TODO: Once people are happy with benchmarking - # we can push this integral into f2. - # The quadrature is less optimal, but - # it still works and it would be more efficient - # since we don't have to interpolate twice. - + bounce.integrate( - _f3, - data["pitch_inv"], - data, - "K", - points, - batch=batch, - quad=quad2, - ) - ) + drift1, + drift2 * bounce.interp_to_argmin(data["|grad(rho)|*|e_alpha|r,p|"], points), ) ) diff --git a/desc/objectives/_neoclassical.py b/desc/objectives/_neoclassical.py index 50c0e74e56..73c2fc0f82 100644 --- a/desc/objectives/_neoclassical.py +++ b/desc/objectives/_neoclassical.py @@ -438,13 +438,10 @@ def build(self, use_jit=True, verbose=1): domain=(0, 2 * np.pi), ) self._constants["fieldline quad"] = leggauss(self._hyperparam["Y_B"] // 2) - num_quad = self._hyperparam.pop("num_quad") self._constants["quad"] = get_quadrature( - leggauss(num_quad), + leggauss(self._hyperparam.pop("num_quad")), (automorphism_sin, grad_automorphism_sin), ) - if self._key == "Gamma_c": - self._constants["quad2"] = chebgauss2(num_quad) self._dim_f = self._grid.num_rho self._target, self._bounds = _parse_callable_target_bounds( @@ -483,10 +480,6 @@ def compute(self, params, constants=None): """ if constants is None: constants = self.constants - quad2 = {} - if self._key == "Gamma_c": - quad2["quad2"] = constants["quad2"] - eq = self.things[0] data = compute_fun( eq, "iota", params, constants["transforms"], constants["profiles"] @@ -511,7 +504,6 @@ def compute(self, params, constants=None): ), fieldline_quad=constants["fieldline quad"], quad=constants["quad"], - **quad2, **self._hyperparam, ) return constants["transforms"]["grid"].compress(data[self._key]) diff --git a/tests/baseline/test_Gamma_c.png b/tests/baseline/test_Gamma_c.png index d3ddbbdefcfcdd7b0d907c9ce865b1de417933f9..de715cbd23eea0c7c480fbd0be549a3417976776 100644 GIT binary patch literal 17543 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 PLWWjWzm|X1G~j;$6w9U+ literal 17523 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 literal 16976 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 From b06aab4fc0be92599075314051ffb5571a149ac4 Mon Sep 17 00:00:00 2001 From: unalmis Date: Tue, 17 Dec 2024 20:23:20 -0500 Subject: [PATCH 43/60] Review requests 1 --- CHANGELOG.md | 15 +-- desc/integrals/bounce_integral.py | 197 ++++++++++++++---------------- desc/objectives/_neoclassical.py | 60 +++++---- docs/api.rst | 11 ++ 4 files changed, 139 insertions(+), 144 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 55aa87e54b..88bcdc4cfd 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -3,20 +3,13 @@ Changelog New Features -- Bounce integral methods with ``desc.integrals.Bounce1D`` and ``desc.integrals.Bounce2D``. +- Bounce integral methods with ``desc.integrals.Bounce2D``. - Effective ripple ``desc.objectives.EffectiveRipple`` and Gamma_c ``desc.objectives.Gamma_c`` optimization objectives. - See GitHub pull requests [#1003](https://github.com/PlasmaControl/DESC/pull/1003), [#1042](https://github.com/PlasmaControl/DESC/pull/1042), [#1119](https://github.com/PlasmaControl/DESC/pull/1119), and [#1290](https://github.com/PlasmaControl/DESC/pull/1290) for more details. -- New compute quantities. - -Bug Fixes -- Minor bugs described in [#1323](https://github.com/PlasmaControl/DESC/pull/1323). -- Corrects basis vectors computations made on surface objects [#1175](https://github.com/PlasmaControl/DESC/pull/1175). - -New Features - +- Many new compute quantities for partial derivatives in different coordinate systems. - Adds a new profile class ``PowerProfile`` for raising profiles to a power. - Add ``desc.objectives.LinkingCurrentConsistency`` for ensuring that coils in a stage 2 or single stage optimization provide the required linking current for a given equilibrium. -- Adds an option ``scaled_termination`` (defaults to True) to all of the desc optimizers to measure the norms for ``xtol`` and ``gtol`` in the scaled norm provided by ``x_scale`` (which defaults to using an adaptive scaling based on the Jacobian or Hessian). This should make things more robust when optimizing parameters with widely different magnitudes. The old behavior can be recovered by passing ``options={"scaled_termination": False}``. +- Adds an option ``scaled_termination`` (defaults to True) to all the desc optimizers to measure the norms for ``xtol`` and ``gtol`` in the scaled norm provided by ``x_scale`` (which defaults to using an adaptive scaling based on the Jacobian or Hessian). This should make things more robust when optimizing parameters with widely different magnitudes. The old behavior can be recovered by passing ``options={"scaled_termination": False}``. - ``desc.objectives.Omnigenity`` is now vectorized and able to optimize multiple surfaces at the same time. Previously it was required to use a different objective for each surface. - Adds a new objective ``desc.objectives.MirrorRatio`` for targeting a particular mirror ratio on each flux surface, for either an ``Equilibrium`` or ``OmnigenousField``. @@ -24,6 +17,8 @@ Bug Fixes - Small bug fix to use the correct normalization length ``a`` in the BallooningStability objective. - Fixed I/O bug when saving/loading ``_Profile`` classes that do not have a ``_params`` attribute. +- Minor bugs described in [#1323](https://github.com/PlasmaControl/DESC/pull/1323). +- Corrects basis vectors computations made on surface objects [#1175](https://github.com/PlasmaControl/DESC/pull/1175). v0.13.0 ------- diff --git a/desc/integrals/bounce_integral.py b/desc/integrals/bounce_integral.py index b18d607152..b095d82cbb 100644 --- a/desc/integrals/bounce_integral.py +++ b/desc/integrals/bounce_integral.py @@ -87,109 +87,24 @@ class Bounce2D(Bounce): the particle's guiding center trajectory traveling in the direction of increasing field-line-following coordinate ζ. - Overview -------- - Magnetic field line with label α, defined by B = ∇ρ × ∇α, is determined from + Magnetic field line with label α, defined by B = ∇ψ × ∇α, is determined from α : ρ, θ, ζ ↦ θ + λ(ρ,θ,ζ) − ι(ρ) [ζ + ω(ρ,θ,ζ)] Interpolate Fourier-Chebyshev series to DESC poloidal coordinate. - θ : α, ζ ↦ tₘₙ exp(jmα) Tₙ(ζ) - Compute |B| along field lines. - |B| : α, ζ ↦ bₙ(θ(α, ζ)) Tₙ(ζ) + θ : ρ, α, ζ ↦ tₘₙ(ρ) exp(jmα) Tₙ(ζ) Compute bounce points. r(ζₖ) = |B|(ζₖ) − 1/λ = 0 - Interpolate smooth components of integrand with FFTs. - G : α, ζ ↦ gₘₙ exp(j [m θ(α,ζ) + n ζ] ) + Interpolate smooth periodic components of integrand with FFTs. + G : ρ, α, ζ ↦ gₘₙ(ρ) exp(j [m θ(α,ζ) + n ζ]) Perform Gaussian quadrature after removing singularities. Fᵢ : ρ, α, λ, ζ₁, ζ₂ ↦ ∫ᵢ f(ρ,α,λ,ζ,{Gⱼ}) dζ If the map G is multivalued at a physical location, then it is still - permissible if separable into single valued and multivalued parts. - In that case, supply the single valued parts, which will be interpolated + permissible if separable into periodic and secular components. + In that case, supply the periodic component, which will be interpolated with FFTs, and use the provided coordinates θ,ζ ∈ ℝ to compose G. - Notes - ----- - For applications which reduce to computing a nonlinear function of distance - along field lines between bounce points, it is required to identify these - points with field-line-following coordinates. (In the special case of a linear - function summing integrals between bounce points over a flux surface, arbitrary - coordinate systems may be used as that task reduces to a surface integral, - which is invariant to the order of summation). - - The DESC coordinate system is related to field-line-following coordinate - systems by a relation whose solution is best found with Newton iteration - since this solution is unique. Newton iteration is not a globally - convergent algorithm to find the real roots of r : ζ ↦ |B|(ζ) − 1/λ where - ζ is a field-line-following coordinate. For this, function approximation - of |B| is necessary. - - Therefore, to compute bounce points {(ζ₁, ζ₂)}, we approximate |B| by a - series expansion of basis functions parameterized by a single variable ζ, - restricting the class of basis functions to low order (e.g. n = 2ᵏ where - k is small) algebraic or trigonometric polynomial with integer frequencies. - These are the two classes useful for function approximation and for which - there exists globally convergent root-finding algorithms. We require low - order because the computation expenses grow with the number of potential - roots, and the theorem of algebra states that number is n (2n) for algebraic - (trigonometric) polynomials of degree n. - - The frequency transform of a map under the chosen basis must be concentrated - at low frequencies for the series to converge fast. For periodic - (non-periodic) maps, the standard choice for the basis is a Fourier (Chebyshev) - series. Both converge exponentially, but the larger region of convergence in the - complex plane of Fourier series makes it preferable to choose coordinate - systems such that the function to approximate is periodic. One reason Chebyshev - polynomials are preferred to other orthogonal polynomial series is - fast discrete polynomial transforms (DPT) are implemented via fast transform - to Chebyshev then DCT. Therefore, a Fourier-Chebyshev series is chosen - to interpolate θ(α,ζ) and a piecewise Chebyshev series interpolates |B|(ζ). - - * An alternative to Chebyshev series is - [filtered Fourier series](doi.org/10.1016/j.aml.2006.10.001). - We did not implement or benchmark against that. - * θ is not interpolated with a double Fourier series θ(ϑ, ζ) because - it is impossible to approximate an unbounded function with a finite Fourier - series. Due to Gibbs effects, this statement holds even when the goal is to - approximate θ over one branch cut. The proof uses analytic continuation. - * The advantage of Fourier series in DESC coordinates is that they may use the - spectrally condensed variable ζ* = NFP ζ. This cannot be done in any other - coordinate system, regardless of whether the basis functions are periodic. - The strategy of parameterizing |B| along field lines with a single variable - in Clebsch coordinates (as opposed to two variables in straight-field line - coordinates) also serves to minimize this penalty since evaluation of |B| - when computing bounce points will be less expensive (assuming the 2D - Fourier resolution of |B|(ϑ, ϕ) is larger than the 1D Chebyshev resolution). - - Computing accurate series expansions in (α, ζ) coordinates demands - particular interpolation points in that coordinate system. Newton iteration - is used to compute θ at these points. Note that interpolation is necessary - because there is no transformation that converts series coefficients in - periodic coordinates, e.g. (ϑ, ϕ), to a low order polynomial basis in - non-periodic coordinates. For example, one can obtain series coefficients in - (α, ϕ) coordinates from those in (ϑ, ϕ) as follows - g : ϑ, ϕ ↦ ∑ₘₙ aₘₙ exp(j [mϑ + nϕ]) - - g : α, ϕ ↦ ∑ₘₙ aₘₙ exp(j [mα + (m ι + n)ϕ]) - However, the basis for the latter are trigonometric functions with - irrational frequencies, courtesy of the irrational rotational transform. - Globally convergent root-finding schemes for that basis (at fixed α) are - not known. The denominator of a close rational could be absorbed into the - coordinate ϕ, but this balloons the frequency, and hence the degree of the - series. - - After computing the bounce points, the supplied quadrature is performed. - By default, this is a Gauss quadrature after removing the singularity. - Fast fourier transforms interpolate smooth functions in the integrand to the - quadrature nodes. Quadrature is chosen over Runge-Kutta methods of the form - ∂Fᵢ/∂ζ = f(ρ,α,λ,ζ,{Gⱼ}) subject to Fᵢ(ζ₁) = 0 - A fourth order Runge-Kutta method is equivalent to a quadrature - with Simpson's rule. The quadratures resolve these integrals more efficiently. - - Fast transforms are used where possible. Fast multipoint methods are not - implemented. For non-uniform interpolation, MMTs are used. It will be - worthwhile to use the inverse non-uniform fast transforms. - Examples -------- See ``tests/test_integrals.py::TestBounce2D::test_bounce2d_checks``. @@ -227,6 +142,88 @@ class Bounce2D(Bounce): """ + # Notes + # ----- + # For applications which reduce to computing a nonlinear function of distance + # along field lines between bounce points, it is required to identify these + # points with field-line-following coordinates. (In the special case of a linear + # function summing integrals between bounce points over a flux surface, arbitrary + # coordinate systems may be used as that task reduces to a surface integral, + # which is invariant to the order of summation). + # + # The DESC coordinate system is related to field-line-following coordinate + # systems by a relation whose solution is best found with Newton iteration + # since this solution is unique. Newton iteration is not a globally + # convergent algorithm to find the real roots of r : ζ ↦ |B|(ζ) − 1/λ where + # ζ is a field-line-following coordinate. For this, function approximation + # of |B| is necessary. + # + # Therefore, to compute bounce points {(ζ₁, ζ₂)}, we approximate |B| by a + # series expansion of basis functions parameterized by a single variable ζ, + # restricting the class of basis functions to low order (e.g. n = 2ᵏ where + # k is small) algebraic or trigonometric polynomial with integer frequencies. + # These are the two classes useful for function approximation and for which + # there exists globally convergent root-finding algorithms. We require low + # order because the computation expenses grow with the number of potential + # roots, and the theorem of algebra states that number is n (2n) for algebraic + # (trigonometric) polynomials of degree n. + # + # The frequency transform of a map under the chosen basis must be concentrated + # at low frequencies for the series to converge fast. For periodic + # (non-periodic) maps, the standard choice for the basis is a Fourier (Chebyshev) + # series. Both converge exponentially, but the larger region of convergence in the + # complex plane of Fourier series makes it preferable to choose coordinate + # systems such that the function to approximate is periodic. One reason Chebyshev + # polynomials are preferred to other orthogonal polynomial series is + # fast discrete polynomial transforms (DPT) are implemented via fast transform + # to Chebyshev then DCT. Therefore, a Fourier-Chebyshev series is chosen + # to interpolate θ(α,ζ) and a piecewise Chebyshev series interpolates |B|(ζ). + # + # * An alternative to Chebyshev series is + # [filtered Fourier series](doi.org/10.1016/j.aml.2006.10.001). + # We did not implement or benchmark against that. + # * θ is not interpolated with a double Fourier series θ(ϑ, ζ) because + # it is impossible to approximate an unbounded function with a finite Fourier + # series. Due to Gibbs effects, this statement holds even when the goal is to + # approximate θ over one branch cut. The proof uses analytic continuation. + # * The advantage of Fourier series in DESC coordinates is that they may use the + # spectrally condensed variable ζ* = NFP ζ. This cannot be done in any other + # coordinate system, regardless of whether the basis functions are periodic. + # The strategy of parameterizing |B| along field lines with a single variable + # in Clebsch coordinates (as opposed to two variables in straight-field line + # coordinates) also serves to minimize this penalty since evaluation of |B| + # when computing bounce points will be less expensive (assuming the 2D + # Fourier resolution of |B|(ϑ, ϕ) is larger than the 1D Chebyshev resolution). + # + # Computing accurate series expansions in (α, ζ) coordinates demands + # particular interpolation points in that coordinate system. Newton iteration + # is used to compute θ at these points. Note that interpolation is necessary + # because there is no transformation that converts series coefficients in + # periodic coordinates, e.g. (ϑ, ϕ), to a low order polynomial basis in + # non-periodic coordinates. For example, one can obtain series coefficients in + # (α, ϕ) coordinates from those in (ϑ, ϕ) as follows + # g : ϑ, ϕ ↦ ∑ₘₙ aₘₙ exp(j [mϑ + nϕ]) + # + # g : α, ϕ ↦ ∑ₘₙ aₘₙ exp(j [mα + (m ι + n)ϕ]) + # However, the basis for the latter are trigonometric functions with + # irrational frequencies, courtesy of the irrational rotational transform. + # Globally convergent root-finding schemes for that basis (at fixed α) are + # not known. The denominator of a close rational could be absorbed into the + # coordinate ϕ, but this balloons the frequency, and hence the degree of the + # series. + # + # After computing the bounce points, the supplied quadrature is performed. + # By default, this is a Gauss quadrature after removing the singularity. + # Fast fourier transforms interpolate smooth functions in the integrand to the + # quadrature nodes. Quadrature is chosen over Runge-Kutta methods of the form + # ∂Fᵢ/∂ζ = f(ρ,α,λ,ζ,{Gⱼ}) subject to Fᵢ(ζ₁) = 0 + # A fourth order Runge-Kutta method is equivalent to a quadrature + # with Simpson's rule. The quadratures resolve these integrals more efficiently. + # + # Fast transforms are used where possible. Fast multipoint methods are not + # implemented. For non-uniform interpolation, MMTs are used. It will be + # worthwhile to use the inverse non-uniform fast transforms. + required_names = ["B^zeta", "|B|", "iota"] def __init__( @@ -409,10 +406,10 @@ def compute_theta(eq, X=16, Y=32, rho=1.0, iota=None, clebsch=None, **kwargs): eq : Equilibrium Equilibrium to use defining the coordinate mapping. X : int - Grid resolution in poloidal direction for Clebsch coordinate grid. + Poloidal Fourier grid resolution to interpolate the map α, ζ ↦ θ(α, ζ). Preferably power of 2. Y : int - Grid resolution in toroidal direction for Clebsch coordinate grid. + Toroidal Chebyshev grid resolution to interpolate the map α, ζ ↦ θ(α, ζ). Preferably power of 2. rho : float or jnp.ndarray Shape (num rho, ). @@ -966,20 +963,6 @@ class Bounce1D(Bounce): Notes ----- - For applications which reduce to computing a nonlinear function of distance - along field lines between bounce points, it is required to identify these - points with field-line-following coordinates. (In the special case of a linear - function summing integrals between bounce points over a flux surface, arbitrary - coordinate systems may be used as that task reduces to a surface integral, - which is invariant to the order of summation). - - The DESC coordinate system is related to field-line-following coordinate - systems by a relation whose solution is best found with Newton iteration - since this solution is unique. Newton iteration is not a globally - convergent algorithm to find the real roots of r : ζ ↦ |B|(ζ) − 1/λ where - ζ is a field-line-following coordinate. For this, function approximation - of |B| is necessary. - The function approximation in ``Bounce1D`` is ignorant that the objects to approximate are defined on a bounded subset of ℝ². Instead, the domain is projected to ℝ, where information sampled about the function at infinity diff --git a/desc/objectives/_neoclassical.py b/desc/objectives/_neoclassical.py index 73c2fc0f82..f98d5397e2 100644 --- a/desc/objectives/_neoclassical.py +++ b/desc/objectives/_neoclassical.py @@ -69,17 +69,19 @@ class EffectiveRipple(_Objective): grid : Grid Optional, tensor-product grid in (ρ, θ, ζ) with uniformly spaced nodes (θ, ζ) ∈ [0, 2π) × [0, 2π/NFP). Powers of two are preferable. + Determines the flux surfaces to compute on. + Default grid samples the boundary surface at ρ=1. X : int - Grid resolution in poloidal direction for Clebsch coordinate grid. + Poloidal Fourier grid resolution to interpolate the map α, ζ ↦ θ(α, ζ). Preferably power of 2. Y : int - Grid resolution in toroidal direction for Clebsch coordinate grid. + Toroidal Chebyshev grid resolution to interpolate the map α, ζ ↦ θ(α, ζ). Preferably power of 2. Y_B : int Desired resolution for algorithm to compute bounce points. Default is double ``Y``. Something like 100 is usually sufficient. Currently, this is the number of knots per toroidal transit over - to approximate |B| with cubic splines. + to approximate |B| with cubic splines to find bounce points. num_transit : int Number of toroidal transits to follow field line. For axisymmetric devices, one poloidal transit is sufficient. Otherwise, @@ -236,7 +238,7 @@ def compute(self, params, constants=None): Returns ------- - eps_eff : ndarray + epsilon : ndarray Effective ripple as a function of the flux surface label. """ @@ -248,6 +250,16 @@ def compute(self, params, constants=None): eq, "iota", params, constants["transforms"], constants["profiles"] ) # TODO (#1034): Use old theta values as initial guess. + theta = Bounce2D.compute_theta( + eq, + self._X, + self._Y, + iota=constants["transforms"]["grid"].compress(data["iota"]), + clebsch=constants["clebsch"], + # Pass in params so that root finding is done with the new + # perturbed λ coefficients and not the original equilibrium's. + params=params, + ) data = compute_fun( eq, "effective ripple", @@ -255,16 +267,7 @@ def compute(self, params, constants=None): constants["transforms"], constants["profiles"], data, - theta=Bounce2D.compute_theta( - eq, - self._X, - self._Y, - iota=constants["transforms"]["grid"].compress(data["iota"]), - clebsch=constants["clebsch"], - # Pass in params so that root finding is done with the new - # perturbed λ coefficients and not the original equilibrium's. - params=params, - ), + theta=theta, fieldline_quad=constants["fieldline quad"], quad=constants["quad"], **self._hyperparam, @@ -295,17 +298,19 @@ class GammaC(_Objective): grid : Grid Optional, tensor-product grid in (ρ, θ, ζ) with uniformly spaced nodes (θ, ζ) ∈ [0, 2π) × [0, 2π/NFP). Powers of two are preferable. + Determines the flux surfaces to compute on. + Default grid samples the boundary surface at ρ=1. X : int - Grid resolution in poloidal direction for Clebsch coordinate grid. + Poloidal Fourier grid resolution to interpolate the map α, ζ ↦ θ(α, ζ). Preferably power of 2. Y : int - Grid resolution in toroidal direction for Clebsch coordinate grid. + Toroidal Chebyshev grid resolution to interpolate the map α, ζ ↦ θ(α, ζ). Preferably power of 2. Y_B : int Desired resolution for algorithm to compute bounce points. Default is double ``Y``. Something like 100 is usually sufficient. Currently, this is the number of knots per toroidal transit over - to approximate |B| with cubic splines. + to approximate |B| with cubic splines to find bounce points. num_transit : int Number of toroidal transits to follow field line. For axisymmetric devices, one poloidal transit is sufficient. Otherwise, @@ -485,6 +490,16 @@ def compute(self, params, constants=None): eq, "iota", params, constants["transforms"], constants["profiles"] ) # TODO (#1034): Use old theta values as initial guess. + theta = Bounce2D.compute_theta( + eq, + self._X, + self._Y, + iota=constants["transforms"]["grid"].compress(data["iota"]), + clebsch=constants["clebsch"], + # Pass in params so that root finding is done with the new + # perturbed λ coefficients and not the original equilibrium's. + params=params, + ) data = compute_fun( eq, self._key, @@ -492,16 +507,7 @@ def compute(self, params, constants=None): constants["transforms"], constants["profiles"], data, - theta=Bounce2D.compute_theta( - eq, - self._X, - self._Y, - iota=constants["transforms"]["grid"].compress(data["iota"]), - clebsch=constants["clebsch"], - # Pass in params so that root finding is done with the new - # perturbed λ coefficients and not the original equilibrium's. - params=params, - ), + theta=theta, fieldline_quad=constants["fieldline quad"], quad=constants["quad"], **self._hyperparam, diff --git a/docs/api.rst b/docs/api.rst index d4c137b1db..0290790a79 100644 --- a/docs/api.rst +++ b/docs/api.rst @@ -117,6 +117,17 @@ Grid desc.grid.find_least_rational_surfaces desc.grid.find_most_rational_surfaces +Integrals +********* + +.. autosummary:: + :toctree: _api/integrals + :recursive: + :template: class.rst + + desc.integrals.Bounce2D + desc.integrals.Bounce1D + IO *** From f75c458a0d48c5b2ac4f8aeeebad8c677ed37a4b Mon Sep 17 00:00:00 2001 From: unalmis Date: Wed, 18 Dec 2024 23:23:28 -0500 Subject: [PATCH 44/60] Improve performance of Gamma_c Nemov computation --- desc/integrals/{basis.py => _basis.py} | 0 desc/integrals/_bounce_utils.py | 194 ++++++----------------- desc/integrals/bounce_integral.py | 54 +++---- desc/objectives/_neoclassical.py | 2 +- tests/baseline/test_Gamma_c.png | Bin 17543 -> 0 bytes tests/baseline/test_Gamma_c_1D.png | Bin 17151 -> 0 bytes tests/baseline/test_Gamma_c_Nemov.png | Bin 0 -> 17307 bytes tests/baseline/test_Gamma_c_Nemov_1D.png | Bin 0 -> 16346 bytes tests/test_integrals.py | 16 +- tests/test_interp_utils.py | 2 +- tests/test_neoclassical.py | 2 +- tests/test_neoclassical_1D.py | 2 +- 12 files changed, 80 insertions(+), 192 deletions(-) rename desc/integrals/{basis.py => _basis.py} (100%) delete mode 100644 tests/baseline/test_Gamma_c.png delete mode 100644 tests/baseline/test_Gamma_c_1D.png create mode 100644 tests/baseline/test_Gamma_c_Nemov.png create mode 100644 tests/baseline/test_Gamma_c_Nemov_1D.png diff --git a/desc/integrals/basis.py b/desc/integrals/_basis.py similarity index 100% rename from desc/integrals/basis.py rename to desc/integrals/_basis.py diff --git a/desc/integrals/_bounce_utils.py b/desc/integrals/_bounce_utils.py index 3c3fa99e2b..a5001e39db 100644 --- a/desc/integrals/_bounce_utils.py +++ b/desc/integrals/_bounce_utils.py @@ -4,7 +4,14 @@ from interpax import CubicSpline, PPoly from matplotlib import pyplot as plt -from desc.backend import dct, imap, jnp, softargmax +from desc.backend import dct, imap, jnp +from desc.integrals._basis import ( + FourierChebyshevSeries, + PiecewiseChebyshevSeries, + _add2legend, + _in_epigraph_and, + _plot_intersect, +) from desc.integrals._interp_utils import ( cheb_from_dct, cheb_pts, @@ -16,13 +23,6 @@ polyroot_vec, polyval_vec, ) -from desc.integrals.basis import ( - FourierChebyshevSeries, - PiecewiseChebyshevSeries, - _add2legend, - _in_epigraph_and, - _plot_intersect, -) from desc.integrals.quad_utils import ( bijection_from_disc, grad_bijection_from_disc, @@ -710,8 +710,13 @@ def _get_extrema(knots, g, dg_dz, sentinel=jnp.nan): return ext, g_ext -def _where_for_argmin(points, ext, g_ext, upper_sentinel): - z1, z2 = points +# We can use the non-differentiable min because we actually want the gradients +# to accumulate through only the minimum since we are differentiating how our +# physics objective changes wrt equilibrium perturbations not wrt which of the +# extrema get interpolated to. + + +def _argmin(z1, z2, ext, g_ext): assert z1.ndim > 1 and z2.ndim > 1 # Given # z1 and z2 with shape (..., num pitch, num well) @@ -719,16 +724,17 @@ def _where_for_argmin(points, ext, g_ext, upper_sentinel): # add dims to broadcast # z1 and z2 with shape (..., num pitch, num well, 1). # and ext, g_ext with shape (..., 1, 1, num extrema). - return jnp.where( + where = jnp.where( (z1[..., jnp.newaxis] < ext[..., jnp.newaxis, jnp.newaxis, :]) & (ext[..., jnp.newaxis, jnp.newaxis, :] < z2[..., jnp.newaxis]), g_ext[..., jnp.newaxis, jnp.newaxis, :], - upper_sentinel, + jnp.inf, ) + # shape is (..., num pitch, num well, 1) + return jnp.argmin(where, axis=-1, keepdims=True) -def _where_for_fft_argmin(points, ext, g_ext, upper_sentinel): - z1, z2 = points +def _fft_argmin(z1, z2, ext, g_ext): assert z1.ndim >= 1 and z2.ndim >= 1 # Given # z1 and z2 with shape (..., num well) @@ -736,20 +742,20 @@ def _where_for_fft_argmin(points, ext, g_ext, upper_sentinel): # add dims to broadcast # z1 and z2 with shape (..., num well, 1). # and ext, g_ext with shape (..., 1, num extrema). - return jnp.where( + where = jnp.where( (z1[..., jnp.newaxis] < ext[..., jnp.newaxis, :]) & (ext[..., jnp.newaxis, :] < z2[..., jnp.newaxis]), g_ext[..., jnp.newaxis, :], - upper_sentinel, + jnp.inf, ) + # shape is (..., num well, 1) + return jnp.argmin(where, axis=-1, keepdims=True) -def interp_to_argmin( - h, points, knots, g, dg_dz, method="cubic", beta=-100, upper_sentinel=1e2 -): +def interp_to_argmin(h, points, knots, g, dg_dz, method="cubic"): """Interpolate ``h`` to the deepest point of ``g`` between ``z1`` and ``z2``. - Let E = {ζ ∣ ζ₁ < ζ < ζ₂} and A = argmin_E g(ζ). Returns mean_A h(ζ). + Let E = {ζ ∣ ζ₁ < ζ < ζ₂} and A ∈ argmin_E g(ζ). Returns h(A). Parameters ---------- @@ -777,20 +783,6 @@ def interp_to_argmin( Method of interpolation. See https://interpax.readthedocs.io/en/latest/_api/interpax.interp1d.html. Default is cubic C1 local spline. - beta : float - More negative gives exponentially better approximation at the - expense of noisier gradients - noisier in the physics sense (unrelated - to the automatic differentiation). - upper_sentinel : float - Something larger than g. Choose value such that - exp(max(g)) << exp(``upper_sentinel``). Don't make too large or numerical - resolution is lost. - - Warnings - -------- - Recall that if g is small then the effect of β is reduced. - If the intention is to use this function as argmax, be sure to supply - a lower sentinel for ``upper_sentinel``. Returns ------- @@ -798,110 +790,27 @@ def interp_to_argmin( Shape (..., num pitch, num well). """ + z1, z2 = points ext, g_ext = _get_extrema(knots, g, dg_dz, sentinel=0) - # Our softargmax(x) does the proper shift to compute softargmax(x - max(x)), - # but it's still not a good idea to compute over a large length scale, so we - # warn in docstring to choose upper sentinel properly. - argmin = softargmax( - beta * _where_for_argmin(points, ext, g_ext, upper_sentinel), - axis=-1, - ) - return jnp.linalg.vecdot( - argmin, # shape is (..., num pitch, num well, num extrema) + return jnp.take_along_axis( # adding axes to broadcast with num pitch and num well axes interp1d_vec(ext, knots, h, method=method)[..., jnp.newaxis, jnp.newaxis, :], - ) - - -def interp_to_argmin_hard(h, points, knots, g, dg_dz, method="cubic"): - """Interpolate ``h`` to the deepest point of ``g`` between ``z1`` and ``z2``. - - Let E = {ζ ∣ ζ₁ < ζ < ζ₂} and A ∈ argmin_E g(ζ). Returns h(A). - - The argmax operation is defined as the expected value under the softmax - probability distribution. - s : x ∈ ℝⁿ, β ∈ ℝ ↦ [eᵝˣ⁽¹⁾, …, eᵝˣ⁽ⁿ⁾] / ∑ₖ₌₁ⁿ eᵝˣ⁽ᵏ⁾ - - See Also - -------- - interp_to_argmin - Accomplishes the same task, but handles the case of non-unique global minima - more correctly. It is also more efficient if num pitch >> 1. - - Parameters - ---------- - h : jnp.ndarray - Shape (..., knots.size). - Values evaluated on ``knots`` to interpolate. - points : jnp.ndarray - Shape (..., num pitch, num well). - Boundaries to detect argmin between. - First (second) element stores left (right) boundaries. - knots : jnp.ndarray - Shape (knots.size, ). - z coordinates of spline knots. Must be strictly increasing. - g : jnp.ndarray - Shape (..., knots.size - 1, g.shape[-1]). - Polynomial coefficients of the spline of g in local power basis. - Last axis enumerates the coefficients of power series. Second to - last axis enumerates the polynomials that compose a particular spline. - dg_dz : jnp.ndarray - Shape (..., knots.size - 1, g.shape[-1] - 1). - Polynomial coefficients of the spline of ∂g/∂z in local power basis. - Last axis enumerates the coefficients of power series. Second to - last axis enumerates the polynomials that compose a particular spline. - method : str - Method of interpolation. - See https://interpax.readthedocs.io/en/latest/_api/interpax.interp1d.html. - Default is cubic C1 local spline. - - Returns - ------- - h : jnp.ndarray - Shape (..., num pitch, num well). - - """ - ext, g_ext = _get_extrema(knots, g, dg_dz, sentinel=0) - # We can use the non-differentiable max because we actually want the gradients - # to accumulate through only the minimum since we are differentiating how our - # physics objective changes wrt equilibrium perturbations not wrt which of the - # extrema get interpolated to. - argmin = jnp.argmin( - _where_for_argmin(points, ext, g_ext, jnp.max(g_ext) + 1), + _argmin(z1, z2, ext, g_ext), axis=-1, - ) - return interp1d_vec( - jnp.take_along_axis(ext[jnp.newaxis], argmin, axis=-1), - knots, - h[..., jnp.newaxis, :], - method=method, - ) + ).squeeze(axis=-1) def interp_fft_to_argmin( - NFP, - T, - h, - points, - knots, - g, - dg_dz, - beta=-100, - upper_sentinel=1e2, - is_fourier=False, - M=None, - N=None, + NFP, T, h, points, knots, g, dg_dz, is_fourier=False, M=None, N=None ): """Interpolate ``h`` to the deepest point of ``g`` between ``z1`` and ``z2``. - Let E = {ζ ∣ ζ₁ < ζ < ζ₂} and A = argmin_E g(ζ). Returns mean_A h(ζ). - - The argmax operation is defined as the expected value under the softmax - probability distribution. - s : x ∈ ℝⁿ, β ∈ ℝ ↦ [eᵝˣ⁽¹⁾, …, eᵝˣ⁽ⁿ⁾] / ∑ₖ₌₁ⁿ eᵝˣ⁽ᵏ⁾ + Let E = {ζ ∣ ζ₁ < ζ < ζ₂} and A ∈ argmin_E g(ζ). Returns h(A). Parameters ---------- + NFP : int + Number of field periods. T : PiecewiseChebyshevSeries Set of 1D Chebyshev spectral coefficients of θ along field line. {θ_α : ζ ↦ θ(α, ζ) | α ∈ A} where A = (α₀, α₁, …, αₘ₋₁) is the same @@ -929,26 +838,12 @@ def interp_fft_to_argmin( Polynomial coefficients of the spline of ∂g/∂z in local power basis. Last axis enumerates the coefficients of power series. Second to last axis enumerates the polynomials that compose a particular spline. - beta : float - More negative gives exponentially better approximation at the - expense of noisier gradients - noisier in the physics sense (unrelated - to the automatic differentiation). - upper_sentinel : float - Something larger than g. Choose value such that - exp(max(g)) << exp(``upper_sentinel``). Don't make too large or numerical - resolution is lost. is_fourier : bool If true, then it is assumed that ``h`` is the Fourier transform as returned by ``Bounce2D.fourier``. M, N : int Fourier resolution. - Warnings - -------- - Recall that if g is small then the effect of β is reduced. - If the intention is to use this function as argmax, be sure to supply - a lower sentinel for ``upper_sentinel``. - Returns ------- h : jnp.ndarray @@ -956,13 +851,6 @@ def interp_fft_to_argmin( """ ext, g_ext = _get_extrema(knots, g, dg_dz, sentinel=0) - # Our softargmax(x) does the proper shift to compute softargmax(x - max(x)), - # but it's still not a good idea to compute over a large length scale, so we - # warn in docstring to choose upper sentinel properly. - argmin = softargmax( - beta * _where_for_fft_argmin(points, ext, g_ext, upper_sentinel), - axis=-1, - ) theta = T.eval1d(ext) if is_fourier: h = irfft2_non_uniform( @@ -982,9 +870,13 @@ def interp_fft_to_argmin( domain1=(0, 2 * jnp.pi / NFP), axes=(-1, -2), ) - # argmin shape is (..., num well, num extrema) - # adding axis to broadcast with num well axis - return jnp.linalg.vecdot(argmin, h[..., jnp.newaxis, :]) + h = h[..., jnp.newaxis, :] # to broadcast with num well axis + z1, z2 = points + if z1[0].ndim == h.ndim - 1: + h = h[jnp.newaxis] # to broadcast with num pitch axis + return jnp.take_along_axis(h, _fft_argmin(z1, z2, ext, g_ext), axis=-1).squeeze( + axis=-1 + ) # TODO (#568): Generalize this beyond ζ = ϕ or just map to Clebsch with ϕ. @@ -1102,6 +994,8 @@ def chebyshev(n0, n1, NFP, T, f, Y): Parameters ---------- + NFP : int + Number of field periods. T : PiecewiseChebyshevSeries Set of 1D Chebyshev spectral coefficients of θ along field line. {θ_α : ζ ↦ θ(α, ζ) | α ∈ A} where A = (α₀, α₁, …, αₘ₋₁) is the same @@ -1148,6 +1042,8 @@ def cubic_spline(n0, n1, NFP, T, f, Y, check=False): Parameters ---------- + NFP : int + Number of field periods. T : PiecewiseChebyshevSeries Set of 1D Chebyshev spectral coefficients of θ along field line. {θ_α : ζ ↦ θ(α, ζ) | α ∈ A} where A = (α₀, α₁, …, αₘ₋₁) is the same diff --git a/desc/integrals/bounce_integral.py b/desc/integrals/bounce_integral.py index b095d82cbb..f4935d7e0e 100644 --- a/desc/integrals/bounce_integral.py +++ b/desc/integrals/bounce_integral.py @@ -6,6 +6,7 @@ from orthax.legendre import leggauss from desc.backend import jnp, rfft2 +from desc.integrals._basis import FourierChebyshevSeries, PiecewiseChebyshevSeries from desc.integrals._bounce_utils import ( _bounce_quadrature, _check_bounce_points, @@ -26,7 +27,6 @@ irfft2_non_uniform, polyder_vec, ) -from desc.integrals.basis import FourierChebyshevSeries, PiecewiseChebyshevSeries from desc.integrals.quad_utils import ( automorphism_sin, bijection_from_disc, @@ -96,7 +96,7 @@ class Bounce2D(Bounce): Compute bounce points. r(ζₖ) = |B|(ζₖ) − 1/λ = 0 Interpolate smooth periodic components of integrand with FFTs. - G : ρ, α, ζ ↦ gₘₙ(ρ) exp(j [m θ(α,ζ) + n ζ]) + G : ρ, α, ζ ↦ gₘₙ(ρ) exp(j [m θ(ρ,α,ζ) + n ζ]) Perform Gaussian quadrature after removing singularities. Fᵢ : ρ, α, λ, ζ₁, ζ₂ ↦ ∫ᵢ f(ρ,α,λ,ζ,{Gⱼ}) dζ @@ -123,12 +123,11 @@ class Bounce2D(Bounce): it is often a bottleneck. * The function approximation done here requires DESC transforms on a fixed - grid with typical resolution, using FFTs to compute the map α,ζ ↦ θ(α,ζ) - between coordinate systems. This enables evaluating functions along - field lines without root-finding. - * The faster convergence of spectral interpolation requires a less dense + grid with typical resolution, using FFTs to compute the map between + coordinate systems. This enables evaluating functions along field lines + without root-finding. + * The faster convergence of spectral methods requires a less dense grid to interpolate onto from DESC's 3D transforms. - * Spectral approximation is more accurate than cubic splines. * 2D interpolation enables tracing the field line for many toroidal transits. * The drawback is that evaluating a Fourier series with resolution F at Q non-uniform quadrature points takes 𝒪([F+Q] log[F] log[1/ε]) time @@ -530,7 +529,7 @@ def check_points(self, points, pitch_inv, *, plot=True, **kwargs): Whether to plot the field lines and bounce points of the given pitch angles. kwargs : dict Keyword arguments into - ``desc/integrals/basis.py::PiecewiseChebyshevSeries.plot1d`` or + ``desc/integrals/_basis.py::PiecewiseChebyshevSeries.plot1d`` or ``desc/integrals/_bounce_utils.py::plot_ppoly``. Returns @@ -873,7 +872,7 @@ def plot(self, l, pitch_inv=None, **kwargs): specified by Clebsch coordinate ρ(l) will be plotted. kwargs Keyword arguments into - ``desc/integrals/basis.py::PiecewiseChebyshevSeries.plot1d``. + ``desc/integrals/_basis.py::PiecewiseChebyshevSeries.plot1d``. Returns ------- @@ -919,7 +918,7 @@ def plot_theta(self, l, **kwargs): ``rho=grid.compress(grid.nodes[:,0])[l]``. kwargs Keyword arguments into - ``desc/integrals/basis.py::PiecewiseChebyshevSeries.plot1d``. + ``desc/integrals/_basis.py::PiecewiseChebyshevSeries.plot1d``. Returns ------- @@ -992,14 +991,6 @@ class Bounce1D(Bounce): ---------- required_names : list Names in ``data_index`` required to compute bounce integrals. - B : jnp.ndarray - Shape (num alpha, num rho, N - 1, B.shape[-1]). - Polynomial coefficients of the spline of |B| in local power basis. - Last axis enumerates the coefficients of power series. For a polynomial - given by ∑ᵢⁿ cᵢ xⁱ, coefficient cᵢ is stored at ``B[...,n-i]``. - Third axis enumerates the polynomials that compose a particular spline. - Second axis enumerates flux surfaces. - First axis enumerates field lines of a particular flux surface. """ @@ -1073,8 +1064,12 @@ def __init__( self._x, self._w = get_quadrature(quad, automorphism) # Compute local splines. + # Note it is simple to do FFT across field line axis, and spline + # Fourier coefficients across ζ to obtain Fourier-CubicSpline of functions. + # The point of Bounce2D is to do such a 2D interpolation but also do so + # without rebuilding DESC transforms each time an objective is computed. self._zeta = grid.compress(grid.nodes[:, 2], surface_label="zeta") - self.B = jnp.moveaxis( + self._B = jnp.moveaxis( CubicHermiteSpline( x=self._zeta, y=self._data["|B|"], @@ -1085,11 +1080,14 @@ def __init__( source=(0, 1), destination=(-1, -2), ) - self._dB_dz = polyder_vec(self.B) - # Note it is simple to do FFT across field line axis, and spline - # Fourier coefficients across ζ to obtain Fourier-CubicSpline of functions. - # The point of Bounce2D is to do such a 2D interpolation but also do so - # without rebuilding DESC transforms each time an objective is computed. + # Shape (num alpha, num rho, N - 1, -1). + # Polynomial coefficients of the spline of |B| in local power basis. + # Last axis enumerates the coefficients of power series. For a polynomial + # given by ∑ᵢⁿ cᵢ xⁱ, coefficient cᵢ is stored at ``B[...,n-i]``. + # Third axis enumerates the polynomials that compose a particular spline. + # Second axis enumerates flux surfaces. + # First axis enumerates field lines of a particular flux surface. + self._dB_dz = polyder_vec(self._B) @staticmethod def reshape_data(grid, f): @@ -1150,7 +1148,7 @@ def points(self, pitch_inv, *, num_well=None): line and pitch, is padded with zero. """ - return bounce_points(pitch_inv, self._zeta, self.B, self._dB_dz, num_well) + return bounce_points(pitch_inv, self._zeta, self._B, self._dB_dz, num_well) def check_points(self, points, pitch_inv, *, plot=True, **kwargs): """Check that bounce points are computed correctly. @@ -1184,7 +1182,7 @@ def check_points(self, points, pitch_inv, *, plot=True, **kwargs): z2=points[1], pitch_inv=pitch_inv, knots=self._zeta, - B=self.B, + B=self._B, plot=plot, **kwargs, ) @@ -1312,7 +1310,7 @@ def interp_to_argmin(self, f, points, *, method="cubic"): ``f`` interpolated to the deepest point between ``points``. """ - return interp_to_argmin(f, points, self._zeta, self.B, self._dB_dz, method) + return interp_to_argmin(f, points, self._zeta, self._B, self._dB_dz, method) def plot(self, m, l, pitch_inv=None, **kwargs): """Plot the field line and bounce points of the given pitch angles. @@ -1335,7 +1333,7 @@ def plot(self, m, l, pitch_inv=None, **kwargs): Matplotlib (fig, ax) tuple. """ - B, dB_dz = self.B, self._dB_dz + B, dB_dz = self._B, self._dB_dz if B.ndim == 4: B = B[m] dB_dz = dB_dz[m] diff --git a/desc/objectives/_neoclassical.py b/desc/objectives/_neoclassical.py index f98d5397e2..b3a68b3857 100644 --- a/desc/objectives/_neoclassical.py +++ b/desc/objectives/_neoclassical.py @@ -19,7 +19,7 @@ from desc.utils import Timer, setdefault from ..integrals import Bounce2D -from ..integrals.basis import FourierChebyshevSeries +from ..integrals._basis import FourierChebyshevSeries from ..integrals.quad_utils import ( automorphism_sin, chebgauss2, diff --git a/tests/baseline/test_Gamma_c.png b/tests/baseline/test_Gamma_c.png deleted file mode 100644 index de715cbd23eea0c7c480fbd0be549a3417976776..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 17543 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 PLWWjWzm|X1G~j;$6w9U+ diff --git a/tests/baseline/test_Gamma_c_1D.png b/tests/baseline/test_Gamma_c_1D.png deleted file mode 100644 index fac388bccc5a337ff15303704c6ec6517533f5fc..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 17151 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 diff --git a/tests/baseline/test_Gamma_c_Nemov.png b/tests/baseline/test_Gamma_c_Nemov.png new file mode 100644 index 0000000000000000000000000000000000000000..51734836bac255152015d9fce1fb9d1c8901715a GIT binary patch literal 17307 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%0D8G^{+kN& zEt6H%{6AmAQNu@EfyViKD9i78jBnnwSIQ*1^Hi>|KH{XJP&nQHwkwO+Wzawu4c~4| zrf4m#4j8|48y|b|&zEyg)$FDeq2!7rI8DbWD8&4H1do$b)yvJ-{-eECanMJ2#gbUR zFd54B^3{p$y?G#NoWf9R2CBmuduW76D3DnK^*E8WB@uN7Hw+m6A#WKtu8i*;P@-RJS6 z=AnGH^q^K&ZAmfZHsH~*H@D&AADq)_A8``evxZvMa}Z1c-wHrRal`s+Srn8+ zm|1gQdap%2VwXsIbs}#xmT(lb5l>w07y3#gGjUWJLWu%*l=KO=%$Bu}Y(Q(=ZT_^> z*3j{WSe4|?z;C%Qy08>L{!;t(uRV8G7M8P4KU7a?ejuO3;g2H|Q6!uTOizJ=F3r=eRk&usR@iOZB(E(+D%KKUaxX4vN!%*V%*KqD@};+th&6_PtI@8rrdmSiX-y zj}U}0r6PlF#)fB)N($qjyl@zYuJ^&xN|_%FR39_L@FH0U0&s`YR-uNX1K6vtw5ld#6o4_2scS^JjcW>zsIdZ6LYr zVA&tpJQg-K9TO8S6fk~0(AIPRv&XQ<*rk^!`;;NJX7 z>^RdNspGo;y?S;5lQ0;gmfkttdz@MLFLW=s{q00Qyek()5blJssIaMQbUx&%wr>3y z5~5Y-qSLND)jWkRZcr@ zM!w#?fBApv$40uU(M^Xf8yQ}?&ddl3#<%pxJ~>B0@y>S03qGqgVU|edLqm>^yMI+% z`!Fr5#{Zmz`rl=M?wqq8^m%;aPoPKplqT1g4-btcsZ9amPS8Lrj9_y(bp1fYhA#~N z_Y3y_J74Q#E<=k}!AZf3e#09d_rKp(e*yKgD?dfEkq^KBe!pE>Gz~5Y#LfgB0sj2Q zzb5egF}Kp)9FuaUfWpGU&uBb;y!qKX52$pW#UJ|n}c$`3#h~Y{u2iO?QX#D|9@jA8+%ngwmP4-O>e?KltF^NqIo&@ Il10$}0nnIN&j0`b literal 0 HcmV?d00001 diff --git a/tests/baseline/test_Gamma_c_Nemov_1D.png b/tests/baseline/test_Gamma_c_Nemov_1D.png new file mode 100644 index 0000000000000000000000000000000000000000..68ac89b8cd76da6f46a79ccc66d4224a24b13cdc GIT binary patch literal 16346 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�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 R3Z#o@ozXv?t!{Jke*v7!t!V%N literal 0 HcmV?d00001 diff --git a/tests/test_integrals.py b/tests/test_integrals.py index 62e364946b..f1f56e80a7 100644 --- a/tests/test_integrals.py +++ b/tests/test_integrals.py @@ -35,14 +35,9 @@ surface_variance, virtual_casing_biot_savart, ) -from desc.integrals._bounce_utils import ( - _get_extrema, - bounce_points, - interp_to_argmin, - interp_to_argmin_hard, -) +from desc.integrals._basis import FourierChebyshevSeries +from desc.integrals._bounce_utils import _get_extrema, bounce_points, interp_to_argmin from desc.integrals._interp_utils import fourier_pts -from desc.integrals.basis import FourierChebyshevSeries from desc.integrals.quad_utils import ( automorphism_sin, bijection_from_disc, @@ -1163,8 +1158,7 @@ def test_bounce1d_checks(self): return fig @pytest.mark.unit - @pytest.mark.parametrize("func", [interp_to_argmin, interp_to_argmin_hard]) - def test_interp_to_argmin(self, func): + def test_interp_to_argmin(self): """Test interpolation of h to argmin g.""" # noqa: D202 # Test functions chosen with purpose; don't change unless plotted and compared. @@ -1188,11 +1182,11 @@ def dg_dz(z): data["|B|_z|r,a"] = dg_dz(zeta) bounce = Bounce1D(Grid.create_meshgrid([1, 0, zeta], coordinates="raz"), data) np.testing.assert_allclose( - func( + interp_to_argmin( h=h(zeta), points=(np.array(0, ndmin=2), np.array(2 * np.pi, ndmin=2)), knots=zeta, - g=bounce.B, + g=bounce._B, dg_dz=bounce._dB_dz, ), h(argmin_g), diff --git a/tests/test_interp_utils.py b/tests/test_interp_utils.py index 265de4b821..7c4bfd97a0 100644 --- a/tests/test_interp_utils.py +++ b/tests/test_interp_utils.py @@ -14,6 +14,7 @@ from scipy.fft import idct as sidct from desc.backend import dct, idct, rfft +from desc.integrals._basis import FourierChebyshevSeries from desc.integrals._interp_utils import ( cheb_from_dct, cheb_pts, @@ -27,7 +28,6 @@ polyroot_vec, polyval_vec, ) -from desc.integrals.basis import FourierChebyshevSeries from desc.integrals.quad_utils import bijection_to_disc diff --git a/tests/test_neoclassical.py b/tests/test_neoclassical.py index 387222a6c8..3f2b0c8814 100644 --- a/tests/test_neoclassical.py +++ b/tests/test_neoclassical.py @@ -47,7 +47,7 @@ def test_effective_ripple(): @pytest.mark.unit @pytest.mark.slow @pytest.mark.mpl_image_compare(remove_text=True, tolerance=tol_1d) -def test_Gamma_c(): +def test_Gamma_c_Nemov(): """Test Γ_c Nemov with W7-X.""" eq = get("W7-X") rho = np.linspace(1e-12, 1, 10) diff --git a/tests/test_neoclassical_1D.py b/tests/test_neoclassical_1D.py index 130f1d3f12..0b56c76e27 100644 --- a/tests/test_neoclassical_1D.py +++ b/tests/test_neoclassical_1D.py @@ -85,7 +85,7 @@ def test_effective_ripple_1D(): @pytest.mark.unit @pytest.mark.slow @pytest.mark.mpl_image_compare(remove_text=True, tolerance=tol_1d) -def test_Gamma_c_1D(): +def test_Gamma_c_Nemov_1D(): """Test Γ_c Nemov 1D with W7-X.""" eq = get("W7-X") Y_B = 100 From e575712ea9e3906e453805dd868f633180d89d75 Mon Sep 17 00:00:00 2001 From: unalmis Date: Thu, 19 Dec 2024 01:19:28 -0500 Subject: [PATCH 45/60] More reviewer requested refactoring... --- desc/compute/__init__.py | 2 +- .../{_neoclassical_1D.py => _deprecated.py} | 168 +++----- desc/compute/_fast_ion.py | 347 ++++++++++++++++ desc/compute/_geometry.py | 62 +++ desc/compute/_neoclassical.py | 376 ++---------------- desc/integrals/_bounce_utils.py | 14 +- desc/integrals/{_basis.py => basis.py} | 0 desc/integrals/bounce_integral.py | 8 +- desc/objectives/__init__.py | 3 +- desc/objectives/_fast_ion.py | 280 +++++++++++++ desc/objectives/_neoclassical.py | 287 +------------ tests/test_fast_ion.py | 99 +++++ tests/test_integrals.py | 2 +- tests/test_interp_utils.py | 2 +- tests/test_neoclassical.py | 85 ++-- tests/test_neoclassical_1D.py | 124 ------ 16 files changed, 956 insertions(+), 903 deletions(-) rename desc/compute/{_neoclassical_1D.py => _deprecated.py} (73%) create mode 100644 desc/compute/_fast_ion.py rename desc/integrals/{_basis.py => basis.py} (100%) create mode 100644 desc/objectives/_fast_ion.py create mode 100644 tests/test_fast_ion.py delete mode 100644 tests/test_neoclassical_1D.py diff --git a/desc/compute/__init__.py b/desc/compute/__init__.py index b1dc029600..d39c292c85 100644 --- a/desc/compute/__init__.py +++ b/desc/compute/__init__.py @@ -31,12 +31,12 @@ _bootstrap, _core, _curve, + _deprecated, _equil, _field, _geometry, _metric, _neoclassical, - _neoclassical_1D, _omnigenity, _profiles, _stability, diff --git a/desc/compute/_neoclassical_1D.py b/desc/compute/_deprecated.py similarity index 73% rename from desc/compute/_neoclassical_1D.py rename to desc/compute/_deprecated.py index 230a59ec7f..8f30d654bb 100644 --- a/desc/compute/_neoclassical_1D.py +++ b/desc/compute/_deprecated.py @@ -1,9 +1,12 @@ -"""Deprecated compute functions for neoclassical transport.""" +"""Deprecated compute functions. + +These are kept for verification purposes. They do not +appear in the public documentation under the list of variables. +""" from functools import partial from orthax.legendre import leggauss -from quadax import simpson from desc.backend import imap, jit, jnp @@ -15,31 +18,20 @@ grad_automorphism_sin, ) from ..utils import cross, dot, safediv -from ._neoclassical import _bounce_doc, _cvdrift0, _dH, _dI, _drift1, _drift2, _v_tau +from ._fast_ion import _cvdrift0, _drift1, _drift2, _v_tau +from ._neoclassical import _bounce_doc, _dH, _dI from .data_index import register_compute_fun _bounce1D_doc = { "num_well": _bounce_doc["num_well"], - "quad": _bounce_doc["quad"], "num_quad": _bounce_doc["num_quad"], "num_pitch": _bounce_doc["num_pitch"], - "batch": "bool : Whether to vectorize part of the computation. Default is true.", + "quad": _bounce_doc["quad"], } -def _alpha_mean(f): - """Simple mean over field lines. - - Simple mean rather than integrating over α and dividing by 2π - (i.e. f.T.dot(dα) / dα.sum()), because when the toroidal angle extends - beyond one transit we need to weight all field lines uniformly, regardless - of their spacing wrt α. - """ - return f.mean(axis=0) - - def _compute(fun, fun_data, data, grid, num_pitch, simp=False, reduce=True): - """Compute ``fun`` for each α and ρ value iteratively to reduce memory usage. + """Compute ``fun`` for each α and ρ value iteratively. Parameters ---------- @@ -74,73 +66,11 @@ def foreach_rho(x): for name in fun_data: fun_data[name] = Bounce1D.reshape_data(grid, fun_data[name]) out = imap(foreach_rho, fun_data) - return grid.expand(_alpha_mean(out)) if reduce else out - - -@register_compute_fun( - name="fieldline length", - label="\\int_{\\zeta_{\\mathrm{min}}}^{\\zeta_{\\mathrm{max}}}" - " \\frac{d\\zeta}{|B^{\\zeta}|}", - units="m / T", - units_long="Meter / tesla", - description="(Mean) proper length of field line(s)", - dim=1, - params=[], - transforms={"grid": []}, - profiles=[], - coordinates="r", - data=["B^zeta"], - resolution_requirement="z", - source_grid_requirement={"coordinates": "raz", "is_meshgrid": True}, -) -def _fieldline_length(data, transforms, profiles, **kwargs): - grid = transforms["grid"].source_grid - data["fieldline length"] = grid.expand( - jnp.abs( - _alpha_mean( - simpson( - y=grid.meshgrid_reshape(1 / data["B^zeta"], "arz"), - x=grid.compress(grid.nodes[:, 2], surface_label="zeta"), - axis=-1, - ) - ) - ) - ) - return data - - -@register_compute_fun( - name="fieldline length/volume", - label="\\int_{\\zeta_{\\mathrm{min}}}^{\\zeta_{\\mathrm{max}}}" - " \\frac{d\\zeta}{|B^{\\zeta} \\sqrt g|}", - units="1 / Wb", - units_long="Inverse webers", - description="(Mean) proper length over volume of field line(s)", - dim=1, - params=[], - transforms={"grid": []}, - profiles=[], - coordinates="r", - data=["B^zeta", "sqrt(g)"], - resolution_requirement="z", - source_grid_requirement={"coordinates": "raz", "is_meshgrid": True}, -) -def _fieldline_length_over_volume(data, transforms, profiles, **kwargs): - grid = transforms["grid"].source_grid - data["fieldline length/volume"] = grid.expand( - jnp.abs( - _alpha_mean( - simpson( - y=grid.meshgrid_reshape( - 1 / (data["B^zeta"] * data["sqrt(g)"]), "arz" - ), - x=grid.compress(grid.nodes[:, 2], surface_label="zeta"), - axis=-1, - ) - ) - ) - ) - return data + # Simple mean over α rather than integrating over α and dividing by 2π + # (i.e. f.T.dot(dα) / dα.sum()), because when the toroidal angle extends + # beyond one transit we need to weight all field lines uniformly, regardless + # of their spacing wrt α. + return grid.expand(out.mean(axis=0)) if reduce else out @register_compute_fun( @@ -174,7 +104,7 @@ def _fieldline_length_over_volume(data, transforms, profiles, **kwargs): source_grid_requirement={"coordinates": "raz", "is_meshgrid": True}, **_bounce1D_doc, ) -@partial(jit, static_argnames=["num_well", "num_quad", "num_pitch", "batch"]) +@partial(jit, static_argnames=["num_well", "num_quad", "num_pitch"]) def _epsilon_32_1D(params, transforms, profiles, data, **kwargs): """Effective ripple modulation amplitude to 3/2 power. @@ -186,11 +116,9 @@ def _epsilon_32_1D(params, transforms, profiles, data, **kwargs): # noqa: unused dependency num_well = kwargs.get("num_well", None) num_pitch = kwargs.get("num_pitch", 50) - batch = kwargs.get("batch", True) - if "quad" in kwargs: - quad = kwargs["quad"] - else: - quad = chebgauss2(kwargs.get("num_quad", 32)) + quad = ( + kwargs["quad"] if "quad" in kwargs else chebgauss2(kwargs.get("num_quad", 32)) + ) def eps_32(data): """(∂ψ/∂ρ)⁻² B₀⁻² ∫ dλ λ⁻² ∑ⱼ Hⱼ²/Iⱼ.""" @@ -204,7 +132,6 @@ def eps_32(data): data, "|grad(rho)|*kappa_g", bounce.points(data["pitch_inv"], num_well=num_well), - batch=batch, ) return jnp.sum( safediv(H**2, I).sum(axis=-1) @@ -237,7 +164,7 @@ def eps_32(data): label="\\epsilon_{\\mathrm{eff}}", units="~", units_long="None", - description="Effective ripple modulation amplitude", + description="Neoclassical transport in the banana regime", dim=1, params=[], transforms={}, @@ -246,6 +173,14 @@ def eps_32(data): data=["deprecated(effective ripple 3/2)"], ) def _effective_ripple_1D(params, transforms, profiles, data, **kwargs): + """Proxy for neoclassical transport in the banana regime. + + A 3D stellarator magnetic field admits ripple wells that lead to enhanced + radial drift of trapped particles. In the banana regime, neoclassical (thermal) + transport from ripple wells can become the dominant transport channel. + The effective ripple (ε) proxy estimates the neoclassical transport + coefficients in the banana regime. + """ data["deprecated(effective ripple)"] = data["deprecated(effective ripple 3/2)"] ** ( 2 / 3 ) @@ -261,7 +196,7 @@ def _effective_ripple_1D(params, transforms, profiles, data, **kwargs): ), units="~", units_long="None", - description="Energetic ion confinement proxy", + description="Fast ion confinement proxy", dim=1, params=[], transforms={"grid": []}, @@ -287,9 +222,9 @@ def _effective_ripple_1D(params, transforms, profiles, data, **kwargs): source_grid_requirement={"coordinates": "raz", "is_meshgrid": True}, **_bounce1D_doc, ) -@partial(jit, static_argnames=["num_well", "num_quad", "num_pitch", "batch"]) +@partial(jit, static_argnames=["num_well", "num_quad", "num_pitch"]) def _Gamma_c_1D(params, transforms, profiles, data, **kwargs): - """Energetic ion confinement proxy as defined by Nemov et al. + """Fast ion confinement proxy as defined by Nemov et al. Poloidal motion of trapped particle orbits in real-space coordinates. V. V. Nemov, S. V. Kasilov, W. Kernbichler, G. O. Leitold. @@ -297,20 +232,28 @@ def _Gamma_c_1D(params, transforms, profiles, data, **kwargs): https://doi.org/10.1063/1.2912456. Equation 61. - The radial electric field has a negligible effect on alpha particle confinement, - so it is assumed to be zero. + A 3D stellarator magnetic field admits ripple wells that lead to enhanced + radial drift of trapped particles. The energetic particle confinement + metric γ_c quantifies whether the contours of the second adiabatic invariant + close on the flux surfaces. In the limit the poloidal drift velocity + majorizes the radial drift velocity, the contours lie parallel to flux + surfaces. The optimization metric Γ_c averages γ_c² over the distribution + of trapped articles on each flux surface. + + The radial electric field has a negligible effect, since fast particles + have high energy with collisionless orbits, so it is assumed to be zero. """ # noqa: unused dependency num_pitch = kwargs.get("num_pitch", 64) num_well = kwargs.get("num_well", None) - batch = kwargs.get("batch", True) - if "quad" in kwargs: - quad = kwargs["quad"] - else: - quad = get_quadrature( + quad = ( + kwargs["quad"] + if "quad" in kwargs + else get_quadrature( leggauss(kwargs.get("num_quad", 32)), (automorphism_sin, grad_automorphism_sin), ) + ) def Gamma_c(data): """∫ dλ ∑ⱼ [v τ γ_c²]ⱼ π²/4.""" @@ -322,7 +265,6 @@ def Gamma_c(data): data, ["|grad(psi)|*kappa_g", "|B|_r|v,p", "K"], points, - batch=batch, ) # This is γ_c π/2. gamma_c = jnp.arctan( @@ -368,8 +310,7 @@ def Gamma_c(data): def _gbdrift(data, B, pitch): return safediv( - data["gbdrift"] * (1 - 0.5 * pitch * B), - jnp.sqrt(jnp.abs(1 - pitch * B)), + data["gbdrift"] * (1 - 0.5 * pitch * B), jnp.sqrt(jnp.abs(1 - pitch * B)) ) @@ -382,7 +323,7 @@ def _gbdrift(data, B, pitch): ), units="~", units_long="None", - description="Energetic ion confinement proxy " + description="Fast ion confinement proxy " "as defined by Velasco et al. (doi:10.1088/1741-4326/ac2994)", dim=1, params=[], @@ -394,9 +335,9 @@ def _gbdrift(data, B, pitch): source_grid_requirement={"coordinates": "raz", "is_meshgrid": True}, **_bounce1D_doc, ) -@partial(jit, static_argnames=["num_well", "num_quad", "num_pitch", "batch"]) +@partial(jit, static_argnames=["num_well", "num_quad", "num_pitch"]) def _Gamma_c_Velasco_1D(params, transforms, profiles, data, **kwargs): - """Energetic ion confinement proxy as defined by Velasco et al. + """Fast ion confinement proxy as defined by Velasco et al. A model for the fast evaluation of prompt losses of energetic ions in stellarators. J.L. Velasco et al. 2021 Nucl. Fusion 61 116059. @@ -406,14 +347,14 @@ def _Gamma_c_Velasco_1D(params, transforms, profiles, data, **kwargs): # noqa: unused dependency num_well = kwargs.get("num_well", None) num_pitch = kwargs.get("num_pitch", 64) - batch = kwargs.get("batch", True) - if "quad" in kwargs: - quad = kwargs["quad"] - else: - quad = get_quadrature( + quad = ( + kwargs["quad"] + if "quad" in kwargs + else get_quadrature( leggauss(kwargs.get("num_quad", 32)), (automorphism_sin, grad_automorphism_sin), ) + ) def Gamma_c(data): """∫ dλ ∑ⱼ [v τ γ_c²]ⱼ π²/4.""" @@ -425,7 +366,6 @@ def Gamma_c(data): data, ["cvdrift0", "gbdrift"], points, - batch=batch, ) gamma_c = jnp.arctan(safediv(cvdrift0, gbdrift)) # This is γ_c π/2. return jnp.sum( diff --git a/desc/compute/_fast_ion.py b/desc/compute/_fast_ion.py new file mode 100644 index 0000000000..e81847ccb0 --- /dev/null +++ b/desc/compute/_fast_ion.py @@ -0,0 +1,347 @@ +"""Compute functions for fast ion confinement.""" + +from functools import partial + +from orthax.legendre import leggauss + +from desc.backend import jit, jnp + +from ..integrals.bounce_integral import Bounce2D +from ..integrals.quad_utils import ( + automorphism_sin, + get_quadrature, + grad_automorphism_sin, +) +from ..utils import cross, dot, safediv +from ._neoclassical import _bounce_doc, _compute, _foreach_pitch +from .data_index import register_compute_fun + +# We rewrite equivalents of Nemov et al.'s expressions (21, 22) to resolve +# the indeterminate form of the limit and using single-valued maps of a +# physical coordinates. This avoids the computational issues of multivalued +# maps. +# The derivative (∂/∂ψ)|ϑ,ϕ belongs to flux coordinates which satisfy +# α = ϑ − χ(ψ) ϕ where α is the poloidal label of ψ,α Clebsch coordinates. +# Choosing χ = ι implies ϑ, ϕ are PEST angles. +# ∂G/∂((λB₀)⁻¹) = λ²B₀ ∫ dℓ (1 − λ|B|/2) / √(1 − λ|B|) ∂|B|/∂ψ / |B| +# ∂V/∂((λB₀)⁻¹) = 3/2 λ²B₀ ∫ dℓ √(1 − λ|B|) R / |B| +# ∂g/∂((λB₀)⁻¹) = λ²B₀² ∫ dℓ (1 − λ|B|/2) / √(1 − λ|B|) |∇ψ| κ_g / |B| +# K ≝ R dψ/dρ +# tan(π/2 γ_c) = +# ∫ dℓ (1 − λ|B|/2) / √(1 − λ|B|) |∇ψ| κ_g / |B| +# ---------------------------------------------- +# (|∇ρ| ‖e_α|ρ,ϕ‖)ᵢ ∫ dℓ [ (1 − λ|B|/2)/√(1 − λ|B|) ∂|B|/∂ρ + √(1 − λ|B|) K ] / |B| + + +def _v_tau(data, B, pitch): + # Note v τ = 4λ⁻²B₀⁻¹ ∂I/∂((λB₀)⁻¹) where v is the particle velocity, + # τ is the bounce time, and I is defined in Nemov eq. 36. + return safediv(2.0, jnp.sqrt(jnp.abs(1 - pitch * B))) + + +def _drift1(data, B, pitch): + return ( + safediv(1 - 0.5 * pitch * B, jnp.sqrt(jnp.abs(1 - pitch * B))) + * data["|grad(psi)|*kappa_g"] + / B + ) + + +def _drift2(data, B, pitch): + return ( + safediv(1 - 0.5 * pitch * B, jnp.sqrt(jnp.abs(1 - pitch * B))) + * data["|B|_r|v,p"] + + jnp.sqrt(jnp.abs(1 - pitch * B)) * data["K"] + ) / B + + +@register_compute_fun( + name="Gamma_c", + label=( + # Γ_c = π/(8√2) ∫dλ 〈 ∑ⱼ [v τ γ_c²]ⱼ 〉 + "\\Gamma_c = \\frac{\\pi}{8 \\sqrt{2}} " + "\\int d\\lambda \\langle \\sum_j (v \\tau \\gamma_c^2)_j \\rangle" + ), + units="~", + units_long="None", + description="Fast ion confinement proxy", + dim=1, + params=[], + transforms={"grid": []}, + profiles=[], + coordinates="r", + data=[ + "min_tz |B|", + "max_tz |B|", + "B^phi", + "B^phi_r|v,p", + "|B|_r|v,p", + "b", + "grad(phi)", + "grad(psi)", + "|grad(psi)|", + "|grad(rho)|", + "|e_alpha|r,p|", + "kappa_g", + "iota_r", + ] + + Bounce2D.required_names, + resolution_requirement="tz", + grid_requirement={"can_fft2": True}, + **_bounce_doc, +) +@partial( + jit, + static_argnames=[ + "Y_B", + "num_transit", + "num_well", + "num_quad", + "num_pitch", + "batch_size", + "spline", + ], +) +def _Gamma_c(params, transforms, profiles, data, **kwargs): + """Fast ion confinement proxy as defined by Nemov et al. + + Poloidal motion of trapped particle orbits in real-space coordinates. + V. V. Nemov, S. V. Kasilov, W. Kernbichler, G. O. Leitold. + Phys. Plasmas 1 May 2008; 15 (5): 052501. + https://doi.org/10.1063/1.2912456. + Equation 61. + + A 3D stellarator magnetic field admits ripple wells that lead to enhanced + radial drift of trapped particles. The energetic particle confinement + metric γ_c quantifies whether the contours of the second adiabatic invariant + close on the flux surfaces. In the limit the poloidal drift velocity + majorizes the radial drift velocity, the contours lie parallel to flux + surfaces. The optimization metric Γ_c averages γ_c² over the distribution + of trapped articles on each flux surface. + + The radial electric field has a negligible effect, since fast particles + have high energy with collisionless orbits, so it is assumed to be zero. + """ + # noqa: unused dependency + theta = kwargs["theta"] + Y_B = kwargs.get("Y_B", theta.shape[-1] * 2) + num_transit = kwargs.get("num_transit", 20) + num_pitch = kwargs.get("num_pitch", 64) + num_well = kwargs.get("num_well", Y_B * num_transit) + batch_size = kwargs.get("batch_size", None) + spline = kwargs.get("spline", True) + if "fieldline_quad" in kwargs: + fieldline_quad = kwargs["fieldline_quad"] + else: + fieldline_quad = leggauss(Y_B // 2) + quad = ( + kwargs["quad"] + if "quad" in kwargs + else get_quadrature( + leggauss(kwargs.get("num_quad", 32)), + (automorphism_sin, grad_automorphism_sin), + ) + ) + + def Gamma_c(data): + """∫ dλ ∑ⱼ [v τ γ_c²]ⱼ π²/4.""" + bounce = Bounce2D( + grid, + data, + data["theta"], + Y_B, + num_transit, + quad=quad, + automorphism=None, + is_fourier=True, + spline=spline, + ) + + def fun(pitch_inv): + points = bounce.points(pitch_inv, num_well=num_well) + v_tau, drift1, drift2 = bounce.integrate( + [_v_tau, _drift1, _drift2], + pitch_inv, + data, + ["|grad(psi)|*kappa_g", "|B|_r|v,p", "K"], + points, + is_fourier=True, + ) + # This is γ_c π/2. + gamma_c = jnp.arctan( + safediv( + drift1, + drift2 + * bounce.interp_to_argmin( + data["|grad(rho)|*|e_alpha|r,p|"], points, is_fourier=True + ), + ) + ) + return jnp.sum(v_tau * gamma_c**2, axis=-1) + + return jnp.sum( + _foreach_pitch(fun, data["pitch_inv"], batch_size) + * data["pitch_inv weight"] + / data["pitch_inv"] ** 2, + axis=-1, + ) / bounce.compute_fieldline_length(fieldline_quad) + + grid = transforms["grid"] + # It is assumed the grid is sufficiently dense to reconstruct |B|, + # so anything smoother than |B| may be captured accurately as a single + # Fourier series rather than transforming each component. + # Last term in K behaves as ∂log(|B|²/B^ϕ)/∂ρ |B| if one ignores the issue + # of a log argument with units. Smoothness determined by positive lower bound + # of log argument, and hence behaves as ∂log(|B|)/∂ρ |B| = ∂|B|/∂ρ. + data["Gamma_c"] = _compute( + Gamma_c, + fun_data={ + "|grad(psi)|*kappa_g": data["|grad(psi)|"] * data["kappa_g"], + "|grad(rho)|*|e_alpha|r,p|": data["|grad(rho)|"] * data["|e_alpha|r,p|"], + "|B|_r|v,p": data["|B|_r|v,p"], + "K": data["iota_r"] + * dot(cross(data["grad(psi)"], data["b"]), data["grad(phi)"]) + - ( + 2 * data["|B|_r|v,p"] + - data["|B|"] * data["B^phi_r|v,p"] / data["B^phi"] + ), + }, + data=data, + theta=theta, + grid=grid, + num_pitch=num_pitch, + simp=False, + ) / (2**1.5 * jnp.pi) + return data + + +def _cvdrift0(data, B, pitch): + return safediv( + data["cvdrift0"] * (1 - 0.5 * pitch * B), jnp.sqrt(jnp.abs(1 - pitch * B)) + ) + + +def _gbdrift(data, B, pitch): + return safediv( + (data["gbdrift (periodic)"] + data["gbdrift (secular)/phi"] * data["zeta"]) + * (1 - 0.5 * pitch * B), + jnp.sqrt(jnp.abs(1 - pitch * B)), + ) + + +@register_compute_fun( + name="Gamma_c Velasco", + label=( + # Γ_c = π/(8√2) ∫dλ 〈 ∑ⱼ [v τ γ_c²]ⱼ 〉 + "\\Gamma_c = \\frac{\\pi}{8 \\sqrt{2}} " + "\\int d\\lambda \\langle \\sum_j (v \\tau \\gamma_c^2)_j \\rangle" + ), + units="~", + units_long="None", + description="Fast ion confinement proxy " + "as defined by Velasco et al. (doi:10.1088/1741-4326/ac2994)", + dim=1, + params=[], + transforms={"grid": []}, + profiles=[], + coordinates="r", + data=[ + "min_tz |B|", + "max_tz |B|", + "cvdrift0", + "gbdrift (periodic)", + "gbdrift (secular)/phi", + ] + + Bounce2D.required_names, + resolution_requirement="tz", + grid_requirement={"can_fft2": True}, + **_bounce_doc, +) +@partial( + jit, + static_argnames=[ + "Y_B", + "num_transit", + "num_well", + "num_quad", + "num_pitch", + "batch_size", + "spline", + ], +) +def _Gamma_c_Velasco(params, transforms, profiles, data, **kwargs): + """Fast ion confinement proxy as defined by Velasco et al. + + A model for the fast evaluation of prompt losses of energetic ions in stellarators. + J.L. Velasco et al. 2021 Nucl. Fusion 61 116059. + https://doi.org/10.1088/1741-4326/ac2994. + Equation 16. + """ + # noqa: unused dependency + theta = kwargs["theta"] + Y_B = kwargs.get("Y_B", theta.shape[-1] * 2) + num_transit = kwargs.get("num_transit", 20) + num_pitch = kwargs.get("num_pitch", 64) + num_well = kwargs.get("num_well", Y_B * num_transit) + batch_size = kwargs.get("batch_size", None) + spline = kwargs.get("spline", True) + fieldline_quad = ( + kwargs["fieldline_quad"] if "fieldline_quad" in kwargs else leggauss(Y_B // 2) + ) + quad = ( + kwargs["quad"] + if "quad" in kwargs + else get_quadrature( + leggauss(kwargs.get("num_quad", 32)), + (automorphism_sin, grad_automorphism_sin), + ) + ) + + def Gamma_c(data): + """∫ dλ ∑ⱼ [v τ γ_c²]ⱼ π²/4.""" + bounce = Bounce2D( + grid, + data, + data["theta"], + Y_B, + num_transit, + quad=quad, + automorphism=None, + is_fourier=True, + spline=spline, + ) + + def fun(pitch_inv): + v_tau, cvdrift0, gbdrift = bounce.integrate( + [_v_tau, _cvdrift0, _gbdrift], + pitch_inv, + data, + ["cvdrift0", "gbdrift (periodic)", "gbdrift (secular)/phi"], + bounce.points(pitch_inv, num_well=num_well), + is_fourier=True, + ) + gamma_c = jnp.arctan(safediv(cvdrift0, gbdrift)) # This is γ_c π/2. + return jnp.sum(v_tau * gamma_c**2, axis=-1) + + return jnp.sum( + _foreach_pitch(fun, data["pitch_inv"], batch_size) + * data["pitch_inv weight"] + / data["pitch_inv"] ** 2, + axis=-1, + ) / bounce.compute_fieldline_length(fieldline_quad) + + grid = transforms["grid"] + data["Gamma_c Velasco"] = _compute( + Gamma_c, + fun_data={ + "cvdrift0": data["cvdrift0"], + "gbdrift (periodic)": data["gbdrift (periodic)"], + "gbdrift (secular)/phi": data["gbdrift (secular)/phi"], + }, + data=data, + theta=theta, + grid=grid, + num_pitch=num_pitch, + simp=False, + ) / (2**1.5 * jnp.pi) + return data diff --git a/desc/compute/_geometry.py b/desc/compute/_geometry.py index 1884f3e67b..766d81f2ff 100644 --- a/desc/compute/_geometry.py +++ b/desc/compute/_geometry.py @@ -9,6 +9,8 @@ expensive computations. """ +from quadax import simpson + from desc.backend import jnp from ..integrals.surface_integral import line_integrals, surface_integrals @@ -1015,3 +1017,63 @@ def _curvature_H_zeta(params, transforms, profiles, data, **kwargs): data["curvature_k1_zeta"] + data["curvature_k2_zeta"] ) / 2 return data + + +@register_compute_fun( + name="fieldline length", + label="\\int_{\\zeta_{\\mathrm{min}}}^{\\zeta_{\\mathrm{max}}}" + " \\frac{d\\zeta}{|B^{\\zeta}|}", + units="m / T", + units_long="Meter / tesla", + description="(Mean) proper length of field line(s)", + dim=1, + params=[], + transforms={"grid": []}, + profiles=[], + coordinates="r", + data=["B^zeta"], + resolution_requirement="z", + source_grid_requirement={"coordinates": "raz", "is_meshgrid": True}, +) +def _fieldline_length(data, transforms, profiles, **kwargs): + grid = transforms["grid"].source_grid + data["fieldline length"] = grid.expand( + jnp.abs( + simpson( + y=grid.meshgrid_reshape(1 / data["B^zeta"], "arz"), + x=grid.compress(grid.nodes[:, 2], surface_label="zeta"), + axis=-1, + ).mean(axis=0) + ) + ) + return data + + +@register_compute_fun( + name="fieldline length/volume", + label="\\int_{\\zeta_{\\mathrm{min}}}^{\\zeta_{\\mathrm{max}}}" + " \\frac{d\\zeta}{|B^{\\zeta} \\sqrt g|}", + units="1 / Wb", + units_long="Inverse webers", + description="(Mean) proper length over volume of field line(s)", + dim=1, + params=[], + transforms={"grid": []}, + profiles=[], + coordinates="r", + data=["B^zeta", "sqrt(g)"], + resolution_requirement="z", + source_grid_requirement={"coordinates": "raz", "is_meshgrid": True}, +) +def _fieldline_length_over_volume(data, transforms, profiles, **kwargs): + grid = transforms["grid"].source_grid + data["fieldline length/volume"] = grid.expand( + jnp.abs( + simpson( + y=grid.meshgrid_reshape(1 / (data["B^zeta"] * data["sqrt(g)"]), "arz"), + x=grid.compress(grid.nodes[:, 2], surface_label="zeta"), + axis=-1, + ).mean(axis=0) + ) + ) + return data diff --git a/desc/compute/_neoclassical.py b/desc/compute/_neoclassical.py index a6556553b9..6123d125cb 100644 --- a/desc/compute/_neoclassical.py +++ b/desc/compute/_neoclassical.py @@ -1,12 +1,4 @@ -"""Compute functions for neoclassical transport. - -Performance will improve significantly by resolving these GitHub issues. - * ``1154`` Improve coordinate mapping performance - * ``1294`` Nonuniform fast transforms - * ``1303`` Patch for differentiable code with dynamic shapes - * ``1206`` Upsample data above midplane to full grid assuming stellarator symmetry - * ``1034`` Optimizers/objectives with auxiliary output -""" +"""Compute functions for neoclassical transport.""" from functools import partial @@ -15,13 +7,8 @@ from desc.backend import imap, jit, jnp from ..integrals.bounce_integral import Bounce2D -from ..integrals.quad_utils import ( - automorphism_sin, - chebgauss2, - get_quadrature, - grad_automorphism_sin, -) -from ..utils import cross, dot, safediv +from ..integrals.quad_utils import chebgauss2 +from ..utils import safediv from .data_index import register_compute_fun _bounce_doc = { @@ -80,7 +67,7 @@ def _compute(fun, fun_data, data, theta, grid, num_pitch, simp=False): - """Compute ``fun`` for each ρ value iteratively to reduce memory usage. + """Compute ``fun`` for each ρ value iteratively. Parameters ---------- @@ -139,24 +126,6 @@ def _foreach_pitch(fun, pitch_inv, batch_size): ) -@register_compute_fun( - name="effective ripple", - label="\\epsilon_{\\mathrm{eff}}", - units="~", - units_long="None", - description="Effective ripple modulation amplitude", - dim=1, - params=[], - transforms={}, - profiles=[], - coordinates="r", - data=["effective ripple 3/2"], -) -def _effective_ripple(params, transforms, profiles, data, **kwargs): - data["effective ripple"] = data["effective ripple 3/2"] ** (2 / 3) - return data - - def _dH(data, B, pitch): """Integrand of Nemov eq. 30 with |∂ψ/∂ρ| (λB₀)¹ᐧ⁵ removed.""" return ( @@ -223,14 +192,12 @@ def _epsilon_32(params, transforms, profiles, data, **kwargs): num_well = kwargs.get("num_well", Y_B * num_transit) batch_size = kwargs.get("batch_size", None) spline = kwargs.get("spline", True) - if "fieldline_quad" in kwargs: - fieldline_quad = kwargs["fieldline_quad"] - else: - fieldline_quad = leggauss(Y_B // 2) - if "quad" in kwargs: - quad = kwargs["quad"] - else: - quad = chebgauss2(kwargs.get("num_quad", 32)) + fieldline_quad = ( + kwargs["fieldline_quad"] if "fieldline_quad" in kwargs else leggauss(Y_B // 2) + ) + quad = ( + kwargs["quad"] if "quad" in kwargs else chebgauss2(kwargs.get("num_quad", 32)) + ) def eps_32(data): """(∂ψ/∂ρ)⁻² B₀⁻² ∫ dλ λ⁻² ∑ⱼ Hⱼ²/Iⱼ.""" @@ -286,324 +253,27 @@ def fun(pitch_inv): return data -# We rewrite equivalents of Nemov et al.'s expressions (21, 22) to resolve -# the indeterminate form of the limit and using single-valued maps of a -# physical coordinates. This avoids the computational issues of multivalued -# maps. -# The derivative (∂/∂ψ)|ϑ,ϕ belongs to flux coordinates which satisfy -# α = ϑ − χ(ψ) ϕ where α is the poloidal label of ψ,α Clebsch coordinates. -# Choosing χ = ι implies ϑ, ϕ are PEST angles. -# ∂G/∂((λB₀)⁻¹) = λ²B₀ ∫ dℓ (1 − λ|B|/2) / √(1 − λ|B|) ∂|B|/∂ψ / |B| -# ∂V/∂((λB₀)⁻¹) = 3/2 λ²B₀ ∫ dℓ √(1 − λ|B|) R / |B| -# ∂g/∂((λB₀)⁻¹) = λ²B₀² ∫ dℓ (1 − λ|B|/2) / √(1 − λ|B|) |∇ψ| κ_g / |B| -# K ≝ R dψ/dρ -# tan(π/2 γ_c) = -# ∫ dℓ (1 − λ|B|/2) / √(1 − λ|B|) |∇ψ| κ_g / |B| -# ---------------------------------------------- -# (|∇ρ| ‖e_α|ρ,ϕ‖)ᵢ ∫ dℓ [ (1 − λ|B|/2)/√(1 − λ|B|) ∂|B|/∂ρ + √(1 − λ|B|) K ] / |B| - - -def _v_tau(data, B, pitch): - # Note v τ = 4λ⁻²B₀⁻¹ ∂I/∂((λB₀)⁻¹) where v is the particle velocity, - # τ is the bounce time, and I is defined in Nemov eq. 36. - return safediv(2.0, jnp.sqrt(jnp.abs(1 - pitch * B))) - - -def _drift1(data, B, pitch): - return ( - safediv(1 - 0.5 * pitch * B, jnp.sqrt(jnp.abs(1 - pitch * B))) - * data["|grad(psi)|*kappa_g"] - / B - ) - - -def _drift2(data, B, pitch): - return ( - safediv(1 - 0.5 * pitch * B, jnp.sqrt(jnp.abs(1 - pitch * B))) - * data["|B|_r|v,p"] - + jnp.sqrt(jnp.abs(1 - pitch * B)) * data["K"] - ) / B - - @register_compute_fun( - name="Gamma_c", - label=( - # Γ_c = π/(8√2) ∫dλ 〈 ∑ⱼ [v τ γ_c²]ⱼ 〉 - "\\Gamma_c = \\frac{\\pi}{8 \\sqrt{2}} " - "\\int d\\lambda \\langle \\sum_j (v \\tau \\gamma_c^2)_j \\rangle" - ), - units="~", - units_long="None", - description="Energetic ion confinement proxy", - dim=1, - params=[], - transforms={"grid": []}, - profiles=[], - coordinates="r", - data=[ - "min_tz |B|", - "max_tz |B|", - "B^phi", - "B^phi_r|v,p", - "|B|_r|v,p", - "b", - "grad(phi)", - "grad(psi)", - "|grad(psi)|", - "|grad(rho)|", - "|e_alpha|r,p|", - "kappa_g", - "iota_r", - ] - + Bounce2D.required_names, - resolution_requirement="tz", - grid_requirement={"can_fft2": True}, - **_bounce_doc, -) -@partial( - jit, - static_argnames=[ - "Y_B", - "num_transit", - "num_well", - "num_quad", - "num_pitch", - "batch_size", - "spline", - ], -) -def _Gamma_c(params, transforms, profiles, data, **kwargs): - """Energetic ion confinement proxy as defined by Nemov et al. - - Poloidal motion of trapped particle orbits in real-space coordinates. - V. V. Nemov, S. V. Kasilov, W. Kernbichler, G. O. Leitold. - Phys. Plasmas 1 May 2008; 15 (5): 052501. - https://doi.org/10.1063/1.2912456. - Equation 61. - - The radial electric field has a negligible effect on alpha particle confinement, - so it is assumed to be zero. - """ - # noqa: unused dependency - theta = kwargs["theta"] - Y_B = kwargs.get("Y_B", theta.shape[-1] * 2) - num_transit = kwargs.get("num_transit", 20) - num_pitch = kwargs.get("num_pitch", 64) - num_well = kwargs.get("num_well", Y_B * num_transit) - batch_size = kwargs.get("batch_size", None) - spline = kwargs.get("spline", True) - if "fieldline_quad" in kwargs: - fieldline_quad = kwargs["fieldline_quad"] - else: - fieldline_quad = leggauss(Y_B // 2) - if "quad" in kwargs: - quad = kwargs["quad"] - else: - quad = get_quadrature( - leggauss(kwargs.get("num_quad", 32)), - (automorphism_sin, grad_automorphism_sin), - ) - - def Gamma_c(data): - """∫ dλ ∑ⱼ [v τ γ_c²]ⱼ π²/4.""" - bounce = Bounce2D( - grid, - data, - data["theta"], - Y_B, - num_transit, - quad=quad, - automorphism=None, - is_fourier=True, - spline=spline, - ) - - def fun(pitch_inv): - points = bounce.points(pitch_inv, num_well=num_well) - v_tau, drift1, drift2 = bounce.integrate( - [_v_tau, _drift1, _drift2], - pitch_inv, - data, - ["|grad(psi)|*kappa_g", "|B|_r|v,p", "K"], - points, - is_fourier=True, - ) - # This is γ_c π/2. - gamma_c = jnp.arctan( - safediv( - drift1, - drift2 - * bounce.interp_to_argmin( - data["|grad(rho)|*|e_alpha|r,p|"], points, is_fourier=True - ), - ) - ) - return jnp.sum(v_tau * gamma_c**2, axis=-1) - - return jnp.sum( - _foreach_pitch(fun, data["pitch_inv"], batch_size) - * data["pitch_inv weight"] - / data["pitch_inv"] ** 2, - axis=-1, - ) / bounce.compute_fieldline_length(fieldline_quad) - - grid = transforms["grid"] - # It is assumed the grid is sufficiently dense to reconstruct |B|, - # so anything smoother than |B| may be captured accurately as a single - # Fourier series rather than transforming each component. - # Last term in K behaves as ∂log(|B|²/B^ϕ)/∂ρ |B| if one ignores the issue - # of a log argument with units. Smoothness determined by positive lower bound - # of log argument, and hence behaves as ∂log(|B|)/∂ρ |B| = ∂|B|/∂ρ. - data["Gamma_c"] = _compute( - Gamma_c, - fun_data={ - "|grad(psi)|*kappa_g": data["|grad(psi)|"] * data["kappa_g"], - "|grad(rho)|*|e_alpha|r,p|": data["|grad(rho)|"] * data["|e_alpha|r,p|"], - "|B|_r|v,p": data["|B|_r|v,p"], - "K": data["iota_r"] - * dot(cross(data["grad(psi)"], data["b"]), data["grad(phi)"]) - - ( - 2 * data["|B|_r|v,p"] - - data["|B|"] * data["B^phi_r|v,p"] / data["B^phi"] - ), - }, - data=data, - theta=theta, - grid=grid, - num_pitch=num_pitch, - simp=False, - ) / (2**1.5 * jnp.pi) - return data - - -def _cvdrift0(data, B, pitch): - return safediv( - data["cvdrift0"] * (1 - 0.5 * pitch * B), - jnp.sqrt(jnp.abs(1 - pitch * B)), - ) - - -def _gbdrift(data, B, pitch): - return safediv( - (data["gbdrift (periodic)"] + data["gbdrift (secular)/phi"] * data["zeta"]) - * (1 - 0.5 * pitch * B), - jnp.sqrt(jnp.abs(1 - pitch * B)), - ) - - -@register_compute_fun( - name="Gamma_c Velasco", - label=( - # Γ_c = π/(8√2) ∫dλ 〈 ∑ⱼ [v τ γ_c²]ⱼ 〉 - "\\Gamma_c = \\frac{\\pi}{8 \\sqrt{2}} " - "\\int d\\lambda \\langle \\sum_j (v \\tau \\gamma_c^2)_j \\rangle" - ), + name="effective ripple", + label="\\epsilon_{\\mathrm{eff}}", units="~", units_long="None", - description="Energetic ion confinement proxy " - "as defined by Velasco et al. (doi:10.1088/1741-4326/ac2994)", + description="Neoclassical transport in the banana regime", dim=1, params=[], - transforms={"grid": []}, + transforms={}, profiles=[], coordinates="r", - data=[ - "min_tz |B|", - "max_tz |B|", - "cvdrift0", - "gbdrift (periodic)", - "gbdrift (secular)/phi", - ] - + Bounce2D.required_names, - resolution_requirement="tz", - grid_requirement={"can_fft2": True}, - **_bounce_doc, -) -@partial( - jit, - static_argnames=[ - "Y_B", - "num_transit", - "num_well", - "num_quad", - "num_pitch", - "batch_size", - "spline", - ], + data=["effective ripple 3/2"], ) -def _Gamma_c_Velasco(params, transforms, profiles, data, **kwargs): - """Energetic ion confinement proxy as defined by Velasco et al. +def _effective_ripple(params, transforms, profiles, data, **kwargs): + """Proxy for neoclassical transport in the banana regime. - A model for the fast evaluation of prompt losses of energetic ions in stellarators. - J.L. Velasco et al. 2021 Nucl. Fusion 61 116059. - https://doi.org/10.1088/1741-4326/ac2994. - Equation 16. + A 3D stellarator magnetic field admits ripple wells that lead to enhanced + radial drift of trapped particles. In the banana regime, neoclassical (thermal) + transport from ripple wells can become the dominant transport channel. + The effective ripple (ε) proxy estimates the neoclassical transport + coefficients in the banana regime. """ - # noqa: unused dependency - theta = kwargs["theta"] - Y_B = kwargs.get("Y_B", theta.shape[-1] * 2) - num_transit = kwargs.get("num_transit", 20) - num_pitch = kwargs.get("num_pitch", 64) - num_well = kwargs.get("num_well", Y_B * num_transit) - batch_size = kwargs.get("batch_size", None) - spline = kwargs.get("spline", True) - if "fieldline_quad" in kwargs: - fieldline_quad = kwargs["fieldline_quad"] - else: - fieldline_quad = leggauss(Y_B // 2) - if "quad" in kwargs: - quad = kwargs["quad"] - else: - quad = get_quadrature( - leggauss(kwargs.get("num_quad", 32)), - (automorphism_sin, grad_automorphism_sin), - ) - - def Gamma_c(data): - """∫ dλ ∑ⱼ [v τ γ_c²]ⱼ π²/4.""" - bounce = Bounce2D( - grid, - data, - data["theta"], - Y_B, - num_transit, - quad=quad, - automorphism=None, - is_fourier=True, - spline=spline, - ) - - def fun(pitch_inv): - v_tau, cvdrift0, gbdrift = bounce.integrate( - [_v_tau, _cvdrift0, _gbdrift], - pitch_inv, - data, - ["cvdrift0", "gbdrift (periodic)", "gbdrift (secular)/phi"], - bounce.points(pitch_inv, num_well=num_well), - is_fourier=True, - ) - gamma_c = jnp.arctan(safediv(cvdrift0, gbdrift)) # This is γ_c π/2. - return jnp.sum(v_tau * gamma_c**2, axis=-1) - - return jnp.sum( - _foreach_pitch(fun, data["pitch_inv"], batch_size) - * data["pitch_inv weight"] - / data["pitch_inv"] ** 2, - axis=-1, - ) / bounce.compute_fieldline_length(fieldline_quad) - - grid = transforms["grid"] - data["Gamma_c Velasco"] = _compute( - Gamma_c, - fun_data={ - "cvdrift0": data["cvdrift0"], - "gbdrift (periodic)": data["gbdrift (periodic)"], - "gbdrift (secular)/phi": data["gbdrift (secular)/phi"], - }, - data=data, - theta=theta, - grid=grid, - num_pitch=num_pitch, - simp=False, - ) / (2**1.5 * jnp.pi) + data["effective ripple"] = data["effective ripple 3/2"] ** (2 / 3) return data diff --git a/desc/integrals/_bounce_utils.py b/desc/integrals/_bounce_utils.py index a5001e39db..585a235328 100644 --- a/desc/integrals/_bounce_utils.py +++ b/desc/integrals/_bounce_utils.py @@ -5,13 +5,6 @@ from matplotlib import pyplot as plt from desc.backend import dct, imap, jnp -from desc.integrals._basis import ( - FourierChebyshevSeries, - PiecewiseChebyshevSeries, - _add2legend, - _in_epigraph_and, - _plot_intersect, -) from desc.integrals._interp_utils import ( cheb_from_dct, cheb_pts, @@ -23,6 +16,13 @@ polyroot_vec, polyval_vec, ) +from desc.integrals.basis import ( + FourierChebyshevSeries, + PiecewiseChebyshevSeries, + _add2legend, + _in_epigraph_and, + _plot_intersect, +) from desc.integrals.quad_utils import ( bijection_from_disc, grad_bijection_from_disc, diff --git a/desc/integrals/_basis.py b/desc/integrals/basis.py similarity index 100% rename from desc/integrals/_basis.py rename to desc/integrals/basis.py diff --git a/desc/integrals/bounce_integral.py b/desc/integrals/bounce_integral.py index f4935d7e0e..40a3acf1af 100644 --- a/desc/integrals/bounce_integral.py +++ b/desc/integrals/bounce_integral.py @@ -6,7 +6,6 @@ from orthax.legendre import leggauss from desc.backend import jnp, rfft2 -from desc.integrals._basis import FourierChebyshevSeries, PiecewiseChebyshevSeries from desc.integrals._bounce_utils import ( _bounce_quadrature, _check_bounce_points, @@ -27,6 +26,7 @@ irfft2_non_uniform, polyder_vec, ) +from desc.integrals.basis import FourierChebyshevSeries, PiecewiseChebyshevSeries from desc.integrals.quad_utils import ( automorphism_sin, bijection_from_disc, @@ -529,7 +529,7 @@ def check_points(self, points, pitch_inv, *, plot=True, **kwargs): Whether to plot the field lines and bounce points of the given pitch angles. kwargs : dict Keyword arguments into - ``desc/integrals/_basis.py::PiecewiseChebyshevSeries.plot1d`` or + ``desc/integrals/basis.py::PiecewiseChebyshevSeries.plot1d`` or ``desc/integrals/_bounce_utils.py::plot_ppoly``. Returns @@ -872,7 +872,7 @@ def plot(self, l, pitch_inv=None, **kwargs): specified by Clebsch coordinate ρ(l) will be plotted. kwargs Keyword arguments into - ``desc/integrals/_basis.py::PiecewiseChebyshevSeries.plot1d``. + ``desc/integrals/basis.py::PiecewiseChebyshevSeries.plot1d``. Returns ------- @@ -918,7 +918,7 @@ def plot_theta(self, l, **kwargs): ``rho=grid.compress(grid.nodes[:,0])[l]``. kwargs Keyword arguments into - ``desc/integrals/_basis.py::PiecewiseChebyshevSeries.plot1d``. + ``desc/integrals/basis.py::PiecewiseChebyshevSeries.plot1d``. Returns ------- diff --git a/desc/objectives/__init__.py b/desc/objectives/__init__.py index 680b4f0831..0cf250169e 100644 --- a/desc/objectives/__init__.py +++ b/desc/objectives/__init__.py @@ -24,6 +24,7 @@ HelicalForceBalance, RadialForceBalance, ) +from ._fast_ion import GammaC from ._free_boundary import BoundaryError, VacuumBoundaryError from ._generic import GenericObjective, LinearObjectiveFromUser, ObjectiveFromUser from ._geometry import ( @@ -37,7 +38,7 @@ PrincipalCurvature, Volume, ) -from ._neoclassical import EffectiveRipple, GammaC +from ._neoclassical import EffectiveRipple from ._omnigenity import ( Isodynamicity, Omnigenity, diff --git a/desc/objectives/_fast_ion.py b/desc/objectives/_fast_ion.py new file mode 100644 index 0000000000..6e98dfc861 --- /dev/null +++ b/desc/objectives/_fast_ion.py @@ -0,0 +1,280 @@ +"""Objectives for targeting neoclassical transport.""" + +import numpy as np +from orthax.legendre import leggauss + +from desc.compute import get_profiles, get_transforms +from desc.compute.utils import _compute as compute_fun +from desc.grid import LinearGrid +from desc.utils import Timer, setdefault + +from ..integrals import Bounce2D +from ..integrals.basis import FourierChebyshevSeries +from ..integrals.quad_utils import ( + automorphism_sin, + get_quadrature, + grad_automorphism_sin, +) +from ._neoclassical import _bounce_overwrite +from .objective_funs import _Objective, collect_docs +from .utils import _parse_callable_target_bounds + + +class GammaC(_Objective): + """Proxy for fast ion confinement. + + A 3D stellarator magnetic field admits ripple wells that lead to enhanced + radial drift of trapped particles. The energetic particle confinement + metric γ_c quantifies whether the contours of the second adiabatic invariant + close on the flux surfaces. In the limit the poloidal drift velocity + majorizes the radial drift velocity, the contours lie parallel to flux + surfaces. The optimization metric Γ_c averages γ_c² over the distribution + of trapped articles on each flux surface. + + The radial electric field has a negligible effect, since fast particles + have high energy with collisionless orbits, so it is assumed to be zero. + + References + ---------- + Poloidal motion of trapped particle orbits in real-space coordinates. + V. V. Nemov, S. V. Kasilov, W. Kernbichler, G. O. Leitold. + Phys. Plasmas 1 May 2008; 15 (5): 052501. + https://doi.org/10.1063/1.2912456. + Equation 61. + + A model for the fast evaluation of prompt losses of energetic ions in stellarators. + J.L. Velasco et al. 2021 Nucl. Fusion 61 116059. + https://doi.org/10.1088/1741-4326/ac2994. + Equation 16. + + Parameters + ---------- + eq : Equilibrium + ``Equilibrium`` to be optimized. + grid : Grid + Optional, tensor-product grid in (ρ, θ, ζ) with uniformly spaced nodes + (θ, ζ) ∈ [0, 2π) × [0, 2π/NFP). Powers of two are preferable. + Determines the flux surfaces to compute on and resolution of FFTs. + Default grid samples the boundary surface at ρ=1. + X : int + Poloidal Fourier grid resolution to interpolate the map α, ζ ↦ θ(α, ζ). + Preferably power of 2. + Y : int + Toroidal Chebyshev grid resolution to interpolate the map α, ζ ↦ θ(α, ζ). + Preferably power of 2. + Y_B : int + Desired resolution for algorithm to compute bounce points. + Default is double ``Y``. Something like 100 is usually sufficient. + Currently, this is the number of knots per toroidal transit over + to approximate |B| with cubic splines to find bounce points. + num_transit : int + Number of toroidal transits to follow field line. + For axisymmetric devices, one poloidal transit is sufficient. Otherwise, + assuming the surface is not near rational, more transits will + approximate surface averages better, with diminishing returns. + num_well : int + Maximum number of wells to detect for each pitch and field line. + Giving ``None`` will detect all wells but due to current limitations in + JAX this will have worse performance. + Specifying a number that tightly upper bounds the number of wells will + increase performance. In general, an upper bound on the number of wells + per toroidal transit is ``Aι+B`` where ``A``,``B`` are the poloidal and + toroidal Fourier resolution of |B|, respectively, in straight-field line + PEST coordinates, and ι is the rotational transform normalized by 2π. + A tighter upper bound than ``num_well=(Aι+B)*num_transit`` is preferable. + The ``check_points`` or ``plot`` methods in ``desc.integrals.Bounce2D`` + are useful to select a reasonable value. + num_quad : int + Resolution for quadrature of bounce integrals. Default is 32. + num_pitch : int + Resolution for quadrature over velocity coordinate. Default is 64. + batch_size : int + Number of pitch values with which to compute simultaneously. + If given ``None``, then ``batch_size`` defaults to ``num_pitch``. + Nemov : bool + Whether to use the Γ_c as defined by Nemov et al. or Velasco et al. + Default is Nemov. Set to ``False`` to use Velascos's. + + Nemov's Γ_c converges to a finite nonzero value in the infinity limit + of the number of toroidal transits. Velasco's expression has a secular + term that drives the result to zero as the number of toroidal transits + increases if the secular term is not averaged out from the singular + integrals. Currently, an optimization using Velasco's metric may need + to be evaluated by measuring decrease in Γ_c at a fixed number of toroidal + transits. + + Notes + ----- + Performance will improve significantly by resolving these GitHub issues. + * ``1154`` Improve coordinate mapping performance + * ``1294`` Nonuniform fast transforms + * ``1303`` Patch for differentiable code with dynamic shapes + * ``1206`` Upsample data above midplane to full grid assuming stellarator symmetry + * ``1034`` Optimizers/objectives with auxiliary output + + """ + + __doc__ = __doc__.rstrip() + collect_docs( + target_default="``target=0``.", + bounds_default="``target=0``.", + normalize_detail=" Note: Has no effect for this objective.", + normalize_target_detail=" Note: Has no effect for this objective.", + overwrite=_bounce_overwrite, + ) + + _coordinates = "r" + _units = "~" + _print_value_fmt = "Γ_c: " + + def __init__( + self, + eq, + *, + target=None, + bounds=None, + weight=1, + normalize=True, + normalize_target=True, + loss_function=None, + deriv_mode="fwd", + jac_chunk_size=None, + name="Gamma_c", + grid=None, + X=16, # X is cheap to increase. + Y=32, + # Y_B is expensive to increase if one does not fix num well per transit. + Y_B=None, + num_transit=20, + num_well=None, + num_quad=32, + num_pitch=64, + batch_size=None, + Nemov=True, + ): + if target is None and bounds is None: + target = 0.0 + + self._grid = grid + self._constants = {"quad_weights": 1.0} + self._X = X + self._Y = Y + Y_B = setdefault(Y_B, 2 * Y) + self._hyperparam = { + "Y_B": Y_B, + "num_transit": num_transit, + "num_well": setdefault(num_well, Y_B * num_transit), + "num_quad": num_quad, + "num_pitch": num_pitch, + "batch_size": batch_size, + } + self._key = "Gamma_c" if Nemov else "Gamma_c Velasco" + if deriv_mode == "rev" and jac_chunk_size is None: + # Reverse mode is bottlenecked by coordinate mapping. + # Compute Jacobian one flux surface at a time. + jac_chunk_size = 1 + + super().__init__( + things=eq, + target=target, + bounds=bounds, + weight=weight, + normalize=normalize, + normalize_target=normalize_target, + loss_function=loss_function, + deriv_mode=deriv_mode, + name=name, + jac_chunk_size=jac_chunk_size, + ) + + def build(self, use_jit=True, verbose=1): + """Build constant arrays. + + Parameters + ---------- + use_jit : bool, optional + Whether to just-in-time compile the objective and derivatives. + verbose : int, optional + Level of output. + + """ + eq = self.things[0] + if self._grid is None: + self._grid = LinearGrid(M=eq.M_grid, N=eq.N_grid, NFP=eq.NFP, sym=False) + assert self._grid.can_fft2 + self._constants["clebsch"] = FourierChebyshevSeries.nodes( + self._X, + self._Y, + self._grid.compress(self._grid.nodes[:, 0]), + domain=(0, 2 * np.pi), + ) + self._constants["fieldline quad"] = leggauss(self._hyperparam["Y_B"] // 2) + self._constants["quad"] = get_quadrature( + leggauss(self._hyperparam.pop("num_quad")), + (automorphism_sin, grad_automorphism_sin), + ) + + self._dim_f = self._grid.num_rho + self._target, self._bounds = _parse_callable_target_bounds( + self._target, self._bounds, self._grid.compress(self._grid.nodes[:, 0]) + ) + + timer = Timer() + if verbose > 0: + print("Precomputing transforms") + timer.start("Precomputing transforms") + self._constants["transforms"] = get_transforms(self._key, eq, grid=self._grid) + self._constants["profiles"] = get_profiles(self._key, eq, grid=self._grid) + timer.stop("Precomputing transforms") + if verbose > 1: + timer.disp("Precomputing transforms") + + super().build(use_jit=use_jit, verbose=verbose) + + def compute(self, params, constants=None): + """Compute Γ_c. + + Parameters + ---------- + params : dict + Dictionary of equilibrium degrees of freedom, e.g. + ``Equilibrium.params_dict``. + constants : dict + Dictionary of constant data, e.g. transforms, profiles etc. + Defaults to ``self.constants``. + + Returns + ------- + Gamma_c : ndarray + Γ_c as a function of the flux surface label. + + """ + if constants is None: + constants = self.constants + eq = self.things[0] + data = compute_fun( + eq, "iota", params, constants["transforms"], constants["profiles"] + ) + # TODO (#1034): Use old theta values as initial guess. + theta = Bounce2D.compute_theta( + eq, + self._X, + self._Y, + iota=constants["transforms"]["grid"].compress(data["iota"]), + clebsch=constants["clebsch"], + # Pass in params so that root finding is done with the new + # perturbed λ coefficients and not the original equilibrium's. + params=params, + ) + data = compute_fun( + eq, + self._key, + params, + constants["transforms"], + constants["profiles"], + data, + theta=theta, + fieldline_quad=constants["fieldline quad"], + quad=constants["quad"], + **self._hyperparam, + ) + return constants["transforms"]["grid"].compress(data[self._key]) diff --git a/desc/objectives/_neoclassical.py b/desc/objectives/_neoclassical.py index b3a68b3857..4483342cee 100644 --- a/desc/objectives/_neoclassical.py +++ b/desc/objectives/_neoclassical.py @@ -1,14 +1,4 @@ -"""Objectives for targeting neoclassical transport. - -Notes ------ -Performance will improve significantly by resolving these GitHub issues. - * ``1154`` Improve coordinate mapping performance - * ``1294`` Nonuniform fast transforms - * ``1303`` Patch for differentiable code with dynamic shapes - * ``1206`` Upsample data above midplane to full grid assuming stellarator symmetry - * ``1034`` Optimizers/objectives with auxiliary output -""" +"""Objectives for targeting neoclassical transport.""" import numpy as np from orthax.legendre import leggauss @@ -19,13 +9,8 @@ from desc.utils import Timer, setdefault from ..integrals import Bounce2D -from ..integrals._basis import FourierChebyshevSeries -from ..integrals.quad_utils import ( - automorphism_sin, - chebgauss2, - get_quadrature, - grad_automorphism_sin, -) +from ..integrals.basis import FourierChebyshevSeries +from ..integrals.quad_utils import chebgauss2 from .objective_funs import _Objective, collect_docs from .utils import _parse_callable_target_bounds @@ -45,15 +30,14 @@ class EffectiveRipple(_Objective): - """The effective ripple is a proxy for neoclassical transport. + """Proxy for neoclassical transport in the banana regime. - The 3D geometry of the magnetic field in stellarators produces local magnetic - wells that lead to bad confinement properties with enhanced radial drift, - especially for trapped particles. Neoclassical (thermal) transport can become the - dominant transport channel in stellarators which are not optimized to reduce it. - The effective ripple is a proxy, measuring the effective modulation amplitude of the - magnetic field averaged along a magnetic surface, which can be used to optimize for - stellarators with improved confinement. It is targeted as a flux surface function. + A 3D stellarator magnetic field admits ripple wells that lead to enhanced + radial drift of trapped particles. In the banana regime, neoclassical (thermal) + transport from ripple wells can become the dominant transport channel. + The effective ripple (ε) proxy estimates the neoclassical transport + coefficients in the banana regime. To ensure low neoclassical transport, + a stellarator is typically optimized so that ε < 0.02. References ---------- @@ -69,7 +53,7 @@ class EffectiveRipple(_Objective): grid : Grid Optional, tensor-product grid in (ρ, θ, ζ) with uniformly spaced nodes (θ, ζ) ∈ [0, 2π) × [0, 2π/NFP). Powers of two are preferable. - Determines the flux surfaces to compute on. + Determines the flux surfaces to compute on and resolution of FFTs. Default grid samples the boundary surface at ρ=1. X : int Poloidal Fourier grid resolution to interpolate the map α, ζ ↦ θ(α, ζ). @@ -107,6 +91,15 @@ class EffectiveRipple(_Objective): Number of pitch values with which to compute simultaneously. If given ``None``, then ``batch_size`` defaults to ``num_pitch``. + Notes + ----- + Performance will improve significantly by resolving these GitHub issues. + * ``1154`` Improve coordinate mapping performance + * ``1294`` Nonuniform fast transforms + * ``1303`` Patch for differentiable code with dynamic shapes + * ``1206`` Upsample data above midplane to full grid assuming stellarator symmetry + * ``1034`` Optimizers/objectives with auxiliary output + """ __doc__ = __doc__.rstrip() + collect_docs( @@ -273,243 +266,3 @@ def compute(self, params, constants=None): **self._hyperparam, ) return constants["transforms"]["grid"].compress(data["effective ripple"]) - - -class GammaC(_Objective): - """Γ_c is a proxy for measuring energetic ion confinement. - - References - ---------- - Poloidal motion of trapped particle orbits in real-space coordinates. - V. V. Nemov, S. V. Kasilov, W. Kernbichler, G. O. Leitold. - Phys. Plasmas 1 May 2008; 15 (5): 052501. - https://doi.org/10.1063/1.2912456. - Equation 61. - - A model for the fast evaluation of prompt losses of energetic ions in stellarators. - J.L. Velasco et al. 2021 Nucl. Fusion 61 116059. - https://doi.org/10.1088/1741-4326/ac2994. - Equation 16. - - Parameters - ---------- - eq : Equilibrium - ``Equilibrium`` to be optimized. - grid : Grid - Optional, tensor-product grid in (ρ, θ, ζ) with uniformly spaced nodes - (θ, ζ) ∈ [0, 2π) × [0, 2π/NFP). Powers of two are preferable. - Determines the flux surfaces to compute on. - Default grid samples the boundary surface at ρ=1. - X : int - Poloidal Fourier grid resolution to interpolate the map α, ζ ↦ θ(α, ζ). - Preferably power of 2. - Y : int - Toroidal Chebyshev grid resolution to interpolate the map α, ζ ↦ θ(α, ζ). - Preferably power of 2. - Y_B : int - Desired resolution for algorithm to compute bounce points. - Default is double ``Y``. Something like 100 is usually sufficient. - Currently, this is the number of knots per toroidal transit over - to approximate |B| with cubic splines to find bounce points. - num_transit : int - Number of toroidal transits to follow field line. - For axisymmetric devices, one poloidal transit is sufficient. Otherwise, - assuming the surface is not near rational, more transits will - approximate surface averages better, with diminishing returns. - num_well : int - Maximum number of wells to detect for each pitch and field line. - Giving ``None`` will detect all wells but due to current limitations in - JAX this will have worse performance. - Specifying a number that tightly upper bounds the number of wells will - increase performance. In general, an upper bound on the number of wells - per toroidal transit is ``Aι+B`` where ``A``,``B`` are the poloidal and - toroidal Fourier resolution of |B|, respectively, in straight-field line - PEST coordinates, and ι is the rotational transform normalized by 2π. - A tighter upper bound than ``num_well=(Aι+B)*num_transit`` is preferable. - The ``check_points`` or ``plot`` methods in ``desc.integrals.Bounce2D`` - are useful to select a reasonable value. - num_quad : int - Resolution for quadrature of bounce integrals. Default is 32. - num_pitch : int - Resolution for quadrature over velocity coordinate. Default is 64. - batch_size : int - Number of pitch values with which to compute simultaneously. - If given ``None``, then ``batch_size`` defaults to ``num_pitch``. - Nemov : bool - Whether to use the Γ_c as defined by Nemov et al. or Velasco et al. - Default is Nemov. Set to ``False`` to use Velascos's. - - Nemov's Γ_c converges to a finite nonzero value in the infinity limit - of the number of toroidal transits. Velasco's expression has a secular - term that drives the result to zero as the number of toroidal transits - increases if the secular term is not averaged out from the singular - integrals. Currently, an optimization using Velasco's metric may need - to be evaluated by measuring decrease in Γ_c at a fixed number of toroidal - transits. - - """ - - __doc__ = __doc__.rstrip() + collect_docs( - target_default="``target=0``.", - bounds_default="``target=0``.", - normalize_detail=" Note: Has no effect for this objective.", - normalize_target_detail=" Note: Has no effect for this objective.", - overwrite=_bounce_overwrite, - ) - - _coordinates = "r" - _units = "~" - _print_value_fmt = "Γ_c: " - - def __init__( - self, - eq, - *, - target=None, - bounds=None, - weight=1, - normalize=True, - normalize_target=True, - loss_function=None, - deriv_mode="fwd", - jac_chunk_size=None, - name="Gamma_c", - grid=None, - X=16, # X is cheap to increase. - Y=32, - # Y_B is expensive to increase if one does not fix num well per transit. - Y_B=None, - num_transit=20, - num_well=None, - num_quad=32, - num_pitch=64, - batch_size=None, - Nemov=True, - ): - if target is None and bounds is None: - target = 0.0 - - self._grid = grid - self._constants = {"quad_weights": 1.0} - self._X = X - self._Y = Y - Y_B = setdefault(Y_B, 2 * Y) - self._hyperparam = { - "Y_B": Y_B, - "num_transit": num_transit, - "num_well": setdefault(num_well, Y_B * num_transit), - "num_quad": num_quad, - "num_pitch": num_pitch, - "batch_size": batch_size, - } - self._key = "Gamma_c" if Nemov else "Gamma_c Velasco" - if deriv_mode == "rev" and jac_chunk_size is None: - # Reverse mode is bottlenecked by coordinate mapping. - # Compute Jacobian one flux surface at a time. - jac_chunk_size = 1 - - super().__init__( - things=eq, - target=target, - bounds=bounds, - weight=weight, - normalize=normalize, - normalize_target=normalize_target, - loss_function=loss_function, - deriv_mode=deriv_mode, - name=name, - jac_chunk_size=jac_chunk_size, - ) - - def build(self, use_jit=True, verbose=1): - """Build constant arrays. - - Parameters - ---------- - use_jit : bool, optional - Whether to just-in-time compile the objective and derivatives. - verbose : int, optional - Level of output. - - """ - eq = self.things[0] - if self._grid is None: - self._grid = LinearGrid(M=eq.M_grid, N=eq.N_grid, NFP=eq.NFP, sym=False) - assert self._grid.can_fft2 - self._constants["clebsch"] = FourierChebyshevSeries.nodes( - self._X, - self._Y, - self._grid.compress(self._grid.nodes[:, 0]), - domain=(0, 2 * np.pi), - ) - self._constants["fieldline quad"] = leggauss(self._hyperparam["Y_B"] // 2) - self._constants["quad"] = get_quadrature( - leggauss(self._hyperparam.pop("num_quad")), - (automorphism_sin, grad_automorphism_sin), - ) - - self._dim_f = self._grid.num_rho - self._target, self._bounds = _parse_callable_target_bounds( - self._target, self._bounds, self._grid.compress(self._grid.nodes[:, 0]) - ) - - timer = Timer() - if verbose > 0: - print("Precomputing transforms") - timer.start("Precomputing transforms") - self._constants["transforms"] = get_transforms(self._key, eq, grid=self._grid) - self._constants["profiles"] = get_profiles(self._key, eq, grid=self._grid) - timer.stop("Precomputing transforms") - if verbose > 1: - timer.disp("Precomputing transforms") - - super().build(use_jit=use_jit, verbose=verbose) - - def compute(self, params, constants=None): - """Compute Γ_c. - - Parameters - ---------- - params : dict - Dictionary of equilibrium degrees of freedom, e.g. - ``Equilibrium.params_dict``. - constants : dict - Dictionary of constant data, e.g. transforms, profiles etc. - Defaults to ``self.constants``. - - Returns - ------- - Gamma_c : ndarray - Γ_c as a function of the flux surface label. - - """ - if constants is None: - constants = self.constants - eq = self.things[0] - data = compute_fun( - eq, "iota", params, constants["transforms"], constants["profiles"] - ) - # TODO (#1034): Use old theta values as initial guess. - theta = Bounce2D.compute_theta( - eq, - self._X, - self._Y, - iota=constants["transforms"]["grid"].compress(data["iota"]), - clebsch=constants["clebsch"], - # Pass in params so that root finding is done with the new - # perturbed λ coefficients and not the original equilibrium's. - params=params, - ) - data = compute_fun( - eq, - self._key, - params, - constants["transforms"], - constants["profiles"], - data, - theta=theta, - fieldline_quad=constants["fieldline quad"], - quad=constants["quad"], - **self._hyperparam, - ) - return constants["transforms"]["grid"].compress(data[self._key]) diff --git a/tests/test_fast_ion.py b/tests/test_fast_ion.py new file mode 100644 index 0000000000..debc315273 --- /dev/null +++ b/tests/test_fast_ion.py @@ -0,0 +1,99 @@ +"""Test fast ion compute functions.""" + +import matplotlib.pyplot as plt +import numpy as np +import pytest +from tests.test_plotting import tol_1d + +from desc.equilibrium.coords import get_rtz_grid +from desc.examples import get +from desc.grid import LinearGrid +from desc.integrals import Bounce2D + + +@pytest.mark.unit +@pytest.mark.slow +@pytest.mark.mpl_image_compare(remove_text=True, tolerance=tol_1d) +def test_Gamma_c_Nemov(): + """Test Γ_c Nemov with W7-X.""" + eq = get("W7-X") + rho = np.linspace(1e-12, 1, 10) + grid = LinearGrid(rho=rho, M=eq.M_grid, N=eq.N_grid, NFP=eq.NFP, sym=False) + num_transit = 10 + data = eq.compute( + "Gamma_c", + grid=grid, + theta=Bounce2D.compute_theta(eq, X=32, Y=64, rho=rho), + Y_B=128, + num_transit=num_transit, + num_well=20 * num_transit, + ) + assert np.isfinite(data["Gamma_c"]).all() + fig, ax = plt.subplots() + ax.plot(rho, grid.compress(data["Gamma_c"]), marker="o") + return fig + + +@pytest.mark.unit +@pytest.mark.slow +@pytest.mark.mpl_image_compare(remove_text=True, tolerance=tol_1d) +def test_Gamma_c_Velasco(): + """Test Γ_c Velasco with W7-X.""" + eq = get("W7-X") + rho = np.linspace(1e-12, 1, 10) + grid = LinearGrid(rho=rho, M=eq.M_grid, N=eq.N_grid, NFP=eq.NFP, sym=False) + num_transit = 10 + data = eq.compute( + "Gamma_c Velasco", + grid=grid, + theta=Bounce2D.compute_theta(eq, X=32, Y=64, rho=rho), + Y_B=128, + num_transit=num_transit, + num_well=20 * num_transit, + ) + assert np.isfinite(data["Gamma_c Velasco"]).all() + fig, ax = plt.subplots() + ax.plot(rho, grid.compress(data["Gamma_c Velasco"]), marker="o") + return fig + + +@pytest.mark.unit +@pytest.mark.slow +@pytest.mark.mpl_image_compare(remove_text=True, tolerance=tol_1d) +def test_Gamma_c_Nemov_1D(): + """Test Γ_c Nemov 1D with W7-X.""" + eq = get("W7-X") + Y_B = 100 + num_transit = 10 + num_well = 20 * num_transit + rho = np.linspace(0, 1, 10) + alpha = np.array([0]) + zeta = np.linspace(0, num_transit * 2 * np.pi, num_transit * Y_B) + grid = get_rtz_grid(eq, rho, alpha, zeta, coordinates="raz") + data = eq.compute("deprecated(Gamma_c)", grid=grid, num_well=num_well) + + assert np.isfinite(data["deprecated(Gamma_c)"]).all() + fig, ax = plt.subplots() + ax.plot(rho, grid.compress(data["deprecated(Gamma_c)"]), marker="o") + return fig + + +@pytest.mark.unit +@pytest.mark.slow +@pytest.mark.mpl_image_compare(remove_text=True, tolerance=tol_1d) +def test_Gamma_c_Velasco_1D(): + """Test Γ_c Velasco 1D with W7-X.""" + eq = get("W7-X") + Y_B = 100 + num_transit = 10 + num_well = 20 * num_transit + rho = np.linspace(0, 1, 10) + alpha = np.array([0]) + zeta = np.linspace(0, num_transit * 2 * np.pi, num_transit * Y_B) + grid = get_rtz_grid(eq, rho, alpha, zeta, coordinates="raz") + data = eq.compute("deprecated(Gamma_c Velasco)", grid=grid, num_well=num_well) + + assert np.isfinite(data["deprecated(Gamma_c Velasco)"]).all() + fig, ax = plt.subplots() + ax.plot(rho, grid.compress(data["deprecated(Gamma_c Velasco)"]), marker="o") + return fig diff --git a/tests/test_integrals.py b/tests/test_integrals.py index f1f56e80a7..1ff569ae4f 100644 --- a/tests/test_integrals.py +++ b/tests/test_integrals.py @@ -35,9 +35,9 @@ surface_variance, virtual_casing_biot_savart, ) -from desc.integrals._basis import FourierChebyshevSeries from desc.integrals._bounce_utils import _get_extrema, bounce_points, interp_to_argmin from desc.integrals._interp_utils import fourier_pts +from desc.integrals.basis import FourierChebyshevSeries from desc.integrals.quad_utils import ( automorphism_sin, bijection_from_disc, diff --git a/tests/test_interp_utils.py b/tests/test_interp_utils.py index 7c4bfd97a0..265de4b821 100644 --- a/tests/test_interp_utils.py +++ b/tests/test_interp_utils.py @@ -14,7 +14,6 @@ from scipy.fft import idct as sidct from desc.backend import dct, idct, rfft -from desc.integrals._basis import FourierChebyshevSeries from desc.integrals._interp_utils import ( cheb_from_dct, cheb_pts, @@ -28,6 +27,7 @@ polyroot_vec, polyval_vec, ) +from desc.integrals.basis import FourierChebyshevSeries from desc.integrals.quad_utils import bijection_to_disc diff --git a/tests/test_neoclassical.py b/tests/test_neoclassical.py index 3f2b0c8814..d1dfd11625 100644 --- a/tests/test_neoclassical.py +++ b/tests/test_neoclassical.py @@ -1,4 +1,4 @@ -"""Test for neoclassical transport compute functions.""" +"""Test neoclassical transport compute functions.""" from datetime import datetime @@ -7,6 +7,7 @@ import pytest from tests.test_plotting import tol_1d +from desc.equilibrium.coords import get_rtz_grid from desc.examples import get from desc.grid import LinearGrid from desc.integrals import Bounce2D @@ -47,47 +48,71 @@ def test_effective_ripple(): @pytest.mark.unit @pytest.mark.slow @pytest.mark.mpl_image_compare(remove_text=True, tolerance=tol_1d) -def test_Gamma_c_Nemov(): - """Test Γ_c Nemov with W7-X.""" +def test_effective_ripple_1D(): + """Test effective ripple 1D with W7-X against NEO.""" eq = get("W7-X") - rho = np.linspace(1e-12, 1, 10) - grid = LinearGrid(rho=rho, M=eq.M_grid, N=eq.N_grid, NFP=eq.NFP, sym=False) + Y_B = 100 num_transit = 10 - data = eq.compute( - "Gamma_c", - grid=grid, - theta=Bounce2D.compute_theta(eq, X=32, Y=64, rho=rho), - Y_B=128, - num_transit=num_transit, - num_well=20 * num_transit, + num_well = 20 * num_transit + rho = np.linspace(0, 1, 10) + alpha = np.array([0]) + zeta = np.linspace(0, num_transit * 2 * np.pi, num_transit * Y_B) + grid = get_rtz_grid(eq, rho, alpha, zeta, coordinates="raz") + data = eq.compute("deprecated(effective ripple)", grid=grid, num_well=num_well) + + assert np.isfinite(data["deprecated(effective ripple)"]).all() + np.testing.assert_allclose( + data["deprecated(effective ripple 3/2)"] ** (2 / 3), + data["deprecated(effective ripple)"], + err_msg="Bug in source grid logic in eq.compute.", ) - assert np.isfinite(data["Gamma_c"]).all() + eps_32 = grid.compress(data["deprecated(effective ripple 3/2)"]) + neo_rho, neo_eps_32 = NeoIO.read("tests/inputs/neo_out.w7x") + np.testing.assert_allclose(eps_32, np.interp(rho, neo_rho, neo_eps_32), rtol=0.16) + fig, ax = plt.subplots() - ax.plot(rho, grid.compress(data["Gamma_c"]), marker="o") + ax.plot(rho, eps_32, marker="o") + ax.plot(neo_rho, neo_eps_32) return fig @pytest.mark.unit @pytest.mark.slow -@pytest.mark.mpl_image_compare(remove_text=True, tolerance=tol_1d) -def test_Gamma_c_Velasco(): - """Test Γ_c Velasco with W7-X.""" +def test_fieldline_average(): + """Test that fieldline average converges to surface average.""" + rho = np.array([1]) + alpha = np.array([0]) + eq = get("DSHAPE") + iota_grid = LinearGrid(rho=rho, M=eq.M_grid, N=eq.N_grid, NFP=eq.NFP, sym=eq.sym) + iota = iota_grid.compress(eq.compute("iota", grid=iota_grid)["iota"]).item() + # For axisymmetric devices, one poloidal transit must be exact. + zeta = np.linspace(0, 2 * np.pi / iota, 25) + grid = get_rtz_grid(eq, rho, alpha, zeta, coordinates="raz") + data = eq.compute( + ["fieldline length", "fieldline length/volume", "V_r(r)"], grid=grid + ) + np.testing.assert_allclose( + data["fieldline length"] / data["fieldline length/volume"], + data["V_r(r)"] / (4 * np.pi**2), + rtol=1e-3, + ) + assert np.all(data["fieldline length"] > 0) + assert np.all(data["fieldline length/volume"] > 0) + + # Otherwise, many toroidal transits are necessary to sample surface. eq = get("W7-X") - rho = np.linspace(1e-12, 1, 10) - grid = LinearGrid(rho=rho, M=eq.M_grid, N=eq.N_grid, NFP=eq.NFP, sym=False) - num_transit = 10 + zeta = np.linspace(0, 40 * np.pi, 300) + grid = get_rtz_grid(eq, rho, alpha, zeta, coordinates="raz") data = eq.compute( - "Gamma_c Velasco", - grid=grid, - theta=Bounce2D.compute_theta(eq, X=32, Y=64, rho=rho), - Y_B=128, - num_transit=num_transit, - num_well=20 * num_transit, + ["fieldline length", "fieldline length/volume", "V_r(r)"], grid=grid ) - assert np.isfinite(data["Gamma_c Velasco"]).all() - fig, ax = plt.subplots() - ax.plot(rho, grid.compress(data["Gamma_c Velasco"]), marker="o") - return fig + np.testing.assert_allclose( + data["fieldline length"] / data["fieldline length/volume"], + data["V_r(r)"] / (4 * np.pi**2), + rtol=2e-3, + ) + assert np.all(data["fieldline length"] > 0) + assert np.all(data["fieldline length/volume"] > 0) class NeoIO: diff --git a/tests/test_neoclassical_1D.py b/tests/test_neoclassical_1D.py deleted file mode 100644 index 0b56c76e27..0000000000 --- a/tests/test_neoclassical_1D.py +++ /dev/null @@ -1,124 +0,0 @@ -"""Tests for deprecated compute functions for neoclassical transport.""" - -import matplotlib.pyplot as plt -import numpy as np -import pytest -from tests.test_plotting import tol_1d - -from desc.equilibrium.coords import get_rtz_grid -from desc.examples import get -from desc.grid import LinearGrid - -from .test_neoclassical import NeoIO - - -@pytest.mark.unit -@pytest.mark.slow -def test_fieldline_average(): - """Test that fieldline average converges to surface average.""" - rho = np.array([1]) - alpha = np.array([0]) - eq = get("DSHAPE") - iota_grid = LinearGrid(rho=rho, M=eq.M_grid, N=eq.N_grid, NFP=eq.NFP, sym=eq.sym) - iota = iota_grid.compress(eq.compute("iota", grid=iota_grid)["iota"]).item() - # For axisymmetric devices, one poloidal transit must be exact. - zeta = np.linspace(0, 2 * np.pi / iota, 25) - grid = get_rtz_grid(eq, rho, alpha, zeta, coordinates="raz") - data = eq.compute( - ["fieldline length", "fieldline length/volume", "V_r(r)"], grid=grid - ) - np.testing.assert_allclose( - data["fieldline length"] / data["fieldline length/volume"], - data["V_r(r)"] / (4 * np.pi**2), - rtol=1e-3, - ) - assert np.all(data["fieldline length"] > 0) - assert np.all(data["fieldline length/volume"] > 0) - - # Otherwise, many toroidal transits are necessary to sample surface. - eq = get("W7-X") - zeta = np.linspace(0, 40 * np.pi, 300) - grid = get_rtz_grid(eq, rho, alpha, zeta, coordinates="raz") - data = eq.compute( - ["fieldline length", "fieldline length/volume", "V_r(r)"], grid=grid - ) - np.testing.assert_allclose( - data["fieldline length"] / data["fieldline length/volume"], - data["V_r(r)"] / (4 * np.pi**2), - rtol=2e-3, - ) - assert np.all(data["fieldline length"] > 0) - assert np.all(data["fieldline length/volume"] > 0) - - -@pytest.mark.unit -@pytest.mark.slow -@pytest.mark.mpl_image_compare(remove_text=True, tolerance=tol_1d) -def test_effective_ripple_1D(): - """Test effective ripple 1D with W7-X against NEO.""" - eq = get("W7-X") - Y_B = 100 - num_transit = 10 - num_well = 20 * num_transit - rho = np.linspace(0, 1, 10) - alpha = np.array([0]) - zeta = np.linspace(0, num_transit * 2 * np.pi, num_transit * Y_B) - grid = get_rtz_grid(eq, rho, alpha, zeta, coordinates="raz") - data = eq.compute("deprecated(effective ripple)", grid=grid, num_well=num_well) - - assert np.isfinite(data["deprecated(effective ripple)"]).all() - np.testing.assert_allclose( - data["deprecated(effective ripple 3/2)"] ** (2 / 3), - data["deprecated(effective ripple)"], - err_msg="Bug in source grid logic in eq.compute.", - ) - eps_32 = grid.compress(data["deprecated(effective ripple 3/2)"]) - neo_rho, neo_eps_32 = NeoIO.read("tests/inputs/neo_out.w7x") - np.testing.assert_allclose(eps_32, np.interp(rho, neo_rho, neo_eps_32), rtol=0.16) - - fig, ax = plt.subplots() - ax.plot(rho, eps_32, marker="o") - ax.plot(neo_rho, neo_eps_32) - return fig - - -@pytest.mark.unit -@pytest.mark.slow -@pytest.mark.mpl_image_compare(remove_text=True, tolerance=tol_1d) -def test_Gamma_c_Nemov_1D(): - """Test Γ_c Nemov 1D with W7-X.""" - eq = get("W7-X") - Y_B = 100 - num_transit = 10 - num_well = 20 * num_transit - rho = np.linspace(0, 1, 10) - alpha = np.array([0]) - zeta = np.linspace(0, num_transit * 2 * np.pi, num_transit * Y_B) - grid = get_rtz_grid(eq, rho, alpha, zeta, coordinates="raz") - data = eq.compute("deprecated(Gamma_c)", grid=grid, num_well=num_well) - - assert np.isfinite(data["deprecated(Gamma_c)"]).all() - fig, ax = plt.subplots() - ax.plot(rho, grid.compress(data["deprecated(Gamma_c)"]), marker="o") - return fig - - -@pytest.mark.unit -@pytest.mark.slow -@pytest.mark.mpl_image_compare(remove_text=True, tolerance=tol_1d) -def test_Gamma_c_Velasco_1D(): - """Test Γ_c Velasco 1D with W7-X.""" - eq = get("W7-X") - Y_B = 100 - num_transit = 10 - num_well = 20 * num_transit - rho = np.linspace(0, 1, 10) - alpha = np.array([0]) - zeta = np.linspace(0, num_transit * 2 * np.pi, num_transit * Y_B) - grid = get_rtz_grid(eq, rho, alpha, zeta, coordinates="raz") - data = eq.compute("deprecated(Gamma_c Velasco)", grid=grid, num_well=num_well) - - assert np.isfinite(data["deprecated(Gamma_c Velasco)"]).all() - fig, ax = plt.subplots() - ax.plot(rho, grid.compress(data["deprecated(Gamma_c Velasco)"]), marker="o") - return fig From 8cbbac89ffae2a88617b65586a3594a6ddc8bc68 Mon Sep 17 00:00:00 2001 From: unalmis Date: Thu, 19 Dec 2024 03:03:38 -0500 Subject: [PATCH 46/60] Review requests --- desc/compute/_deprecated.py | 4 +- desc/compute/_fast_ion.py | 4 +- desc/compute/_neoclassical.py | 2 +- desc/integrals/bounce_integral.py | 2 +- desc/objectives/_fast_ion.py | 6 +- desc/objectives/_neoclassical.py | 2 +- .../notebooks/tutorials/EffectiveRipple.ipynb | 331 +++++++++++++----- 7 files changed, 260 insertions(+), 91 deletions(-) diff --git a/desc/compute/_deprecated.py b/desc/compute/_deprecated.py index 8f30d654bb..bcce0db5b7 100644 --- a/desc/compute/_deprecated.py +++ b/desc/compute/_deprecated.py @@ -235,10 +235,10 @@ def _Gamma_c_1D(params, transforms, profiles, data, **kwargs): A 3D stellarator magnetic field admits ripple wells that lead to enhanced radial drift of trapped particles. The energetic particle confinement metric γ_c quantifies whether the contours of the second adiabatic invariant - close on the flux surfaces. In the limit the poloidal drift velocity + close on the flux surfaces. In the limit where the poloidal drift velocity majorizes the radial drift velocity, the contours lie parallel to flux surfaces. The optimization metric Γ_c averages γ_c² over the distribution - of trapped articles on each flux surface. + of trapped particles on each flux surface. The radial electric field has a negligible effect, since fast particles have high energy with collisionless orbits, so it is assumed to be zero. diff --git a/desc/compute/_fast_ion.py b/desc/compute/_fast_ion.py index e81847ccb0..b24c24fcba 100644 --- a/desc/compute/_fast_ion.py +++ b/desc/compute/_fast_ion.py @@ -114,10 +114,10 @@ def _Gamma_c(params, transforms, profiles, data, **kwargs): A 3D stellarator magnetic field admits ripple wells that lead to enhanced radial drift of trapped particles. The energetic particle confinement metric γ_c quantifies whether the contours of the second adiabatic invariant - close on the flux surfaces. In the limit the poloidal drift velocity + close on the flux surfaces. In the limit where the poloidal drift velocity majorizes the radial drift velocity, the contours lie parallel to flux surfaces. The optimization metric Γ_c averages γ_c² over the distribution - of trapped articles on each flux surface. + of trapped particles on each flux surface. The radial electric field has a negligible effect, since fast particles have high energy with collisionless orbits, so it is assumed to be zero. diff --git a/desc/compute/_neoclassical.py b/desc/compute/_neoclassical.py index 6123d125cb..f877bf231c 100644 --- a/desc/compute/_neoclassical.py +++ b/desc/compute/_neoclassical.py @@ -19,7 +19,7 @@ Use the ``Bounce2D.compute_theta`` method to obtain this. """, "Y_B": """int : - Desired resolution for |B| along field lines to compute bounce points. + Desired resolution for algorithm to compute bounce points. Default is double ``Y``. """, "num_transit": """int : diff --git a/desc/integrals/bounce_integral.py b/desc/integrals/bounce_integral.py index 40a3acf1af..c027ee4224 100644 --- a/desc/integrals/bounce_integral.py +++ b/desc/integrals/bounce_integral.py @@ -267,7 +267,7 @@ def __init__( ``FourierChebyshevSeries.nodes(X,Y,rho,domain=(0,2*jnp.pi))``. Use the ``Bounce2D.compute_theta`` method to obtain this. Y_B : int - Desired resolution for |B| along field lines to compute bounce points. + Desired resolution for algorithm to compute bounce points. Default is double ``Y``. alpha : float Starting field line poloidal label. diff --git a/desc/objectives/_fast_ion.py b/desc/objectives/_fast_ion.py index 6e98dfc861..32d46f75fa 100644 --- a/desc/objectives/_fast_ion.py +++ b/desc/objectives/_fast_ion.py @@ -26,10 +26,10 @@ class GammaC(_Objective): A 3D stellarator magnetic field admits ripple wells that lead to enhanced radial drift of trapped particles. The energetic particle confinement metric γ_c quantifies whether the contours of the second adiabatic invariant - close on the flux surfaces. In the limit the poloidal drift velocity + close on the flux surfaces. In the limit where the poloidal drift velocity majorizes the radial drift velocity, the contours lie parallel to flux surfaces. The optimization metric Γ_c averages γ_c² over the distribution - of trapped articles on each flux surface. + of trapped particles on each flux surface. The radial electric field has a negligible effect, since fast particles have high energy with collisionless orbits, so it is assumed to be zero. @@ -66,7 +66,7 @@ class GammaC(_Objective): Desired resolution for algorithm to compute bounce points. Default is double ``Y``. Something like 100 is usually sufficient. Currently, this is the number of knots per toroidal transit over - to approximate |B| with cubic splines to find bounce points. + to approximate |B| with cubic splines. num_transit : int Number of toroidal transits to follow field line. For axisymmetric devices, one poloidal transit is sufficient. Otherwise, diff --git a/desc/objectives/_neoclassical.py b/desc/objectives/_neoclassical.py index 4483342cee..d6ad08082e 100644 --- a/desc/objectives/_neoclassical.py +++ b/desc/objectives/_neoclassical.py @@ -65,7 +65,7 @@ class EffectiveRipple(_Objective): Desired resolution for algorithm to compute bounce points. Default is double ``Y``. Something like 100 is usually sufficient. Currently, this is the number of knots per toroidal transit over - to approximate |B| with cubic splines to find bounce points. + to approximate |B| with cubic splines. num_transit : int Number of toroidal transits to follow field line. For axisymmetric devices, one poloidal transit is sufficient. Otherwise, diff --git a/docs/notebooks/tutorials/EffectiveRipple.ipynb b/docs/notebooks/tutorials/EffectiveRipple.ipynb index 389f0920f5..9299d4c32a 100644 --- a/docs/notebooks/tutorials/EffectiveRipple.ipynb +++ b/docs/notebooks/tutorials/EffectiveRipple.ipynb @@ -1,12 +1,52 @@ { "cells": [ + { + "cell_type": "markdown", + "id": "988097b0-18ad-4202-8dea-3423bfcaecbe", + "metadata": {}, + "source": [ + "# Introduction\n", + "- In this tutorial, we will show how to optimize for the effective ripple in DESC.\n", + "The computation involves integration over ripple wells whose structure determines the optimal resolution for the optimization.\n", + "So we will also breifly show how to visualize the ripples and accordingly pick resolution parameters.\n", + "The same tutorial can be used to optimize for fast ion confinement with Γ_c. To do so, replace the objective ``EffectiveRipple`` with ``GammaC``.\n", + "\n", + "- Note that there is still work in progress to improve the performance in DESC by an order of magnitude. See the GitHub issues linked in the objective docstring if you would like to contribute.\n", + "\n", + "## Neoclassical transport in banana regime\n", + "A 3D stellarator magnetic field admits ripple wells that lead to enhanced\n", + "radial drift of trapped particles. In the banana regime, neoclassical (thermal)\n", + "transport from ripple wells can become the dominant transport channel.\n", + "The effective ripple (ε) proxy estimates the neoclassical transport\n", + "coefficients in the banana regime. To ensure low neoclassical transport,\n", + "a stellarator is typically optimized so that ε < 0.02.\n", + "\n", + "## Fast ion confinement \n", + "A 3D stellarator magnetic field admits ripple wells that lead to enhanced\n", + "radial drift of trapped particles. The energetic particle confinement\n", + "metric γ_c quantifies whether the contours of the second adiabatic invariant\n", + "close on the flux surfaces. In the limit where the poloidal drift velocity\n", + "majorizes the radial drift velocity, the contours lie parallel to flux\n", + "surfaces. The optimization metric Γ_c averages γ_c² over the distribution\n", + "of trapped particles on each flux surface.\n", + "The radial electric field has a negligible effect, since fast particles\n", + "have high energy with collisionless orbits, so it is assumed to be zero.\n", + "\n", + "## References\n", + "- [Evaluation of 1/ν neoclassical transport in stellarators.](https://doi.org/10.1063/1.873749.)\n", + "V. V. Nemov, S. V. Kasilov, W. Kernbichler, M. F. Heyn.\n", + "Phys. Plasmas 1 December 1999; 6 (12): 4622–4632.\n", + "- [Poloidal motion of trapped particle orbits in real-space coordinates.](\n", + "https://doi.org/10.1063/1.2912456)\n", + "V. V. Nemov, S. V. Kasilov, W. Kernbichler, G. O. Leitold.\n", + "Phys. Plasmas 1 May 2008; 15 (5): 052501." + ] + }, { "cell_type": "code", "execution_count": null, "id": "a831f199-3399-4b52-a11e-cf35f73c075f", - "metadata": { - "scrolled": true - }, + "metadata": {}, "outputs": [], "source": [ "from desc.integrals import Bounce2D\n", @@ -31,6 +71,25 @@ "import numpy as np" ] }, + { + "cell_type": "markdown", + "id": "257d4c55-3387-43bf-8258-f246c3b19e11", + "metadata": {}, + "source": [ + "## Documentation\n", + "Please read the full documentation of the methods to understand what the input parameters do. In Jupyter Lab, you can click on the code and press ``Shift+Tab`` to pull up the documentation. Breifly,\n", + "- The equilibrium resolution determines the spectral resolution of the FourierZernike series fit to the boundary.\n", + "- The grid determines the flux surfaces to compute on and the resolution of FFTs.\n", + "- The parameters ``X`` and ``Y`` determine the spectral resolution of the map between coordinates that parameterize the boundary and field line coordinates.\n", + "- The parameter ``Y_B`` determines the resolution for the bounce point finding algorithm. Feel free to reduce this until the plots of |B| along field lines do not change. If |B| is high frequency, then a larger value will be needed (usually much larger than ``Y``).\n", + "\n", + "## Plotting ripple wells\n", + "\n", + "- Here we plot $\\vert B\\vert$ along field lines to see the structure of the ripple wells. This is beneficial to choose the resolution for the optimization.\n", + "\n", + "- Due to limitations in JAX, it is recommended to plot the field lines and pick a reasonable, yet preferably tight, upper bound on the number of ripple wells. From the plots, we see that ``num_well=10 * num_transit`` is a reasonable upper bound. By making this extra effort, the optimization will be ``Y_B/10`` times more performant. If one were to select something much less than ``10``, as shown in the next example, then it should be clear from the plot that some ripple wells are ignored, which is not desirable." + ] + }, { "cell_type": "code", "execution_count": 2, @@ -62,7 +121,7 @@ " ``FourierChebyshevSeries.nodes(X,Y,rho,domain=(0,2*jnp.pi))``.\n", " Use the ``Bounce2D.compute_theta`` method to obtain this.\n", " Y_B : int\n", - " Desired resolution for |B| along field lines to compute bounce points.\n", + " Desired resolution for algorithm to compute bounce points.\n", " Default is double ``Y``.\n", " num_transit : int\n", " Number of toroidal transits to follow field line.\n", @@ -102,14 +161,6 @@ " return plots" ] }, - { - "cell_type": "markdown", - "id": "257d4c55-3387-43bf-8258-f246c3b19e11", - "metadata": {}, - "source": [ - "## Plotting field lines" - ] - }, { "cell_type": "code", "execution_count": 3, @@ -117,30 +168,148 @@ "metadata": { "scrolled": true }, - "outputs": [], + "outputs": [ + { + "data": { + "image/png": "iVBORw0KGgoAAAANSUhEUgAAAnYAAAHWCAYAAAD6oMSKAAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjkuMiwgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy8hTgPZAAAACXBIWXMAAA9hAAAPYQGoP6dpAAD+rklEQVR4nOy9d3wc5Z34/57ZqlXvliVbrmBswIDBmF4CGHCcRijJ5eBIOwImR8iFHCkHl/wSviEJl4QQQi4XIOZKLkcoOVwwECCATXHBgAuWu9X7aiVtnfn9MfvMrmyVXWl3ZnY979dLL7A0u/N8ns/MPJ/5tEdSVVXFxsbGxsbGxsYm55HNHoCNjY2NjY2NjU1msA07GxsbGxsbG5s8wTbsbGxsbGxsbGzyBNuws7GxsbGxsbHJE2zDzsbGxsbGxsYmT7ANOxsbGxsbGxubPME27GxsbGxsbGxs8gTbsLOxsbGxsbGxyRNsw87GxsbGxsbGJk+wDTsbGxsbGxsbmzzBNuxsbGxsbGxsbPIE27CzsbE5hieeeAJJkkb9ufLKK0f9zGOPPYYkSRw4cMDYwaZJrozz3nvvRZIkurq6Uv7M/fffz4IFC1AURf/drFmzuPfee6c0ltG+49e//jUzZ84kFApN6buNIlvzAKPPO0x8H+XaHAaDQVwuF2VlZVOeS5vsYRt2NjmJWJzfeeedtD/7xhtvcO+999LX15f5gZlANuQ59dRTWb16NatXr+axxx5jyZIlAOMadjbm4vf7+dGPfsQ3v/lNZHniR/v69euPMTZKSkpYunQpTz/99ISf/7u/+zvC4TCPPPJIBkY/Ntm8X6c6BzD+vE90Hxk1hwCBQIB77rmHK6+8koqKCiRJ4rHHHhvzeEVRqK6u5v7779d/F41G+e1vf0tjYyPf+9736OjoyPq4bdLHNuxsjjveeOMN/uVf/iWvDLtMy3Pqqafyuc99josvvphHHnmEzZs3c/7557N582buuOOOUT/zt3/7twwPD9PY2JixcWSDXBlnuvzud78jGo3ymc98JqXj3333XQB+8YtfsHr1ah5//HG++c1vcvDgQa699lp27do17ue9Xi833XQTDzzwAKqqTnn8Y5HN+3WqcwDjz/tE95FRcwjQ1dXF9773PXbu3MnixYsnPP6tt96iq6uLFStW6L8rKiripptu4q677kJVVbZv357NIdtMEqfZA7CxyRcGBwcpLCw0exgZ4/333+eKK66gu7ubn//859x+++1IkjTm8Q6HA4fDYeAIJ0emx2kVvT/66KN87GMfw+v1pnT89u3bKSsr4/bbbx/x+6qqKm655Ra2bdvGggULxv2O6667jvvvv5+//OUvXHrppZMeu1lkYg4mmveJ7iOj5rCuro7W1lamTZvGO++8w1lnnTXu8WvWrKGxsZFFixYd8zfxu507d3LZZZdlZbw2k8f22NnkBSIfqampib/7u7+jrKyM0tJSbr75ZoaGhkYc941vfAOA2bNn6+EXkW/V3NzM5z//eWpra/F4PCxatIjf/e53Y55vx44dfPazn6W8vJzzzz8fgIGBAe644w5mzZqFx+OhpqaGyy+/nC1btuifT/U8zc3NfOELX2D69Ol4PB5mz57NV77yFcLh8ITypDKOsThw4ACXXXYZoVCIV155ha9+9avjGnUweu5aqnoZj1TmSpxn165dXHfddZSUlFBZWck//MM/EAwGJxznyy+/zJlnnonX62Xu3Lk88sgj+neOdp7R9H7w4EFuvfVWTjzxRAoKCqisrOTaa689JpcvnbEC9PX1TTh3+/fvZ/v27Wktsu+++y5nnHHGMb9va2sD4KSTTprwO5YsWUJFRQXPPPPMhMdO5nqc6H6dKlOdg4nmPZX7KJ05nAoej4dp06alfPxzzz03wluXjLhOd+zYkZGx2WQW22Nnk1dcd911zJ49m/vuu48tW7bw29/+lpqaGn70ox8B8KlPfYoPP/yQ//qv/+Jf//VfqaqqAqC6upr29naWLVuGJEmsWrWK6upq1q5dyxe+8AX8fv+oIchrr72W+fPn88Mf/lAPpdxyyy387//+L6tWrWLhwoV0d3fz2muvsXPnTs4444yUz9PS0sLSpUvp6+vjy1/+MgsWLKC5uZn//d//ZWhoCLfbPa48X/7yl8cdx1goisJnP/tZBgcHefXVVzn99NOzrpexSFcn1113HbNmzeK+++5j06ZN/OIXv6C3t5ff//73Y55j69atXHnlldTV1fEv//IvxGIxvve971FdXT3mZ0bT+9tvv80bb7zBDTfcQENDAwcOHODhhx/m4osvZseOHfh8vkmNNZW5e+ONNwDG1Wsy4XCY3bt3c9FFF+nFGb29vaxfv54f/ehHrFq1KqVwnTjn66+/PuFxE90XozHe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z3PRRRfx5S9/mZNOOonW1lb++Mc/8tprr1FWVjamPBdccAEnnnjiuOMYjQULFrB8+XJ+/etf097ezhVXXMGsWbO49NJLcbvdU5n2SZGuTvbv38/HPvYxrrzySjZu3MgTTzzBZz/72XHbVtx77708//zznHfeeXzlK18hFovxy1/+kpNPPplt27alPNaPfvSjrF69mtLSUhYuXMjGjRt54YUXqKysHPX4yYx1LObMmcPJJ5/MCy+8wOc///lxjxW7LXR0dPDEE08AWk7Y888/z9q1a7nhhhu49tprUzrv5s2b6enp4eMf//i4x6VyX7z11ltccskl3HPPPSP2IR3rfn377bdHPT4VMjUHY817OvdRKnOYqRy7X/7yl/T19ekvMX/+85/1kPPtt99OT08PO3fu5OGHH9Y/E4lEuOOOO7jkkku4/vrrR3zfwoULbcPOihheh2tjkwHGanfS2dk56nFHtwD4/ve/r9bX16uyLI/4e3t7u3rbbbepM2bMUF0ulzpt2jT1Ix/5iPqb3/xmxOfHOl8oFFK/8Y1vqIsXL1aLi4vVwsJCdfHixeqvfvWrEcelep6DBw+qN954o1pdXa16PB51zpw56m233aaGQqFx5dm9e3dK4xiNgYEB9R//8R/VuXPnqm63WwXUq666asLPjdfuJFW9jEYqcyXOs2PHDvXTn/60WlxcrJaXl6urVq1Sh4eHJzz3iy++qJ5++umq2+1W586dq/72t79Vv/71r6ter3fEZ8eSR1VVtbe3V7355pvVqqoqtaioSF2+fLm6a9cutbGxUb3pppvSHmu6c/fAAw+oRUVFx7SoOLpFx/33339Mi4zi4mL1vPPOU//93/99RCudsb5D8M1vflOdOXPmqJ9JJpX7QrT0GO08o92v4x0/GskyTGYOxpqHseY91fso1TnMBI2NjeO2SfnlL3+plpaWqpFIZIR8TqdTff/994/5vjvvvFOVJGnUdi825mEbdjY2NuPyT//0Tyqg9vT0mD2UMRnP4JosH//4x9V58+Zl7PsE2RirqqpqX1+fWlFRof72t78d8fvxetClymjfEQwG1WnTpo3Z881qZGsexpr3oxntPrLaHF511VXqtddea/YwbKaInWNnY2MzLtXV1RQUFByzc0I+MTw8POLfe/bsYc2aNVx88cXmDGgSlJaWctddd/HjH/84pSrcqfLo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", + "text/plain": [ + "
" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "image/png": "iVBORw0KGgoAAAANSUhEUgAAAnYAAAHWCAYAAAD6oMSKAAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjkuMiwgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy8hTgPZAAAACXBIWXMAAA9hAAAPYQGoP6dpAAEAAElEQVR4nOydeZwcZZ3/31V9zfTck0wm9w0h4QhJMCQcEhAIIUbWA0XdBUF0EcJuZHdxo/7EYxUvPHYBUVFBdHd1RRAlIYRbJOEIGa4kkJB7MpnJMTM9PX131e+P6qe6OpmjZ6br6tTn9coLpru66vnU9zm+z/d6JFVVVTx48ODBgwcPHjy4HrLdDfDgwYMHDx48ePBQGniKnQcPHjx48ODBQ5nAU+w8ePDgwYMHDx7KBJ5i58GDBw8ePHjwUCbwFDsPHjx48ODBg4cygafYefDgwYMHDx48lAk8xc6DBw8ePHjw4KFM4Cl2Hjx48ODBgwcPZQJPsfPgwYMHDx48eCgTeIqdBw8ePHjw4MFDmcBT7Dx48ODBgwcPHsoEnmLnwcMJjt/85jdIktTnv8suu6zP39x3331IksTu3butbewQ4ZZ2fvWrX0WSJA4fPlz0b7773e9yyimnoCiK/tnUqVP56le/OqK29HWPe+65h8mTJ5NMJkd0b6tg1nuAvt87DD6O3PYOE4kEgUCA+vr6Eb9LD9bCU+w8OB5icX7llVeG/NsXXniBr371q3R1dZW+YTbADD5nnHEGDzzwAA888AD33XcfCxYsABhQsfNgLyKRCN/5znf4whe+gCwPPo2vW7fuOGWjtraWhQsX8vDDDw/6+0996lOkUil++tOflqD1/cPM8TrSdwADv/fBxpFV7xAgGo1y2223cdlll9HY2IgkSdx33339Xq8oCk1NTXz3u9/VP8tkMtx7771MmTKFr3/963R0dJjebg+lgafYeShrvPDCC3zta18rK8Wu1HzOOOMM/v7v/54lS5bw05/+lE2bNnHeeeexadMmVq1a1edv/uEf/oF4PM6UKVNK1g4z4JZ2DhW//OUvyWQyfPzjHy/q+tdeew2A//zP/+SBBx7g/vvv5wtf+AJ79uzhyiuvZNu2bQP+vqKigmuuuYYf/OAHqKo64vb3BzPH60jfAQz83gcbR1a9Q4DDhw/z9a9/na1btzJ37txBr3/ppZc4fPgwy5cv1z+rrq7mmmuu4dZbb0VVVV5//XUzm+yhhPDb3QAPHtyI3t5eqqqq7G5GyfDmm29y6aWXcuTIEX784x9z8803I0lSv9f7fD58Pp+FLRweSt1Op8j9V7/6FR/4wAeoqKgo6vrXX3+d+vp6br755oLPR48ezQ033EBLSwunnHLKgPf46Ec/yne/+12efvppLrroomG33S6U4h0M9t4HG0dWvcNx48bR1tbG2LFjeeWVV3jPe94z4PVr1qxhypQpnHrqqcd9Jz7bunUrF198sSnt9VBaeBY7D66DiEfasWMHn/rUp6ivr6euro5rr72WWCxWcN2//du/ATBt2jTd/SLirVpbW7nuuutobm4mFApx6qmn8stf/rLf523ZsoVPfOITNDQ0cN555wHQ09PDqlWrmDp1KqFQiDFjxnDJJZfw6quv6r8v9jmtra18+tOfZvz48YRCIaZNm8bnPvc5UqnUoHyKaUd/2L17NxdffDHJZJJnn32Wf/qnfxpQqYO+Y9eKlctAKOZdieds27aNj370o9TW1jJq1Cj++Z//mUQiMWg7n3nmGc466ywqKiqYMWMGP/3pT/V79vWcvuS+Z88ebrzxRmbNmkVlZSWjRo3iyiuvPC6WbyhtBejq6hr03e3atYvXX399SIvsa6+9xvz584/7/ODBgwDMnj170HssWLCAxsZG/vSnPw167XD642DjdaQY6TsY7L0XM46G8g5HglAoxNixY4u+/tFHHy2w1hkh+umWLVtK0jYP5sOz2HlwLT760Y8ybdo0br/9dl599VXuvfdexowZw3e+8x0APvShD/HOO+/wP//zP/zwhz9k9OjRADQ1NdHe3s6iRYuQJImVK1fS1NTE2rVr+fSnP00kEunTBXnllVdy0kkn8a1vfUt3pdxwww384Q9/YOXKlcyZM4cjR47w/PPPs3XrVubPn1/0cw4cOMDChQvp6uris5/9LKeccgqtra384Q9/IBaLEQwGB+Tz2c9+dsB29AdFUfjEJz5Bb28vzz33HPPmzTNdLv1hqDL56Ec/ytSpU7n99tvZuHEj//mf/0lnZye//vWv+33G5s2bueyyyxg3bhxf+9rXyGazfP3rX6epqanf3/Ql95dffpkXXniBq666iokTJ7J7925+8pOfsGTJErZs2UI4HB5WW4t5dy+88ALAgHI1IpVK8fbbb3PBBRfoyRmd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eOKJolwhPT09TJw4kY985CPMnTuX6upqnnjiCV5++WXdklPsc771rW/x+OOPc8EFF/DZz36W2bNn09bWxv/93//x/PPPU19f3y+f888/n1mzZg3Yjr5wyimnsHTpUu655x7a29u59NJLmTp1KhdddBHBYHAkr31YGKpMdu3axQc+8AEuu+wyNmzYwG9+8xs+8YlPDFi24qtf/SqPP/445557Lp/73OfIZrPceeednHbaabS0tBTd1ve///088MAD1NXVMWfOHDZs2MATTzzBqFGj+rx+OG3tD9OnT+e0007jiSee4LrrrhvwWnHaQkdHB7/5zW8ALSbs8ccfZ+3atVx11VVceeWVRT1306ZNHD16lCuuuGLA64oZFy+99BIXXnght912W8E5pP2N15dffrnP64tBqd5Bf+99KOOomHdYqhi7O++8k66uLn0T8+c//1l3Od98880cPXqUrVu38pOf/ET/TTqdZtWqVVx44YV87GMfK7jfnDlzPMXOLbA8D9eDhyGiv3Inhw4d6vO6Y0sAfOMb31AnTJigyrJc8H17e7t60003qZMmTVIDgYA6duxY9X3ve5/6s5/9rOD3/T0vmUyq//Zv/6bOnTtXrampUauqqtS5c+eqd999d8F1xT5nz5496tVXX602NTWpoVBInT59unrTTTepyWRyQD5vv/12Ue3oCz09Peq//uu/qjNmzFCDwaAKqMuWLRv0dwOVOylWLn2hmHclnrNlyxb1Ix/5iFpTU6M2NDSoK1euVOPx+KDPfvLJJ9V58+apwWBQnTFjhnrvvfeq//Iv/6JWVFQU/LY/Pqqqqp2dneq1116rjh49Wq2urlaXLl2qbtu2TZ0yZYp6zTXXDLmtQ313P/jBD9Tq6urjSlQcW6Lju9/97nElMmpqatRzzz1X/cUvflFQSqe/ewh84QtfUCdPntznb4woZlyIkh59Paev8TrQ9X3ByGE476C/99Dfey92HBX7DkuBKVOmDFgm5c4771Tr6urUdDpdwM/v96tvvvnmcfe75ZZbVEmS+iz34sFZ8BQ7Dx486Pj3f/93FVCPHj1qd1P6xUAK13BxxRVXqDNnzizZ/QTMaKuqqmpXV5fa2Nio3nvvvQWfD1SDrlj0dY9EIqGOHTu235pvToNZ76G/934s+hpHTnuHy5YtU6+88kq7m+HBBHgxdh48eNDR1NRE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", + "text/plain": [ + "
" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "image/png": "iVBORw0KGgoAAAANSUhEUgAAAnYAAAHWCAYAAAD6oMSKAAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjkuMiwgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy8hTgPZAAAACXBIWXMAAA9hAAAPYQGoP6dpAAEAAElEQVR4nOydeZwcZZ3/31Vd3T3TM9Mzk2ty34GEKyRASEQkIBBCjMcqricoqy5CcAProqi/xWMliwrqCojKKgjrrq4uiJIQQhAwkgiEDMgRyH1MJvfM9PT03VW/P6qf6ppkJtM903V16vN68dL0PF39fOr7HN/nez2SpmkaPnz48OHDhw8fPjwP2ekO+PDhw4cPHz58+KgMfMXOhw8fPnz48OGjSuArdj58+PDhw4cPH1UCX7Hz4cOHDx8+fPioEviKnQ8fPnz48OHDR5XAV+x8+PDhw4cPHz6qBL5i58OHDx8+fPjwUSXwFTsfPnz48OHDh48qga/Y+fDhw4cPHz58VAl8xc6HDx8+fPjw4aNK4Ct2Pnz48OHDhw8fVQJfsfPh4yTHww8/jCRJff53xRVX9PmdBx54AEmS2Llzp72dLRNe6efXv/51JEni8OHDJX/nO9/5DjNnzkRVVeOzyZMn8/Wvf31IfenrGffddx8TJ04knU4P6dl2war3AH2/dxh4HnntHaZSKYLBIE1NTUN+lz7sha/Y+XA9xOb80ksvlf3d559/nq9//et0dnZWvmMOwAo+Z511Fg899BAPPfQQDzzwAOeccw7ACRU7H84iFotxxx138KUvfQlZHngZX7169XHKRjQaZd68eTz66KMDfv9Tn/oUmUyGn/zkJxXoff+wcr4O9R3Aid/7QPPIrncIEI/Hue2227jiiisYNmwYkiTxwAMP9NteVVVGjhzJd77zHeOzXC7H/fffz6RJk/jmN7/JwYMHLe+3j8rAV+x8VDWef/55vvGNb1SVYldpPmeddRaf+MQnWLhwIT/5yU/YuHEj73znO9m4cSPLly/v8zuf/OQnSSaTTJo0qWL9sAJe6We5+PnPf04ul+OjH/1oSe1feeUVAP7jP/6Dhx56iAcffJAvfelL7Nq1i6uuuorNmzef8Ps1NTVcc8013HXXXWiaNuT+9wcr5+tQ3wGc+L0PNI/seocAhw8f5pvf/CZvvvkms2fPHrD9Cy+8wOHDh1myZInxWX19Pddccw233HILmqbx6quvWtllHxWE4nQHfPjwInp6eqirq3O6GxXDa6+9xuWXX86RI0f44Q9/yI033ogkSf22DwQCBAIBG3s4OFS6n26R+y9+8Qve+973UlNTU1L7V199laamJm688cZen48YMYLrrruO1tZWZs6cecJnfPjDH+Y73/kOf/rTn7jkkksG3XenUIl3MNB7H2ge2fUOx4wZQ3t7O6NHj+all17ivPPOO2H7lStXMmnSJE4//fTj/iY+e/PNN7n00kst6a+PysK32PnwHEQ80tatW/nUpz5FU1MTjY2NfPrTnyaRSPRq9y//8i8ATJkyxXC/iHirtrY2rr32WlpaWgiHw5x++un8/Oc/7/f33njjDT72sY/R3NzMO9/5TgC6u7tZvnw5kydPJhwOM2rUKC677DJefvll4/ul/k5bWxv/8A//wNixYwmHw0yZMoXPf/7zZDKZAfmU0o/+sHPnTi699FLS6TTPPvssX/jCF06o1EHfsWulyuVEKOVdid/ZvHkzH/7wh4lGowwfPpx/+qd/IpVKDdjPZ555hnPPPZeamhqmTZvGT37yE+OZff1OX3LftWsX119/Paeeeiq1tbUMHz6cq6666rhYvnL6CtDZ2Tngu9uxYwevvvpqWZvsK6+8wty5c4/7fP/+/QDMmjVrwGecc845DBs2jN///vcDth3MeBxovg4VQ30HA733UuZROe9wKAiHw4wePbrk9o8//ngva50ZYpy+8cYbFembD+vhW+x8eBYf/vCHmTJlCitWrODll1/m/vvvZ9SoUdxxxx0A/N3f/R1vv/02//3f/833v/99RowYAcDIkSM5cOAA8+fPR5Ikli1bxsiRI1m1ahX/8A//QCwW69MFedVVVzFjxgxuv/12w5Vy3XXX8dvf/pZly5Zx2mmnceTIEdatW8ebb77J3LlzS/6dffv2MW/ePDo7O/nc5z7HzJkzaWtr47e//S2JRIJQKHRCPp/73OdO2I/+oKoqH/vYx+jp6eG5555jzpw5lsulP5Qrkw9/+MNMnjyZFStWsGHDBv7jP/6Djo4OfvnLX/b7G5s2beKKK65gzJgxfOMb3yCfz/PNb36TkSNH9vudvuT+4osv8vzzz/ORj3yE8ePHs3PnTn784x+zcOFC3njjDSKRyKD6Wsq7e/755wFOKFczMpkMb731FhdddJGRnNHR0cHq1au54447WLZsWUnuOvGbf/nLXwZsN9C86AsnGt9DRSXewYneeznzaKB3mM1m6erqKoUWw4YNKynG8kTYv38/mzZt4pvf/Gaff//nf/5nQLfY+fAINB8+XI5f/OIXGqC9+OKLmqZp2m233aYB2rXXXtur3Qc+8AFt+PDhvT777ne/qwHajh07en3+D//wD9qYMWO0w4cP9/r8Ix/5iNbY2KglEgnjM/F7H/3oR4/rW2Njo3bDDTf02/dSf+fqq6/WZFk2OJqhquqAfAbqR3948MEHNUD7+c9/Xtb3hEzM/ShHLn2h1Hclfue9731vr3bXX3+9BmivvPJKv/1cunSpFolEtLa2NqPNli1bNEVRtGOXwxPJ3Tw+BNavX68B2i9/+cvjnjFQX8t5d1/72tc0QOvu7j6uD5MmTdJuu+22Xp9t2rRJA477LxgMaj/4wQ9KeobA5z73Oa22trbPv5kx2PHY3/guF8dyKPcd9PWME733cubRQO/wT3/6U5997eu/Ut7Tiy++qAHaL37xiz7//p//+Z9abW1tn2P6oYce0gBt1KhR2qhRowb8LR/ugO+K9eFZXHfddb3+feGFF3LkyBFisdgJv6dpGr/73e9YunQpmqZx+PBh479FixbR1dXVp8vo2N8DaGpq4q9//Sv79u0b9O+oqsqjjz7K0qVLOffcc497zkBu0YH6cSLcfffdnHnmmXz6058u63snwmDkMhiZ3HDDDb3+LWKnVq5c2edv5PN5nnrqKd7//vczduxY4/Pp06ezePHikvkA1NbWGv8/m81y5MgRpk+fTlNTU59jp9S+lvLujhw5gqIo1NfX99tnM0TQ+4MPPsiaNWtYs2YNDz/8MGeffTZf+tKXWL9+fUnPAWhubiaZTA7oWh/seLQKlXgHJ3rv5cyjgd7h7NmzjT4O9F857tb+sHLlSi6++OJeYxr0zNovfelLLF68mKuvvpqDBw9y9OjRIf+eD+vhu2J9eBYTJ07s9e/m5mZAd7FEo9F+v3fo0CE6Ozv56U9/yk9/+tM+2/SV2j9lypTjPvvOd77DNddcw4QJEzjnnHO48sorufrqq5k6dWrJv3Po0CFisRhnnHFGv30eCCfqR384fPgwL730EitWrBj07/aFwchlMDKZMWNGr39PmzYNWZb7jck6ePAgyWSS6dOnH/e3vj4T6EvuyWSSFStW8Itf/IK2trZeWY59udFK7etgx/SJ8Morr6AoCh/96EcJBoPG5wsXLmT8+PHcfffdLFiwoKRnCZ4DHTYGMx6tRCXfwbEodx4N9A6bm5ttS1LIZrOsWbOmz77ffvvtHD58mB/+8IesW7cO0OPsRJypD/fCV+x8eBb9ZTtqA5QSEIVFP/GJT3DNNdf02eass8467rNjT7Sgx0RdeOGFPPLIIzz55JN897vf5Y477uD//u//jDibgX5noP6WghP1oz9r1JtvvommaRWJqzNjMHIZrEzMKMWyORj0Jfcbb7yRX/ziFyxfvpwFCxbQ2NiIJEl85CMfOa5wbV/or6+lvLvhw4eTy+Xo7u6moaFhwN969dVXmTZtWi+FBmDcuHFEIhH27t074DMEOjo6iEQifb4TMwYzHq1EJd5Bf++93Hk00DvMZDIlW8ZGjhw5pKzvdevWEYvFuPLKK3t9vm3bNu666y7++Z//mRkzZtDR0QHoXH3Fzv3wFTsfVY2+NtCRI0fS0NBAPp+vyMl4zJgxXH/99Vx//fUcPHiQuXPn8u1vf5tnn322pN9RVZVoNMprr7024G+dSHnprx/9baQ9PT0DPtMuDEYmW7Zs6WVN27p1K6qqMnny5D7bjxo1ipqaGrZu3Xrc3/r67ET47W9/yzXXXMOdd95pfJZKpfqtv1ZuX08EUZJjx44dAyq7oCs173jHO477/NChQyQSibLceTt27CgpgxbKH49g3VisxDvo772XO48GeofPP/88F198ccnPGswYEnj88cc57bTTjnvGzTffzMiRI/nqV78KFDOG/cxYb8CPsfNR1RA1x8wbbiAQ4IMf/CC/+93v+lSmDh06VNKz8/n8cW63UaNGMXbsWNLpdMm/I8sy73//+/nDH/7Q5+0aZmtNX3wG6kd/EIv5//3f/52YqA0YjEzuueeeXv/+0Y9+BNCv4hAIBLj00kt59NFHe8V+bd26lVWrVpXd32MtkD/60Y/I5/N9ti+3ryeCcBmWchPL/v37OXjwYJ+KhMi0/eAHP1jyb7/88st9KkhmlDIeE4kEmzdvPu4Ktb7G94nal4JKvYP+3nu582igd2hnjN3KlSuPK3OyevVqHnvsMb73ve8Z8mhoaGDChAl+ZqxH4FvsfFQ1xLU+X/3qV/nIRz5CMBhk6dKl/Pu//zt/+tOfOP/88/nsZz/LaaedxtGjR3n55Zd56qmnSnKFdHd3M378eD70oQ8xe/Zs6uvreeqpp3jxxRcNS06pv3P77bfz5JNPctFFF/G5z32OWbNm0d7ezv/+7/+ybt06mpqa+uVz4YUXcuqpp56wH31h5syZLFq0iPvuu48DBw5w+eWXM3nyZC655BJCodBQXvugUK5MduzYwXvf+16uuOIK1q9fz8MPP8zHPvaxE5at+PrXv86TTz7JBRdcwOc//3ny+Tx33303Z5xxBq2trSX39T3veQ8PPfQQjY2NnHbaaaxfv56nnnqK4cOH99l+MH3tD1OnTuWMM87gqaee4tprrz1hW3HbwsGDB3n44YcBPSbsySefZNWqVXzkIx/hqquuKul3N27cyNGjR3nf+953wnalzIsXXniBiy++mNtuu63XPaT9zdcXX3yxz/aloFLvoL/3Xs48KuUdVirG7u6776azs9M4xPzhD38wXM433ngjR48e5c033+THP/6x8Z1sNsvy5cu5+OKL+fu///tezzvttNN8xc4rsD0P14ePMtFfuZNDhw712e7YEgDf+ta3tHHjxmmyLPf6+4EDB7QbbrhBmzBhghYMBrXRo0dr7373u7Wf/vSnvb7f3++l02ntX/7lX7TZs2drDQ0NWl1dnTZ79mzt3nvv7dWu1N/ZtWuXdvXVV2sjR47UwuGwNnXqVO2GG27Q0un0Cfm89dZbJfWjL3R3d2tf/OIXtWnTpmmhUEgDtMWLFw/4vROVOylVLn2hlHclfueNN97QPvShD2kNDQ1ac3OztmzZMi2ZTA7422vXrtXmzJmjhUIhbdq0adr999+v/fM//7NWU1PT67v98dE0Tevo6NA+/elPayNGjNDq6+u1RYsWaZs3b9YmTZqkXXPNNWX3tdx3d9ddd2n19fXHlag4tkTHd77zneNKZDQ0NGgXXHCB9p//+Z+9Sun09wyBL33pS9rEiRP7/I4ZpcwLUdKjr9/pa76eqH1fMHMYzDvo7z30995LnUelvsNKYNKkSScsk3L33XdrjY2NWjab7cVPURTttddeO+55N998syZJUp/lXny4C75i58OHDwNf/vKXNUA7evSo013pFydSuAaL973vfdr06dMr9jwBK/qqaZrW2dmpDRs2TLv//vt7fX6iGnSloq9npFIpbfTo0f3WfHMbrHoP/b33Y9HXPHLbO1y8eLF21VVX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gkO/37zoinXX/d52wnfFVhmssthBcRNw6+Xw4oRWF6rseaUpIi6Jd8dCUclr4/qCsQm41JUh5FxfoftTAZpq3SVjKF5W31DhsAozxFxxo6zFxlyJ+5BBv25KlIFyWoE/FuL911VwTJshntuTzqFp2gCt7UOsMJdDAbliJboafFesuxS75557jqVLlzJ27FgkSeLRRx8d8DvPPPMMc+fOJRwOM336dB544IFef1+xYgXnnXceDQ0NjBo1ive///289dZb1hBwGKls3qjdY8UdeRFjE3DH6f5YiIlcX6GNQEBYPzsT7tgMxB2aVil2ERdv9lA8WFRSzuJddrpowxeKTbTWOseK2PATLpzTQoGvZLywmMsxl1lzegrWcXF4rjTEISinaq6q7yYOqdHaYMUsifX+lWLuUux6enqYPXs299xzT0ntd+zYwZIlS7j44otpbW1l+fLlfOYzn2H16tVGm2effZYbbriBDRs2sGbNGrLZLJdffjk9PT1W0XAM4hQqS3psWKURCRXcNi612AlFpCFcWYWnyVDsMhV97mBhVYKMgHG6d6mc4xZY7IRi5yqLXcpaOUNR1m7cBIViVymLHUC08CxhDXULxNpVyTFthtmL4aYDW/GQWjnewsLtx9i5BIsXL2bx4tKDWu+77z6mTJnCnXfeCcCsWbNYt24d3//+91m0SPfhP/HEE72+88ADDzBq1Cg2btzIu971rsp13gXoMsXXyXLl4yjM5nw3wtjwK2yxc9um32VRHKWAEXflQisOmCyzlVTsIu6SMZhczhUez2bUufSwls2rJAtxf5V0RYs547b4q7jFrlhZloiEAiQyeXrSeYbXW/IzZcOKtUysCyezYucqi125WL9+PZdeemmvzxYtWsT69ev7/U5XVxcAw4YN67dNOp0mFov1+s8LsNqSIyx2bnTFqqpGPCMWx8q6M5pctukLa4NVLjpxunejFQcsUuyE8u4SdztYw/NYFC127prTcdOmXFmLnXDFumdsa5pmucUO3GmdtSIm3E+e8Lhit3//flpaWnp91tLSQiwWI5lMHtdeVVWWL1/OBRdcwBlnnNHvc1esWEFjY6Px34QJEyredytgdeyV2PDddroHPatPxARb54p1x0JhtYtObADpnEou7554HNAtOalCVna1u2KtskCb4VaLnbC21AYDBAOV26aMGDsXyTmVVVEL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", + "text/plain": [ + "
" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "image/png": "iVBORw0KGgoAAAANSUhEUgAAAnYAAAHWCAYAAAD6oMSKAAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjkuMiwgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy8hTgPZAAAACXBIWXMAAA9hAAAPYQGoP6dpAAEAAElEQVR4nOy9d5xc1Xn//7532u5sX2nVVxIqIEQRICxECyVgIWS5xMbBTmzcvwRQgkmMQ+wEx0lMXGPHgB0H22D7lzhuYGwkQHRjRBNamiTQqku76rs7Mzt97v39cefcuSNtmdm9dfZ+Xi9etmbPzD2f+5zynKcdSVVVFR8+fPjw4cOHDx+eh+x0B3z48OHDhw8fPnyYA1+x8+HDhw8fPnz4qBH4ip0PHz58+PDhw0eNwFfsfPjw4cOHDx8+agS+YufDhw8fPnz48FEj8BU7Hz58+PDhw4ePGoGv2Pnw4cOHDx8+fNQIfMXOhw8fPnz48OGjRuArdj58+PDhw4cPHzUCX7Hz4cOHDx8+fPioEfiKnQ8fPnz48OHDR43AV+x8+Jjg+NnPfoYkSUP+d9VVVw35nXvvvRdJkti1a5e9na0SXunnl770JSRJ4siRIxV/52tf+xqLFi1CURT9s7lz5/KlL31pXH0Z6je+//3vM3v2bDKZzLh+2y5Y9R5g6PcOo88jr73DdDpNKBSitbV13O/Sh73wFTsfrofYnF9++eWqv/vcc8/xpS99if7+fvM75gCs4HPmmWfy05/+lJ/+9Kfce++9LF26FGBExc6Hs4jFYnz1q1/l85//PLI8+jL+yCOPnKBsNDc3s2zZMh544IFRv/+xj32MbDbLf/3Xf5nQ++Fh5Xwd7zuAkd/7aPPIrncIkEgkuP3227nqqqtob29HkiTuvffeYdsrikJHRwdf+9rX9M/y+Tz33HMPc+bM4ctf/jKHDh2yvN8+zIGv2PmoaTz33HP88z//c00pdmbzOfPMM/nLv/xLLr30Uv7rv/6LjRs3ctFFF7Fx40ZuvvnmIb/zkY98hFQqxZw5c0zrhxXwSj+rxY9+9CPy+Twf+tCHKmr/6quvAvCf//mf/PSnP+W+++7j85//PLt37+aaa65h69atI36/rq6O6667jm9961uoqjru/g8HK+freN8BjPzeR5tHdr1DgCNHjvDlL3+ZLVu2sGTJklHbv/jiixw5coRVq1bpnzU2NnLddddx6623oqoqr732mpVd9mEigk53wIcPL2JwcJCGhganu2Ea3njjDd75zndy9OhRvvOd77BmzRokSRq2fSAQIBAI2NjDscHsfrpF7j/+8Y9597vfTV1dXUXtX3vtNVpbW1mzZk3Z55MnT+b666+nq6uLRYsWjfgbH/zgB/na177Gk08+yeWXXz7mvjsFM97BaO99tHlk1zucPn06vb29TJs2jZdffpl3vOMdI7Zfu3Ytc+bM4bTTTjvhb+KzLVu2cMUVV1jSXx/mwrfY+fAcRDxSd3c3H/vYx2htbaWlpYWPf/zjJJPJsnaf+9znADjppJN094uIt9q/fz+f+MQnmDp1KpFIhNNOO40f/ehHwz5v8+bNfPjDH6atrY2LLroIgHg8zs0338zcuXOJRCJMmTKFK6+8kldeeUX/fqXP2b9/P5/85CeZMWMGkUiEk046ib/6q78im82OyqeSfgyHXbt2ccUVV5DJZHj66af567/+6xGVOhg6dq1SuYyESt6VeM7WrVv54Ac/SHNzM5MmTeJv/uZvSKfTo/bzqaee4txzz6Wuro758+fzX//1X/pvDvWcoeS+e/dubrjhBk455RTq6+uZNGkS11xzzQmxfNX0FaC/v3/Ud7dz505ee+21qjbZV199lXPOOeeEzw8cOADAqaeeOupvLF26lPb2dn7729+O2nYs43G0+TpejPcdjPbeK5lH1bzD8SASiTBt2rSK2z/00ENl1jojxDjdvHmzKX3zYT18i50Pz+KDH/wgJ510EnfccQevvPIK99xzD1OmTOGrX/0qAH/2Z3/G22+/zf/+7//yH//xH0yePBmAjo4ODh48yPLly5EkiZtuuomOjg7WrVvHJz/5SWKx2JAuyGuuuYaFCxfyla98RXelXH/99fzqV7/ipptuYvHixRw9epRnn32WLVu2cM4551T8nJ6eHpYtW0Z/fz+f+cxnWLRoEfv37+dXv/oVyWSScDg8Ip/PfOYzI/ZjOCiKwoc//GEGBwd55plnOPvssy2Xy3CoViYf/OAHmTt3LnfccQfPP/88//mf/0lfXx8/+clPhn3Gpk2buOqqq5g+fTr//M//TKFQ4Mtf/jIdHR3Dfmcoub/00ks899xzXHvttcyaNYtdu3bxve99j0svvZTNmzcTjUbH1NdK3t1zzz0HMKJcjchms7z11ltccsklenJGX18fjzzyCF/96le56aabKnLXiWf+8Y9/HLXdaPNiKIw0vscLM97BSO+9mnk02jvM5XIMDAxUQov29vaKYixHwoEDB9i0aRNf/vKXh/z73/7t3wKaxc6HR6D68OFy/PjHP1YB9aWXXlJVVVVvv/12FVA/8YlPlLV73/vep06aNKnss69//esqoO7cubPs809+8pPq9OnT1SNHjpR9fu2116otLS1qMpnUPxPP+9CHPnRC31paWtQbb7xx2L5X+pyPfvSjqizLOkcjFEUZlc9o/RgO9913nwqoP/rRj6r6npCJsR/VyGUoVPquxHPe/e53l7W74YYbVEB99dVXh+3n6tWr1Wg0qu7fv19vs23bNjUYDKrHL4cjyd04PgQ2bNigAupPfvKTE35jtL5W8+6++MUvqoAaj8dP6MOcOXPU22+/veyzTZs2qcAJ/4VCIfXb3/52Rb8h8JnPfEatr68f8m9GjHU8Dje+q8XxHKp9B0P9xkjvvZp5NNo7fPLJJ4fs61D/VfKeXnrpJRVQf/zjHw/59x/+8IdqfX39kGP6pz/9qQqoU6ZMUadMmTLqs3y4A74r1odncf3115f9++KLL+bo0aPEYrERv6eqKr/+9a9ZvXo1qqpy5MgR/b8VK1YwMDAwpMvo+OcBtLa28sILL9DT0zPm5yiKwgMPPMDq1as599xzT/id0dyio/VjJNx5552cccYZfPzjH6/qeyNhLHIZi0xuvPHGsn+L2Km1a9cO+YxCocBjjz3Ge9/7XmbMmKF/vmDBAlauXFkxH4D6+nr9/+dyOY4ePcqCBQtobW0dcuxU2tdK3t3Ro0cJBoM0NjYO22cjRND7fffdx/r161m/fj0/+9nPOOuss/j85z/Phg0bKvodgLa2NlKp1Kiu9bGOR6tgxjsY6b1XM49Ge4dLlizR+zjaf9W4W4fD2rVrueyyy8rGNGiZtZ///OdZuXIlH/3oRzl06BDHjh0b9/N8WA/fFevDs5g9e3bZv9va2gDNxdLc3Dzs9w4fPkx/fz8/+MEP+MEPfjBkm6FS+0866aQTPvva177GddddR2dnJ0uXLuXqq6/mox/9KPPmzav4OYcPHyYWi3H66acP2+fRMFI/hsORI0d4+eWXueOOO8b83KEwFrmMRSYLFy4s+/f8+fORZXnYmKxDhw6RSqVYsGDBCX8b6jOBoeSeSqW44447+PGPf8z+/fvLshyHcqNV2texjumR8OqrrxIMBvnQhz5EKBTSP7/00kuZNWsWd955J+eff35FvyV4jnbYGMt4tBJmvoPjUe08Gu0dtrW12ZakkMvlWL9+/ZB9/8pXvsKRI0f4zne+w7PPPgtocXYiztSHe+Erdj48i+GyHdVRSgmIwqJ/+Zd/yXXXXTdkmzPPPPOEz44/0YIWE3XxxRdz//338+ijj/L1r3+dr371q/zmN7/R42xGe85o/a0EI/VjOGvUli1bUFXVlLg6I8Yil7HKxIhKLJtjwVByX7NmDT/+8Y+5+eabOf/882lpaUGSJK699toTCtcOheH6Wsm7mzRpEvl8nng8TlNT06jPeu2115g/f36ZQgMwc+ZMotEo+/btG/U3BPr6+ohGo0O+EyPGMh6thBnvYLj3Xu08Gu0dZrPZii1jHR0d48r6fvbZZ4nFYlx99dVln2/fvp1vfetb/O3f/i0LFy6kr68P0Lj6ip374St2PmoaQ22gHR0dNDU1USgUTDkZT58+nRtuuIEbbriBQ4cOcc455/Bv//ZvPP300xU9R1EUmpubeeONN0Z91kjKy3D9GG4jHRwcHPU37cJYZLJt27Yya1p3dzeKojB37twh20+ZMoW6ujq6u7tP+NtQn42EX/3qV1x33XV885vf1D9Lp9PD1l+rtq8jQZTk2Llz56jKLmhKzQUXXHDC54cPHyaZTFblztu5c2dFGbRQ/XgE68aiGe9guPde7Twa7R0+99xzXHbZZRX/1ljGkMBDDz3E4sWLT/iNW265hY6ODr7whS8ApYxhPzPWG/Bj7HzUNETNMeOGGwgEeP/738+vf/3rIZWpw4cPV/TbhULhBLfblClTmDFjBplMpuLnyLLMe9/7Xn73u98NebuG0VozFJ/R+jEcxGL+m9/8ZmSiNmAsMrnrrrvK/v3d734XYFjFIRAIcMUVV/DAAw+UxX51d3ezbt26qvt7vAXyu9/9LoVCYcj21fZ1JAiXYSU3sRw4cIBDhw4NqUiITNv3v//9FT/7lVdeGVJBMqKS8ZhMJtm6desJV6gNNb5Hal8JzHoHw733aufRaO/Qzhi7tWvXnlDm5JFHHuHBBx/kG9/4hi6PpqYmOjs7/cxYj8C32PmoaYhrfb7whS9w7bXXEgqFWL16Nf/+7//Ok08+yXnnncenP/1pFi9ezLFjx3jllVd47LHHKnKFxONxZs2axQc+8AGWLFlCY2Mjjz32GC+99JJuyan0OV/5yld49NFHueSSS/jMZz7DqaeeSm9vL7/85S959tlnaW1tHZbPxRdfzCmnnDJiP4bCokWLWLFiBd///vc5ePAg73znO5k7dy6XX3454XB4PK99TKhWJjt37uTd7343V111FRs2bOBnP/sZH/7wh0csW/GlL32JRx99lAsvvJC/+qu/olAocOedd3L66afT1dVVcV/f9a538dOf/pSWlhYWL17Mhg0beOyxx5g0adKQ7cfS1+Ewb948Tj/9dB577DE+8YlPjNhW3LZw6NAhfvaznwFaTNijjz7KunXruPbaa7nmmmsqeu7GjRs5duwY73nPe0ZsV8m8ePHFF7nsssu4/fbby+4hHW6+vvTSS0O2rwRmvYPh3ns186iSd2hWjN2dd95Jf3+/foj53e9+p7uc16xZw7Fjx9iyZQvf+9739O/kcjluvvlmLrvsMv78z/+87PcWL17sK3Zege15uD58VInhyp0cPnx4yHbHlwD4l3/5F3XmzJmqLMtlfz948KB64403qp2dnWooFFKnTZum/umf/qn6gx/8oOz7wz0vk8mon/vc59QlS5aoTU1NakNDg7pkyRL17rvvLmtX6XN2796tfvSjH1U7OjrUSCSizps3T73xxhvVTCYzIp+33nqron4MhXg8rv7d3/2dOn/+fDUcDquAunLlylG/N1K5k0rlMhQqeVfiOZs3b1Y/8IEPqE1NTWpbW5t60003qalUatRnP/744+rZZ5+thsNhdf78+eo999yj/u3f/q1aV1dX9t3h+Kiqqvb19akf//jH1cmTJ6uNjY3qihUr1K1bt6pz5sxRr7vuuqr7Wu27+9a3vqU2NjaeUKLi+BIdX/va104okdHU1KReeOGF6g9/+MOyUjrD/YbA5z//eXX27NlDfseISuaFKOkx1HOGmq8jtR8KRg5jeQfDvYfh3nul86jSd2gG5syZM2KZlDvvvFNtaWlRc7lcGb9gMKi+8cYbJ/zeLbfcokqSNGS5Fx/ugq/Y+fDhQ8ff//3fq4B67Ngxp7syLEZSuMaK97znPeqCBQtM+z0BK/qqqqra39+vtre3q/fcc0/Z5yPVoKsUQ/1GOp1Wp02bNmzNN7fBqvcw3Hs/HkPNI7e9w5UrV6rXXHON093wYQH8GDsfPnzo6OjooL6+/oSbE2oJqVSq7N/btm1j7dq1XHrppc50aAxoaWnh1ltv5etf/3pFWbjjxY9//GNCodCQNf0mEip970PNI7e9w0svvZTPfvazTnfDhwXwFTsfPnwAWkD/l770JT760Y8SiUSc7o5lmDdvHrfddhv//d//zRe/+EWWL19OOBzm1ltvdbprVeHzn/88W7duHfeVUpXg+uuvZ8+ePTU9LirFaO99uHnktnd46623jrl2nw93w0+e8OHDBwA/+clP+PCHP8y3vvUtp7tiKa666ir+93//lwMHDhCJRDj//PP5yle+ckIRYR8+xoKJMo98uBeSqppQHdWHDx8+fPjw4cOH4/BdsT58+PDhw4cPHzUCX7Hz4cOHDx8+fPioEfgxdhVAURR6enpoampyxfVLPnz48OHDh4+JA1VVicfjzJgxY9SEKV+xqwA9PT10dnY63Q0fPnz48OHDxwTG3r17mTVr1ohtfMWuAjQ1NQHaC21ubna4Nz58+PDhw4ePiYRYLEZnZ6euj4wEX7GrAML92tzc7Ct2Pnz48OHDhw9HUEk4mJ884cOHDx8+fPjwUSPwFTsfPnz48OHDh48aga/Y+fDhw4cPHz581Ah8xc6HDx8+fPjw4aNG4Ct2Pnz48OHDhw8fNQJfsfPhw4cPHz58+KgR+IqdDx8+fPjw4cNHjcBX7Hz48OHDhw8fPmoEvmLnw4cPHz58+PBRI/AVOx8+fPjw4cOHjxqBr9j58OHDhw8fPnzUCHzFzocPHz58+PDho0bgK3Y+fPjw4cOHDx81Al+x8+HDR01CVVWOJDJOd8OHxVi/+SD3b9qHqqpOd8WHD1fAV+wmOHIFhdf29ZPM5p3uii0oKCo3/c8rnPGlR/jFy3ud7o5t2HlkkLWv95LOFZzuii1QVZU1/7uJc//1Mf593Vanu2MbBlI5th9OON0N2/DImwf49E9e5rP/9yq/3LjP6e7YBlVVKSgTS5FVlInHeazwFbsJDFVV+X8/3ci77/wj777zj6Sytb/pr329l9+/1ks8nefLv9vMQCrndJcsx7aDca7+zh+44f97hU/e99KEsGy8vLuP37/WC8APntnOoVja4R5Zj809MS766hP86Tef5qsPTwxl9lcGZe5/X9zjYE/sQ/ehBJd8/SnO+vKjrN980Onu2IJD8TRX/MfTvOPfHuO1ff1Od8f18BW7CYwN24/yxNZDgLZY/GZT7Z94Hypu9gCJTJ4ni/xrGXc92U2qaKn7Y/dRnu0+4nCPrIdxw1NUeOqtww72xh788+/eJJ7WLO/fe2p7zVvucgWF5wxjedOefgaStX9Q+/yvX2PPsSTxdJ6/++WrxNK1z/nuJ7ez4/AgxwazfGXtFqe743r4it0ExgNd+8v+/cibtX36Kygqz23XNoLz500C4Om3a3vDj6dzrH3jAABnzmoB4LddPU52yRZs2H4UgNntUQBe3n3Mye5Yjl1HBnlh5zFkCU6b0QzA/71U26EGu48OMpgt0BAO0NleD8Br+/ud7ZTF2NwTY+PuPgCi4QADqRy/e7W257Oqqqx7o3Qgf37HMQ7Fa98CPx74it0Exh+7tc3vi6tOBeCFHUfJ5GvXHbvnWJJYOk8kKPOZP5kHQNfefmc7ZTFe2nWMbF5hdnuUv79qEQB/2Ha4pt2xuYLCWwfjAHz4vNkAvNkTc7JLlmNdUXm/cMFk/urS+QA1b41++6BmkVwwtYmzOtsAeG3fgJNdshy/f01T4laePo2/+dOFAKx7/YCTXbIcbx9McDCWIRoOMK+jAYBXisqtj6HhK3YTFD39Kfb3pwjIEtcum01bNEQmr7DtYO26b94ubvYLpjTq1qudRwaJ17Ar4/kdmqXqgvmTOGdOG6GAxMFYhr3HUg73zDrsODxINq/QGAmy8vRpgCb7fEFxuGfW4cWd2iHtslOmcNGCycgSbDuUoHegduUs1qqFUxpZNK0JoObdz8/v0OR8+aIpXL5oCqAd3mo5KeqN/ZqyfvqMFt3TstFX7EaEr9hNULy0S9vwT5vRTGMkyOKi+2ZzDVs23j6gKXYnT21iUmOEGS11QG1bc17cqcn5vHnt1IUCnDFTU2g37qld1+TWA5o8F01rorMtSjgokyuo9PTXpvtGUVR9ozt3bhut0TCLpmnz+dUatkgLJW7hlEZOmqxZcnYcHnSyS5ZiMJPXLZLL501iwZRGpjRFyOQVNu3pd7ZzFkKsz4tnNHN6cf16u4YNEGbAV+wmKLYWlRyx0S+erm0Eb/bUrivj7UPaYnDyVO10f0qNn/IVReWtopzPnNUKwGkzNHkL+dci9hxNAnDS5AZkWaKzTYu/2n2sNjf97sMJYuk89aEApxbnsZjXr++v3fnc069ZI2e1RXUX3Y7DiZoNM3h9/wB5RWVGSx2d7VEkSeKc2ZoL+o0alvOWXk2xO21GM/M7GoHaXbPNgq/YTVAI65VQboSy013DE2b3UW1jF5vA3OIpf9eR2tzw9xxLksoViARl5k7SuJ5clHctu9z3HNMUu85i4sScInfxea1BbOpnzGohFNCW9NNnCcWudq3RQrGb3lqnj+9YOk9fjWbGbu0VlqsW/bMzZtW+Ai/m7byORuYX1+79/akJUZ5rrPAVuwmKtw+V3JJQ2vx2H63NzQ/QXXEzWzULjnDf7DxSm5yFVW7h1EYCsgTAyVO0E+9bNWyx29unyVNkxIr/3VOjY1u4pU4pzmUoZcYKZaDWUFBUDsa1W0VmtNRTFwrQ0RQBYH9fbcYVivl86vQT5VyrFrtsXqGnGCc6uz1Ke0OY1mgIVdXio30MDV+xm4AYzOT14Hmh2M2dpG1+Pf0psvnaCzLP5Av69VIzioqdOOXvOlqbC4SINTtlarP+mbDQ7u9PMZipzdtGxNgWJTDmFMd2rR5aug+VFHiB+ZO1/38oniFRg3I+FE9TUFSCsqQrdCJmtlYTRrYUFTsRPwnosdG7jg7WZALF/v4Uqgr1oQCTG8NIksSsYmiFsNj6OBG+YjcBIQKMJzeGaW8IA9DRFKE+FEBRYV9f7W2ABwY0a10kKNMWDQEli92eo0mUGryqRmQBi4xBgNZomJZ6jf/eGpRzNq/oG7twxQoLbW+N3j7xtp4dWpJzSzTEpOLcrsVQA2F9n9pcp1ujp7cU5TxQe3JWFPWE8BmAjsYITXVBFLU2Dy7CDTu7GFMIRjn7it1w8BW7CQgxWYT7FUCSJN1ltbsGY5GMbtjSAlGHLEG2oNTkZfFioRcxhQLCklWLJU96B1IoqqbAdzRqlpypzZolpxavFUtlC7qCfrLBYgcluddioLnY1Ge01umfTSta7HpqcMM/FM+QyhUIyJJugQZt3Z5XTCjYUYNyPj5eFkqW2Z4aVODNQtDpDviwH8ZTkJLNknjiCdRslmlZmbeQ6H76Bc55q2TBksJhGi+/HDkcdqrL44YeaN1SV8Z5ckjmUFZi2+8eJVI6CHues6qqekxZZ1t9uZxTMm8gse2ZF1nWXVtyFpbZqc0R4o88gprNEs0CBDg0kOLYbx8koOn1NcFXywKFtmiISY2RMjnPTEq8hMzWP77CpXs26t+pBd69xfk8tTFM7OGHUbNZ2vdLgMzeN7sZyG3T29YCXxEuMrO1nlBALpPz7LTEq8i8+YeXuWBnbc3nvcdKa5jAdGGB912xw8JX7CYgxAm/s62e1KYu9t/8WQAaz/wzmHcBO9Y9Ts+WR8q+M/u++2g4b5ntfTULT+7cBMjkA0fKOLf/yU0cap/Llnt+SnvvG2Xf8TLn/mSOeDG26vWBp5m5e6rOueW0d8HCS3nr8Wfpef3Bsu95mTPAI9ufA2QChWPsv/kfAShIMvK7/52CJLPln/6V9kwpccTrfO/f8gwg09KYBSgb220LL4PTVrHluS56Nv5P2fe8zvuF/VsAiYGBt9j/r/8KQHjmEnjHR9izdRc999xd1t7rfH+3VRvX0XpNwStbw06+HBZfzZZnX6HnlZ+Xfc/rvF/p2Q5IHMvvAE4DtMM5+Ba7keC7Yicg9hrM29Gl5xCaNQskiUlpLbPqSF1rqbEkEersJLr0HAd6ag7ySp5n97wOQHd8I+Gzz9Q5T05pnA/Xt5a+UAOcdx7VlBcpOMA9b9xdxnlaUitOfDDaXvpCDXDOK3l+v+0PAByR9yF3zgRJIqAqtKW193G0rhh4XiN8H3zrjwAcy28jr+TL5vPUopxrbWznlTwv7dcugt+qbNHlXKtzOa/keXibZnE9kH3jBDnPTGj3X+9vnFz6Uo3w3nxoHwAvHX6MvKIdVEXymx9jNzx8i10VKOQVCjWQMbrv6CCyCjNb6lCQab/xJnr/4QtMTsWRVTha34IiBfT27TfehIIMHuW+dsc6kkkJWYVk4QDrdq3noiLnjtQAsgpH6ttqivODm59DVmUCwWP0xHrLOE8Z7EdW4WB9e01xXrtjHbGEiqxCVj1M16f+hNO/9AuQYFI6Rl9dC0fq25gf0+7WrAW+A/GAxpde1navY9W8Vfp87kjFivO5tsb22h3rSKZkZBUS+QO6nNsz2ro2EGmiIAUoetxrgm88EUZWIcPeE+Q8NdmnrWF1tSfnbErjPZDbp/PuqNc+OxrLkM8V9JjpWkc1uoev2FWBTet30xhtGr2hi6GoMKs3z3QlSKqrj41b46jyafSdcQ0NhRDL00FawrPZNWcFIBFobiYhLUZat8vpro8Jiqrw2NYulvUvRMkFCR1bwOMPdNFx8p8zcMY1zAq0sTwdJNxyGrvmFKgVzvteOsTy9CxkGgntf2cZ52BGYXk6SCQ4vebk/I6jp1FIBwnGZvDc7mM0nXENaizOWfkGJqeDxKZdyK66OTXE91SUbJDgwEwef6CLKYtORSrOZyWZZXk6iCRNZuecq5CgZngv61+Emg8SOnYyz+UyNJ1xDbnEIMvTQSBI90mrCCmFmuH7jmNFvv1zT5BzYTCt8ZYmsX3uSgKqWjO8z0ucjaoECR85U+edV9D4puH5h3YSDkwMx2MiWXnt0YnxRnzoSGTyFBSVgCzRENH0ekmWiS5bRjSnxSwkQyLTTCW6bBmS7N1hsq2/m3g2hqpqJT6Qs8SyMbpjOzTO+SLnYG1xzmS1/ktyClDLOee0DOBMIERBkqkVzvFsDFUpBooX5Xxw6WxApT6vcU4FI9QWX80tJQVSxLIxtvV36/O5Pp9BVlVUSao53hw3nw8unU1QKRBUtFpu6UCYmuKrFNenIeQcKWR13to6Vhu8Y5kEqiLknNF5hwOyfsNK0r99Ykj4FrsqcPaVc2hubh69oYvx8u5jPP/yNma31/OOq+fqn6tXzuKNR+/iC3XnAbBm/1M0T+tg3k13IAW9OUzySp7bf3sTvTN7iSfPRQ3miU5/imDdIQ7Wb+Y3N/ySvj/8nOfrTmOKkuMzex4lNHNmTXDublhBgSnUTX2RUMsmJCSd8+6Hv83G0HJygRCfOvQCs9qjNcG5d2YviewpKHIL9VP/SKhxOwcb3+Sbj+V5bqDA89Om05br4f2FN2uCb8+MXuKD50MwT8OM9QQixzhYv5n7V9xP4MpZ7Hj422xXlnCwoZ0/6+tiYbRQE7x7Z/YSS5wPap6GGY8TCPfrcu5Wl3CgbhLv69vEwvp8TfDtmX6IePxSIE/DzIcJBFMnyHlPfjF7mqdx9cAbLIykaoL3/qlJEok/ASlP46y1yJKk89755i729WX57LmT9ftyax2xWOW3yHhT8g4hEJQJBL17CgI4lMiiSDCltb6cSzDMSTd+msgzaVKhOvoiDSxccwPBOu+myq/d/gj7kntRJYmCEgUJ1HCMgpxnb3IP63sf5+S/+DOUV+BIXROSkmdqjXAu5JtQJFDDfSiydqoVnP9kzQ20PTbAgYZJ9EWiLK0RzshQKDShSqCGB4py3svrn/kALT/agyJBfyRaMzJW1SiKGtHGdeSYPq4f3fsIq+evZuqaG5j0u930NrZzuK6ZqWs+VBu8CaFQ5B2Klcv50Tg9jZMYCNUzdc1HaoKvorShSICUQw3FKUicIOeO+7exq2Uah+pbmHrjx2uCd0GZhSKBFIyjBgoUKPFub2pnT3+KY6mc5/fkSlENz4nxRnzoOFgs0jqtue6EvzWvWkV7Qcs0SnTOo/nqq23tm5nIK3nu6roLCQm1EEUMdSmgZQRLSNzddTedq67Q2geCZOYuqBnOSl67HFwOlu6QFJyjK1cwSdVckwMza0jOqoxa0Iq1SsFiVjASP5Y30NaobXSxpkk1w1fJaZYKKRhDkrWMQSHjvJKnedUqpklaGZRj0+fWDG81XyzELOVA1vgJObcGtPcQmza7Zvgqec1LJAVjiDyBE+RcfA9Hps2pQd6l2DLBu71Bc9EeTWQd6afb4St2EwyigKuo0m6EFAzS0dEKgPLuP/OsKR9g06FN7E/sR0VFLRRvXggMIklaZpGKyr7EPrbEN9MY0Ip6Sh/7dE1wVgphPSZHCpXM94Jz17HXmTF7GgDpK1bWBGcVtbThU9AVeI3zfvIrlwAQnzKjZvgquVYApGC//nch402HNiEFg8w58xQA4udeUDO8xXyWAoO6oiPkHF6glfzIXnhp7fDVD2knzmUh53nnng7AwJnn1hBvbT7LBsVO8CZQLF9UgzcGmQHvjgAfY8KBWOmOxaEwpXMabD5IctGZdnbLdCzpWMI3LvkG2UKWbT3wnztgalOUL170Fb1NOBBmSccSJrf+kcTRJKl3XOBgj8cPwXnPkSz/9jbUh1Xu+JMvlbURnGcuisJzu4jNXuBMZ02CUc77jsJXu6G5XubfLv43vU04EGZW+Fy++vbz9ONdFxWU833mTfjlfjh9WiefHmJcA8w653TYv5lYxwynumwKjLzf2AP/tQtmtbZw63G8X93aydNP7SQxc65jfTUDRr5PvAb374clM+by8WHkPHf5ObDnVfqaO5zqsikw8l67UWLdAThv1mKuPY73pi3TeYKdNXkVpBnwFbsJhpFcsQCTivdrHhvM2dYnKxAOhFkxdwUAvx/sATYxp3USq+eff0LbjqYIu44mOTrobbO+4PyH3GHgRTrbmlg9/5Ih25buT/X2wmiU8x/VI8ALTGs+kbc42fencuQKip5V5zUY+b7V/RbQzVnT57J6/ulDtp/SpMn5cLx25Jzq2wu8xvxJU1g9v/xWhYO9uwA44nEXnZFv15bNwE6WzpjH6vmLh2w/teiBOejx+5CNvF98/Q1gN0tnLGT1/FPK2u3ftxPwvpytgjdXNx9jhrDYTWuJDPn3ycVYpKOD3t4IjDhWVNjaG4a21kwuKrNHPL75CZTuSx1aeQeY0qRxPhj39kZghJBzW/REObdGw8hFt11fsjY2g4OjWN9BO7SA9xU7I/rEfB5CzpMainO5hiw5pTW7ftg2QoH3+kHNCDFPW4eQs1jLa2Uumw1fsZtAUFWVg8WJP9xmMKk4YWopKLU/qVkf24oBt8dDV+xqhLNQ7KYPEUcpMKmxFuU8vGIXkCX981rhfLCorAklfSiIvx2qIcVuIKXN55boifNZbPjHamjDPzgwspcFYGqzJud4Jk8ym7elX1ZjpHW7tSh70cZHOXzFbgKhL5kjW7yWRJzwjsekxto78YqNoLl+NMWuNjgfGMXdDiXLxjGPu5+NEOEDwynwQpmtFc6HinKeUoHFLpktMJipkQ1fKHZDzGch+1ra8EfzsgA0RoJEw9p1YrVitRPzdCiLnfhMrO0+yuErdhMI4tLkyY1hwsPUxNEtOTWy+YHhhD+cYtekca4ZxW5gdNdNe2PJlaGqqi39shp9I1jsoGTNqRU5CyucsNYMhQbDhl8r7lgxn1uHUuyKsu9PZlEU749rVVV1RW0kl7skSaXwCo/H2QmMZIEXsu+vIcusmfAVuwmESmJyhCWnltLIR1Xsiha7wzXiousdGP2EL+KTcgWVeK1YckZR7IQ1uhZcsZl8QbdoTB3G+i5Qa+7YgeTwrljholNUiKe9P65j6TzZguZlEevUcBCW21qRc59wxY4g58FsQfdC+SjBV+wmEA4MaBN+RBedbsnJkS/UxoSpVLGrleSJQ3rs1fByrg8HqA9plpxjNaDoABzTY3KGUewaascVK6xv4YCsb3LDodYSKEoWuxPlHAkGdAtlf8r7chYH7MZIkLrifB0O4sBeCxa7dK5AKqfdmDPUfG6qC+k1DH137IlwlWL3zDPPsHr1ambMmIEkSTzwwAMjtu/t7eXDH/4wJ598MrIsc/PNNw/Z7pe//CWLFi2irq6OM844g7Vr15rfeQ/gUHz0mByjtaNWJkxsFMVOWDSOJDKed0sWFJVjxYzmjhGC6qH2As1LFruh5SzcN7UwrkUSVEdTBEnscMOgVPLE+xs+jB4zK+TcVwNxdiIkRhy4R8LUGrLMihjJoCzRFDmxKltAlmiuE/O5NtYvM+EqxW5wcJAlS5Zw1113VdQ+k8nQ0dHBF7/4RZYsWTJkm+eee44PfehDfPKTn2TTpk28973v5b3vfS9vvPGGmV33BERsUccIi4Q2YbSJ1F8DGyCUFonhFDuh4GTyCslswbZ+WYG+ZBYRWjRceRcBPZmgVix2IwRbA7SI+KsaGNdCSRspvk6go4Y2fCgp8MPNZyH/WiiFISx2k0aZywBTmmsnxq5U6iQ07MGlzc+MHRauKlC8cuVKVq5cWXH7uXPn8p3vfAeAH/3oR0O2+c53vsNVV13F5z73OQD+5V/+hfXr13PnnXfy/e9/f/yd9hBEbNHkUSw5rdEwsXS+ZibMaK7YaDhAOCiTzSv0JbM0DHFC9AqE8t4WDY1ahFdYZ2vBNQmlBX44hbaWAq5HK1tkRC3V/CoopZjQ4VzQpcxY7/MVJZgmjRJfB7VVy26kGnYCLdEwHE3WhGXWbLjKYmcFNmzYwBVXXFH22YoVK9iwYYNDPXIOYtMfLQhXLJi1YOLO5hU9VmM4xU6SJP301+fxGzd05b2CjWBSDblis3mFRHHDH84VW0ulMES8XCVybquh2MJ4OoeIlhjVYufxuQzG+Ty6xa6Wyvn0j5A4IVBLBzWz4V3TRIU4cOAAU6dOLfts6tSpHDhwYNjvZDIZMpnSqScWiw3b1kvQT3+jmPVb6mtnAzTGUzXVDb9ItEXDHIxlPK/kVKq8gyHGriY2Ao2DLKHH3hyPlnrhivU+32pir9prSNER87khHBjWIl1y0dWCnIUrtpKDWqTsO17GaGEV2t9qJ2bWbNS8xW4suOOOO2hpadH/6+zsdLpLpkBkfVbiioXaUuya6oIE5OGDzIWS4/XN4HCFMoZSLbtaKP8h3DGt0TDyMHKupWr1IkGmEhddLSXJjBYvC6UQg1pw0R1NVK7AGysaeL2G32iJUGC02Hlfzmaj5hW7adOmcfDgwbLPDh48yLRp04b9zm233cbAwID+3969e63upuVI5wp6bMqorlgxYWrgJDRafJ1ArcSbHanCddOuc/b+CV9sBEMVrRUQf4un854v5XO0Qus71JZldrSMWDAcTGtg/RIW+EoUeLGGFRTV81asUg27UWLsqA0LvNmoecXu/PPP5/HHHy/7bP369Zx//vnDficSidDc3Fz2n9chXDfhgKxnvQ4H3cRdAyf80UqdCIj4qz6Pb37VuGJraQOMFYvRjrThG8dAzOPFa4WSVoliZ0wmKHjckqPXsBvBklNbrtjiQa0COYeDpbXd6+7YSpInaqmsjdlwVYxdIpGgu7tb//fOnTvp6uqivb2d2bNnc9ttt7F//35+8pOf6G26urr07x4+fJiuri7C4TCLFy8G4G/+5m+45JJL+OY3v8mqVav4+c9/zssvv8wPfvADW7k5DeGGndQYHrXuVcsEtNi114j7pqTYjb4R1FKMSqwCS04wINNUFySeztOfzI5aDsbNKFlyKlDsimNbUbX3NFwBZy9gpHtiBcS4roUs4KNVWOxEu1g6z9FElgVTrOyZtShluI9+UIvVwPplNlyl2L388stcdtll+r9vueUWAK677jruvfdeent72bNnT9l3zj77bP3/b9y4kf/5n/9hzpw57Nq1C4ALLriA//mf/+GLX/wi//AP/8DChQt54IEHOP30060n5CLoQbgVbfi1F2M3mmInOHs9DqmarNhaWhhj6aJiV4E1Op7Oe1qBz+YV3eJYSVB9yKDQHktmPa3YxUa4dUKgVrJi8wVFH6eVrNugWXB3Hhn0vNu9EotdU3Gu18LVcWbDVYrdpZdeOmLl/3vvvfeEzyq5KeCaa67hmmuuGU/XPI8j8co3/IkYY1cryRPVuGKN2c+qqo5qyXUzYqnRXbGgKQR7SXm6lI/Y9AKyNOq4FmhvCGsK7WAWOqzsnbXQixOP6IqtjbksDpmSNHKsmRFiHTviccVO3Ac8Usxssx4z6/19ymzUfIydDw2Hq4q9qp0Yu4qTJ/QAc+8uEqqqVlyEGkpyziuq52/cKFnsRrPMej+TTsi4LRoaNgP4eNRKclAl81koA4PZAjkPJ8mU5BweMaPfiFq5TUafzyPIWVjsvB4vawV8xW6CoJqYHH3zqwGLXSWxV4ChQLF3F8RYKk+2uJFVElRfHwoQCmgbhtfj7GKGsjYjoRZqNFZT20ygVm6fqKTciXEMeNlNV0mR3uNRK7XsKkmGEoc432J3InzFboJAnP46KnLRaZvAQMr79ZDEbQSjbfhthvslK3HvuxHCKttUF6QuFBi1vSSVXHmeV+wqOOFDbRxahNWtmuQPMb6PevjgApXJORiQaSxeC+jlcS3CBUaKMzseYkx4Wc7pXIFsXjugjrRuC8UunVP09j40+IrdBMFYYq9U1dsnXigpdg3hURS74oKYMVxB5jUIGVeivAs014AFC0rjdLTkiVqIvzpSRdFaAb14rYc3fCjJebSDmhgHXk4M6qsgzux41IIrVshYkqBxhHW7scwy6105WwFfsZsgqMYVGw7KRMOaxcfrxR+FYtc4ykbQEA4QLl5R5NU4pGqq1Au0TjCLXS24YvVbJ8ZgsfNyDClUrsCLcRDz8Ibfb7hNpVLUgitWyKwxEhwxhjQgSzQU9ymvGyDMhquyYn1YhyOjlMFQslkSTzyBmtXaNSCTRKL3kcdpbdTaSOEwjZdfjhz2TrmERFpY7E50TR7PuSUgc7ggsW/dYzR5kLNe82qUDd/IuyEmAxIHNrzEwI6SC9pLvMGQFRs5cUkz8o0ckgCZI7v3M/Bg6UYZL/EVc3k0V6yRd91BjfehHXsZeHC33sZLvMFwUBtFzg3J4rj+wwYGtpTaeIlv6TaVkbdpI+/wIECAI8fiDDz4oN7GS7yFklYfVkfN1m+uDzGYLXhagbcCvmI3AVBQVH2RGG7TT23qYv/Nn9X/XXf556B5Krvu/gEtR7brn8++7z4azltmbYdNxJHBOCDRdfR5Llq4uuxvx3NuuOwWDrfMoPt7P6Tl8Nv6517h/ML+1wGZWOHAiO2MvINLPwSdS9n324fo6X66rJ1XeAMcGRwEJF458keWzh1ezvlpi2H5Jziycy899/5nWTuv8N18aA8g0ZN6Czh52HZG3oXpp8N5H+PI9t303HtnWTuv8FZVlYFUBpB44eDTnDJteDmHzvsYTD+dPf/3G3p2v1DWzit8Xzu4HZA4kN4BnDZsOyPvdF0LXPWPDGQU9t/6eYwqkVd4C/f5kcw+fr/j96yev3rYtk11QXoHfIvd8fBdsRMAsVQOkQMxnFk/uvQcQrNmaYENQEM+BcBgqE5rIEmEOjuJLj3H8v6ahbySZyCtWbF+0/0/5JXyyX8855ZsEoBYpEFr4CHOeSXPc3tfA+CtgY0ncDXCyLupyDkeqi818BBvgFwhRzKjDfD/23bviHIWfGPhaKmBh/jmlTzdRzTF/dkDD1cu55w2nxNh78p5MJuloGhz9Wdv/feIcm7IpbXveHRc55U8rx/cAcDGI89ULOfm7CAABTlAMlj0zniIN0BfUluzpUCKu7vuHpF7U13tFFk3E77FrgoU8goFD2bfHImlkVVoigQJwDAcZNpvvInef/gCSNCYyyCrMBhqQJE0N2b7jTehIINH3sFD29dBPowMHE7uY233OlbNW2VoUc65OZtEViEeavQc57U71jGYAlmFZP7gEFyNKPFuzGljI2GQM3iHN8D9Wx9GVrUz6qHk7hHlLPimgvWe5Lt2xzqymRCyCv3Zoca0ESXeDUXeSY/yBnhgy6NFOSscSOytSM6Doagn+a7dsY5MRkZWIZY9ULGcQ6pKXT5HNhAiFmmivqApRV7hDbBh7yZkVSYgZeiJ9Y7IvSUc0N7RYM6Te3M1qIafr9hVgU3rd9MYbXK6G1WjZyDF8nSQFinExnW7hm2nyqfRd8Y1FGJxFkqTCKeD5Cedwy65g0BzMwlpMdII33cTFFXhsc2vsTx9LgCRAxfx+ANdTFl0KrJUMlQbOc+Tp1BIB1Hbz2KX2uwZzoqq8NjWLpb1z0fJBgn2LRySqxGC96RAmzY2Gheya84KQPIMb9C4P/PGZpanzwJJIdJz+YhyTiQzLE8HkWj2HF8h5+WDZ6MqQcKHz6lYzslUjuXpILLa6jneoHHf8MZWlqfPBClPpOfKEeU8PdzB8nSQuuZT2TUHvMRXn8+xxaj5IKGjp1Us50IszkUpmWQwyP5ZV5DKxD3DGzTuR186wPL0bGQmE9r/zhG5zzlUYHk6SN/Gw2w8XNvu2EQyXnFb3xU7AZDKapp+fWhkcUuyTHTZMkAlVDR/Z+UQoBJdtgxJ9s5w2dbfTbzodgMVVSoQy8bY1t9d1s7IOaxo5vxsIIiXOGtcY6iK5paQpOyQXI0QvMOFImdZnPG8wxsEd83tJkl5kNQR5Sz4qkjkZO/JOZaJoypFWcnVy1mRZPJSAC/xBo17ImOQMyPLOVS0VOUCIkvaO3zFfKY4n5FyFcsZVF3WmYD31u5t/d2k81q5qZHkLBAJarwyNW6tqxa+xa4KnH3lHJqbm53uRtXY+fI+nn9rD5fMbWXpyrkjtlWvnMWOh7/NE/EAz0+dxrTMbhYW3mTeTXcgBb0xXPJKntt/exP7pmYYHLwA5DRNsx5FQuJg/WbuX3E/QbnERXDe2J/m+RmdRPMHuNYjnAXX3pm9xNNnouaiRKf/gWD9/iG5GqFeOYtdf/Fbnq9bxMJ0jI/veZTQzJme4A0l7ns7wiRT5yKFj9I4c/2Ict7+8Ld5OXQR+UCQTx98jpntDZ7gK7j2TO8nnrgEgMZZDyNLSkVy3v7wt3kxfCGKHOD/Hfwj0yc1eYI3GOVcTzJ9DnLkCA2jyPn16x7h+br55GJH+QsPjWvjfI4lLgQ1T8OMJwiE+yuS846Hv82+/FzeaJnHxQNvslA+6gneUOK+o2UpOaWTcPsWIh2PDytngCcDGZ4/cpRT5taPurd5HbFYrOK27pe2ixAIygSC3jj5GNGfyaFI0NYYGb3/wTBT19xAww/Xo0gwGIwwdc0NBOvcnyYvsHb7I+xL7qWgzkSRQApkUGTtFLg3uYdH9z5SnmlV5Nx49/0oEsTC9Z7hLLgiQ0FpAAnUUIKCnB+aqxHBMJ3vXYnyppY8ISt5z/AGo5wXoUggB9KjynnamhtoeDJJX7CZVCDkGb6Cq6JOQpEAOYMayFJgGK5GFHlHn0oRizSSDIQ9wxtK3PPq6cX5PLqcZ1x1OcpbEA9FPDWuBVeVEAqh4nyOVzyfp665gcZfb0GRIBGKMPUGb/AGw3xWzkeRQA2mRpYz0BQNoUgQzxY8uTdXg2r41fab8AHAsWR1V9M0r1pFU6OWDZtqaaf56qst65vZyCt57uq6CwkJVdGywiS5VKxTQhoy06p51Spam7QMusHGVk9wLucaAME3oGXGDcfViBmXa9afRChKqLPTE7zheO7aWJUCKf3vI8m5UdU+S82c4wm+ZVwL2hiV5KT+90rk3LxqFU2q5qJLz/IGbyjnLsY3clr/+3Dcp120HPDWuB5KzlCA4vpVqZxbQlrmcLJjuid4w/Hzuci9kvnsZ8UOCV+xmwDo0++WrOxqGikYZPrlfwJAdu4CT5jxBTYd2sT+xH5UVMNGUFLsVFT2Jfax6dCmsu9JwSCd714JQKpjuic4G7mqBVG+o6BvfMNxNaK5WLB6MFTH5Jtu8gRvOJ67UHZKG/5Icm7taAMg8J73eYLvUHI2KrGVyFkKBmmb3AqA/J4/8wRvOI67rsCPLueWBq3tYKiOjjXeGNdDyzkpqjFVLOepSxYDkDt3uSd4w3HrdqEo5wrms7hazq9jVw5vSN3HuCDuHGyr4gqijvOXQfdGUk2tFvXKGizpWMI3LvkG2UKWl7rhJ/tgQfss1lz0Fb1NOBBmSceSE747408vgc3PEg/W2dnlMcPIdf9R+PduaKqX+crFo3MVEHWgCnKA8FUrLO+zWTByf/gVeOggLJt5Bh+qQM7tM6bA24fJn362nV0eM4xcX+6G+/bCgknTKxrTRrRP74BtR8h6hDeUc1+7EdYdhPNmLOHai87U2wzFvbl4W8NgtJnm1d6wWhm5vt0D390JU5oa+WKVcp565qnQ8xap6Z1Wd9k0GLnfcVCiJwWfXPJhFs0stRlSznXevzrOCviK3QSAsNi1VXHnoJgw8Yy3TkLhQJgVczUFZeDwbuAN5rZOY/X8c0f9bmtR8R1I5ka9ysYNMHJ9Tj0CvMC0piZWz7+k4t9oCAeQJVBU7bqm6BBXNbkRRu6vbd0M7OSMKfNZPf/UUb8r7hEd8Mgp38j16IGdwGYWTprB6vnVFZxtKc5/L90LbOTetUWT8+lTR5ezkHFW0TIm60InXinoNhi5rkv2Aq8wq6Wd1fMvqOp3Wj0u5zsKjwNp3nnSxSzpbB3xe0KB9y125fBdsRMAIsauGsWuFkzc+r2So1wYLtAqNoOCQipXsKxfVkC3ylYhYwBJkvR7N2MelbV+T2x9ZaEG4gJ5L8bl9Bf73BKtjKsRLfXe5Q0QL1plxKFzJDSGg4j7473ItzSfq5ezWMf6k97jDaU9p5L5LDwOcd9iVwZfsZsAEBN8tEvDjWiugQkzOMKF4UMhGg4QLO4GXjrtgkF5rzCO0givL44xfcOvTM4t9d5134i53FqhEmuE4O21sS0gDmpNFchZlqXSdVNelHNKm88t9dVntAqLXV9xTfASCoqqe4kqkbNoE0vnUVXV0r55Cb5iV+NQFJV+3WJX+WYgJkw6p5AreLP4ozj5VarYSZJEa9Sbp91Sgkz1G4GQdcJjbncBXc4VKnbCEiAsfV6CUMpax2Sx87ZiV+18Fm66AS/KOTl2OYvveFHOCYPXoBLFToyFgqL6RYoN8BW7GkcsnUMpHmQqLXcC5ZukV92xwmLXUEXcWItH3Rh9VZa0McLrbve4bpmt1BXr3Y1PHNJax2LJqfde7JURIlSgqQJXLHi7FIaQUcsYLLPGw6nXrFjCuloXkokER4+LbAh7f5+yAr5iV+M4VrTkNEWChKsocBgKyNQXA4696qJLVOmKBe9aNXSL3ZgUO2+7Yqt1uXvaFTsOi12zR8e2gBiflVhywNty1uPMKuRqhFDg84rKYNZbscIxXcaVjW9ZLsUID3rU42AFfMWuxqFbcsYUe+VtS85YFLtSRpm34lOOjcN143k5pyuPyYGSi86Llhw9xm4MCrxXDy0CVcvZwxa7ahUcI+rDAf0OVXHg8wrGotA2RDQDhFdDSayAr9jVOPoGi4kT43DRefHEC6WJXo0r1qsZZcJFN54YO69mxVbrcvfyhq+7YscVY+dNOZc2/QpdsXqMnffkLMZmpZnex8OrcXaCdzUKrTi4e/VgagV8xa7GUcqWHI+LzpsTZrCK7CoBr7qrhMt9fHL2FmcAVVVJZKsNqhcuOm+Na0VRS8kTY8mKjZYUWq/FXuUMJYgqlXOTR2txwvhcsVByx3rtgFpNqROBxqKcfYtdCb5iV+MYS3FiAT1b0mMboMBgRtsIqrLYicBjjyl245Gz2Ci9KOdktoDQUaqNsUtk8uQ9lPEdz+T1RKix1LETSkK2oHgug9A4NivNfvZyiMF4XLFQGh/9HgspqbZ0EUBj0RXrx9iV4Ct2NY6xFq6FUsbRYNabE0ZYoKqKsRMWOw+ddDP5gh4kPZaCps0e3gDFKT0gS9SFKlvOmjya8S3GZDQcqChj8Hg0hIP6vaNeC68Qcq4PBQgFKpOzl110paLbY7PYNXvU2yJ4j8kV6yt2OnzFrsZRqm9W/YYvLF1eNHGraikjrKqsWA/Gpoi+SlLl8UdGlFxW3uEsoMdRhgMVXwEXCshEw5pi5CUFR0+EGmPclTGD0GvW2ViVGbHg3SLr6VyBbNGSPNYYO68mCOm3i1Sh0IoyR14b01bCV+xqHMfGUd/MyybudE6hUPRbVeq6AUNsiodcGHqgdV0IWa7+flsvu6wSVdY2E2jxYJHi0nVi1c9lAa9acqotQg3eDSURSqwkaVejjQXNHr11I1bFtXECXt6nrIKv2NU4xpMt2aDXB/JWLSQotzJGq7gAvMWDN0+Ivo6lmCl4O0mmlBFbnWvSi0WK+8dpsQPvuifjY1DgGz16YBGHjcZIcEwHNfDu7SpjSRpp9PjNOVbAV+xqHCJbcizlEbw8YYw17KpZHL1Y62s810yBcbP3DmeB+BhqFYLBVeUhzuOVMxits97hDZDIVB9U79Vs7/gYrFbHo9mjparGkjQiXLFeU+CthK/Y1ThEzaqxXEHk5YreY7XkCGtIPO2djMnxXD8EteGKrSbzGYyuWO9sfOMpTiygy9pjc7pksaveFes1rrExlPw4Hs0eHN9gLHfiZ8WOB75iV8NQVVWf2GMpjyCyYr1osYuPc8MH79Q5GxhnMVNhGcjkFbIeK4MhMrar2fDBmzFI43W5g3fd7nqMXRXzucngcVAU79TtKxXpHVt8HRgtdt6SszFeuFJ42bNkFXzFroaRziml7KoxLBINNWCxa6pSsQsGZH3z8Io7drwbfmNZ+Q9vcBYYy4YP3ixELZTQ8Sh2jR51xY7FRddUdNGpqrdKNlV7w8ZQ8OrtKrGxxFIKV6wH9ymr4Ct2NQyxGAYMZQ6qQWMNJE9Ua7GD0sYpgtXdjvHcRgDa+Ggolv/wmiWn2uvEBLwYXG6GJcerbvdq74kFqAvJBIvxtV7iGxtDyY/j0VzvPcusqqpjLHfiXQOEVfAVuxqG7qKrC1Zc48sIL1+unBhjUD147/aJ2Dhj7MC7GYSJMVpmvRhcXtrwx2/J8VoJkLFkxUqSVOaO9QrG4o48Hl4MNUjnFHIFzWU+lgLFXhvTVsJX7GoY4w2q109CHnJjCAyOQ7HzWmD9eOUM3s0gHKtl1pOuWHEbwTgsdqUq/d7hDaVxWa0C78VxPd57YqFk8UpmC+Q8kgQmZCRL6B6ESuDH2J0IX7GrYYgriMZ6wjfG2Hnt0nDdYjeGxbHVY7XszFHsvJlBmBhD4VrwnvIOJWVsPBY7r7pix5IVCyVF1ktJBGZYZo0HWq/I2si7Gg+TbrHzWJKMlfAVuxrGeIOthWKXK6jeuzR8XDF2xdsnPKLY9ZtqsfPGJiAgrMlVJ0/orirv8C1Z7CaenMfiitXae0+RNSOW0pgE5pXDy0BqfMo7QDLnvXhwKzD2kePD9RhLGQwlmyXxxBOo2Sx5FUAzifc++BDtxZ+RwmEaL78cOTz2elpWQ7fkVFjHzsi7br8EyBx+cysDyS16G7fyHqvFrozzUY3zoZc3MbD/Fb2NWzkL6GVtKnDdGPnKgwAB+vviDDz4oN7GrXwVxRBYXuXGV8Z7ACDAwJE+T/AWENbKSuazkW99vwxIHH5hIwO7X9bbuJnvWK2TRt4AjapMAomeRx+nrVFr42reY4wtrAvJBGSJgqKSSOfHFH5Ta/DfQA1jLBt+alMX+2/+rP7vyLu+QiYYZue/fZV08pj++ez77qPhvGXmddZkbDu2F5DYGd8KLBy1vZG3tOBSOP1d9L7wCj3f+3lZOzfy7kumAYmXDz/DaTNXV/y9Ms5nXQNzz+PAQ4/Q8/bjZe3cyFngYKIfkHjt2EtcwcjcjXxT0TZ45xeIpfP03HpbWTs38h3M5hFepj/0ruf9zWOTc7JlBlx2CwPHYvTc+i9l7dzIW6AvmUIb489y1uzK5Swv/RB0LqXnwbX0dD9V1s6tfPfHjgESm/s2cjUzKv7e8Wt33WW3QMsMdn3vHtoOb9M/dyvvp/a8AMhk1YGqvidJWtWHgVSueENJnSX98xJ8V2wNY2AMJ6Do0nMIzZql3UAN1OczAKSCEa2BJBHq7CS69BxzO2si8kqebUf3APDH3sfJK6O7YYy8m3JJAOLhaKmBS3knMhnyBU1W/9/b/10RVwEj5xPkDK7lLJBX8hwdHATgdzt+MSp3I9/GbAqAbCBEVi6eb13MV1PeASnPf79+95jl3JDTfmcwVF9q4GLeANl8jlSx8tD/bbu3KjmX+Bo2exfzzSt5Die0Mf37Xb8as5wBGovcE0LWLue9bvtTAPSmdlTFG4xxdr4rFnyLXVUo5BUKHoo1GxjMIqvQHA5W0W+Z9htvovcfvgASNOQyxCJNDIbqUSTNDdJ+400oyODSd7F2xzoyWZBVGEgfYm33OlbNWzXKt0q8G3IZZJUyzuBO3r/Z/CiyKgMFDiT2VMhVoMS5Pq+NlVSwzvWcBdbuWIeSDyKrcCS1vwLuJb6RQp6AoqBKMrFwI+2ZOOBevg+99RSyKiPJKXrjveOQcw5ZhVwgTE4OEVA1nm7lDXD/1oeLYxwODu6uSs7RXNozcxnEmA4hq3A0tXfMckbSFDuNe9T1a/faHev0/SqrDFTJG5rCAWQVYoNZT+3R1aAaXr5iVwU2rd9NY7TJ6W5UjGj3IMvTQSLb4mxM7qr4e6p8Gn1nXEMhFufsQpQ56SAD0y5iV9OpBJqbSUiLkdZV/nt2QlEVHtvaxXnxxaj5IKGjZ/D4A11MWXQqsjSygVrwDuaDLE8HaQnMYNecFYDkSt6KqvDC62+xPH0GkqwQ7nlnxVwFBOdJwXaWp4O0NixwNWcBRVV4bEsXy5OaSyl88PyKuBvH9sVJiWwgyL7ZVxLLJl3LV1EVXnt1O8vTpyIFIoT3j13OuXiC5Wlt2d8+92rCSt61vEHj/oc332R5+mxAIdJzeVVynhycpM3lhoWuH9djHdNGGMf3AnkycjpIYdI57JImuZv31i7e0Xc6hXSQgDS9at6nD0B7Osi+Px5g47aExT12BolkvOK2viu2hpHJaRp+JFh5TSAASZaJLlsGqAQVzbSdk4OASnTZMiTZvcNmW3838WwMFOFeyxPLxtjW3z3qdwXvcEFzYWcD4tzjTt7b+rtJZDUXKlIeUCvmKiA4l8sZ3MpZYFt/N7FMsvRBhXI2ju1w0d2TdfnY3tbfTbIYEI+UYzxyllVFl7U2vt3LG4rzOaO5FCU5D1Jl3AXfUFHGXhjX2phOlT6QcmOWM6g6dy+M7/I1u3reoYDGK+uRmn1Ww7fYVYGzr5xDc3Oz092oGP+0bS9vp/P8v4umsnRBR1XfVa+cxY6Hv81PstN5qa2JZbHNLFR6mXfTHUhBdw6bvJLn9t/eRO/MXmKDy0AJEp3+NMHIUQ7Wb+b+FfcTlEfuu3rlLKQnfsjzde8gqKh8ds+jhGfOdB1vwXXPpBZS6bOQ6w7QMHM9ElLFXAXUK2ex+aNreb5uIan4UT6651FCLuQsILjvnzZIYvAioEDjzEeQpcq4i7G9QzmZHXWzuKrvVRaGB13JV3DdPXkq6expBBp6iI5Dzjse/jZvyufSV9fMhw+/wMKmgCt5Q4n73o4gydQ7kEJ9NFbBXb1yFluK43ow0efqca2P6akpEoMXgpSladaj45LzszGV56fNYFJ2Lx8ovOlq3r0ze0n2tJFnGpHJrxNp31AV7/v6+3h+MMaVi5pZesFc6zvuAGKxWMVt3SVllyMQlAkE3XfiGQ796TyKBG2Nker7HQwzdc0N1P3ydRQJksEQU//fDQTr3JcmL7B2+yPsS+5FlUBRIyCBGkxRkPPsTe7h0b2PsHr+KNmEwTALPvURlBc1i0ZOkulc4z7egmtB7UCRQAqmUGTNElMxV4FgmOkrr0R5CwZDEWQlz1QXchbQuaNxJ5BGDRQoUCH34thueHAXigSDwTBT11znSr46V6UTRQI5kByXnKeuuYH6R49xVGomGQgzdc3/cyVvMMr55CL3dHXcg2FmXn0lylb3j+vSfJ5hynyeuuYGGv57nTa+Q3Wu540MBSWCIoEaTFa3ZgON9SGNa77gqT26GlTDqzbfgA9g/AWKm1et0gv8Ztun0Hz11ab1zWzklTx3dd2FpGlziPp7kqy5KiUk7u6qLJtw6uqrdXdVes581/E2clULWuauFCi5cKrhKjDlwuWAlhUb6ux0HWeBMjkrWgavJGf1v1fKvXnVKpqCWv2Q1JQZruRbLmctq1MKpPW/j0XOzatW0Shp7qrM9Fmu5A3HcVfGzn3qxecDMBisc+24HpKrPH45tzRqv5VsanM9b0DnTpF7NbxL14r5WbHgK3Y1i1xBIZnVBvlYFTspGGTSmadp/3jHea4z4xux6dAm9if2o6KWFgiA4qavorIvsY9NhzaN+ltyKERzRJsawY98zHW8y7lqpQyMil01XAUao5qSlAxG6Fhzk+s4CwwlZ+MmWCl3KRhk8snztX9cfKkr+Q4lZ8bA1QgpGKR15hTtp1a+y5W84TjuhbHLualBG9eDoTrXjush167igRTGLucZ77wcgEznSa7nDcBxCnw1vBv0cifeuGXDarhP2j5MgfFy82qv4TGiffHJ0NtNrnOuCb2yDks6lvCNS75BtpDl8AB8eRtEQip3XPxveptwIMySjiUV/V5bayPHDg+SX3aBVV0eM4xcf/lHiWeOwOVzlvOud5ynt6mGK0BDsaJ/prmN5tUrTe+zWTByf3Un3LMH5rRO45aLvqK3qZT7pFPmw+GdpOcusLLLY4aR6//3tMTzx2DFvItZcfbFeptq5QzQ2jkDBg5QOPUMs7tsGozcH3sVfnsAzp62mI9WKWex9qXqG2l6lzvHtZHrS9vgJ/tgQXsna8Ywpo2YevH58PaLJF1aycHIG+Af90j0Z2DN0k/SOVlrUynvJqHYeejqOCvhK3Y1CqHYNUWCBOTKL1Q+Ho0RbWEcdPnl8OFAmBVzVwDwxv4B4Fla6+tYPf+KMf1eazQMDJYpyG6BkevjL20Cejh3xmJWz5835t8UBT6TeXdfom3knunfB7zK7JYprJ5ffSV9YckWV3W5DUauDz23ETjAeTPPYPX8ueP6XXElWdzFc9rI/a3ut4BuFnfMZfX806v6HXEtV06BbEGlzoU+KiPX/sO7gTc4qW0aq+efO67fFXdeu/U+ZCNvgM/nHgYKrFpwOXMmNVT1W74rthwuHOY+zEBsDPfEDoUGD1b0ThQ3rIZx3BkoNn03KnZG9I/xntjjId6VokLKIxdpi8PGWO+GFO8slnLnxmeEiJcd73yG0mEt4WLFzgjRz7F4HhrDpbERd6mCY8SgCWuXQHO99hsxl69hAHlD6NBY5Oy7YsvhK3Y1irFeDH88hIvO7RY7I4Q5fjyXQbcW31t/0t0LhS7n6PjkHA0HxE1EntvwxypnfeNzqcXOCKGUVHtB+lBo9NicFvIR1rdqIMuSPj7capk1YryHFSOEgjSYLZB3eX03o9I9FjnrrliPjGmr4St2NQqzFLtGD06Ywez4F0ehKPW7/LRrlpwlSaKhaN0Y9Ih1dryWWaEkud0qC+NTbo5Hg8fmtNj0G8fIXbwzL1jszPA2CBjXP7fPaSGbaDigFxuuBror1gMytgO+YlejKLlix7dAiAXGK6d7mFiu2JhJih2UNgKvyDoxzg2/5Ip1t4zBvNAKMCh2HtkE47pSOzbuTXXeUWTN8DYIhIMykWLts7jLXZR6qMEYZSwOpV4KGbISvmJXo5jIFjuxODaZ4IodcLErVlVV0+QMJbe7FywbYIi9GrMrtqjYuZyvqqp6H81xxRYV+Ky7eQuUYuzGJmdPuWKLMmkIV3cN5HDwilI7Xot0iaf7ZWwHfMWuRiE2ArOC6kVgqxdgRgCylhUL/ansKC2dQzJbIFfQslhbxxljBx602JnoilVV92YDJ7MFCorWv/Fa4MF4WPPGnC7FF4510/eGAg8lmTSaoMCDQdYu5y4SmMZqkRY80znF9fGEdsBX7GoUwtJkWvJENu/qzc8IUcZhrC468IYrVvQtFJCoD43/hN/gNUvOOF2xQkkqKKqrDy7CmhGUTZazRxR4PcYuMk5XrMuVGzAmT5hlsRMlfdzNfbwWuwYPxRPaAV+xq1EMmBSTI05C6gQqgwGG5AkXu2KNcSmSNPZahQJeC6ovJcmMbROsDwUIBbT35ubMWKM1www5e84ymx6fK9Yryg2YW+4EDG5ol8t6vFnf4aBM2CPxhHbAV+xqFGbFXtWHJl4ZDPBGjF18nBve8fDqhj9WS44kSfpG4uZadnETM2KhZIX3wnxO5wpki6618cZfeSHGzsysWPBOtqhIDhrPGPdLnpTgK3Y1CrMKmnqzDIbWTzNi7OKZvGtjNsabLXg8Shu+V+QsNsGxu62aPeByH2/G4PEwKvBuD68wbtIN4TEqdnryhPs3fDPr2IFR2XHv+AaDxW4c+5VQYr1yMLUSvmJXozAzWzIa9lZB00RxIxzP4mgM1HZr0LXZFjuvxV6VsmLHPsabPVDypOSKNVfOXrhlJG4o/yGP8WpEr2SGgvkWO6/U8DPj8NLoIQXeaviKXY1Cj7EzszyCBxZGKFkWx6PYBQOyftrtT7ozMzZmsmLX5CE5GxMexmWxq3P/7RNmW+y8dMvIeOPrtO+KrFj3yhggky9luTeO0Tp5PBq9otiZ4Ir1WoywlfAVuxpEQVH1iWxOfTNvlTwxw0UHpQQKt7rp4iZv+F5aGI2Zu+PJfvaEK9bEQxpo4RWNHgmviJtgffeKcmOUxXjXLgGv3AtshitWdzu7XM52wFWK3TPPPMPq1auZMWMGkiTxwAMPjPqdp556inPOOYdIJMKCBQu49957y/7+pS99CUmSyv5btGiRNQRcAmOQsJmuWLcvDgLjLWgqIN6dW68VEy4682LsvGOxE30MBSQiwfFY7NyfPKEXJzbJFQvekXXchLnsleQJIYu6kExwDNdqDQXPJE+YkCDU6CGXu9VwlWI3ODjIkiVLuOuuuypqv3PnTlatWsVll11GV1cXN998M5/61Kd45JFHytqddtpp9Pb26v89++yzVnTfNRCbVH0ooKeAjwdecsWqqmpayQBR9NetmbFmZ0t66ZYRs65e0q8Vc/Gmb7bFDrxzy0jpnthxxFHWecNqZUY2//HQE0e8kjzhx9iZAvNGkAlYuXIlK1eurLj997//fU466SS++c1vAnDqqafy7LPP8h//8R+sWLFCbxcMBpk2bZrp/XUrzEycAIjqhWvd7bYByOQV8sUq/eNdIFvri7dPuDTGzqrkCS9kxeqb4Di5CyuYm5Mn4uMsxDwUvHJYS5hwePFKAoHZNezAO8WZxcGqZRxWaT8rtgRXWeyqxYYNG7jiiivKPluxYgUbNmwo+2zbtm3MmDGDefPm8Rd/8Rfs2bPHzm7ajlJxYrMsOd7JijWjPIJAKf7KnbzNjrHzopzHLeM698fYldyRZlrsvHHLiH54GU+MnSFG2K2li8C8MW2EFwoUq6pqOKSaEGPnYq52wdOK3YEDB5g6dWrZZ1OnTiUWi5FKpQA477zzuPfee3n44Yf53ve+x86dO7n44ouJx+PD/m4mkyEWi5X95yWYbrELe2MTgNLJtCEcGHN5BAHhinXrfbFxk2OvvBJ3BeZkS4Kh3ImLXbFmlO85Hl5JlDEjXtaoLLiZrxWuWC/E2JXdhTwOxa7BA0qsXfC0YlcJVq5cyTXXXMOZZ57JihUrWLt2Lf39/fziF78Y9jt33HEHLS0t+n+dnZ029nj8KJm1J15QvZl1oNx++0TM5ALFnoqxM0nOeoydS62yYF4ykBFeccXq9z6Po1ZhOCgTEddNuVjBGTQpvMAIUePRzbyNdyHXhcaukjT6WbE6PK3YTZs2jYMHD5Z9dvDgQZqbm6mvrx/yO62trZx88sl0d3cP+7u33XYbAwMD+n979+41td9Ww6x7YgWEiy45gWKvoLTpu9VNZ9WVYpm84mqXFZin2Ik6dm6VMZiXKGJEo0fiKc0a416oZWfGjTnHQ7y3VM69bmhjqZPx3IXspULUVsPTit3555/P448/XvbZ+vXrOf/884f9TiKRYPv27UyfPn3YNpFIhObm5rL/vAQzixNDyRXrhQlj5pU8JVesOzcDM+JSjDBuKG6vbybkPJ7YK/CGK9aMkh/Ho8Ej1g3dDT1el7sHEihKa5c5NezAG3O6lPU9PhkLq67brdB2wFWKXSKRoKuri66uLkArZ9LV1aUnO9x222189KMf1dtff/317Nixg1tvvZWtW7dy991384tf/ILPfvazepu/+7u/4+mnn2bXrl0899xzvO997yMQCPChD33IVm52wuwYu0aPBFqDuQHILS7Oii0oqukuulBA1svjJFwua7OsG2KOJDJ5FMV996YqBjmbmxXrjUQZM5InwBuZsYMWJE+UuaFdWvLErJASrxSitgOuKnfy8ssvc9lll+n/vuWWWwC47rrruPfee+nt7S3LaD3ppJN46KGH+OxnP8t3vvMdZs2axT333FNW6mTfvn186EMf4ujRo3R0dHDRRRfx/PPP09HRYR8xmxEzPXlCbALuPPEZYY0r1n0LhdF6anbs1bF81vUbvlmlIcS7U1XNMmbWnDELyVwBtahvjudO3OOhW+xcr8CbY5UW33dzkWKz74kVaKoLkklkXavwmJUE5qUYYavhKsXu0ksvRVWHPzUff6uE+M6mTZuG/c7Pf/5zM7rmKZhhsVOyWRJPPIGazcIAQIDYkT4GHnxQbyOFwzRefjlyODzOHpsHY1bsWGDkHcgABOgfTNP/2wf1+zXdwFtsUOGgRHgcVerL5AzU52VA4sBjTzK1SWvjBr7HQ/Afi5yP51wny6QViX2/Wwd1Whu3cBbjWZYgEhxflreRt3xQAmQG9vQw8OA+vY1beAsIa85Yrtgy8q3v08b1oZc2MbDvFb2Nm/iadRXi8eM7Kub0408xoxhV5CbeIjltvFZZo2Knquq44vW8Dlcpdj7MQcyE5InUpi7236y5tJOtnXDp35A42k/Prf9W1m72fffRcN6ysXfWZGw6sAWQOJrdD5xd9feNvNOBMKz+CnlVYsc//CP1hZJL1mneIoszp8b4/Y7fs3r+6jH9jpEvQPiyW6BlBnu+/0M6Dr+tf+403+OxvW8/ILEzvhmYX9V3j+ccXfGPpOtb2PHN7yAP9Oifu4Fzoug+U6QkD+18aMxyhnLemRlnwrKP0te9k5577y5r5wbeAn3JFCCx8fCznD27Ou5GvvJZ18Dc8+h56BF63i6Py3YL3+3HtDG9I1b9mDbi+PEdueRvoK2TPf/9Y6Yd3Kp/7hbeL/W+Dsj05w6M63eEl6agqKRzCvVjPNzXAlwVY+fDHJhhsYsuPYfQrFkgSdTnMwAkg5FSA0ki1NlJdOk54+qrmcgreV7o6QJg87FXyCvVm+SNvCOFLMGC9huJcDHL2iW8+1Np7f8E0tzddfeYuEI5X0CXdSpUlLVL+BqRV/JsP6ZZmZ7pWV819+M5N+a0mpeDIXfJGKA/pclDGqecoZx3NK+NH13O4CreALlCjlRW8+D8/O17xyXnhiJfXcbgKr55Jc+Ovv3A2Ma0EceP76i+fgtztLt4/3Gv5nF7e6BrfLxDAd2rMtHdsb7FrgoU8gqFvDtTxo2IJ3PIKjSFAuPor0z7jTfR+w9fIFLII6uQDYRRpNIpqP3Gm1CQwSXvZO2OdSRTBWQVBvNHWNu9jlXzVlX5KyXeSNCSTdJX10ws3MikdAJwB++ndryArMrIUpqeWO8YucLxfBvyWWQVUoF6XdZu4GvE2h3ryGZBVmEgfXAM3Ms5N+VSyCrEQw2u4/zE9g1FOWfGKWcw8q7Pa2tEOlDn2jn9wFsPI6ua7eFQcs+45BzNZZBVSIbqXcm3fEwfME3O2pwW3KOuG99rd6xjsLhmJ/NHx8kbmkNB4pk8scEs7S6Llx0vqtnLfcWuCmxav5vGaJPT3RgRKnBqHyhqkN7nDxKPHB37b8mn0XfGNaQSKZang0CQ7XNXElBVAs3NJKTFSOt2mdX1cUFRFR7b2sU7+k9CyQQJ9i3g8Qe6mLLoVGSpOsO04F2IxVmWiTBAkEMzL0Nq63MFb0VV2P3KXpan5yMrLYT2v3PMXKGc7wJpMqF0kMKkc9gV6HAFXyOEnM+Ln4ZaCBI6smRM3I2cF6tttKSDpKacx65Ip2s4K6rC9k27WZ5eiFxoGrecocQ7nVFYng4SoY1dc1YAkmt4g8b96TffZHn6bEAl0nPZuOTcHmhjeTpIa3S+6/iWxvTp2pg+epZpci7E4syTOyAdRG0/i120uY73O/rma2t2/7xx816eCRJPw+bH93G0OTL6FzyERHL427KOh++KrTHkCgpKMQFFpLmPFZIsE122jJDBPJ6XA4BKdNkyJNk9w2dbfzfxbAzU4llFyhPLxtjWP3wh6uEgeINKWNHc2lk5iFt4b+vvJpUrZvdJOUAdM1co5xssyjrnFTnLY5NzmYwL2rvMuUjGcLyc84xXzmCY0wUtwz0vi7O9e3hDUc6ZYriBnAdpbNxLfI0yBjfxLY3poiVxHGuXgHF8h/Q57b7xXb5m58bNO1RMJMsW3F/BwUr4FrsqcPaVc1xfrLinP8XzG94iFJA4b9VJ484MUq+cxY6Hv80roYvIBkJ86sBzzGqPMu+mO5CC7hg+eSXP7b+9id6ZvSTyc1HkFuo6XibcvIWD9Zu5f8X9BOXq+ip4/yQ7nZfaGnlH/C0WKj2O8xZcd7UtJJNfQKhlJ3XT1yMhjZkrlPg+Ohjm+alT6UzvZGHhTcf5GmGUc2xwOSgBGqY/RSDcNybugvPDg3U8P6WDOemdLCxscQVnXc7tc8nkTibYvJv6GeOXM2i8u9Z/j+frtELuf7f3MepnTHcFbyhx3zslQDL1DqRQH40zx85dvXIWO/7ydzxft4iTUwN8fM+jhGbOdAXf8jF9/rjHtBFifD8Th+enzaAjs4f3u2ROl6/ZJ2lr9pSXCDdtHRfvO3b18Oq+JNedNYmli6eO/gUPoZo7652fxR5CICgTGKcVzGrEswUUCZqiIYIhE7KCgmGmrrmByFNp0sEQ6UCAqWtuIFjnfJq8wNrtj7AvuRdkUNQ6FAnUUIqCnGdvcg+P7n2k+mzCIu/G/+tCkSAeijD1M87zFlzzyukoEijBFIqsnU7HzBV0vvX3PoUiQSoQcq2cVUlCUeugyJ+xyrnIuaHIORGqcw1nwbWgnKyN54BJcgYIhpl7/SdRXtD+mZEDzHUJbzBwVxeiSCAH0uPjHgwz891XoWyGwVAdspJ3nZy1MR0Z/5g2oji+o/c8giLBYCjiOt7IoCj12hgPDo5vzQYaoyGNa77g+r26WlTDp7aY+9DrPpl1TyxA86pVRFXNnJ+f0Unz1Veb9tvjRV7Jc1fXXUholklV0eIqJLmYTYg05mzC5lWraIloU2Rw8jTHeZdxVbQMN0lO638fD1fQ+DY2aL+baZnkOF8jyrmXxvZ45dy8ahXNUW2jS7mEs5GrWpQzRZ4wfjkDTFq9quSim32SK3jD0NwlE7hPu/QiAAaDdYQ63bGGlY/pkrIl5rQZcm5etYqmRi0TON3U5j7egFooyjkwft76LUkTPCvWV+xqDGZfJwYgBYM0tbcAEPqzDzhuxjdi06FN7E/sR0WLK1TFAlncDFRU9iX2senQ8EWsh4MUDDJ16RIA8kvOcZy3kau+6QVKit14uILGd8rFmnuucPKpjvM1opy7CIouFGMMx85dCgaZfsmFAGQXLHIF57IxLQ4qgZJyM145g8a7sVjnK/KX17mCNwwjZxPGeEvxwDIYqqdjzU2u4Dv8mNaUErPkPO1PLwEgN3e+63gDBgVek/N4eAvFLj7BFTvnpezDVAzoFyqbm+rd3NEOu/tQzz7X1N8dL5Z0LOEbl3yDbCGLqsLNWyUU4O/Pu5m2Rq1NOBBmSceSMf3+1LPPgH2bSXbMMK/TY4SR693rJLbE4AOLVrH85FJ5gPFwBZh07jmw81Uyk9x15Z6R+8F++NduqA/L3HHxV/Q2Y+U+9fxzYccmki3tJvZ47DBy/dHjEpv6YfWCK7j09Cv0NuOVM0BTcwN9x5Jw/kXj7LF5MHJ/4jW4vxfOnrqI6y4an5zF1XGZYJj6q68ytc9jhZHrgX74NxPHtBFTLlgG3RtJNbWOr8Mmwcg7X4DPbtHsS/904eeIFvXbsfIWRYoTLr0+zS74il2Nwex7YgWixZNQMut8fSsjwoEwK+ZqdwOncwUU9WEA3nvKVaYot20NmgVQKMxOwsj1x/IfgX7+ZPY7WDF/mmnPaHCpK8PI/dW9/cAfaauvZ/X8Px33b7fUazKOuUDGUM71V0+/CBzm/Flns3r+LFOfo8s6654MQiP37h1vA9s4ZfIcVs8/Y1y/a7w7OpEp0B50/lYCK8e0EeKeXLcoO0beRxMZ4DEAPrDoXQTk8SX7+ffFavBdsTUGK1yxAI3F+wvdtuEbYZzMDWFzziwiVtENip0RsbS4HN3cs1mjrsC7Z7M/HoMmX5Yu5oq4ps1NEGO60eSL4bXfdPecjutjfPxrWSggU19MJhP3DLsJZo9pI4RS60b3pL6ORYLjVurAoNi5RIl1Cr5iV2OwymInFKXBrHsnjFgco+GAKYsEQGvxPfYn3bUZiM3JbJe7uIDczSdeXdkxSakV7zDmwg0/YZECDyUlwq2yFvfkmsW9ub6o4Lhw009YqNg1RbTx7UaFVuxXZslYd8W6dEzbBV+xqzHoMXb15i4QbnXRGSEWbDOtG61R97hijYhbbLFzs5zF4cIsOYu5kswWyBXcFWogNmMrLHZun9Nmj3Fh+XOLy90Is8e0EULZSecU8q4b3xpvs6o4+K5YDb5iV2OwyhXboLtt3O+iM3NxFO8xkcm7ZtPPFxTdVWqGm8qI0mbvXjkLK5ZZ7nbjO3Tbph832TppRGPY3W4rs93QQkGMuZBvwoJDqYBYu8Fd8ZRQspKbp7z7ih34il3NwSrFLhp29+kezHfRATQbfsstm75x0TLbYieUpWxBIeuCi+CHQqKodJrltgrIEk0R9236qqrqsrbCFau7rVwaXhEzMcbO+DtudEmaPaaNiAQDhAJaaIrb1m+zQ0oaI+5KFHEKvmJXY4iZbNoW0F10Lt0EwBCnYpIlByAYkPVNtd8lip0I8q8PBfS7Ec2C8XSfdKmsBy1Qdprr3eemS2YLFK991uOkzITbXbEJk93Q4pDmxhi7krfBmmxdt8ZTirXMrP1KrF9uTBSxE75iV2Owqo6dJ1x0FgUgt7gsM9Zs94URwYBMpHh1jds2AYGSnM3bBMW7dIuMocQzIEvUhcxfqhtdHl5htrWyyc1JMhYmT4B7Y89Md8X6FjvAV+xqDpbF2IXdXRoBrLHkALRGi4qdSzJjrUqcEGh0uRJvxSaoW+xctOkbEyckyZwsbyPcasURMHuce8FiZ7Vi57b1W0+eMMsVW5RxKlegoKim/KYX4St2NYR0rqDHRbVELbLYuSz41ohSnIq57ozWYgHb/lTW1N8dK+L6Kdd89xxA1OUlT6xMknFTLTsrsryNaHBx3GxBUU1PEGrSFTv3KO8CVmbFgnvd7maXOzGu/W5dv+yAr9jVEMQkkaVSxptZaHB5MVMwZpaZq/C0TDCLndjw3RpjZ0XRXmExcKMr1jI5u3Szh3JXmlkHNWGVdaPFThxKrVbs3Mbd7JjwSDBA2OWhJHbAV+xqCKUadiFkkwr0CoiFwa2bPZhf0FRAWHPckjyhZ5KZ7G4XcKvbRsAaV6zIinWHjMHa4sRgOKy50AofL87lcFAmYtL1X00udsWKRBHrXLHuPJjHLCi0LjLcJ3Kcna/Y1RCsSpyAkhXHzacgERMm4gHNgttun9BPuRZbchIujbGz1hXrDhmDoYbdBIu7AmPslXncRWC9m5R3gUGLLXaNLg2lMdsVC8b1y31ytgu+YldDsCpxAkqTxY3VywVKxVzN5a8nT7hk07c6xs7NGz4YFHgLXLFuqmOnhxZYJGc3J09Y4W53tcXOgkxvI9wqayvCShpdfjC1A75iV0OwVrEz1DfLuXPCWFULym3lTvTF0KLTfVRkQLvU7W5JjJ3LZAzWJ08YFXhVdVcGoRWHFzcXKLY6ecKthzUr7jbXC2+7UIG3C75iV0OwYpIIhAMyQdmd1csFLEueEFmxSbdkxU7coHrjbQzmJk8UY+xcpNgJV5LVLndF1SzxboIVSm0pjtJ949rqcicNLow7Kyiq7mUxc89q8l2xvmJXSxjQq3ibvzhIkuT6IsVWXCkGJVesW5InYrYlT7hPzpm8otenMtNt1eLCOnZWKLBGREPuLQ1hxeFFWOyyeYW0i7wOmXyBXEEb01bcCQzuLFBsPESZuZY1utjlbhd8xa6GYMyKtQJuL1KcsNgV6xZrjtl3aB4Pt8bjQHmfzLw6zo1XiulWK4s2e1mWXDunrTikGRVkN236xgOUmWPaCDdeCSn2q4awuVcjulGJtRu+YldDsDLGDtzvoivF2FmTPNGfzLkiFilu4ZVi4O6ahbrLKhwwtaRPs6FAsRtkDNZb7MC9SrzZl8ODdjWbeJduirMT7tH6UICAyWWqBNyY6W7VfuXWeEI74St2NQThRrJcsXNZyjxoLrq8BS46KN08kVdUV3C3q0CxG7geD8HdqvuAswWFTN4d8WZWyxnce1hLWJQ44sZrxay+J1b7bfcd1qzyMPkWO1+xqylYWccO3Lk4CBgXarPdGXUhmXDRVeCGrEkrrBlGuHWzB2tq2EHRAlg0lrjFHZuw2OUOxiLF7pK1VUptU537YilLGbHWlDrRftt9yROWKXYuVN7thq/Y1RCszIoFoyXHfRPGKhcdaIkjLbo71tnM2FxB0TMYrVLs3OzKEGPPbOuGJEmuK3liiytWvy/WXdbZuEWJUG6sZWeHxc6Nc9pqV6xvsfNRE5jIMXZWZcQKiNsnnL4v1rghWcVVWHHcuDBaeadms8usOcIya5WcwZ0bPlhXhLuk2LlDxmB9qRMoT55wSwypVaFDTX4dO6wbST5shxWKnZLNknjiCdRsllCPBMgce20zA/1v6m2kcJjGyy9HDodNe261EEpIKFhAVVUkafxWOyP3hpQMSPT+4TkGNpfa2M1dWGXrQxJmGiaNXJUkQIBEPMnAgw/qbdwg57h+p6Y5bisj78ZMUcZPPctAW6mNE7zL6vWZfEWekXP4iDanj7zyKgMHuvQ2Tstaj7EzgbuRb/1Rje+hja8y0Nult3GSr1XxhEbehQJAAEWFAw/8jmjxtTrJWxySW0w+uIjkOTceTO2Cr9jVCHIFhWQx2N3MmIXUpi723/xZAJTTVsHCyzj01B/oeeN3Ze1m33cfDectM+251UIsjj3Jnfx+x+9ZPX/1uH/TyD1y3sdh+mns/vlv6Nn9Qlk7O7kLi11a7TeNJ5RzTdS3woovMpjJ03PrbWXtnJbzSz2vATL9uYOm/J6Rd/iCz8CUk9nz05/Ts29TWTu7eadyBYq5QPyh9zE+0GKOnKGcM0veDyedz4F16+l5a31ZOydlfSAxAEi8duxFLmd83I18pTP/DOZdQM/Dj9Oz9ZGydk7xfbHnVUBmwKQxLWDkrQLSe76GKsns+NK/0p6J6+2c4v36oe2AxIH0DuA0037XzR4Hu+C7YmsEZcUeTTwBRZeeQ2jWLJAk6vMZAJLBSKmBJBHq7CS69BzTnjkWxNJa3yQ5zd1dd5NXxj+pjdybckkA4uFoqYED3PtTae3RJvKEoeWcC4TIS8UlwgVyzit5/rD3JQC6B94wXcYNOe3dJkL1pQYO8e5Lpov/r8A9b5gnZxha1ikXzem8ktf5/3bH/42be5mM8ykAkqG6UgMH+eaVPM/seRGA7bE3LZOzBNTltfhgff12mPfrB7sBePnwH0zlrbtiJ7Bi51vsqkAhr1BwSSmE49EXzyCrmjlfUjGxnzLtN95E7z98gfp8DlmFTCCCIpVcJO033oSCDA6+mxf2voqsygSkHD2xXtZ2r2PVvFXj/NUS96ZsClmFRCjqKPend76IrMrIctpEnmDkGinkkYvWosFQlKacthk6Lee1O9aRSGljMF04ZrqMm3PukDHAQ28/iazKIGfojZspZzByjuaz2vsM1jnOWeCh7etQcyFk4EhqrwncS3wbcto6mQzVu4Lv2h3riKc0GaTyfZbJGQkac2kywboy7k7yTqclZBXiuYOm8o4GApqMU3nyuYIpYTluQDV7uq/YVYFN63fTGG1yuhtDoncgzfJ0kGZCbFy3y9TfVuXT6DvjGhqlZpang0yun8uuOSsAiUBzMwlpMZLJz6wGiqpw7OUDLE/PRqaD0P538vgDXUxZdCqyND6jtOA+LdTB8nSQ+uZT2TVHxQnuiqqw55V9LE/PQ1ZaTOUJJa6FWJwLUzIFSWbP7BU05NOOy1lRFR7b2sWyYwsppIME++eaLuOZoWksTwcJt5zOrjlhnBrfiqrQ9do2lqdPQwqECZssZyhxbgu2szwdpCU63xVzWlEVHtv8GsvT5wIQOXCBKdwF3xa5heXpIO318xznWxrTpxTH9BzL5FyIxTk3V8+AFOTojEsItvY5zzt2Kmo+SOjoYlN5ZwsKy9OaavPi2l36HedeRyIZH71REb4rtkYgiqpGQuaLVJJlosuWESyay/P6SVclumwZkuzsMNrW3006r8UXSlIeUIllY2zr7x73bwvu4YLmxsjKIn7Rfu7b+rtJ54ruBZN5QokrqCVZywHcIOdt/d3EszFUtXgWlQqmyzhU5JwNOCdj0LgOZjPFzpkvZzDM6YKQszjjOyvrbf3dxDMpvS+qlDeFuy7jghayknUB39KYFpkM5nA1Yqg5nXN4Tgve6HM5ZyrvkCwjjHRuKTZuN3yLXRU4+8o5NDc3O92NIdH7Wi/Pb9nNsplNLF051/TfV6+cxe4ND/B83WIWpAf41J5HCc2cybyb7kAKOjeM8kqe2397EztbziardBJuf4tIx3okJA7Wb+b+FfcTlMfXP/XKWWz56Fqer1tIMtHPRxzgLnjual1EJj+PUOt26qaZyxM0rjse/jZvsYQDdZN4/9GXWBhVHJWz4N47s5dBZToFaRJ1HV2EW14xVcYvffxxnq+bi9x3iD93aHwLrnsmtZHKnEmg/gDRmebLGYzj+mTOSBzjOofntOC+b2qeweT5EBikaZZ53NUrZ7GnuIbNy8QcXcPKxrQ6lYI0mUjHq0RaN1oi5x0Pf5v/zs/mtboGLux/g4XSEcd5xwbPAyVPdPpTBCNHTeX9xsvbiGfy/OuF05gzucGEnjuPWCxWcVtfsasCgaBMIOhOI2csm0eRoLkhbE0fg2FmvvdqlDe14FtZyTN1zQ0E65wrfQGwdvsj7EvuJa+ehyKBEkihyJr1bm9yD4/ufWT8maPBMJ1XX4myFWKhOke4l3ieiSKBGrSAJ0AwzNQ1NxB5+BCKBGk5yNQ1n3JUzoI7MihqWJdzQc6bKuNZV/wJyjaIheodG9+Ca4EpKBJIgbQ1cgYIhpleHNfJYNjxOa1zV2dbwz0YpvN9V6O8oSXIOMl3qDGtBk0e0wLFOV3/m60oEqSCYabe4CxvVZJQ1AhIoIYGTeddXxdkIJsnWVBcu2dXi2p41AZjH5bfOgEw5ZKLAS2DLtTZSfPVV1v2rEqQV/Lc1XUXEhIoWqaXJGf0v0tIpmWOTr/0AgAS4ajt3Mt4ForZfHJa/7uZPAGaV60iWsyeyE6b6aicy7gDqi7nYnawmTK+UCv5EHdAxlDOVVU0OUsB6+QM0HHhcsD5OT0kdwvG+IzLLwE0xc4pvsOP6WJmvwVybl61ioZimE5m8hTneSt1CPVDkjXXu5m8J/q1Yr5iVyOwQ7FriGoLUDIYoWPNTY66YAE2HdrE/sR+VNTS4hgoKXYqKvsS+9h0aNNwP1Ex2hq1EhjxUL3t3Mt5nrjpmckTQAoGaZk1HYDgiqsdlbORO5y4CVoj46gj47tMzoUTDypmyxmgqTinUw7P6XLumhyMSq1Z3FuatPkzGKpj0k3O8B1uTGPBmBaQgkEmnbZI+//LL3Sct5AxUhapaJU1k/dEv1bMd8XWCKy6UNkIUfgxHaqj6V0rLXtOpVjSsYRvXPINsoUs3/ytxK5B+MvTrmHJ3Gv0NuFAmCUdS8b9LKEwp0J11F991bh/rxoYed65VuKtOPz54nfzjgXv1tuYxVOgpXMGDBxAWXy6ab85Fhi5A9y2UyKRg78593pmtGttzOLeWrwPONHURvNq+8e3kesDL0g8fgT+ZPYy3nveO/Q2ZstZXGOVbmp1hLOAkfsfNsMveuC0KfP49EVf0duYwV1cG6dKMtKVV47rt8aK48f0F3ZJxIC/XvoZZk3S2pgtZ4C2RQvg4A7yc+aZ+ruVwsh77xH42nZtXf1Xk2UMxlp27rk6zk74il2NwOp7YqF0YbgKpPMK0bCzBt9wIMyKuSsA+K70NJDg8jnnc8H8yaY/y6gwx9J5Jjeae83TSDDy/G/pWWCAS2Yv40/nT7XsmaW7JZ29HN7IHeBv8+sAhavn/ymd7dHhvzgGtBQVu3RBJZNXqAvZJ2Mo5/rcq68De1gy9RRWz19o2TPFYS1ZcPb+UCP3vXu7gbc4ZVInq+ebq9zUhQJEgjKZvEI8nac1an+c2fFj+vOFh4ECV8+/nDmTrAv0L90L7MycNvL+o3oEeIGpTU2snn+J6c/SLXa+K9aHl2GHYhcNB/Q0cqcWh+Gg37do0YXpAVnSb/ToTzp3ChQxI2Zfjn48Glx4OXyuoJAtli9oskDOTZEggWLNq4GUsyd9cSeuFTyNEBugqqJfSeg0Yilrx7hYI52WMYCiqPp7bzD5rtjj0eAi96TV+1WJqzvGtN3wFbsagR2KnSRJutXOTRs+QLzYHysXR2HRcXJDsGvDF5YcNynwxjFnhZwlSdLnj5PKO5Q2X6s3+/pQAFk/rLljTsfSIqzEGu5uUuwGs6V33mixrN0Ud2b1flXi6ryMnYCv2NUIrF4MBaJh912wrKqqvik1Wbg4ttZrbpuBVNayZ4yGmG6xs+d075bNHkpjLhyUCQWsWbpEnF1/0jkZQ+m9m3nv81AwHtbcMqdFIljzBLDYiYNTUJaIWFyWo9FFc9rqmHA9xm6CumKrWjVOOumkMd27dvPNN/PXf/3XVX/PR+UYSFpvsQNtcTgUz7jGbQOQyhVQiiFCVlo4Spu+MxtCOlfQXZFWJsmAMcbOPQujUDystGy0Coud465Yeyx2ANFIgHgm7xrrrOBu1Rh3k2InLEoNkaDld5pOJFesWCPiLuDqBKpaNe69994xPWTu3Llj+p6PyqAoqj6Ard7wo7qLzj0TRixUklSyKFqBZoc3BLHhSRI0hi222IXdF6OSsMFaKYLpnbbY2aHECmgbfsYVGz6UvA9Wydldip02v+yTszsOa5Yrdr7FrnJccon52Ss+xo94Oo9atFhZ5b4Q0GPsXLA4COiJE2FrT72tDsdfifi6xnAQ2eKLrd3oihWKrS0WO5fE2Fntcgd3uejAeles0wc0Iwb1WErrM7DdlClqX4yd81ydgB9jVwMQJ9xIULa8RIMbN3zhQrIqI1ag1eHkibhN8XVgTJ5wj5zjNig7IkHGSVesqqqlw0rE2oMauO+wFtNdsRPBYmefy12sj25wuVuuvBd/1795okIcPXqUv/u7v+OGG27gtdde0z/ft28fiUTC1M75qAx2ZMQKlBQ75xcHgXgxTsVqd0YpecJpxc5GObtkswdsUXaEjJ202GXyCvli0Kgdlhy3zWlhmZ4YyRP2udxF+EbWUDbIKVi9Z4lDgTB6TDRUrdh96lOf4gc/+AHPP/88F198MS+88AJnnXUWc+bMYdKkSXz2s5+1op8+RoCdil2jCy05YkOy+tRbKoXhTPxV3KbMZ3C+mOlQKG341ifIOJn5bHQfNVgcSwnumtOZfIF0ztoEITGPYxNMsTMeEpyWtb5nRa3KinWPjJ1A1YrdM888w69//WteeeUVvvGNb/C+972P1tZW7r//fu644w7uvfdefvrTn1rRVx/DwE7FLiqC6t1kycnYU9vNaTedExY7N8Wo6AkFNih2TlrsEoZYQqtjKcFdsja6zqxSdtyk2CVsOpQCBAOyXlLFaVlbbrEzuGJV1dlbVZxA1aOpr6+PM844A4DrrruO66+/nvvvv5/zzjsPgLa2Nu6++24+8pGPmNtTH8PCCVds0kWWHLERWm3dEIH1Aw5t+lZnCxrRUMwuzuYVcgXFsrpx1cCOGMNSVqyDip2NVhzjc5y24kBJ2TLeAmI23FBoXCBhUxiJQGMkSCafdVSxU1VVl7NVe5ZYI/KKSipX0A0SEwVjWq1lWftaOBwmGo3S0dGh/+2SSy5h27Zt5vTOR0WIWVzs0Qix4bthExBI2JQ84fSGYFdxYii3ILhFiY/bEmPnfIHihI2Zktpz3BNPaXUNO3BbjJ2w2Nkj61IChXOyTmTyet1RqxS7aDigHwwmYgLFmBS7//mf/6Grq4t8/sQX1tDQQF9f37g75qNyOJI84YJNQMCuU68eWJ/KOWLeL10nZr2cQwGZsHDbuETWdlyn1uqCrNjSvcfWyxncda+mHVZp4aaLucBNZ2dWLOCKW0bEfhW2sIqDJEn6GHKDy91uVD2aLr74Ym6//XYSiQThcJhsNsvtt9/ORRddxDnnnMPkyZOt6KePEWD19SxGuDGoftCmIp9i0y8oKolM3hYFywg7y52A9j6P5bOusc7aUdtNKO/JbIFMvkAkaI8lxQidp22bvXus8LGUuErNeoudU/PYCDuTJ4zPcXL9tssQ0VwXoj+Z0z0dEwlVj6ann34agG3btrFx40ZeeeUVXnnlFW677Tb6+/t1N60P+2Bv8oT77orVXXQWKzx1oQDhoEw2rzCQyjmg2FlbBuJ4NEQCHBt0j6ztUGyb6oJIEqiqNq+mNNmv2MVt3uzdlDxhx53XdSGZcEAmW3BmHhthdzylcPkKL4cTsGu/0i12E7DkyZhH08KFC1m4cCHXXnut/tmOHTvYuHEjmzZtMqVzPiqDXtDTxir1SZe458BYvd16/q31IQ7FM/Qnc8xqs/xxZRDWDLssdnrhWhds+GDcBK3bEGRZoqVeO+kPJHNMaaqz7FnDIWHTQUXATckTdhxeJEmiuT7EkUSGgZT989gIO9cuKLn3nXS7i+SzVhssduC7YseNefPmMW/ePK655hozf9bHKLDVYucCU/7xsNN11RrVFDsnAq9FIWb7LHbukrUdMXYAbdEw/cmcY3F2drvn9Ez3rPNy1l2xFq9lLfVBXbFzEnaFkQi4oWZhn1DsihnoVkFYfSdi8kRVo+mkk04a012cN998M3/9139d9fd8VAarU8eN0BcGF1ns7AxAdjKjzu4YO7ddH2fHXbFQknHfoDOZsc6555yXs10lfdxSy86p5Akn53R/sfh3q0XFiQX0IsW+K3Zk3HvvvWN6yNy5c8f0PR+Vweoq3kZEXbAwHA87N8IWB6+csrNAMbhLic/mFTLFa5Cstlg6nRlrV8yogJtcsVbfISrglpInpbXL3tI2TirxYu1ss3i/msj3xVa1clxyySVW9QPQbrX4+te/zsaNG+nt7eX+++/nve9974jfeeqpp7jlllt488036ezs5Itf/CIf+9jHytrcddddfP3rX+fAgQMsWbKE7373uyxbtsw6IjbCWOzRDhedWBhyBZVsXtFLYjiJhI2WrNKmb681R1VVW68UA8MtIy7Y8Muu2bJ4E3S6ELXdRWuNrlhFUW257WI4lOrY2WWxc7ZQr+0xdi5Q7IQl3GpX7EQud+L8rmzA4OAgS5Ys4a677qqo/c6dO1m1ahWXXXYZXV1d3HzzzXzqU5/ikUce0dv83//9H7fccgu33347r7zyCkuWLGHFihUcOnTIKhq2Ipkt6BeG21LHLuye+wYF7FwcnTrpZ/IKuYImZ/ssdu65ZUQotdFwgKDFt2Dot084dF+s/XFXpec4bZ2N2ZT57QaLXSav6Gu3bbJ2QYFiYQm32hUr4jT9cicOY+XKlaxcubLi9t///vc56aST+OY3vwnAqaeeyrPPPst//Md/sGLFCgC+9a1v8elPf5qPf/zj+nceeughfvSjH/H3f//35pOwGWJhCsqSXorESoj7BjN5hUQmT1uDtaeu0aCqql5A147F0Slrjjh1ylK5cm0l3BR7ZVd8HZQ2faeuFbO73EkkKBOQJQqKymCm4Gj5D/uSJ5xX7IzKldXXIerPcYHFTtzq0maTxS4+AWPsXGWxqxYbNmzgiiuuKPtsxYoVbNiwAYBsNsvGjRvL2siyzBVXXKG3GQqZTIZYLFb2n1thzIgdS2LLWNDooiy6ZLaAKB5vi2Ln0CXxMYNiY5ec3ZQ8YWfiiNMxdoniRmRXjJ0kSfphwWkl3q7kiWZXKHba+hkNB2xzf5eyYp1bu/v9cieWw1UWu2px4MABpk6dWvbZ1KlTicVipFIp+vr6KBQKQ7bZunXrsL97xx138M///M+W9Nls2FHqRMlmSTzxBGpWO2nV5WVA4uDjTzKtSWsjhcM0Xn45ctheC57YiGQJIkFrFkcj/9ARCZA5ureXgQcf1NtYzV+cOuvCKqqqWqbcGbkGejWu/bv2MvDgbr2NE7IWcg4EcpbwN/KOHC7KeHcPAw/u09vYxduOgPrj53S9IhND4uD6J+hwcE5baZk1cg4fEjLez8CDe/U2dnIWco6EsG1OMwAQIHa039b1y4i+osXO6mS/Zt1i5/zB1G54WrGzCrfddhu33HKL/u9YLEZnZ6eDPRoedlwnltrUxf6bP6v/O3zZLdAyg73fv4eOw9v0z2ffdx8N59mblCIWR0VK8dDOh1g9f7XpzzDyz085GS74DEf39tDzk/8oa2clf7E4Hcns4/c7fm8JTyjnmuk8F5Zey7HNb9Hzw3vK2tkta6HYbo+/we93pE3nXy7jRXDBpzi8ez899327rJ0dvAdSaUDixYN/4PSZ1ssZIHz556B5Knu+99+0H+nWP7dTzrmCos/nFw89ybwO62Scm34anPdxjuzYQ8+93y1rZxdnwbU/d8C2OT3YMgMuu4VYf5yeW79c1s4O3qqqcmwwA0hsPPwMp82whjMYY+wmnsXO067YadOmcfDgwbLPDh48SHNzM/X19UyePJlAIDBkm2nTpg37u5FIhObm5rL/3Ao7LHbRpecQmjULiifK+nwGgFQwojWQJEKdnUSXnmNZH4ZDfzKtdSGQ5u6uu8kr5p/OjPwbsykA4qFoqYEN/PtT2juXAinLeEI512hee7e6nMExWQ8UExkkOWMJfyPvplwSgHjYXhkDZPM50jltnv3v2z+2Rc4AURfM6WODaf3/37vle5bKWMzjRKi+1MBmzrF0cU5bNKYFyuZ07jg5g628B9IZFFUbc//fWz+wjDMYY+x8i52ncP7557N27dqyz9avX8/5558PQDgcZunSpTz++ON62RRFUXj88ce56aabqn5eIa9QKNbScgsGEllkFVoiQQv7JtN+4030/sMXQIJoXntmKliPImnuovYbb0JBBpvfzxPbNyCrMrKUpifWy9rudayat8rkp5T4N+YyyCoMhqI6d7Ce/3N7NhV5ZizkCUaudYUcsgrpQMRWrkPhlZ43kVWZgGX8h5Bx0F4ZA9y/9WFkVTtvHxzcY4uctTmdKc7pOsfm9INbH9e4yyl64z3WyrjIN2nzPDbi2d0vF8d01sY5nUdWIRuIkJeCyGgBynbxvn/zek3GUo4Dg3st5AwNwYC2fmUKpDN5QhZn01uNavZ3Vyl2iUSC7u6SG2Dnzp10dXXR3t7O7Nmzue2229i/fz8/+clPALj++uu58847ufXWW/nEJz7BE088wS9+8Qseeugh/TduueUWrrvuOs4991yWLVvGt7/9bQYHB/Us2Wqwaf1uGqNN4ydqIpLbj7E8HWRmT5aN63ZZ9hxVPo2+M66hEIuzQJpMOB0kP+kcdgWmEGhuJiEtRrLw+UNBURW6N+1meXohcqGJ0P538vgDXUxZdCqyZO4kFvxTgymWp4NAkB1zViKjWs5fURWOvnSA5enZyOpkS3mCQdY5meXpII1yB7vmrAAkR2StqArJrqMsT08nIM0gqFjDX/BODqaLMm5kx5yrkMEW3oqq8Ic332R5+mxAIdJzuT1yjsU5WZpEfTpIbvK57ApOs13Oiqqw6bVtLE+fhhQIErZojOsyTmZZng4iqy2OjG1FVejZuJ/l6ZOQlTbb5nQ2Plgc27D9pKsJKQXbeCuqwkuvvc3y9OlIcsEyGZeep+pcX3hoJ/Uhe6oJWIVEMl5xW1epsC+//DJnn302Z599NqApZWeffTb/9E//BEBvby979uzR25900kk89NBDrF+/niVLlvDNb36Te+65Ry91AvDnf/7nfOMb3+Cf/umfOOuss+jq6uLhhx8+IaHCq0jnteymiMWDVpJlosuWASohRXtmXg4CKtFly5Bk+4fStv5uUrli/ISUB1Ri2Rjb+rtH/N5YIPiHCnmk4ik3G7CH/7b+bl3OkmwtT+0ZGtdgQXNh5GQxtpyR9bb+brJF/lbKWfAOF0oxOdlACLt4b+vvJp4puiPlAkj2yFmb05qs83IAJ+S8rb+bwayYyznskrEiSeQl+zlv6+8mra9dBeya0wG1gFQsI5CzWdaajIu1IWXrZCwgS5Jupcu4zNNmNSRVFcUifAyHWCxGS0sLx472uS7e7pZfdPG7V3v5+6sW8cmLT7L0WWo+z453rebO9qX8/qQL+eDbj/OJxGbm/e5BpKC9xt+8kue9v30vu/bMJXNoFcHmLupn/BIJiRmNM7j/PfcTlM3tk+D/gTM+RSIc5e4nv8m8lrCl/AXPndvPIdt3PuFJTxLpeMxSnqBx3fBnH+a6Mz5OuJDj12v/kdDMmbbLWvDf/vZF5GNLiEx5iHD7c5bxd0LGUOK593CA5O7rkULHaJz/TVvkvONdq/nPSe9g7dzz+fO3H+PjiS22yllw39MzhVTPNQSi3URn/9hSGW9/12pWn30DeTnIj9bfwYxJjbZx1teuXaeQOXIFodYXqJv2oG2ytntsg1HGk0n1/DmB6A6is39oOeeLv/okB2Jp7r/hAk6f2WL679uJWCxG+6Q2BgYGRtVDXOWKdTsCQZmAC67QMmIgk0eRoLUxbH3fgmGmrrmB+nufQpEgVfx3sM7+IsVrtz/CvuReCuopKBKogRSKrFl19ib38OjeR8zPMivyjT7WTywSZdAG/oJnXl2u8QzawBMgGGbOJz6C8jKkgyFUVXFE1iU5h1EkUKzmX5Rp0/o+YpEo8VAdU9dcbznvEs8FKBLIgYxtcp665gbq73tGm9MB++e0PsaVTo17MGm5jKetuYGGJ5P01TXbMo+NKM3p07UxHUjbKuu6x+PEpChpOWgb75KMZ9oj4yIa6oMocRjMFVy3d1eLavrvbaY+bCl3YkTzqlU0NGiZZJmWdpqvvtqW5xqRV/Lc1XUXEhKqUgeAFMjof5eQLMsya161ima0303NmGMpfyNPCsXsPbmUOWglT4Bpq0u3wOTmzLNd1uX8i3KWrZdz86pVtKDNq0GLZQzDjGcb5dy8ahWNDVqWZKbV3jldxr04xqVASv+7lTJuUjUZJ2fNtY1z2ZjWZV26us4OWUclTaHKzui0hXe5jLVMcykwqP/d0vV6gpY88RU7j8OOcidGSMEgUy5aDoByyqm2u2ABNh3axP7EflRU1OKGb1R4VFT2Jfax6dAm058tBYNMmjFF+8dV77KUfxlPXYG1hydAOBImLGmRGvWf/LTtsi7nrykekg1yloJBOjq1ckjKO6+2nLeRJ0WeGBRYq+UsBYN0XKjN6cIpi22Vc/lcFopdUv+7lTKeNKVd+8e73msb56HHtL2ybu6YBEBo9Xts4V3OWSh21ssYSiVPxFV1EwW+K9bjiNms2AFMOvds2PUamUnOJKAs6VjCNy75BtlClnvWS7w6AO85+Z38yeJ36m3CgTBLOpZY8vxJc2bCa71kF51mye8LGHl+9ZDEviR84oxrObXzWr2NlTwBGurDZJM5pIsvtewZw8HI//a9Escy8Fdnf5yTDMPOKv4d8zph437SC041/bePh5HnU2/Ar3thydRT+PhFX9HbWC3nSUvPgl2vk7V5Thu5//QpiRf7YOX8S7hiySV6G6u4T+6cBpsPkll8pum/PRyMfP/rEYk3YvBnp1zNBYtKljOrZd08rQO6j6CcaU+9PiPnnzwp8dIx+2SsXys2wSx2vmLnYaiqWrLYWXw9ixGlu2KdOQWFA2FWzNUyn3/+5PPAUS6cdQ6r58+05fmlu0St5W/k+VXlCSDFFfMu4pzZbZY+14iGSJC+ZM6Re4GN/P9ReRTIcfWCS1kwxfqSQ+1F16S4/shKGHnu2rUNeJtTJs9m9Xz7FI7GiDamB22e00buD/zhJeAQ589awur5sy1/dpsD9z4b+f4ssAE4xoWdS3nX/Bm29UGs33bJ2sj5N8+8CBzmws6zWD3f+tucdIvdBCtS7LtiPYxUrkCuoLnK7LTYRYsLQ8LBi6QFEjZeDi/QWq8FGw/YsOkLiOrpzTbyBMMm4KCsVVU13CFqzzhvi2oyPjZo70m/dE+svXJuKN5L6+SctjusRMi4z0bFzginZN1YJ9Zv+5WdfpsNESLGLj7BLHa+YudhiIUwIEs0hO0rviguJ3fKYmeElZeGDwex8Yj3bzU0xaaYJFNnnwIPmsUOnNkEBNI5hYKiHWDsUuDbG7T3bIfFzoh48T032L3ZO2yFB/s3/VZdsbNXxgKDTil2+mHNAcWuqEQLpdpqTNQYO1+x8zCMJ1ypeOejHWhwcGE4HjHdYmefwtOiu2LtUewGswWKeo2tPAGixQODk7IWSq0slfpjNZza9BMOHFTAHXPafoud/a5YI4R11G4lXlhnnbDC9xfnU5tdFrs632Lnw2MYSNqfOAHQEHbePScgJqy9rlh7NwTBMShL1IXsnbJusOQYrVh2HWDaG4qK3aC9ip1QrOwcz1CSs1OWWVVV9fWs1SZrjtMWu0RG4+uUEm+3rBXF/phw4Yq16xDuFviKnYdhdw07AbEwpHIF3UXmBLJ5Rb8qxk4XpVCkYzYtFnp8nc2WWTBuAs4p8U5kfpdi7JxxxdoVSygg5JzOKeQL9l+/lM4pZIvPnQgWu3xBIZ3T+Nqt2DWJOW1zQkEsndM9DyJO2Wq02rxWuwW+Yudh2O26EDC6w+zOojPCeOIU7gU7IE76dp0CxaJktxUHnI3HEYjpiSP2jXNhsYul8+RsVHTEZmvneD7+eYMOZED3pzQFOmhjvHBbg3MWO6O3w/Z4yjp7s2IFhALdGAkStukWiFaH3e1OwVfsPAynFLtIUCYoa5ajpIOWHOGijIYDBAP2DeXSYpFFscFiGXcg81eglC3pfOxVc729CTLCOGrnppBwyBUbCQYIBTTCTgbV2xkvLObxQCpnyzw2IlFUqsJB2TYlR0CE0sRtttgJBdrO/UqvYOBb7Hx4BSUXlb2bgCRJrsiWdErhEQuTopYWaCsRcygjFiAadoHFzoEDTECW9Of122jRGXTIFQvOJlA4UY9TbPqqan8BW6cyYsG5cifCw9HWYH+iWypXIJ1zPibcLviKnYfhlMUO0N0lTgbVx/TECXv514UCRIqn7AEbrDkxBy12peQJB2PsHFJs2x2Is9Nj7JywzoYdrG8mEidsXMvCQVkf33bXsnOiTJNAU/HQYHeMnTgg2RVfB1o8oTAAT6Q4O1+x8zAcVewmsMUOyt04ViPukAIL7pCzU0lCdsdgZfIFssVkoMawc253J7LdnbDKGp9nd5zdoEP1CsEQY2fznO4bFFnP9slYNlrefcXOhxfgpGInbp9wNsbOuVOvOHXaEX8VdyB5QKAx4nwdO1Fc1G7+dt8+UR5Qb2/yhPZMJ28kKFpzbCp1IiDcgna628EQS+nA2qXHzWbztsYW6q5Ym2XcanNBeTfAV+w8DCcVO33DdzIr1sHYMztvn3AyKzbqoHtOQLhi7Y4lFeUw7LLmCNdYfcjeZCABJ2sWOrWW6deKOXR1nBMKvHDFqiokbYw7EzUh7bTYAbRE7TuEuwW+YudhOOWiAmfjcQScdMWWbp+wftN3NivWBTF2Do1zu4sUJxyMrwNj4XFns2LthNM3jDjhiq0LyQSKVQ3sjLM7VnzHYl7ZhVYHkqCchq/YeRgDRReVkzF2jrpiHSoNAfbePqEnDzhimXVPVqztrtjiBnTMLoudg+45cLYYtXMWO2fqnDl1wwhoVQ1KN43Yx/tYwhnFzu67vd0AX7HzKFRVdSzgGNxR38zJpAI7b58oxdhNzDp2McPNG3aiPWq3xU4bS05YccDZeEqx6drtpnPMYld0dzc4kCQDxivkbHTFOmWxm4BFin3FzqNw4goeI8SC5Gy5EweTJ2yMv3JSgRXvNpN35qopcM6aU5KxvVfHOTGewdnkiYlmsRMuUKfc7o0OXCt2dNBZV6xvsfPheohBGpAlRzYCN9whmnC03Ik46duRPOEcz6jBouBEGQyjZdrOmyfAEGNnkzVHvF/HYuwcdLs7FWPX5pDFzskCxWAsUmyPsqOqqm75tt0Va/MVkG6Ar9h5FHriRF3Q9ovhoXRfrJOxV05astr0TCv7LHZOZP+GgzLhYoamExnQqVyBfLEkg2Mxdja7Yh2LsQs7l+kuNv02h9x0dhcoTjit2EXsvVYsls7r89ipcid+8oQP18PJUifgbGkEASdjz9ps2hDyBUW/lN0Jix0YC9c656ILyJJ+mLALIsYuns6Ts8EN7WSmpPG5dlvhcwVFT4Rqt7uOnY0HNCMSDhYoBvuLFAvFvSEcoC5k7zy2s5i8W+Ardh6F04qdG24kiDsYp9Jq04ZgfL9OWCbBWVnHDJnfdlumm+tDFKtC2FOI2uFyJ05lQAs3qCQ5cLuIY67YotvdKcXO5nJVenxdo72KO2C489lX7Hy4HE7WsIOSFcfJ+maOumIbSouFqlpXvV0or3UhmXDQmelaqm/mwFVT6VLIgd0IGK4jsmPjdzruyqkYO+M9saK+ml1oLc7jdE6x9ZJ4p2sWiufGbZK1CGew2yILvsXOh4fguMXO4QLFBUV11EUpTvp5RbV0cYw5qLwKNDh4y8hA0tkDjJ1xdgkHa5uBQbGzWc7HHIqvAy2eMVhUJu202umuWKfLndgUY+dU4gRAS/H6x1g6R8HGK9SchDOjyse44YRip2SzJJ54AjWbRU0ABEgMJBh48EG9jRQO03j55chhayewUaFstOlaHiN/gDpZJq1I7H1wHbPqtDZm8xeuyEiogKqqtrgjj+cZicmAxOENLzGwXVsY7ZLzgAPFiY38m9Ma9/1P/5GBN0ptrOAvrLN2xhKWzelBgACJWNLWOX1sMAPYG1Rv5N0akDmiSOx+aD3RxlIbK3nr5U5svFLMyDnYIwEyfdt3MfDgTr2NVZyPOiBjAbFHqqrm5bH7PmIn4Ct2HoUTxYlTm7rYf/NnAUg0TIYr/57EYJqeW/+xrN3s++6j4bxllvZFuGGRcqzfs47V81db+jwo5w/Q+M4vko62su1bdyL379U/N5O/4NmT3MHvd/zeEZ7yOz4KM8+k99cP0LPzOf1zO+S8Yd8mQGawcNjS5xhh5F9/3sdg+uns+vlv6Nn9Qlk7s/nvHTgMSGzt7wI6TfvdkVA2p+vbYMUXSGTy9Nx6W1k7K2X9zO6NgEyWY5b8/lAw8m687BaOtMyg+3s/pOXw22XtrOBdUFRSRbfvHw88wexJ1s9pKOecm3MenH0NR1/fQs89Py5rZwXnl3u2AhL9+X3AWab+9mgIB2UawgEGswX6kxNDsfNdsR6FExa76NJzCM2aBZJEfV47gaWDEXTjtiQR6uwkuvQcy/vSn9SeL8kZ7u66m7xivUvByB+gOTcIQDwc1RpYwH8gVeQZSDvGM1qUdTIY0RrYJOe8kuepPS8CsDOx2RbuUM6/KavJOBZpKDWwgH9eydMT0xSbR/f81hGu0XwagFwgRF4qbg0Wyzqv5Hlsp6Yw7xnc4gjvlqKMByyWsUAsndb//72bv++orJOhulIDizjnlTwv7d8KwOt9G2zja8REu1bMt9hVgUJeoZB3pvr+8YgNZpFVaA4HbeyTTPuNN9H7D18gUsgjq9pnqWAddQVtwrTfeBMKMljcp/XdzyKrMpKUpifWy9rudayat8rSZxr5I0FzNoWsQizciCJpLhWz+T+/9zVkVSYgZRzjWVfQxloqWGcZz6Gwdsc64kltnKXyR23iDkb+zZkTZQzm81+7Yx2FXABZhWOpHke4luY0DIaiNOVSgLWy1mRcQFYhXTjiCO/WzCCyCgORZktlLPDg1seQVRmkPAcS+x3hXJ/LFed0xHLOa3esI5WWkFVI5A/YyLeE1voQB/rTHEtkXLOHV4tq+u0rdlVg0/rdNEabnO4GAG27UyxPB1E2D7DxiH3ZXKp8Gn1nXEM+Fuf8dAAViV1zrqKukCPQ3ExCWoy0bpelfVBUhbe6drE8fTJSPkp4/zt5/IEupiw6FVmy1ggt+BdicU5V24img2Q63sGu4DTT+SuqwsArh1ienkWAKQQd4jk9PJvl6SDRpkXsmiPbImdFVXhsaxfLjp1MIR0kODDbNu5Q4j8t2M7ydJCGpkXsmpMHJEvk/NjWLs4bPAfUIOFDyxzhWojFuTAlU5Bk9sxeQUM+bamsSzI+xVEZzwtMIZcOQttZ7JrTgBUyFlBUhRdf38ry9JlIsmrr2gUlzmouwPJ0kCZpCrvmrMAqzrqM+xeh5oOEjp5iK1+BM/qhNR1k77MH2Ng9aNtzzUQiGa+4re+K9SjSOU17r7O5BIYky0SXLUNCJahoCmVODgKq9rlsfX+29XeTzOaK/ckBKrFsjG393ZY/W/AHlXBBSy7IBEJYwX9bfzcZUYJByuMUz2DRdWKnnLf1dxPPxlDV4tlTytvGHUr8I0VLdCYg4nKskXMsEwO1aDlxiCtlczqA1bLWZawUw0nkrCO86/LaPE4HRViLdby39XeTyGaKHbB3TkOJc0jRxrU2p8EqzkLGqM7IWEAURc7knSvPZSd8i10VOPvKOTQ3NzvdDQDWvLqDw4U8f3/ZTE6b0WLrs9UrZ7Hj4W+zWVrK0boWrj3yAgsbZebddAdS0NohlVfy3P7bm9jVPpdM7hSCTXuon7keCYmD9Zu5f8X9BGVr+yD4/yGm8vy06UzK7uf9hTdN5S947mg+j5w6k/DkzUQmPeUIzzf64zzfeRLBYwf5iMk8h4Lg3juzl8HCbApSO3VTNhJuft027qDx3/UXv+X5ulM4ORXjY3seJTRzpiVy7plxlHjiUgAaZz2CLOdt57rj4W+zlbM4WNfO+4++zMJowTJZG2WcyM1DkVupm/Ii4aattvPe+PHHeL5uLvQf5c8tkLGA4Lx3cpRk+mzkyBEabF67QOP83BM/4vm6ZYQLBf7WIs5GGccGl4OSp2H6kwQix2zlC3B/Js7zsX6WL2hk6WVzbXmm2YjFYhW39RW7KhAIygQcKhJ7PPrSORQJ2hoj9vcpGGbqmhuoe+QoitRCKhBm6prPEKyzPtto7fZH2JfcS0E5GUUCNZhEkbVT2N7kHh7d+4j1maNF/s0/eAhFgli4nqlrbjCVv85TvVjjGXCOZ/1dv0KRIFn8t9VyFtyRoaDUF+WcoCDn7eMOEAwz530rUd6A/kgDspK3TM6K2oQiASgogTSqZKOcQZd15OFDKBKk5CBT1/w/y2RdLuMoqgRqKO6IjGdfeQnK29AfjloiYwHBOc/pKBJIgYz9cxogGGbuJ/4S5WXNSllQVWZZwFnwVQmgqHUggRp2QMZAa2MERdL2Tbfs4dWimn57k+EERzpXIFsMpGyJOlO4tXnVKpqKi1J62iyar77a8mfmlTx3dd2FhISq1AMgBVL63yUk2zJHm1etorVRyyhLNLebyr+cp/YMKVDKpLObZ2OzVtwrHW2yXM5G7gBqQcs4lgJJ7X9t5A7QecWlAAyEGwh1dlomZ5RixrGcEcnItnNtXrWKhqI3ODttpmWyPlHGWjaqUzKeefFyAPojjabLWGBoWTszpwGmrV6p///cnHmmcy5bwwoi27igc7abr7jxwo5C426Ar9h5ECJlW5ZKd/7ZDSkYpG3WNK0fV62y3AULsOnQJvYn9qOiohaKafpySbFTUdmX2MemQ5ss74sUDNK58goAktNnm8q/nGdRgTVsAnbznF7cBHJTZ1guZyN3OFGxs5M7wKQW7fmpUB3NN95knZyFAi9n9L/bzVUKBmmZqc3p0IqVlsm6jLcqg35I04La7eY9uUV7/kCkkY415spYoFzWmmLnpKzDkTB1xRTo+k98ynTO5WtYSXGXpOK8tpmvnTfIuAG+K9aDMN4TK9t8t6IRbbNnQn8vuUWn2fK8JR1L+MYl3yBbyPKDRyVeH4D3nbyCixav0NuEA2GWdCyxpT8zL7sItm4gFoqa+rtGnv/SI3EoDZ856yMsmF5qYyfPKZdcBFs2kKprGL3xOGHkns3D327Rzp63X/Q5ijcD2cq9uS5IKCCRK6jkLrnC1N82ct26D+7aBdOaWviHi76it7GTK0BL5wwYOEDh1NMte4aRdywJX9gKEipf+ZMvImL37eQ9qUFTtAZD9dStvMqSZxg5P7IJfn8Q3jHjTD580Rl6G7tl3RCNkE5k4aJLTP/tsrG9H+7aCdOaGx0b25OKip2d18Y5CV+x8yCEYtfq0P2ZAuL+znjankyjcCDMirmaEvczeQNwjItmL2X1/Bm2PP94tBU3hH6TFwsjz38uPAZkWDHvEhbPcCZxp7F4nZcdl8MbufcOpIAnCMoS1yx6ly3XqR0PSZJobwhzMJahL5ljZpt5v23kGkj2Aq8ws7md1fMvMO8hVaJRvy/Wujlt5L3tYBx4hpZomPcsfKdlzxwJLfUhArJEQVHpT+WYGjL/mi8j5zff3gpsZ3HHPFbPX2z6sypFUyTI0UTWElkb+Srx/UAXc9omsXr++aY/qxIIi13f4MQoUOy7Yj0IcTG6nbdODAVxWbm4qN5OGK2WTqGtGN84mC3FPJoN8W6duhgeSneXJmxQ7IwQi3BrNOSIUicgLDpHEplRWo4d4u5QJ+UM0CAUO5tkLVxjTtwhKiDLkj6XrZSxQCKjjWuhRDuFxuJYE2PPKvQVZdze4JyMRYyduLO21uErdh6EG5QaKF3MHndAsRMXpjup3DbXhRCecLOtdqDVXBIKo5OyFhtQJq+QL9hXtb0/pb1Tp+92nNRofXxOSYF3dk432qzYCddYm0NJYALtNsZgDWY0C5njil3x+VYf2I65QbErzuF0TiFloTXaLfAVOw/CiXtih0Jz8cQXt/jENxR05dZBC4csS7oM+pL/f3tnHiZFde7/b1VXL9Oz7ysMMCAgsolsRsUoijpBNIkxZNGYXGOMmHhJ4nI1ot579SbxGnMTook3xu0Xo964K8hiMBpBlEVFFgcYZph9YWa6e3qvOr8/qk91N7N2d3X3qeZ8nmeeB7pPVdd73lN13nrf97xHf+M2sl/TOQlkR/x2MkN0J9PvZiPlgE5Iva7kTfpOxjx2Ll9q9Ezvm3R67IDUGnbUkMo+VQy7kPFelEYdZ1tMsJjEqOvJZLhhZ0BYMeyodyHVodigrGgPo3T3AZ2QkpGU6/CEQzamNC6SsUii9lBMlScHCPdp2j12oVBsbxInfWrY5aTdsFPD7ikPxabRmwMAxTkhHSfReKe4GNG1Ztgl+cWcBY+dIAgozA69hJ8CK2O5YWdAWDHs8rLS47GL/L10h6MLQiGkZIRiqZzp9EpS7Cme8IGwxy7dYbpwKDZ5+Tk0nSEvzaHYbAtdPJEaPdP7Jp2TPhBeNZmSUGyob3Os+i/SiAVqWDpTFIpNt/FelIIXNFbghp0BcTBi2GkeO09qPXbUsLVbTDCb0juEwx47/fuAlbwrIHLCT2Uolo0JofiUDMWmymMXXiCTTrRwewqS6zWPnTXd+ZTq758KHjv197nHjsMwrHjsctOUY+dgxLsBhMOEyQjFsjLZA6lPqgfCxnK6x3l40k/ehEANqXTrOtV6poZUScibki5SYbxTnFqOXZo9dinywtM+LclJr44LT6HdJ7hhZ0D6aR27NOcehVfFBkEISdnvsmLYAuEwYX8yPHae9Jc6odBJKJUlT/oZSazX8q9SEIrNTbMXJ5xjlxrPLJ30abg7XVAdp2LSZyXsnorFE0FZ0RYrpFvHqVwgk264YWdA+rWkcjY8dn5ZgS9JddyGw+EJ5Z5lpd/gCRe+TMLiCS87Bmyq65sBEaHYdOfY0QnhFAjFhgsUp8hjF6obV5xmb06qJv2ArMAbUJ+Vadc1fTFP4j3d5w6AEEAQ0rsqFojQMV8Vy2ERrQxEmie8bIuk1XFL5cpYljx22uKJJOQZsiSnlmN3Cq6KpTWwBv0yvIHkeLIcmmGXbo9d6vRMCEFPyJAqZiSPMtkFil2MlDCK/H1XEp/dtD+L7BZIac6HLkriSzhrcMPOYBBCwqHYrPQ+DEVR0B4O1IuWCljKsaNhwmSsimXKsEvBVlMno22dl27PtFXSyr0kK8/OycAOI0BYzwGZwBdMrq5dvqBWgDvd+Vd00nd4gwgksQg39czaLaa0Gzp0rCUz7M5KqB3gOXYchnH5gpAVNZ8t3RMeEPYwpHL3CVZ23gDCxXOTsipWCzmnX85UJVpTCCHM5NjR/WKBcOhQT/zBcCpD2g07SzihP9l5dj2hST/bYkKWJb0LCQrsFtBd65Lp0aEvpen21gGpWQFNPXbpNtyB1Ja0STfcsDMYdLKzSiJsSdisOlao0ZHKlbEOlgy7FHjsWJCTTgKp0rPTF0SQoRcY6nFIhscu8qUo3RO+ZBJhM6emGDUr+XUAYBIFLQes5xTIpQTCYy2ZL+U9DOlYy4fmOXYc1mAlPEWhD6hTNceOVjPvdwd0XxnMkpypNuD7Q/XNsswmJl5gkrmtGPWYsBCeA8L1zZKt6x6GwnRA2KuUktXPDKSR0Ge3y5e8qgY9WqmT9OtYy7FzB6AoqavikA7S/xThxAQr4SlKZMmTVOFgaEcGqoegQnRfXcZKIWogrOdUGfD9HjZWflNKtHIY+k/6LHlxgPB9lWxdUwOqOM017Cglueq93O1MpmHHjq6px04h0Fbq6g1LoVj6rJYVkpb9zVMJN+wMBp3wWJjsgYhJIIW7T7DkybKZTVroinqZ9IKlcifhYtSp0bO2DREjLzDJLFLM0g4jQOoKj1PvZ2kuGzouDRkfyVwZy0oNO0D1ENO8QqcvOfd1r2bYpV/HFklEbsiYTcUOI+mEG3YGo4+RUieUdOw+4WQo9wyI3FZMv0mfEMJUjh29hlStfmZpNR2Q3FAsS14cIDLsnmSPnYsxj13IsEumx46VHUYAdVFQjoWWPEnOfd3DyK4TlFMlz44bdgZjgNb2SnOpE0qqJoFIWPLYAcnZVswTkBGQ1TwQFuRMVXiOcoKR+mYU6nFIxoo6JyM17Ci5KfLCs5ZjV5qbfMOONSM+x5bclbEsLZABwi9oyVwgwwLcsDMYrBQnpoQXT6SuDAZrhl0ythWjnjGTKESVoEgX1OhIVci9Z5C1CSGUWJ+EMB0rNewouSlbPMGWjku0UGwyy52ofZqT5q3jKOEixfrrmhDC1OIJIHwdqdgTOJ1ww85g0OLE+YwYdnkprmPniiiDwUr+VTJCsVoY1iZBoIkwaYRu3+byBVOyooxu31XEiMcuueVOQl4cBmqbAWFdJ3OrKSDclyWM6Dg1Hju2jHitjFESdO3wBuGX2ShATSlJQR4lC3DDzmBoHjtGQrFhT06KymBE1PFLd1FTCvWe6lmkmDWvJDXgFZKafUS1SZ+RN/3iFJQ7YWWyT5V3Vkusz2Vj0qeGXXIXT7Cm6+R57Kh+c6wSEyWLAG7YcRhlgLEyEKmuY9fnZmu1JJCcbcVYM+xsZhMskvq4SEXYnRp2RYwk1tNwoScgw62zYctSbTMgnE+ZzFBsUFa0FyF28ihDJW3cfgSTtK0Yc7qmi6KS8PxmLQwLhK+FG3YcpmAtxy4/K7W5V6ytCgbC16JnYj1Lu2tQUlnaJpx0zcakkG0JG7Z6e+0czHlxkl+zkN4rohBefJRuirItEAWAkORtO+VkqAYnkFwjnrWFE0DYO5zMcDsLsDG6OOOmj4FQrOL3w/X22yB+P0xeADCh3+nBwKuvam0EiwU5F1wA0aLvdfYPsuGxjOwDW5cAQER3UxsGXm3R2iTSB9Qzm856V5EyAkB2UEQPBHRs3YaqPLVNsvRMJ9aiNOr5ZPmLRBEdENC8YQvyctU2eshPy/ekM8cu6p4+AQAm9LV3J+2ept6cvCwRYhpTSE/WcaEkojcg4Ojrm2DNUdvoKTcNu+ek0bCLlNnaEnp27TuIgcEDWhs9ZKbGE1seu+QvkGEBbtgZCHVFaPoNG8+evWi95V8BAG5zFlD/73ArAppu+zeYSXjj8IlPPonsxYt0/e13j+8GIMJLenU9b6xE9gEpmw6cfT26mtvR9uRDUe3i7YMP2/YDENAfaANwpg5XHDuRMgKA7bwfAUUTcex/n0RFx37tc7317PHLcPvVcfRh998xqWSlbueO6TpOkj/n/FuAghoc/uOfUdR5UPs8UfmbB7oBCDg4sBfAhLjPkwiRsvqKpwDn/hD97d1oe+aXUe300jUtEOuQ2/D60dexso4NHed/8V/Rm1+NhkcfR37XIe1zveTuc3sACPio613MqUm/zMppFwKnX4rOHR+i7ZEXotolKvP2ln0ABLjkjkQuV1c0wy7DPXZMhmLXr1+PSZMmwWazYfHixdi5c+eIbQOBAO677z7U1dXBZrNh7ty52LhxY1Sbe+65B4IgRP3NmDEj2WLojtsfrm2WTsPOvuBMmGtqAEFAdsALgaj5KC5LltpAEGCeMAH2BfoaJEEliG3HPgQAHHN9hqCSvm1hIvsg3+cCADgs2eEGCfRBUAliR+vHAICD/bvTJmekjACQHfAAAAbNNrVBkvTc5XSHzh/Anz77PTPyUz0PaK6cxOUPKkG0OfoAAJuaX2FC1uygF0CEngHddd3lVMeSYHLi93vZ0XGBV9Vxn426ZPWT2xcMwBtQf+fZzx9nQuYcek9LWeEGOo3r7cf3AQAOOT5M67M6Erq7iNMXhDcgj9HauDDnsXvuueewdu1aPProo1i8eDEefvhhrFixAocOHUJZWdmQ9nfddReeeeYZPPbYY5gxYwbeeustXHnllXj//fcxf/58rd2sWbOwZcsW7f+SFLvoclCBHExOUu14OOH0QSSAxSTCIghpvBYRRTetQfu/3QkIQK7fC5fFDoclB/l+9UFRdNMaKBABHa/xzaMb4HTLEAnglXvw5uENqJ9Sr9v5YyPcB7kBL0QCOC3ZkAUTaGQp3j548+gGDHoUiAQYlLvSKGe0nnOC6vhzmbOhCOoqt2To+bWD2yASEYJpEO3OdmbkL/QNQiTAgCVXN/nfPLoBcsAEkQAnPK1MyGoPBiASwCNlaXIC+ur6vcaPIRIRJpMbbQ52dFzkc0EkQJ81T/cx/tKBjRCJ6kvpHGxmQubsgHpPu8366vrNoxvg9ojqMyzYMayssiwjEAwAya+epGEiBJPzzQjICtq6+1GelzX2QalAAMySGSbTyKuHY5nvmTPsHnroIVx//fW47rrrAACPPvoo3njjDTz++OO4/fbbh7R/+umnceedd+Kyyy4DANx4443YsmUL/vu//xvPPPOM1k6SJFRUVCR0bXs2NyHHnpvQORKhy+nDEq+EbKuE3Rub0nYdAEDEWeibfRVkhxNLvRKcioSOmgsgewZgysuDSzgdwoZjuv2eQhRsObgXi06cBtknQeqvxdaX96JsxkyIQnocz7QP/M5BLPFKACQcnlwPsyLH3QeanH2TofglSCemplXOSD1PMpUh6JUgFM7FMSUvaXret7cRS7zTIUgWWFovZkb+WqkCS6j8tfaE5ae6Xjy4ACAmWLoXMSGrZ9CjjeejtZdCBNFV1wpR4NjdiyXeSpiEUkgM6XiSqTxCx1m6ya0QBe/t248l3nmAoMDafiETMpsVK5Z4JRSbq3GsdgUAQbdxvaj/NCgBCea+aSfJSiDkeCHlyBDSkGD578tKQQhBX1srHO3prxFKIQpB0GUCcdkADL0ul9s57nMxZdj5/X7s2rULd9xxh/aZKIpYvnw5tm/fPuwxPp8PNpst6rOsrCy89957UZ81NDSgqqoKNpsNS5cuxQMPPICJEyeOeE6fLxyDdzgc8YqkK76Q69gmpT+CLogi7IsWwbllCyyKmvztM5kBENgXLYIg6nuNDf2H4fQ7QEgoBC0G4PA70NB/GNMLT9P1t8YL7QN5yxZIioygaILXZIFZccfdB1ROaHIG0ypnlJ5lNZziFyUkU880v04QAwAIM/LbguozwStZoIf8Df2H4fA5ARJ6SxeCcPjdaZc1uGWr9pnfJMEm+3XVdUP/YfhCIUlB9IElHWdRHZv00TFFva/VELcgBMGKzOZ/fgSA3tOAXuPa6XeAKKFFE6IvSlYhxwtLgYLSkjJYLVkpL8A+4AkgKCvIzZJgGcVDlkoIIfD5Peju6YYfXhBXYp5Epgy7np4eyLKM8vLyqM/Ly8tx8ODBYY9ZsWIFHnroIZx33nmoq6vD1q1b8eKLL0KWw/HzxYsX44knnsD06dPR3t6Oe++9F+eeey727duH3NyhHrgHHngA995775DP519Ui7y8vASljJ/ufR3Ysb8JZ9XkYMGlk9J2HRRyUQ2ObnwYf/bXYHdBNpY4DmAa6cSUNQ9AiCPUPRJBJYh1r6xBe3U7XIE6KGI+sso+gDn3EDqz9uOlFS9BEtMzlGkfNJB56LQV4SsndmOaXY6rD6Lk9M+A4stBVvl2mLOPplVOKuPOAT92VNUgL9iGq+XPkqbnY4VT4AucBin/KLIqN0OAwIT8R3p6sGPCFPic/bgmQfmprG2VfXC6lgEAcmo2QhQUJmT9WFoKj2TDdV07UFtg1U3XVO7D2ZdCFkpgK/8Q5ryPmdHxsZ4u7JhYB7fLge/oNMapzMdLLXB7zoJg6UVONRvj2rvtaeywnYl8wY8fNW+Cubpal3HdXt0Ox+ASQAkiu/JtmKwn0Jm1H/+3/P9wrLERZWWVKC4u1lmi8eHoGYTXF0RRbhYKGamhqJIHS5aELmsXpp49YUhYNhYHE1OGXTz85je/wfXXX48ZM2ZAEATU1dXhuuuuw+OPP661ufTSS7V/z5kzB4sXL0ZtbS2ef/55fO973xtyzjvuuANr167V/u9wODBhwgSYJBGmNHrLBnxBKAKQn2NN63VoSBaU3/xD5Dz/CRQBcJmtKL/hh5Bs+t4sbx55Cy3u44AIyEoWiAAoZhdkMYjj7mZsOv5W2lbV0T7IfbMN7UIRHGYbym++Nq4+GE5OIg2mX86QjNmPvgpFAJySDeU3J0/PQfkMKAJAJBcUUX1BY0H+ov9+HIoA9FmzE5afyqqQQigCACEAYvJDBhuyZm11YdBsg9sk6aprKrcs56g6Ng8wpePCX/0vFAE4oYOOKZrMZAYUARBNXmZkrr3maii7AafFBkEJ6jauCSQoxAYIALE4tGfYtuN/x2RhMrKzs9O2VaLJJIIAkBXCxHaNkdB+UYgMixS9QDKWOZ8B6yBMSUkJTCYTOjs7oz7v7OwcMT+utLQUL7/8MgYHB9HU1ISDBw8iJycHU6ZMGfF3CgoKcNppp+Hw4cPDfm+1WpGXlxf1xwJ014UClorW1tcj36oOI3dxBfJCuY56EVSCWL93PYRQzgGR1ZWngkldOSlASOuqOkDtgwJBfVC7KibG1QdD5VRd8YIptHowzXLm1dcjP1e9Jk9uQVL1TGR11algcmnfsyB/Sb469vrsickfJauippEIolf7ngVZcwT1t71V8Y3n4YiUWwmqkRJBCnshWJC7rMAOAOiz5+sid7Su1RWZLOm6qn6Fep2iBGXiZP3GtUxXjgeBkLwCBDx78FkQkl6DSjKpvx1MwZ7XsaJXvzBl2FksFixYsABbt4ZzPBRFwdatW7F06dJRj7XZbKiurkYwGMTf/vY3rFq1asS2LpcLR44cQWVlpW7XngroNlPpLs4biSBJKJ8/BwAQOHOhrqE5ANjTtQetrlYQEBAiAgo1eFTDjoCgxdWCPV17dP3dWBAkCRXTagEAgfMuiKsPouU0AUR9a6aGXbrlFCQJVZddDADwVU5Irp6DqgElSoPa9yzIP+2aqwEAA2Y7FDH+3JwoWU8y4AE2ZC0oU8Nk0spVuumayq0oJu0+FqVwQjgLck/9zjcAAE4pCwEdpscoXVMj3hTO3063zDl2K8TQslTb93+QkK6j7+GQ4W5y0koyICDoHOyEX0lvcWAplD8YSNK2cSzAXCh27dq1uPbaa3HWWWdh0aJFePjhhzE4OKitkr3mmmtQXV2NBx54AADwwQcfoLW1FfPmzUNrayvuueceKIqCW2+9VTvnT3/6U6xcuRK1tbVoa2vDunXrYDKZsHr16rTIGC90L1JWtuChlM+bBbQegKe8Wvdzzy2diweXPQi/7IfLC9wRSrX8z/PuhCn03LWYLJhbOlf3346Fshl1QHcj3LV1cR0fKafTA/wblfPcn0NkRM7yZV8ADu7AoC177MYxEin/L14U0DIIfGfOlzFr4pe1NumWf+KVX4KwayMUCDgx6Nc2jY+VSFk/Pgb8bzNQW1CKtefcr7VJt6yFVWXAoW4Ez5in2zmp3G19ftx7CDCbCO4/725EOinSLfeEK1dC2rUBQaIWUa7MTyyJPVLXm/YCr3UACypn4VuM6FoQBORmWTDgCYCc+8WEzjVkXB8DaosK8JMIWbOQBYsvvfOXmWGPnV4wZ9hdffXV6O7uxt13342Ojg7MmzcPGzdu1BZUNDc3Q4xYseP1enHXXXfh6NGjyMnJwWWXXYann34aBQUFWpuWlhasXr0avb29KC0txTnnnIMdO3agtLQ01eIlBN0nlpWN4SnU0Oz36B9OsJgsWDFJDRcc6XYBeAe5VglXTFuh+28lQnFos/p495gcSc5VDMmZH9rGzpGEfSUj5b/PvwWAD1867TycUZ2v+2/Fi1kyoTjHgh6XHz0uX9yGXaSsnr7jAD5BbWEZVtbpu0tLItD9YvXcQ5TK/RFOANiOinw7Lp96gW7n1wOTSURxrhWdDh+6nYkbdpG63t9wEMARnF46GSvrZulwtfqQlyVhwBOA05eYriNl7e9uArAPp5VUYGXdWVobr9eLxsbGhH4nUaRQiZWgzA27lLJmzRqsWbNm2O+2bdsW9f9ly5Zh//79w7al/PWvf9Xr0tJKP4OhWCBsaA64k+ti1zyW2WzJDwDFodVVemwe7gjpOY8xAz4vi24YHkhanoysEG3z8LI4DadkUpJjRY/Lj26nDzN1yOSgumbtZS03tJdpMoz4LifVr22MlumhNGTY9bj03XbK6Q3tCZzG/Z+HI9dqBuDRxqIedDvUvLqyPPbuYSkU6gkqsYVit23bhu985zs4duxYSo5LBKZy7DijMxDy2BVksRWKpYZmv44PhuHoG1TPX8hYKBoAinQ07AYYnezzQhNSQCbwBpKTn9I76INCAFEAinPYmxTCm4jrM+lrRjxjkz19qaDGiJ50hib9cgYnfSCs426d9xMdCEU0mLuvs/Q34lk23qnHTlYIFJKY127ZsmVRW5UWFRXhiiuuQHd3tx6XGjfcsDMQ/R6aY8fWg0Ez7NzJNezCHksGDbsc9Zp6XZlr2NktJphCD0VHEiZ8AOhyqBNCcY5V+y2WoOFXvSZ9VnWteeySkF7B8qQPhPcT1d+wY1XX+hvxVMfxpiskE5MoaNGGRMKxhBDs2bMHDz74INrb29Ha2opnn30WW7du1dYApAsmQ7GcoRBC0OdmNRRLc68CkBWStAm5b5C9ci+U5IRi2bo9BUFArk1CvzsAhyeA8jz9J2Y6mZYy6K0DgJKQAa+Xx+5Umuwp1HhncdIHoI3rrlPEsKPeYj2N+C5nKBQ7ho4JIfAE5FHbJANZViAIQFBWYImzJmxDQwOcTifOP/98rRxbVVUVpk6dCrfbreflxgxbMwdnRLwBBf7QJsCseazog4oQdSJI1vX1hoymEgYnfRqK9QRkePwysizxl8NgdQIA1Emg3x1ImseOGnYs5uYAYWOkRwfPLBAOf7FmxOfZaD5lMjx245v00wUNEdOQsV6wmk8ZmTurF9R4H8sr6wnIOP3ut3T73Vh4/oYlCCSwMnbXrl2wWCyYPXs2AHUr0qeeegqHDx+O2iAhHbD1NOGMCA3DSqKA7ASMhmRgkURkW0wY9MvodyfRsHPRMB1bhi0A5FglWEwi/LKC3kEfaiz2uM9FPbMs5hJqC2WSlE/J+qSvd/4Vq0a85sVJggEfNt7ZDMXS6+p0nBoeu1yddS0rRPNos/qCRkmklt3u3bsRCARQVFQEAHC73SgrK8OmTZswf/58vS4xLrhhZxDowoECu5m5bVAA1Ys46PckdQEF9dgVM7W/n4ogCCjKtqDD4UXfYAA1hfGfq9/Nbi4hTQOg41FvWM7NASI9dvoaduytgE6eAR/OsWNTx1ooVkePHSGEWcMuT+d8SroAShDGflZnmU3Yf1/qSzq19Xsx6AsgmKBht3r1am1f+e7ubtx+++34wQ9+gD179kSVZUs13LAzCHQ7sSIGjRpAfVi19nu0kiTJQDPsGAzFAkBhyLDrHUxs0qd9WMhYLiUQWbMwuYsnWE2s19tjx+qqWGrA623Y+YOKlofKrmGnXleX0wdFIRB1yBke9MuQQ2E/5gw7nVdA03ujONuqlRYZCUEQYLek3gzJy5Lg9gcRSGDxxO7du3H//fdj6tSpAICpU6di7dq1uOKKK9DS0oKJEyfqdbkxw1fFGgT6MGQxPAekZmUsDcWyatzqtYBC2xOYRcMui+o5OQZ8N8M17ICwx+6E25/Q2z6FVS9OgTbZB3WRk0I9nZIoMPssK8mxqon1CsEJncY51bPFJMJmZmvazdO5ZiHrHlkAMCe4rdjRo0fR398/JOR65MgRSJIUtUFCOuAeO4PAuseuUMdVoSNBS4mUMJhjB+hXy47lUGxhkg14mmPHaii20G6BKAAKUfWcSJ6YNyDDF1oQlc+YER9paDq8Qd2eO3RBQmmuVRdPWDIwm0QUZ6s7jHQ6vLos1qI1SPOy2EulydN5BXS3g/38OinBbcV27doFQRBQVlaGjo4ODA4O4h//+Afuu+8+3HjjjcjLy9PzcmOGG3YGQfPYMWrY6VnuYzjc/qC2LJ7VUCyd/HoTNew8DC+eSGIolhDCfCjWJAoozrGi2+lDt8uXkGFHk9UFAchJQzhqNCSTiFyrBKcviH63XzfDzgjeHEAdfz0uP7ocPsyqSvx8Yc8sW3oGIhZP6JRjx/oCKEA13oH4PXa7d+8GIQR1dere4IWFhZg2bRoefvhhXHPNNbpdZ7ywN8o4w0JruBUxONkDkUaNvivJKNRbR1fgsohm3CZQCkNRSHjrNMa8OECkx05/A97pC2oeLFY9doAaqut2+hLOs4vMr2PRe5VvN6uGnY5GfMeAOulX5LNpuFPK86zY365fyRNWQ+5A5M4T+uiZ9QLUQNhjJyskrjzKBx54IO1FiEeDrWA/Z0RO0BIYjHvs9Nh5YTi0GnbZFuZCGRRt94kEPHZObxA0OsCiYZfMXErqrcu1SgnVAUw2etWyY3myByIWUOio6/aQYVeZn6XbOZNBuc4lT1itYQeEQ7Fuv6xLPiXrBagBwCQIEEPzSCDGPWONADfsDILmsctm78EAAEXZoaTyJIViTwyGt5pilXA4Ov7JgNYrtFtMsErsGTc0768vCR47Lb+O4dwcIJzjmbjHjs3ixBS6JzUdk3rQMeABAFQy7rHTatk5M99jl2MLjz89ClIbIRQrCALMpsS3FWMVbtgZBNZXxeq1cGAkqHeE1cUjQNi47UvAw6FtG8fgBACEr0tPLw6l2yD5V3rVsmN5sgfCCzr09M62GygUC+hXy45lXZtNIuwhD7ke5W26GN89hiLFmGc3adIk3HLLLTH/TrzHJQI37AwC66tii3UIQ44GDfGyuOsEheomkQk/XOqETTnpi4XTF0yoavtwGCVMR/exzXTDLlzaRsccO4cxdFyeq28olnVd0/s6UcOOEBLxgsa28R4ueTI+jx037Di6QggxjMduwBPQfcIHwuFNFveJpdAQndMbhC8Y38bWA1ouJZsTQOQOCXoXr+3QDDu2JwTqsdNz8QSL6F2kmBASYbyzreNwjp2+HjvWdhihUIMz0RQLh9cYC6AARIRieY4dJw14IupdseqxK7RbQNc0JCP/SvPYMSo/oD4c6cMi3kUkrHvsTKKgFTTVe2VsW78x8q9KThmPXSjHTic9nxj0wx96jpUzuk8shYZie1y+jC5ETdHLiO8O5dfl2STYzOzlCEcSDsXyHDtOGqDeOosUzoVgDZMoaKGbZOTZ9QyyHYoG1ITcRLecYj3HDgivzNZ7ZSwN01UwHqbTa1sx5r04NMdOJ48d9daV5FhhkdieeopzrFohaj3SS4xi2CV6T3cMqPcE64Y7EPbY8VWxnLRAN1wvsrNb6gOIWECRhJIndDsxlnPsgMTDdOF9YtmVs0AL2+hr2BklTEd13OdOLO2A1g1j1bDTO8fOKKF2QH1RpXrWIxzLcrkTQL/V7uGXM/Z1TD12PBTLSQt0v0JWa9hRikOrQpOxgMIIRS+BxMN04e3E2JwAgPAkoGco1h9UtD5jfVIoiAi5JxKOZd+Lo09CPaXdQJM+oG8tO03XjN7XehnxtJxNhQE8dpbQPeyXCQjJrHAsN+wMAOs17CjJKnkSlBXNY8f6EvrShEOxbOfYAckpUtzl9IIQdZN0VndXoYiioL1gJDLp9zMedi/QeZeRdoPkUFLCOk7MY0cIMYARr0+OXXjVM/s6ph47Qkjce8ayCpuVMTlR9DEcnlP8frjefhvE70dOjwBARNvuTzHQ84nWRrBYkHPBBRAt8V1/76AfCgFEgc0t1SL7ILdd7YPWTw9iYPCA1ma8faBtJ8ZY0dpIGe0dqoydH3+Ggf59WptE9Ewn/fI8djeHj+yD4qCIVgg4uuUfmFwcbhNLH4Tva3Ym+0gZRT8AmDDg9qPvlVdB1RKvno0Qao+Uv/CEOs6Pf/QJBro+1trEKr/TF9QMB5aM+EhZrZ2qrN2NLRh4tVlrE6usVMdGyLETBQFmk4iArCAgK9r+sZkAW7MHZ1j6GF444NmzF623/CsAwDxzBTD9IrT8YwfaPnkxqt3EJ59E9uJFcf0G3aKGmAaw4dgbWFm3MrGL1pnIPpCmfAGYcyVadn2Ktkefjmo3nj5ocwwAELC//0MsBztyRsoozrgYmHEx2t7bgbb1+uj5jYb3AYiwWN16XG5SiOyD3EXXAFVzcPj5VzCz8f2oduPpA0IIege9AATs7nkXs2vY0HWkjH5RAi7/LygQcPiudcgJhD1X8eh5X0cLAAHtvgMApup41foRKb9t+nJg5iU49t6HaNv7QlS7WOSnz28IPmw5voGZ51ekrHLFLGDJdeg+2oy2J34b1S4WWT/v7gQgoNnzCYBana9YfyINu0wic0zUDOYEwx47+4IzYa6pAQQB+b5BAMCANTvcQBBgnjAB9gVnxv0bbQPqeQXJid/v/T2CSuLb3uhJZB8Uel0AgH5rbrjBOPsgqAQ1L87LR//ClJyRMub6VePLadFHz0ElGDLsgG5/A1NyRxLZB8WeAQBAry0v3CCGPnB4fQjKqgvsL58/xozMkTJalCCsQXU8Os12tUGceg4qQRw70Q8A2Nb2MjPynkyUjr0OAEBPVn64QRzyd7tUb7QguZl6fkXd0wH1nnZZ7OEGMcoaVIJayaJNLc8zI+do0FxZfzCzQrHcsIsBOaik5a/P6YdIgEKbOW3XMNKfAhFFN62BAhF5PjdEAgxYc6EIJvUv4vt4f+PvR3ZBJIDJ5ESbox1vHt6QdrlH6oMC/2DcffDa5xuAoBUiAbo9TUzJGSlDrt8DkQBOS44uen7z8AY4XAJEAvhIB1Nyj9QHxV4nRAKcyCqIqw9e2r8ZIgFEBNHuamZG5kgZFMGE/JPv6Tj1/EbDBsi+bIgE6PMfZUbe0eQv8QxAJECvLT4d07/NDdvV55c4yNTzK1KWnIAXIgFcZnvcsr5yaANIwA6RAD3eIyPKSQhh5s9iEiFA3VYsWb9x2223wWq14hvf+Ma4jxmpj8cLD8XGwJ7NTcix547dUGdyjgxiiVeC6ZADu/qPpfz3x4KIs9A3+yrYghKWeCXkmWtwrHYFAAGmvDy4hNMhbDgW17kVoqBnZzeWeKthQhGk1oux9eW9KJsxE6LAznsJ7QPFK2OJV4JZLI2pDxSiYOtn+7DEq74dWzvOYU5OKqNVNmOJV0KBuTphPStEwZaDe7GwdyYUnwTJUcOc3JHQPigWctSxnj0t5j5QiIKdn3yOJd4zIIgyLG1sjWkqo+xwYmHAij6vhJ6qZbDk98alZ4Uo2LJ/H5Z4QmO7azFT8p4Mld9E72WpIu5xrhAFx3a3YIl3CkQlF2bGnl9U1kG3D0u8EgTkobH2EghATLIqRMHb+/ZjiXceICgjP78kGZYyGR5nAIov/fJLfgXZigDikeHG6IuE3vvnu/jNb3+NPR/vQUdHO5595nmsrL98SLsf3HQ9KiursO6uewEAP/7hT1BWXImf3vavuP2nd6FuSt2Iv+HzB+D3yPjs3VYgGF2z1uV2jluu9PcsZ0w8AXV7qixGK3kLogj7okXICuXgeCQaMiawL1oEQYx/mDX0H4aPLtQSfQAIHH4HGvoPJ3TNeqP1QVDNBwyIEmRBxHj7oKH/MJy+0ApLIQgI7MlJZbSFwnNeU+J6bug/DKffAaKEVjuLXubkjiQ81lVdeUx0lfb4+6Ch/zAG/aFJRAyAtTFNZQQIbLJ6nT6TBfHquaH/sFazTxD9gCAzJe/JUPntoedZQJQQECXEI39D/2F4/KGQpMCuri2yqh8CIS5ZG/oPw+ULhs7pY/L5NRx0oZYyjlWxbrcbZ5wxGw/96uER28iyjA1vbUD9pV/SPsvPz8e13/4ORFHEZ/v3jXisnnCPXQzMv6gWeXl5YzfUmR99fBRdwSDuuKAap1fmj31AGiAX1WDfpvW407YEAHBz6zbkVZRiypoHIEjxDbOgEsS6V9bgSM6FCKIc1rLdsBR8CAECOrP246UVL0ES2RnC5KIaHNn4MHaZlyJgMuNfuj5ATZF9zD6gch4vscLtWQjB0o2c6s1MykkuqoF56x+xw7YQIgFuad4MW3VVXHqmcrdXt8PpmQ9iCsJe+Q6krFbm5I6EXFQD/7ansMM2FzmigpuaN8FcXT2uPqAyNxeXwuObA5O9DXYGdU0uqsHRjQ/jb+5C7CjKx0z3EVwsH41Zz5q8RXnweBZAtHYgm0F5T4bKv09cCJfFjm/27sK0PCkm+ansjQWz4JenwFz4OWzl7MlOZd0rLYVXsuK7XTswsdA2blnDOi6GxzsPJnvLiGPa6/WiqfkYsnLNsNksIIRASdOWXqJJgBAwoc3rhyQQ1OSPnsN+xVdX4oqvqgtfvvHtq2G1S7CfdMy7774Li8WMc794dtRmArLog91uR8PRg7DnXzXyNXkVWLJMmHZuNWy26JXFDodj3LKlf1QZCJMkwpTirXAUhaDb7YciAKV5WSn//XEjWTD5puthedcHr2RFv8WOaTf/EJIt/gUfbx55Cy3u4wjKOVAEAOZ+KKLqvTzubsam428xs8IMACBZUHHzD5G/1YEuexH6LVlYMI4+0OQks6EIgElysSunZMG0738HygeAIogYlCyojVPPVG4imCDLuYAAEGsvZDHIntyRSBbMuO7rUD4EHFY7AgBqxtkHmq6VGigCILKqa8mC8pt/iLyn34ciAAMWO8q/H7uew/fwElVeSx+b8p5MSP6SjZ1wWO3oseXinJuvi0l+KrusnAVFAAjjus7Z6oTbbIUr9P/xyhrW8SRVx+aBEeU0SSIEQdD+FJlg98ampIk2GgsunQSLJIJA3VaMEMRUaonKEMlrr72GlStXQjzJ0/nzn/8cLpcLn3322ai7R9FzDmdrxDL3M2olcCgDngDkkJuYxXInkeTV16M4qK6uckysQ95ll8V9rqASxPq96yFAAAmqXlJBCucYCBCYWmFGyauvR5ESWklYPXnMPoiWU11lKkiD2vcsylm8sh55AXX122Dt1Lj0HCV3IB+ACAgBCCZ1VTGLckdSdfllsIXCV47JM8bVB1Eyy+rqQ8EULu/Cmsx59fUosqnpH86i8pj1HCmvEigEAAjmPu171uQ9mbz6epQRNeTeVzX2vRxJtK5D9zXjus6FOp7d1bXjljVKx0E1miRIA9r3rMl5MiZRgBgytPQoefLKK6/g8suj8+527dqFRx99FPX19di3j4diOQhvWZSfZWZ+42xBklBeWoBWJxBY+ZW4Q7AAsKdrD1pdrSBEAAnmhM4fdkUTELS4WrCnaw8WVixM+Nr1QpAkVEwow8E+IHBx/Zh9QOUEACKH5DSFDTsW5RQkCSV5Njg8gPK1b8Sl50i56aQvmvtAX2ZZlDsS0WxGWbaEZi8gr/72uPogWtdDDTvWZBYkCRPOWwIcBdzTZsas5yh5qY4tYcOONXlPRpAkTJw+CTs6AdfZX4xJ/ijZh3lhY012QZJQXFGCIw5AuOzyccsarWP1BVw0j/85LZoELLh0UuICxIFoUr1jZpMIX1BGQFZgTSCP/cCBA2hra8OFF16ofaYoCm644QasWbMGixcvxre+9S0EAgGYzcktVM0NO8bpDhl2JTlse+solZOqgE/b4Zo2K6HzzC2diweXPYhupx93HRQhCAT3L7sDkR5ui8mCuaVzE7xi/amYWgt8eByDU6aP2ZbK6Zf9eP6fAt7tAS6YvAhfOiv8EGRRztKKYhxtPAHv7AVxHR8p9/ZDwF+agellpfjhOfdrbViUO5KKymI0N56Aa5x9ECnzE28L2NUH1E89HxfMOV9rw5rMVV9YBBzdBUd2QczHRsr74MsCmpzAt2fXY+7keq0Na/KezKR5M4G3DqG3bEJMx0XK/p/tAjo8wL/MXY3p1au1NqzJXjyxCtjXAe+MM8Z9TKScD70ioNEJfGt2PeaNU8dq2DG9O82YTQJ8QXXP2ER49dVXcdFFF0Xlxv32t79FT08P7rvvPjQ3NyMQCODgwYOYPXt2opc9KtywY5welxrWo5vLsw7dy7Urgc3RAfVhsGLSCuw93g/gn6jIy8KqaReOdRgTlOWG9osdRx9QOQFgw45dADqwpGYWVtZNTuYlJgwdj71x7gscKXfDkUMADuPM6lqsrEvuA09PKmLcJD5S5ue3fQCgB+dMnI+VdTXJusSESUTPkfLe69kMwI8rZp6HM6rZXAA2HFUFWQCA9tDm9uMlSvagKnv9tGWYWZn6xXfjpTCU6hPLHtCRcv6X/20AHtSfdg7OnFiYjEtMChZJBHyJh2JfeeUVfP/739f+39raip///Od49tlnkZ2djWnTpsFqtWLfvn3csDvV6QltJl+SaxDDLrRxdncCm6NHQiuZ0wesEaC66nbG1ge9ISO+2ABGfHHIg0yvORFa+lQd1xTax2jJFuWhl5h4Nomnk2dhNjt7hw5HcWiyPxGnAQ8A3oCsvaDWFBrnPgbC+9rSPVBjRVEI+kK6Zj1Hmuqa7n4TC4pCtPuA5b2Ah4PuEesfowCwy+XC4cPh8i2NjY3Yu3cvioqKYLPZ8NFHH+HVV1/Vvv/Rj36ESy+9FPX1qvdSkiTMnDkzJXl23LBjnN7BkGHH+EOBEou3ajxQw67aQIZdacgw64nR6KFekWID6DrsyUlcz2HDzjg6BsIbnY/XYxcJnTwLGNwmMBJqwLv9Mjx+GVmW2HOQqH5zrBLys9g2ZE9G89j1e6EoJKZVkwDg9Aa1xW8FdrZlp8+deF7WegZ9CCoEohB+/hkFayh33T+Gx+6jjz7CF7/4Re3/a9euBQBce+21OPfcc7Fo0SKUlJQAAF5//XW8/fbbOHDgQNQ5Zs+ezQ07DtDjNGgoViePXasBPXalIeO2yxnbWz71ihQbIJ+SXmOsxutwtPSpCwiMZtiVhQy7jjg8dnRj+CLGDbscqwSLSYRfVtA76EONJXavamvEy9lopR5YpDzPBkFASH6/dm+PF7rPt91iglVis8A8pVh7IY392d3er94DpblWSCa2F/mdzHg9dueffz4IGT4P7/LLL49aDfulL30JfX19Q9o99dRTCVzp+DGWBk5B6E1mtFBsrEbNSLT20UnBOO79SE/OSA+Ck5EVonlxWA/ZAEBxdvyTQCT+oKIZRkYLxdIcu64YDTt/UMGgX63zVci4YScIgmbExxuONarhDqj5V9QDFWueHRDx/DbAi3n4ZS32e7rVgJEVCvXYBWRlXDtQDMc555yD1atXj90wRXDDjnGM9GAAwqHYPndgzDeg8dA2YDyPHfVa+oOKll8zFn1uP6gNyPpkD4RXaSeaY9cx4IVC1IerUVZ+U8I5duM34IFw+FoSBeTa2A+aFCUQogMiXs4MaNgBQGXo2dPWH/vLKs2RjtXTlw4SWSgT1rGxXs6A6Fp2Y4VjR+LWW2/FhAmxrZxOJtywY5zwqlhjTHoFdjMsIde2Hl47+jA1kmFnlUxavkrHOJOuqTekwG7WQgMsQ8M2vQl67CK9OUYM0wHqXs4Oz/gLsNL0iuIcS8w5W+lAM+zi9tgZM4eSQqMF1CsVC0YqV1UcsSo21hWiRvbYCYKg1YiN17BjDfZnkFMYQkjEg4H9Nz5AvUkqElxJRvH4Zc3gMZJhB0SGY8fXB9Qza4QwLBCeqAb9Mtz++KvKtxj4Td9mNmn6imXS7xk01j1dkqARH570jadjIJwiQF9CYkGramAAXRfYLaDvGX0xGvEtBvfKWsaZZ2cUuGHHMC5fUBtoRngwUKpCb7htcbzhRkLDsDlWCXkGCFlFQo3b8SbWUwO2JNsYes6xSrCHVkjGsyqUcqxXrcZfW2TMSb9aC9PFYNiFJnsjlLUBwp6cePMpjZxjBwATQmPz+InYDTv6Ym6EUKxJFLQXlVgXRVHjvcZgL+AUbWUsN+w4yYbeXNkWU1xlBtIF9a7FE7qIJFzDzma4MJ1m2I3Ta0nzl4zisRMEQVs8MF4Zh4MadpNKsnW5rlRTFUeYzmjpFdT73BVjXUZArWFHjzOqN2eiZtjFEYo1WFUDuigq1jJGrSHj3ag6tnDDjpMqjLYilhKPF2M4aEJuZb7xHhaxGj00f6nIIJM9EHu4eTgae9QJYXKJUT126nXH5LGjXhyDTPZlCRRibulzgxDVw2uE+ozDQQ275hPumBbJABG6NsgzPJ7C405vAA6vmo5hxBw7ADzHjpM6jJSfEUlVAqvIImkKhT5qi4036VfEWOOM7lJhlMkeiD3cfDKEEDTRUGyxsT12LXEYdka5rzWPXRwh92M94XvYaF53ilp/T10kE2uIsttgz/CSOGrZUW91gd2MbKuxUmYokTl2sRrvLMINO4ahEyYtq2AUqnTy2DX3qpPCRAPmX5Xnx+bNorXQygyk61jDzSfT7fTB7ZchCsAEAy6eAMJ5Y/F47IxQiBpIzDOrhdoNargDqjenKhQ1aI4hz44Qoum6zGgeuxgWT4RrjRrTWwcA5pDHTiEEwThr2bEEN+wYhial06K/RiGR8gCRGHlSiNVjR/OQjKTrRHPsjvWG83JoKMRoaPmkfbEsnjBW3hU1Sgb9Mly+2FZAN/Ua1+seCTXgY1kZ6/QF4TPY4rd4VkAbudQJRRSEjFoZa8yn6SkCfUOuMNimyjQnzukNwuEdX4Hek1HDdMadFKjO+t0BeAPymO1pzT8jeWfLE9hSCwCO9RjXcKfQyazL6YMvOLaegYj9nw0y2WdbJeSGQmyxeu2M/HIWiZZn1zt+w46m0hhp8RvNg+yOYaGM0QtQU+jLpS8DDDtjBsRPEagnhHpGjEK2VUKB3Yx+dwDt/V7kVcS++fWJQT9cviAEIVxuwEjk2SRkmU3wBGR0Oryj5pDJCtFydwzlsYsx3HwyjRkw6RdlW2Azi/AGFHQMjK5nQNW1Vtom1xihWEBNEXB2B9Hp8KKuNGfcxxn55SySyAUU40XLrzNIGBaI3g5xvLSkyGOn+P1wvf02iH/kMLFgsSDnggsgWmK/t6xmE1y+4IgvaPfffz/uvPPOIZ//+te/xo9//GOmcki5YccwnVqOnXEme0pVfhb63QG09XswvSI35uNpmK4izwab2Rhvu5HQQs2NPYNoH2PC7x30QVYIBME4JTCAiL1Sner1m2LcRaHJ4KVOAFXPVQVZONo9iNZ+z5iG3YlBPxQCCAJQZICt4yjleTYc6R6MaQGFP6hooUujLo6hTAwZpsdjCMVST7aRXszjWRCVqp1FPHv2ovWWfx2z3cQnn0T24kUxn5/WsvMFhvfY3Xzzzfjud7+r/f/uu+/Gpk2b8NWvfhWHu10IBAkmFtuRw8ACEh6KZZhOgy6eAMK5R/FUaweA5hN0taRx3/TpA32szcPpZFmcbYFkgO3EKCU5aqV6WSFx7UpwtFvVsVFLnVCqY8izoyH3IruxdB3PAorWfg8UAtjMomEWD4zEhDhq2dGIS6WBUmnoM+vEoH9cKSQA0Jyile32BWfCXFOjvhUNhyDAPGEC7AvOjOv8tjFCsbm5uaioqEBFRQXWr1+PTZs2Ydu2baipqcGN134DS06fiG+vvjqu39Yb4zxZTjGc3gAG/eqNZbQcOyBskDXFkJMSiVYmoci4b/r0DXasCb/bgAsnAEAyiVp9rli3jwvKimbYTSuL3aPLEtUxlPfRJvsCY+k6XMtu/Aa8VsqmKNsQe+KOBg3Ftg14xp1LSe+JCgPV4SywmzXP1Xi8swOeAPrcah51sl/CBUlC6c1rgJHKkRCC0pvXQJDi85hZJTUy5A8qUEYpeXL33Xfj6aefxrZt2zBp0iQohGD1d2/Af/z6EbAyzLlhxyj0zTjXJsFuSb9rN1YmhW5ymjwdK409xg/T0T0mx3rLp14cI5U6oYT30YxtBXTTCTf8soIss8nQq+mA2LzT2mSfZyyZ6UtHLB67TMmvA1Rveq5NAiHjf1k1oscucq/v8YRj6WKS0lxrSuapvPr64b12IW9d3mWXxX1uySRAFAQQkBFXxq5btw5PPfWUZtQBQEBWsHDpOcjJyWUmz44bdozSMaC+LRkxvw4IG2TH4vTYfd7pBABMKxt/ojZrTChSJ++x8nLCZW2MZ9hNKByfjCfT0OkCAEwtyzG8N0fzTo8jsZ4aRkaa7AGgKn98aQWRHOlWdTzZwC9nFEEQMCW0aORIl2tcx7QbVNfl40whASJXPafGeB/Ra5egtw5QdWwdJRy7bt06PPnkk1FGHQAEQm1ZSq1g50o4UXQaMPE2ErrSsbnXDTnGgo9BWcHRkMfutHLjhuloXs5Y3izNY2ewUCwQ/wbpDRlguFNoblHTOLzT4fCcsXQdj2eWGu/TDHwPR1JXquqZGqxj0TFgzC0RK2NY7Z6OnWOGeO108NZRrKGFeieH2//jP/4DjzzyCP7617/CZrOho6MDHR0d8Pl88Mvq/CYx9ILKDTtG6TDwilhADU9ZTCL8shLzDhTH+zzwBxXYzKKhayNF7kowmnHbYdDJHggbdrGUgQCAhq7MmfQnhya1TocPbv/oBXyNWsKIjuUup2/cSfWHu8Ne2UyAlnk50j22AR+QFa3ouNHu6/Cir7ENOxqRSZXHDhjGa6eDt44y3MpYQgh+9atfobu7G0uXLkVlZaX298knn2hhW7OJHcPOeMlbpwi0mneVwZKsI2sNVVtENHoE7H99C/IKwm3GqjVEw7B1pTkxl9BgAdoHNp8fkiAiqACf/99rqIpQZWQftGhb8hhD15E6LhoAABOajndj4NVXtTaj6ZgQgk/bugEY22NH+wF+P/IlEQNBAZ/97U2cFuG8OLkfaHirIt8YYXcqo+Dzwy6KcCsCDr34BiZFvG8Np+t+t19bFGR0w472QWW7H4AJn3/egoFXm6PanNwHXQ4vCFEne1r0l2Ui7+n8dgGAiJaDjRggR7Q2w+n5WG96qhfk1dej+7e/Q6ClRRdvHVEUKE4nLAHVWPR6/Qj2h+vl9TY1QRAEiLm5EMRofxh9qZVEdvxk3LBjFDrZG20PzchaQ6VLvovGitPxyV9exsRj26PajVZr6PWDHwIQYbcPJPtyk0JkH5Qtvw1tOaX45Dd/AHqPRrWjfdB0wgFAQINzJ76IlWm44tiIlE/KKgRW3Ik2t4zjt94BE8KeyZF0/Orh19HYIwMwGzrUHtkPFefdjIGiWux97BnktH0a1S6yH1r7XQAEHBzYgS8YTNdlX/wJjuVX4tPf/QmW7s+j2p2s6yf3vgVARGE2YaKuVyLQPsjOKQOW34qj/T603noXTn7ljOyD/zuwFYCI3CzFEDmkkXo2V80GFl2L4w1NaPvT76LanaznzztPABDQ7NkNoDpl10u9dm233a6Lt05xe+A/fhwmUQLyKuCVCQItrUPaWSZNhiknOuzsCfjx/dVXoOHAPnjcbtTU1OCFF17A0qVLE7qmRGDHxOREQVfYJbvoo95E1hqqdqlembacknCDMWoNBZUg3jmiThrHPDsQVGLbm5IFIvug3H0CANCZXRRuENEHfW4PPH71wf+3xscMIW+kfCWefpgUGUFRwomsPLXBKDoOKkE8/MFfAGKGIPpRkR/7riSsENkPVYM9AIC27JHHep/bC29A1fXzR/5oOF2XefoAAJ32wnCDYXQdVIJ49pO/AwD8puOGkHM0aB9Uuk9AVGR4zDb02vLCDU7qg6ASxF/3bQYAeIVWQ8gf9cwaDD2z7MM/sygDHi8cHnU8v9L0p5TLmXf55Zj0wvPIW5n4C5KYbYdgtsCsBCESAiII8IvRzybBYoGYHe1oIURdQfvHZ1/G+wc/xODgIFpaWtJq1AHcsIsJOaik5C/gl9F2wgORANV5tpT9rh5/CkQU3bQGCkTUuHohEuB4bgUUwaT+RXw/3PFvHt4AtysPIgHc5DDePLwh7TIl0geVg30QCdBhLx62D577ZAtEAojiIDoGmw0hb+T1C4KIipCMbdmlY+r4zcMb0NlrgUgAk6UNG49uTLs8evRDdWist9M+GKYfnvtks6prwY2OweOG03W5W9Vz1whjOVLHfQNWiAQImowh53j6wESIpufmUZ5pqvwmiASQhQ5DyB+lZ08/RAIMWPMwKGWNqOend6vj2SQ60ek+Nm45CSG6/AGA7YwzAECXc0llZQAEWOUABAA+kxmAoP1JpWVDfqvfOwAQEQKAIPFhwDegi2wj9d14MbaPPMXs2dyEHHvyQ0eDviDOdKmTZtuOTnQyUhtnvBBxFvpmX4XigIglXgl2ex2O1a4AIMCUlweXcDqEDceGHKcQBZsPfIxFA2cBEGDpm4atL+9F2YyZEAVjvYPQPpgkFWOJV4JQOA/Hak2I7APy5lHs3XsMS7ynQZBEWFovNoy8VD7Z4cRSn4Q2SUJn9QXIzWkdUccKUbDl4F4sOPEFyF4JJsFqGHlHgvZDJbKxxCshK2/msGNdIQr27mnCEu80CBIMqetaqQhLvBJMBbNxrBYY7n6mOl7YMxuKX4LkKDOMnKNB+2Cpz4wWs4TOmgtwLHsqhtPzloN7sbB3LmSvBMlUahj5I+/pZYMEPpMZh+ouR4HPNayeP93dgiXeKRDNgHm841mSYSmT4XEGoPjY6g8i2CBnFcJOBJgUAbI5Bz5B9doJJhNkwQZhIJx3R0Dg8HiRrahRNSGQA0e/G5LNBmFIoH58+PwB+D0yPnu3FQhGb6XpcjvHfR62epYDABjwqpW8c61mmAxm1AGAIIqwL1qEAp+6Ks4t2UJubQL7okVDkk8pDf2H4XATAAIE0Q+IXjj8DjT0H07dxesE7YM8n5pc7LDQvIxwHzT0H4bbp4TaewEQw8hL5QMI8v0hGa3ZGE3HDf2H4fQ7QIJqGEuQnIaRdyRoP+T61dQJh5mGaqL7QdV16BiTB0bUdXZAzft1WYaXEYjUsbpgQpBchpFzNGgfFPrUybXPSl/wh+rZ6XeAyKEUGpPbMPJH3tM5IV07zVkYSc/ukGEmSC4YaTyPhAABYnY2JEV9JgfFsGElZmcPMdZ8QR8UWu1AkAEQyIoMXzD27RX1hnvsYmD+RbXIy8sbu2GCtH3chh2fHsOiSblYcOmkpP9eMiAX1eDoxodxVDkDXfYirHJ+hlm2AKaseWDYRNegEsS6V9agqWACvN4zYco+DHvNZggQ0Jm1Hy+teAmSaKzhSi6qgX/bk/il7QxkmUTc0LwJlupqTFnzAGQRWPfKGjTmz4Y/OBXmwgOwlRtLXqrjQ1192FFZDb9pEFfLnw2rY6rftqp2OAcXA6Yg7NVvQbJ1GkbekSAX1SB30+9xj20BABOub38XRWVFWj9Q2Y/mnoWAPBmW4k9gLd1iOF173nkGv7LNQo4o4PsRY5nqmsrZWu6Ey3k+AD9yJr4CUQwaRs7RIBfV4PC3bsFjtono8gXw9eZNMEf0AZW/vbodTs98EFMQ9sq/Q8pqM4z89J5+frAYOwrm4nRvEy6Qjw6r5yP25QgqQVjLd8JSsHNc49nr9aKp+Riycs2w2RhcLZxnhnz0BLpEK0wASvwOCBYzrGXVUbtdEELQ2t8Mv8mqhnJNPohmdRFcUPSiLq8url0oRK8CS5YJ086ths0WXSXB4XCM+zxsjzLGMEkiTFLynZwtAx4oAlBdnJ2S30sKkgXlN/8QE1/6HB3ZRWjKKcMlN66CNMLN/OaRt9DiPo6AbyEUAZCyWqCIar2s4+5mbDr+FlbWsb+KMArJgnnfWw1hu4xBiw0nrNmYe/MPIdks2HDkNbS4jyMYOBeKAMBywnjyUh3/4lEoAtCcW4rykHwnQ/WryIVQSBYgBIGsDsiCbBx5R0KyYMpN/4KSrX3osheiOacUM2++QesHKnsweJGqa2uvIXU9/7tfA3YocFjtGDBn4YyTdK3J6T8NigCIlh4QyQsZBpJzNCQLFl+1Asoe4FheBWRCUBPRB1R+AgmynK+mZll7IItB48gfuqcrntgGRQDa7YUo//7weg74S0AEALaOcY9nkyRCEATtjzkEAfbiQpBB1WMnCwJsZWVDIhADvgEEFD8IyQYBIAh04QiBX/HD4XegwFYQx8+r/TKcrRGLLWBQqyGzoZujTyk19lY8efX1qCNqOLa5atqItYaCShDr966HAAGyR10yL9rCS80FCPj93t8bYnXZyRSvrEe1Ty3b0jb5DORddlmUvIq/FAAgWrq1Y4wkb159PabkqiGLLnshTBdePKRNlH69EwAAoq0DgqBOBkaSdyTy6usx2a+uGj1eO1Mb69G6VlcZCuZe7TgjyV66sh4VPtVr0D7ljKj7OVrHVQAA0damfW8kOUdj5pcvQ3bQh6AooW3anBH0XKw2Fj2ASQ3RG0n+vPp61FjUcGRHcfWweoZiAQmocoqWTu17I8k5EuaCfFhC1++1ZcOUnx/1PSEEXZ6u0H9U35ggBKLadHm6tEUZ6YBJw279+vWYNGkSbDYbFi9ejJ07d47YNhAI4L777kNdXR1sNhvmzp2LjRs3JnTOdEMrttcZ3LATJAnzzlsAAGicfMaItYb2dO1Bq6sVimyG4qsEAJiyjmvfExC0uFqwp2tP8i9aZwRJwtTqAgDAiYtXQZCksLwE2iQgWnu0Y4wkryBJqPvh9Sj0qhP+kRNDq9VTeQkIZHctAMCU1aR9byR5R0KQJMw6fRIAoGPhMm2sh3UtgATUMiGiJWzYGUl2QZIwtVJNRem95Mqo+zlSx0rIsDNFGHZGknM0RLMZM4tCRYgvXz1EzwQEiq9cbWvt0qJ3RpJfkCSc8aULAACtpROH1bMcklEwOSFK4V1njCTnSAiCgGyLKrM/J3+IZ9EddCMgq4YcCRl2EKMN2YAcgDsY3z7pesBcKPa5557D2rVr8eijj2Lx4sV4+OGHsWLFChw6dAhlZWVD2t9111145pln8Nhjj2HGjBl46623cOWVV+L999/H/Pnz4zpnOiGEaJtM0y1sjMzZV14I/HIbDrlFeAMybGbTkDZzS+fiwWUP4uMmP37/uYjiXIJ7vnh7VBuLyYK5pXNTddm6MmPONLy97QhaylSjhsrb0e/HuoMiTCLBf57/E0TuIW0kefMuvxzTG7diR4cPB9odmDuhIOp7Kq9f9uMXLwpoAfDN+UuxoC5c68lI8o7EnHPnA899jEZbsfYZlb2p24/7D4qwmgnuP/92RNasNZLsM2ZPxT/+cRQt5ZOjPo/U8T1/FdAL4F/OugQzqi/R2hhJztGYM3syPvrnMRwpDfdBpPyvfyTgrTZg8cSJ+MY592ttjCT/mV+5FPhsMzr8AgY8AeRnqatDqZxbPvXjhWPAzKoc3BghI2AsOUciOzcLfX0eeIbJFcySslCTW4OgTNAaeo+tzi2LWlohCAKypPTVoGXOsHvooYdw/fXX47rrrgMAPProo3jjjTfw+OOP4/bbbx/S/umnn8add96Jy0Lu4htvvBFbtmzBf//3f+OZZ56J65zppMPhxaBfhkkUUrqxcrKoKbSjJMeKHpcP+1oHcNakoiFtLCYLVkxagU8PHQJwGMum1WBl3byUX2uyoLsrHAptik7l/cfn3QB2YlJxDq6Ydn76LjBBBEHA/Bk12NFxBB+39OPriyZGfU/ldfmC+PGJtwAANyxebrjN0cdiRsibdajDCUIIBEHQZH91oA3AHpxeWYhVU7+Q3gtNALo92OHQyyeFytnl8KLXuRWCANyw6BLk2YxbgHok6IvLruY+7TMqPwC8/v5HADqxfNosrKybPMwZ2CffbkFVvg1tA1583unEwtBzm8q55cOPAbTgwmnTsLJuenovNgnYQx47j1+GQgjECK+dKIjIt+bD4QkAGIRVMqHQxtYOOkyFYv1+P3bt2oXly5drn4miiOXLl2P79u3DHuPz+YasHsnKysJ7772X0DkdDkfUX6qgD8zaIjssRl04EYEgCDhzYgEAYE9z/6htdx5TK54vGsb4MzJnVKs5Gp+1DSAoh4tMUl1PyQDP7NwaVcaPj4+8Ddye5j4oBKguyMo4ow5QPexWSYTTF8TRnuiN4g91qM+QGRVsTQCxcnrIeP2sbWDYHKKPmlRjZ0ZFXkYadQCwaLL6fNrf5oDTGxjyfUPoBe60cmPf19NDY/Vgx9D6aZ+2qvf57Or8Id9lAlZJhEkUoBACb0Aeto0n9HmWZWgUKt0wZTn09PRAlmWUl5dHfV5eXo6Ojo5hj1mxYgUeeughNDQ0QFEUbN68GS+++CLa29vjPucDDzyA/Px87W/ChAk6SDc+9rWqE8DMyuSXVUkV8yequUUfNZ0YsY3TG8Du0KSwZErxiO2MyJSSbORaJXgDCj7vDHs69rWpD8fTM0DXc2oKAACHOp3w+Id/EL7XoOYRLp6cWYY7xWwSMSdk4NKxTDnUoep9uoH3xgXUyd4iiXB4gzjWOzSH6KNjqtxn1RYO+S5TqMzPwoSiLCgE2H3Sy6rTG0Bjr2rUz6gw9n09vYJ6oKMdG25/EA2hl9LZNZlp2AmCoHntBn3DLwShz7msYdKL0g1Thl08/OY3v8G0adMwY8YMWCwWrFmzBtdddx3EEYrgjoc77rgDAwMD2t/x48fHPkgnPm3tB5BZN8ySKepE/v6R3iiPVSTvNvQgqBBMKc3GpBLjh6AjEUUBcyaEPFot/drn+zLorbcy34aSHCtkheCztuG9dtsOqSt/l00vTeWlpZQzQy8xuyPCdIQQTdczDG7Em00izqhSZfj4eP+Q7+nL21mTMtewA4BFk9SXz52NvVGff9oyABLySpfmWtNxaboxS9Nz9P380bE+yApBdUEWKvJswx2aEggh2NezL2mrT3OtqmHn9KqG3f333x9VqmVyaQ7mTijE43/4XVJ+PxGYMuxKSkpgMpnQ2dkZ9XlnZycqKiqGPaa0tBQvv/wyBgcH0dTUhIMHDyInJwdTpkyJ+5xWqxV5eXlRf6nikxb1JpqTAZM9ZU5NAQrsZji9QewdZjIAgK0H1OXjF85gazGLXswNebR2hTw5bn9QC8VmghEvCAIWhibzfx7uHfJ9W78HhzqdEAXgvGmZa9hR7/SuCI9da78HHQ4vJFHQxoGRoTlmJ9/LvS6fFqLLNK/7ySwOvaxSLzRlT6hP5oXST4wMNc4/axuAK8Jrtf2oen8vmVKc1lp0rx99HavfWI3Xj76elPPn2EIeO78MWSG4+eab0d7ejvb2djQdb8FXvnEtqmom4Otf+1pSfj8RmDLsLBYLFixYgK1bt2qfKYqCrVu3YunSpaMcCdhsNlRXVyMYDOJvf/sbVq1alfA5U01rvwctfR6IAnBGBkz2FJMo4NzQZE69NpH4gjK2HFAN7wtmlA/5PhNYWqdOdO983g1CCHY2noBCgKp8G8rT+NarJ1TH7zYM1THV79wJBSjMZrDivE4snFQIQQA+73ShrV/dlomGJ2dV5TGZjxMr1Cu542i0Ab/tUDcIUeXMlDE9EudPL4UgAB+3DKBjIFzih/YJ7SMjU5mfhZrCUMg54kXl/SOqjPSZlg60enpA0urmWSURFpMIQggGfUHk5uaioqICFRUV+J/frsf2f7yN//fSBogCcP755+P000/HnDlz8MILL+h+LbHClGEHAGvXrsVjjz2GJ598EgcOHMCNN96IwcFBbUXrNddcgzvuuENr/8EHH+DFF1/E0aNH8e677+KSSy6Boii49dZbx31OVlBXSapv/ZmWePzFUPjtzU/bh7jOtx7owoAngMp8m5aYnGksmlyELLMJ3U4f9rU68I/P1Tf9807LHO/VudNKAKheiwFPdFL5y3vUgtP1sytTfl2ppDjHivkhj9bbB1Uv9Lshr87CDFkUdM7UEoiCmlRPjVcA2HqQvpxlptc9krJcm2a8bdqv5mq7/UF8cFQNRS/LkPuaPo/py1pbvwcfH++HIITv93SwoXEDWl3qM6XF1YINjRt0/w1BEJAbmocjn2d33303nnv2/+F/n38dM6bVQZIkPPzww9i/fz82bdqEW265BYODgyOdNiUwZ9hdffXVePDBB3H33Xdj3rx52Lt3LzZu3KgtfmhubtYWRgDq3nN33XUXTj/9dFx55ZWorq7Ge++9h4KCgnGfkwUIIXh1r1rQ8/wMeShEcvGsCmSZTTjaMzgk4fjZnc0AgC+fWQ2TmD7XfjKxSiZ8cYaq1//3QRNe+ySk6+mZMwlOKLJjWlkOZIVg477wPXq024Xdzf0QBeDyeVVpvMLUcOFM9bny2sdt8AcVzVt50ensPG8SoTDbgnknGa8D7gC2hNIpLj59+BSXTOPSM1Q5/7rzOAgh2HaoG35ZQU1hluGLy1MuDo3ZNz/tACEEb36q3tdn1RamzSsbucsHkNzdLgrsYcNOVgjWrVuHp556Cn96/jVUT5iIXJuEyspKzJs3DwBQUVGBkpISnDgx8kLBVMCcYQcAa9asQVNTE3w+Hz744AMsXrxY+27btm144okntP8vW7YM+/fvh9frRU9PD5566ilUVQ2dPEY7Z7qRFYLZ92zC9qO9EAXgKwtq0n1JupNjlXDpbPVB+MT7x7TP9x7vx7sNPTCJAq4+a+IIR2cG31qiFij+64fH0e30oSTHmnHejS+fqY7d5z9q0T577N2jAIAvTi9DWW5mh+gA4Mr56gvKB40n8O+v78eAJ4DSXOuwNRyNyiXUqPmwGYQQvLDrOPxBBTMqcnFGtbEXiIyXry6ogc0sYn+7A/9o6MGToefa5XOr2NwHNQ7On16GbIsJrf0ebNrfqT27V82rTts1UW8dgRr5obtdJMNrZ7eYYJFEKITg9jvvwpNPPolXN2xCRc1EmE0i7CelVuzatQuyLKe0ksZwMGnYnWo09Q5qyak3nl+HqoLMq/EFAN87Ry3W+drHbdjT3IeArGDdq58BAFbNq8LEYns6Ly/pLJ1SjPo54VDknfUzMqJWYSRfObMaZpOAXU19eOfzbhxod+D/dqlG3o3n16X56lJDVUEWLp+rvlw+vUPdOu27X5icUd7ory6YAIskYl+rA0++fwyPbDsCALj27EkZY9SMRYHdgtWhYtzXPr4THzSegNkk4JuhF7hMwGY2afLc8PQutPR5UJJjwVfT5Hw42VtHSZbXThAElORY8cffPIjHH/sj/t9f/gJXUERPVycCzhPw+/1a2xMnTuCaa67BH//4R12vIR6Y23niVGRikR2b//U8+GUlI2qajcSsqnxcMa8KL+9tw/VPfYRJxdn4+Hg/cm0SfrYi86qXn4wgCPjN1fNw+dwqlOVatRWUmURZng3fXjIJj/+zETf/ZTcskoiATHDx6eUZ5bEai59/6XTsb3PgUKcT504r0V5qMoWibAu++4XJePSdI7jntf0A1Bp96Zrw08VPLp6Ofx7u0epT/mzFdFRn2Iv5TedPxZYDnTjaPQiTKOCBL88ZdmvIVBCZWxdJpNduZd1KXX+zMMuMJ//wW7icDpzzhehdY3bu3ImFCxfC5/PhiiuuwO23346zzz5b19+PB4EkqwhMBuFwOJCfn4+BgYGUlj7JRBzeAK56ZDsOdarVzC0mEX/49gJ8McNCkqcyLl8QX//jdq3Ydl1pNp67YSlKcoxd1ytWFIWg2+VDWa41I71Y3oCMn77wMV7/pB0zKnLx6LcWZFwNyvHg8gXx1r4OVBVkpXWlaDJxeAN451A3plfkalskxoPX60VjYyMmT548ZMeosQgqQXzppS+hzdWmhWEjESCgOqcar135GqRh9nhNhEFfEI09g1AIgQA1n7jArq7uJ4TgG9/4BqZPn4577rknod8ZrX9isUO4YTcOuGGnL25/EM99eBx97gAun1ul7T/JyRw8fhmvfdwGmRCsnFuFHCsPDmQq3oAMqyRmpPHK0ZdEDLsPOz7Ed9/67pjtHl/xOBZWLIz3EkfEH1Tg8gWRZTFF7Tbx3nvv4bzzzsOcOXO0z55++mnMnj075t/Qy7DjT1tOyrFbJFz3hcwKTXGiybKY8LWF6U0g5qSGdIXlOKcWc0vn4sFlD8Iv+0dsYzFZMLd0blJ+3yKJKJKG1uA855xzoCjD76iULrhhx+FwOBwOh2ksJgtWTFqR7sswBJm1JI/D4XA4HA7nFIYbdhwOh8PhcDgZAjfsOBwOh8PhcDIEbthxOBwOh8PhZAjcsONwOBwOh5MyeJW14dGrX7hhx+FwOBwOJ+mYzWYAgNvtTvOVsAntF9pP8cLLnXA4HA6Hw0k6JpMJBQUF6OrqAgDY7XZe2Bqqp87tdqOrqwsFBQUwmRKrDckNOw6Hw+FwOCmhoqICADTjjhOmoKBA659E4IYdh8PhcDiclCAIAiorK1FWVoZAIJDuy2EGs9mcsKeOwg07DofD4XA4KcVkMulmyHCi4YsnOBwOh8PhcDIEbthxOBwOh8PhZAjcsONwOBwOh8PJEHiO3TigRQMdDkear4TD4XA4HM6pBrU/xlPEmBt248DpdAIAJkyYkOYr4XA4HA6Hc6ridDqRn58/ahuB8L09xkRRFLS1tSE3NzdpxRQdDgcmTJiA48ePIy8vLym/YQR4P4ThfaHC+yEM7wsV3g9heF+EyeS+IITA6XSiqqoKojh6Fh332I0DURRRU1OTkt/Ky8vLuAEZD7wfwvC+UOH9EIb3hQrvhzC8L8Jkal+M5amj8MUTHA6Hw+FwOBkCN+w4HA6Hw+FwMgRu2DGC1WrFunXrYLVa030paYX3QxjeFyq8H8LwvlDh/RCG90UY3hcqfPEEh8PhcDgcTobAPXYcDofD4XA4GQI37DgcDofD4XAyBG7YcTgcDofD4WQI3LBLIevXr8ekSZNgs9mwePFi7Ny5c9T2L7zwAmbMmAGbzYbZs2fjzTffTNGVJo8HHngACxcuRG5uLsrKynDFFVfg0KFDox7zxBNPQBCEqD+bzZaiK04O99xzzxCZZsyYMeoxmTgeAGDSpElD+kIQBNx0003Dts+U8fCPf/wDK1euRFVVFQRBwMsvvxz1PSEEd999NyorK5GVlYXly5ejoaFhzPPG+pxhgdH6IhAI4LbbbsPs2bORnZ2NqqoqXHPNNWhraxv1nPHcY+lmrDHxne98Z4hMl1xyyZjnzbQxAWDYZ4YgCPjVr3414jmNOCbigRt2KeK5557D2rVrsW7dOuzevRtz587FihUr0NXVNWz7999/H6tXr8b3vvc97NmzB1dccQWuuOIK7Nu3L8VXri/vvPMObrrpJuzYsQObN29GIBDAxRdfjMHBwVGPy8vLQ3t7u/bX1NSUoitOHrNmzYqS6b333huxbaaOBwD48MMPo/ph8+bNAICrrrpqxGMyYTwMDg5i7ty5WL9+/bDf//KXv8T//M//4NFHH8UHH3yA7OxsrFixAl6vd8RzxvqcYYXR+sLtdmP37t34+c9/jt27d+PFF1/EoUOHcPnll4953ljuMRYYa0wAwCWXXBIl07PPPjvqOTNxTACI6oP29nY8/vjjEAQBX/nKV0Y9r9HGRFwQTkpYtGgRuemmm7T/y7JMqqqqyAMPPDBs+6997Wukvr4+6rPFixeTG264IanXmWq6uroIAPLOO++M2ObPf/4zyc/PT91FpYB169aRuXPnjrv9qTIeCCHkxz/+MamrqyOKogz7fSaOBwDkpZde0v6vKAqpqKggv/rVr7TP+vv7idVqJc8+++yI54n1OcMiJ/fFcOzcuZMAIE1NTSO2ifUeY43h+uHaa68lq1atiuk8p8qYWLVqFbngggtGbWP0MTFeuMcuBfj9fuzatQvLly/XPhNFEcuXL8f27duHPWb79u1R7QFgxYoVI7Y3KgMDAwCAoqKiUdu5XC7U1tZiwoQJWLVqFT777LNUXF5SaWhoQFVVFaZMmYJvfvObaG5uHrHtqTIe/H4/nnnmGXz3u98ddV/mTBwPkTQ2NqKjoyNK5/n5+Vi8ePGIOo/nOWNUBgYGIAgCCgoKRm0Xyz1mFLZt24aysjJMnz4dN954I3p7e0dse6qMic7OTrzxxhv43ve+N2bbTBwTJ8MNuxTQ09MDWZZRXl4e9Xl5eTk6OjqGPaajoyOm9kZEURTccsst+MIXvoAzzjhjxHbTp0/H448/jldeeQXPPPMMFEXB2WefjZaWlhRerb4sXrwYTzzxBDZu3IhHHnkEjY2NOPfcc+F0OodtfyqMBwB4+eWX0d/fj+985zsjtsnE8XAyVK+x6Dye54wR8Xq9uO2227B69epR9wON9R4zApdccgmeeuopbN26Fb/4xS/wzjvv4NJLL4Usy8O2P1XGxJNPPonc3Fx8+ctfHrVdJo6J4ZDSfQGcU5ebbroJ+/btGzPHYenSpVi6uAQD1wAACR9JREFUdKn2/7PPPhszZ87EH/7wB/z7v/97si8zKVx66aXav+fMmYPFixejtrYWzz///LjeOjOVP/3pT7j00ktRVVU1YptMHA+c8REIBPC1r30NhBA88sgjo7bNxHvs61//uvbv2bNnY86cOairq8O2bdtw4YUXpvHK0svjjz+Ob37zm2MuosrEMTEc3GOXAkpKSmAymdDZ2Rn1eWdnJyoqKoY9pqKiIqb2RmPNmjV4/fXX8fe//x01NTUxHWs2mzF//nwcPnw4SVeXegoKCnDaaaeNKFOmjwcAaGpqwpYtW/Av//IvMR2XieOB6jUWncfznDES1KhramrC5s2bR/XWDcdY95gRmTJlCkpKSkaUKdPHBAC8++67OHToUMzPDSAzxwTADbuUYLFYsGDBAmzdulX7TFEUbN26NcrzEMnSpUuj2gPA5s2bR2xvFAghWLNmDV566SW8/fbbmDx5csznkGUZn376KSorK5NwhenB5XLhyJEjI8qUqeMhkj//+c8oKytDfX19TMdl4niYPHkyKioqonTucDjwwQcfjKjzeJ4zRoEadQ0NDdiyZQuKi4tjPsdY95gRaWlpQW9v74gyZfKYoPzpT3/CggULMHfu3JiPzcQxAYCvik0Vf/3rX4nVaiVPPPEE2b9/P/n+979PCgoKSEdHByGEkG9/+9vk9ttv19r/85//JJIkkQcffJAcOHCArFu3jpjNZvLpp5+mSwRduPHGG0l+fj7Ztm0baW9v1/7cbrfW5uS+uPfee8lbb71Fjhw5Qnbt2kW+/vWvE5vNRj777LN0iKALP/nJT8i2bdtIY2Mj+ec//0mWL19OSkpKSFdXFyHk1BkPFFmWycSJE8ltt9025LtMHQ9Op5Ps2bOH7NmzhwAgDz30ENmzZ4+20vO//uu/SEFBAXnllVfIJ598QlatWkUmT55MPB6Pdo4LLriA/Pa3v9X+P9ZzhlVG6wu/308uv/xyUlNTQ/bu3Rv13PD5fNo5Tu6Lse4xFhmtH5xOJ/npT39Ktm/fThobG8mWLVvImWeeSaZNm0a8Xq92jlNhTFAGBgaI3W4njzzyyLDnyIQxEQ/csEshv/3tb8nEiROJxWIhixYtIjt27NC+W7ZsGbn22muj2j///PPktNNOIxaLhcyaNYu88cYbKb5i/QEw7N+f//xnrc3JfXHLLbdo/VZeXk4uu+wysnv37tRfvI5cffXVpLKyklgsFlJdXU2uvvpqcvjwYe37U2U8UN566y0CgBw6dGjId5k6Hv7+978Pey9QWRVFIT//+c9JeXk5sVqt5MILLxzSP7W1tWTdunVRn432nGGV0fqisbFxxOfG3//+d+0cJ/fFWPcYi4zWD263m1x88cWktLSUmM1mUltbS66//vohBtqpMCYof/jDH0hWVhbp7+8f9hyZMCbiQSCEkKS6BDkcDofD4XA4KYHn2HE4HA6Hw+FkCNyw43A4HA6Hw8kQuGHH4XA4HA6HkyFww47D4XA4HA4nQ+CGHYfD4XA4HE6GwA07DofD4XA4nAyBG3YcDofD4XA4GQI37DgcDofD4XAyBG7YcTgcDofD4WQI3LDjcDgcDofDyRC4YcfhcDgZxNy5cyEIwpC/jo6OdF8ah8NJAdyw43A4HJ1Zv349Jk2aBJvNhsWLF2Pnzp1JOWY4Nm/ejPb2dmzduhVTp05Fbm4u7r77blRUVMR1Pg6HYyy4YcfhcDg68txzz2Ht2rVYt24ddu/ejblz52LFihXo6urS9ZiRKCsrw6uvvorLLrsMixYtQkNDA+69995EROJwOAZCIISQdF8Eh8PhpIKdO3fi1ltvxQcffIDa2lo888wz2L17N15//XW8+uqruvzG4sWLsXDhQvzud78DACiKggkTJuDmm2/G7bffrtsxI/Hwww/j9ttvxx//+Edcc801iQnD4XAMB/fYcTicU4IdO3Zg2bJlqK+vxyeffIKZM2fivvvuwy9+8YshHq37778fOTk5o/41NzcP+Q2/349du3Zh+fLl2meiKGL58uXYvn37sNcVzzEjsX37dvzsZz/Dc889x406DucURUr3BXA4HE4qWLt2La666ir87Gc/AwCsXr0aq1evxqpVqzB//vyotj/4wQ/wta99bdTzVVVVDfmsp6cHsiyjvLw86vPy8nIcPHhw2PPEc8xI/OhHP8KNN96IVatWxXQch8PJHLhhx+FwMp6WlhZs374dDz74oPaZJEkghAybf1ZUVISioqJUXmLCNDQ04KOPPsKLL76Y7kvhcDhphIdiORxOxnPgwAEAwJlnnql9dujQISxatAizZ88e0j7eUGxJSQlMJhM6OzujPu/s7BxxVWo8xwzH9u3bUVJSggkTJoz7GA6Hk3lww47D4WQ8AwMDMJlMEAQBAHDixAk8+OCDsNvtw7b/wQ9+gL179476N1wo1mKxYMGCBdi6dav2maIo2Lp1K5YuXTrsb8VzzHAEAgH4fD54vd5xH8PhcDIPHorlcDgZz7x58yDLMn75y1/iqquuwo9//GNMmjQJ+/fvR1NTE2pra6PaJxKKXbt2La699lqcddZZWLRoER5++GEMDg7iuuuu09r87ne/w0svvaQZc+M5ZizOP/98eL1eXHfddfjJT36C6dOnIzc3Ny4ZOByOceEeOw6Hk/FMnToV9913H37zm99g/vz5qKqqwqZNm1BdXY1LLrlE19+6+uqr8eCDD+Luu+/GvHnzsHfvXmzcuDFqcURPTw+OHDkS0zFPPPGE5nEcjrq6Orzyyis4evQozj33XOTn5+Pf/u3fdJWNw+GwD69jx+FwOAZg3bp1eOedd7Bt27ZxtV+/fj3+8z//E21tbcm9MA6HwxQ8FMvhcDgGYMOGDVoB47Ho7+/HRx99hEWLFiX5qjgcDmtww47D4XAMQCx7x/76179Ga2srnnjiieRdEIfDYRIeiuVwOBwOh8PJEPjiCQ6Hw+FwOJwMgRt2HA6Hw+FwOBkCN+w4HA6Hw+FwMgRu2HE4HA6Hw+FkCNyw43A4HA6Hw8kQuGHH4XA4HA6HkyFww47D4XA4HA4nQ+CGHYfD4XA4HE6GwA07DofD4XA4nAyBG3YcDofD4XA4GQI37DgcDofD4XAyhP8PCJo0CT9mg/IAAAAASUVORK5CYII=", + "text/plain": [ + "
" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "image/png": "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", + "text/plain": [ + "
" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], "source": [ "# ---------- Precise QH ----------\n", "# Computing at higher resolution than necessary.\n", "eq0 = get(\"precise_QH\")\n", - "rho = np.linspace(0.01, 1, 10)\n", + "rho = np.linspace(0.01, 1, 5)\n", "grid = LinearGrid(rho=rho, M=eq0.M_grid, N=eq0.N_grid, NFP=eq0.NFP, sym=False)\n", - "X, Y = 32, 64\n", - "theta = Bounce2D.compute_theta(eq0, X, Y, rho=rho)\n", "\n", "# ---------- How to pick resolution? ----------\n", + "# Plotting for 3 toroidal transits to see by eye\n", + "# Seems like these resolutions are sufficient.\n", + "X, Y = 16, 32\n", + "theta = Bounce2D.compute_theta(eq0, X, Y, rho=rho)\n", "num_transit = 3\n", - "# Running below at few different settings, we observe Y_B = 100 sufficient,\n", - "# and see about 3 wells per toroidal transit.\n", + "Y_B = 32\n", + "plot_wells(\n", + " eq0,\n", + " grid,\n", + " theta,\n", + " Y_B=Y_B,\n", + " num_transit=num_transit,\n", + " num_well=10 * num_transit,\n", + ");" + ] + }, + { + "cell_type": "code", + "execution_count": 4, + "id": "92403ae4-d958-49ad-9e2c-911822473409", + "metadata": {}, + "outputs": [ + { + "data": { + "image/png": "iVBORw0KGgoAAAANSUhEUgAAAnYAAAHWCAYAAAD6oMSKAAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjkuMiwgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy8hTgPZAAAACXBIWXMAAA9hAAAPYQGoP6dpAADwpklEQVR4nOy9d3wc5Z34/57Zqt4ly7IsVzA2YLCJMb3EYDAhjaMkdwdH2peAyRHuQo6EC4T8Ei6EcEkIEHI5Ssz3LvnmKCGHsTEmQAg2xdg0F9wtq3dpJW2d+f0x+8yu7JW0u9qdmV3P+/XaF3j17MxTZub5zKdKqqqq2NjY2NjY2NjY5Dyy2R2wsbGxsbGxsbHJDLZgZ2NjY2NjY2OTJ9iCnY2NjY2NjY1NnmALdjY2NjY2NjY2eYIt2NnY2NjY2NjY5Am2YGdjY2NjY2NjkyfYgp2NjY2NjY2NTZ5gC3Y2NjY2NjY2NnmCLdjZ2NjY2NjY2OQJtmBnY2NjY2NjY5Mn2IKdjY2NjY2NjU2eYAt2NjY2R/Hkk08iSVLCzyWXXJLwN48//jiSJHHgwAFjO5siudLPu+66C0mS6O7uTvo39957LwsWLEBRFP27WbNmcdddd02pL4mO8atf/YqZM2cSCASmdGyjyNY8QOJ5h8nvo1ybQ7/fj8vlory8fMpzaZM9bMHOJicRm/M777yT8m/feOMN7rrrLvr7+zPfMRPIxnhOPvlk1qxZw5o1a3j88cdZunQpwISCnY25DA4O8uMf/5hvf/vbyPLkj/b169cfJWyUlpaybNkynn322Ul//w//8A8Eg0EeeeSRDPR+fLJ5v051DmDieZ/sPjJqDgF8Ph933nknl1xyCZWVlUiSxOOPPz5ue0VRqKmp4d5779W/C4fD/OY3v6GpqYm7776bzs7OrPfbJnVswc7mmOONN97g+9//fl4Jdpkez8knn8zf/d3fcf755/PII4+wZcsWzj77bLZs2cItt9yS8Dd///d/z+joKE1NTRnrRzbIlX6myqOPPko4HOYLX/hCUu3fe+89AH7xi1+wZs0annjiCb797W9z8OBBrrzySnbu3Dnh771eL9dddx33338/qqpOuf/jkc37dapzABPP+2T3kVFzCNDd3c3dd9/Njh07WLx48aTt33rrLbq7u7nsssv074qLi7nuuuu47bbbUFWV999/P5tdtkkTp9kdsLHJF4aHhykqKjK7Gxnjww8/5OKLL6anp4ef//zn3HzzzUiSNG57h8OBw+EwsIfpkel+WmXdH3vsMT796U/j9XqTav/+++9TXl7OzTffPOb76upqbrjhBrZt28aCBQsmPMZVV13Fvffey5///GcuvPDCtPtuFpmYg8nmfbL7yKg5rK+vp62tjWnTpvHOO+/wiU98YsL2a9eupampiUWLFh31N/Hdjh07WLFiRVb6a5M+tsbOJi8Q/kh79uzhH/7hHygvL6esrIzrr7+ekZGRMe2+9a1vATB79mzd/CL8rVpaWvjSl75EXV0dHo+HRYsW8eijj457vu3bt/PFL36RiooKzj77bACGhoa45ZZbmDVrFh6Ph9raWi666CLeffdd/ffJnqelpYUvf/nLTJ8+HY/Hw+zZs/n6179OMBicdDzJ9GM8Dhw4wIoVKwgEArz66qt84xvfmFCog8S+a8muy0QkM1fiPDt37uSqq66itLSUqqoq/vEf/xG/3z9pP1955RVOO+00vF4vc+fO5ZFHHtGPmeg8idb94MGD3HjjjRx//PEUFBRQVVXFlVdeeZQvXyp9Bejv75907vbv38/777+f0ib73nvvsWTJkqO+b29vB+CEE06Y9BhLly6lsrKSP/7xj5O2Ted6nOx+nSpTnYPJ5j2Z+yiVOZwKHo+HadOmJd3++eefH6Oti0dcp9u3b89I32wyi62xs8krrrrqKmbPns0999zDu+++y29+8xtqa2v58Y9/DMDnP/95Pv74Y/77v/+bf//3f6e6uhqAmpoaOjo6WL58OZIksXr1ampqanjhhRf48pe/zODgYEIT5JVXXsn8+fP50Y9+pJtSbrjhBv7nf/6H1atXs3DhQnp6enj99dfZsWMHS5YsSfo8ra2tLFu2jP7+fr72ta+xYMECWlpa+J//+R9GRkZwu90TjudrX/vahP0YD0VR+OIXv8jw8DCvvfYap556atbXZTxSXZOrrrqKWbNmcc8997B582Z+8Ytf0NfXx29/+9txz7F161YuueQS6uvr+f73v08kEuHuu++mpqZm3N8kWve3336bN954g2uuuYYZM2Zw4MABHn74Yc4//3y2b99OYWFhWn1NZu7eeOMNgAnXNZ5gMMiuXbs477zz9OCMvr4+1q9fz49//GNWr16dlLlOnPOvf/3rpO0muy8SMdH1PVUyMQcTzXsq99FkcxgKhRgYGEhmWFRWViblYzkR7e3tbN26lbvvvjvh3//pn/4J0DR2NhZEtbHJQR577DEVUN9++21VVVX1zjvvVAH1S1/60ph2n/vc59Sqqqox3/3kJz9RAXX//v1jvv/yl7+s1tfXq93d3WO+v+aaa9SysjJ1ZGRE/06c7wtf+MJRfSsrK1Nvuummcfue7HmuvfZaVZZlfYzxKIoy6Xgm68d4PPHEEyqgPvrooyn9TqxJfD9SWZdEJDtX4jyf/vSnx7S78cYbVUB97733xu3n5ZdfrhYWFqotLS16m927d6tOp1M98hE50brHXx+CTZs2qYD629/+9qhjTNbXVObujjvuUAF1aGjoqD40NTWpd95555jvtm7dqgJHfVwul/qzn/0sqWMIvva1r6kFBQUJ/xZPutfjeNd3qhw5hlTnINExJpr3VO6jyebwz3/+c8K+JvokM09vv/22CqiPPfZYwr//53/+p1pQUJDwml6zZo0KqLW1tWptbe2k57IxHtsUa5NX3HDDDWP+fc4559DT08Pg4OCEv1NVlaeeeorLL78cVVXp7u7WPytXrmRgYCChyejI8wGUl5fz5ptv0tramvZ5FEXh2Wef5fLLL+e000476jiTmUUn68dE/PKXv+Skk07i+uuvT+l3E5HOuqSzJjfddNOYfwvfqbVr1yY8RyQS4aWXXuKzn/0s06dP17+fN28el156adLjASgoKND/PxQK0dPTw7x58ygvL0947STb12TmrqenB6fTSXFx8bh9jkc4vT/xxBNs2LCBDRs28OSTT3LKKafw7W9/m02bNiV1HICKigpGR0cnNa2nez1mi0zMwUTznsp9NNkcLl68WO/jZJ9UzK3jsXbtWi644IIx1zRokbXf/va3ufTSS7n22mvp7Oykt7d3yuezySy2KdYmr5g5c+aYf1dUVACaiaW0tHTc33V1ddHf38+vf/1rfv3rXydskyi0f/bs2Ud9d++993LdddfR2NjI0qVLWbVqFddeey1z5sxJ+jxdXV0MDg5y4oknjtvnyZioH+PR3d3NO++8wz333JP2eRORzrqksybz588f8++5c+ciy/K4PlmdnZ2Mjo4yb968o/6W6DtBonUfHR3lnnvu4bHHHqOlpWVMlGMiM1qyfU33mp6I9957D6fTyRe+8AVcLpf+/fnnn8+MGTP45S9/yRlnnJHUscQ4J3vZSOd6zCaZnIMjSfU+mmwOKyoqDAtSCIVCbNiwIWHff/SjH9Hd3c3Pf/5zXn/9dUDzsxN+pjbWwBbsbPKK8aId1UlSCYjEon/3d3/Hddddl7DNySeffNR3R77RguYTdc455/DMM8/w4osv8pOf/IQf//jHPP3007qfzWTnmay/yTBRP8bTRu3YsQNVVTPiVxdPOuuS7prEk4xmMx0SrfvNN9/MY489xi233MIZZ5xBWVkZkiRxzTXXHJW4NhHj9TWZuauqqiIcDjM0NERJScmk53r//feZO3fuGIEGoKGhgcLCQg4fPjzpMQR9fX0UFhYmnJN40rkes0km5mC8eU/1PppsDoPBYNKasZqamilFfb/++usMDg6yatWqMd/v3buX+++/n3/6p39i/vz59PX1AdpYbcHOWtiCnc0xR6INtKamhpKSEiKRSEbejOvr67nxxhu58cYb6ezsZMmSJfzwhz/k1VdfTeo8iqJQWlrKhx9+OOm5JhJexuvHeBvp8PDwpMc0inTWZPfu3WO0aXv27EFRFGbNmpWwfW1tLV6vlz179hz1t0TfTcT//M//cN111/HTn/5U/87v94+bfy3Vvk6ESMmxf//+SYVd0ISaM88886jvu7q6GBkZScmct3///qQiaCH16xGydy1mYg7Gm/dU76PJ5vCNN97gggsuSPpY6VxDgueff56FCxcedYxbb72Vmpoavvvd7wKxiGE7MtZ62D52NsccIudY/IbrcDi44ooreOqppxIKU11dXUkdOxKJHGV2q62tZfr06QQCgaTPI8syn/3sZ/nTn/6UsLpGvLYm0Xgm68d4iIf5008/PfFADSCdNXnwwQfH/PuBBx4AGFdwcDgcrFixgmeffXaM79eePXt44YUXUu7vkRrIBx54gEgkkrB9qn2dCGEyTKYSS3t7O52dnQkFCRFpe8UVVyR97nfffTehgBRPMtfjyMgIO3fuPKqEWqLre6L2yZCpORhv3lO9jyabQyN97NauXXtUmpP169fz3HPPcd999+nrUVJSQmNjox0Za0FsjZ3NMYco6/Pd736Xa665BpfLxeWXX86//du/8ec//5nTTz+dr371qyxcuJDe3l7effddXnrppaRMIUNDQ8yYMYO/+Zu/YfHixRQXF/PSSy/x9ttv65qcZM/zox/9iBdffJHzzjuP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", + "text/plain": [ + "
" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "image/png": "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o6urq9/9UlNTqamp0T8VFRWjNOKRY8aMGT1kevfdd/vcNl6vB4B///vfPc7D1q1bAbjqqqv63Cceroeuri5KS0vZuHFjr3//5S9/yf/7f/+Pxx57jPfff5+kpCSWLFmC2+3u85jRPmeMQn/nwuVysXv3bu6++252797NCy+8wMGDB7niiisGPG4095gRGOiaALj88st7yPTnP/+532PG4zUB9DgHNTU1PP7440iSxJe+9KV+j2u2a2JIqIJRYf78+eptt92m/zsQCKgFBQXq+vXre93+6quvVpcvX97juwULFqjf/va3R3Sco019fb0KqG+99Vaf2zzxxBNqWlra6A1qFFi3bp1aWlo66O1Pl+tBVVX1u9/9rlpSUqIqitLr3+PxegDUF198Uf+3oihqfn6++uCDD+rftba2qg6HQ/3zn//c53Gifc4YkZPPRW988MEHKqBWVFT0uU2095jR6O08rFq1Sr3yyiujOs7pck1ceeWV6iWXXNLvNma/JgaLsNiNAl6vl127drF48WL9O1mWWbx4MTt27Oh1nx07dvTYHmDJkiV9bm9W2traAMjMzOx3u87OTiZOnMj48eO58sor2bdv32gMb0QpLy+noKCAyZMnc91111FZWdnntqfL9eD1enn22Wf5+te/3m9f5ni8HiI5evQotbW1PeY8LS2NBQsW9DnnQ3nOmJW2tjYkSSI9Pb3f7aK5x8zC9u3byc3NZdq0adxyyy00NTX1ue3pck3U1dXxj3/8g2984xsDbhuP18TJCMVuFGhsbCQQCJCXl9fj+7y8PGpra3vdp7a2NqrtzYiiKNxxxx185jOf4eyzz+5zu2nTpvH444/z0ksv8eyzz6IoCueffz4nTpwYxdHGlgULFvDkk0+yZcsWHn30UY4ePcqFF15IR0dHr9ufDtcDwKZNm2htbeWGG27oc5t4vB5ORpvXaOZ8KM8ZM+J2u/nRj37Etdde228/0GjvMTNw+eWX8/TTT7Nt2zYeeOAB3nrrLZYuXUogEOh1+9PlmnjqqadISUnhi1/8Yr/bxeM10RvWsR6A4PTltttuY+/evQPGOJx33nmcd955+r/PP/98zjzzTH73u9/xP//zPyM9zBFh6dKl+v+fc845LFiwgIkTJ/LXv/51UG+d8cof//hHli5dSkFBQZ/bxOP1IBgcPp+Pq6++GlVVefTRR/vdNh7vsa985Sv6/8+cOZNzzjmHkpIStm/fzuc+97kxHNnY8vjjj3PdddcNmEQVj9dEbwiL3SiQnZ2NxWKhrq6ux/d1dXXk5+f3uk9+fn5U25uN1atX88orr/DPf/6ToqKiqPa12WzMnj2bQ4cOjdDoRp/09HTOOOOMPmWK9+sBoKKigjfeeINvfvObUe0Xj9eDNq/RzPlQnjNmQlPqKioq2Lp1a7/Wut4Y6B4zI5MnTyY7O7tPmeL9mgB45513OHjwYNTPDYjPawKEYjcq2O125syZw7Zt2/TvFEVh27ZtPSwPkZx33nk9tgfYunVrn9ubBVVVWb16NS+++CJvvvkmkyZNivoYgUCAjz/+mHHjxo3ACMeGzs5ODh8+3KdM8Xo9RPLEE0+Qm5vL8uXLo9ovHq+HSZMmkZ+f32PO29vbef/99/uc86E8Z8yCptSVl5fzxhtvkJWVFfUxBrrHzMiJEydoamrqU6Z4viY0/vjHPzJnzhxKS0uj3jcerwlAZMWOFn/5y19Uh8OhPvnkk+r+/fvVb33rW2p6erpaW1urqqqqfu1rX1PXrl2rb//ee++pVqtVfeihh9RPPvlEXbdunWqz2dSPP/54rESICbfccoualpambt++Xa2pqdE/LpdL3+bkc3Hvvfeqr732mnr48GF1165d6le+8hXV6XSq+/btGwsRYsL3v/99dfv27erRo0fV9957T128eLGanZ2t1tfXq6p6+lwPGoFAQJ0wYYL6ox/96JS/xev10NHRoZaVlallZWUqoD788MNqWVmZnun5i1/8Qk1PT1dfeukl9aOPPlKvvPJKddKkSWp3d7d+jEsuuUR95JFH9H8P9JwxKv2dC6/Xq15xxRVqUVGRumfPnh7PDY/Hox/j5HMx0D1mRPo7Dx0dHep///d/qzt27FCPHj2qvvHGG+q5556rTp06VXW73foxTodrQqOtrU1NTExUH3300V6PEQ/XxFAQit0o8sgjj6gTJkxQ7Xa7On/+fHXnzp363xYtWqSuWrWqx/Z//etf1TPOOEO12+3qjBkz1H/84x+jPOLYA/T6eeKJJ/RtTj4Xd9xxh37e8vLy1GXLlqm7d+8e/cHHkGuuuUYdN26carfb1cLCQvWaa65RDx06pP/9dLkeNF577TUVUA8ePHjK3+L1evjnP//Z672gyaooinr33XereXl5qsPhUD/3uc+dcn4mTpyorlu3rsd3/T1njEp/5+Lo0aN9Pjf++c9/6sc4+VwMdI8Zkf7Og8vlUi+77DI1JydHtdls6sSJE9WbbrrpFAXtdLgmNH73u9+pCQkJamtra6/HiIdrYihIqqqqI2oSFAgEAoFAIBCMCiLGTiAQCAQCgSBOEIqdQCAQCAQCQZwgFDuBQCAQCASCOEEodgKBQCAQCARxglDsBAKBQCAQCOIEodgJBAKBQCAQxAlCsRMIBAKBQCCIE4RiJxAIBAKBQBAnCMVOIBAIBAKBIE4Qip1AIBAIBAJBnCAUO4FAIIgjSktLkSTplE9tbe1YD00gEIwCQrETCASCGLNx40aKi4txOp0sWLCADz74YET26Y2tW7dSU1PDtm3bmDJlCikpKdxzzz3k5+cP6XgCgcBcCMVOIBAIYshzzz3HmjVrWLduHbt376a0tJQlS5ZQX18f0336Ijc3l5dffplly5Yxf/58ysvLuffee4cjkkAgMBGSqqrqWA9CIBAIRoMPPviAH/7wh7z//vtMnDiRZ599lt27d/PKK6/w8ssvx+Q3FixYwLx58/jNb34DgKIojB8/nttvv521a9fGbJ++2LBhA2vXruX3v/89119//fCEEQgEpkNY7AQCwWnBzp07WbRoEcuXL+ejjz7izDPP5L777uOBBx44xaJ1//33k5yc3O+nsrLylN/wer3s2rWLxYsX69/JsszixYvZsWNHr+Mayj59sWPHDn7wgx/w3HPPCaVOIDhNsY71AAQCgWA0WLNmDVdddRU/+MEPALj22mu59tprufLKK5k9e3aPbW+++Wauvvrqfo9XUFBwyneNjY0EAgHy8vJ6fJ+Xl8eBAwd6Pc5Q9umL73znO9xyyy1ceeWVUe0nEAjiB6HYCQSCuOfEiRPs2LGDhx56SP/OarWiqmqv8WeZmZlkZmaO5hCHTXl5OR9++CEvvPDCWA9FIBCMIcIVKxAI4p5PPvkEgHPPPVf/7uDBg8yfP5+ZM2eesv1QXbHZ2dlYLBbq6up6fF9XV9dnVupQ9umNHTt2kJ2dzfjx4we9j0AgiD+EYicQCOKetrY2LBYLkiQB0NzczEMPPURiYmKv2998883s2bOn309vrli73c6cOXPYtm2b/p2iKGzbto3zzjuv198a8mWNVAAAAelJREFUyj694fP58Hg8uN3uQe8jEAjiD+GKFQgEcc+sWbMIBAL88pe/5KqrruK73/0uxcXF7N+/n4qKCiZOnNhj++G4YtesWcOqVauYO3cu8+fPZ8OGDXR1dXHjjTfq2/zmN7/hxRdf1JW5wewzEBdddBFut5sbb7yR73//+0ybNo2UlJQhySAQCMyLsNgJBIK4Z8qUKdx33338+te/Zvbs2RQUFPD6669TWFjI5ZdfHtPfuuaaa3jooYe45557mDVrFnv27GHLli09kiMaGxs5fPhwVPs8+eSTusWxN0pKSnjppZc4cuQIF154IWlpafz4xz+OqWwCgcD4iDp2AoFAYALWrVvHW2+9xfbt2we1/caNG/n5z39OdXX1yA5MIBAYCuGKFQgEAhOwefNmvYDxQLS2tvLhhx8yf/78ER6VQCAwGkKxEwgEAhMQTe/Y//3f/6Wqqoonn3xy5AYkEAgMiXDFCgQCgUAgEMQJInlCIBAIBAKBIE4Qip1AIBAIBAJBnCAUO4FAIBAIBII4QSh2AoFAIBAIBHGCUOwEAoFAIBAI4gSh2AkEAoFAIBDECUKxEwgEAoFAIIgThGInEAgEAoFAECcIxU4gEAgEAoEgThCKnUAgEAgEAkGcIBQ7gUAgEAgEgjjh/wd8UE3xkTpcIwAAAABJRU5ErkJggg==", + "text/plain": [ + "
" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "image/png": "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Hh4eHh4eg8PVit24ceM4evRoj8+OHj1KOBymuroagC9/+ct85Stf4corr+Tss8/mM5/5DDfddBOrVq3q83dvu+02urq6tP8OHDhgqhwe1pHK5vjNK/vZuOO43UPx8PDw8PAwHFcrdosWLWLDhg09Plu/fj2LFi3S/h2Px5HlnmL6fD4URenzd0OhEOFwuMd/lUpbLMXfPfAXzvvO0zz3dqvdwzGd7zyxjVt/91c+/V8v8ewwkFcQS2VZtWYb//ant+hKZOwejiX85pX93PxoM+8cjdo9FMs40pXkged28pedw+PFRVVVfvz8Lq59+BW2Hxk+ITMHO+L876sHaI0k7R6KZaiqys7WKN2prN1DcTyOirGLxWLs3LlT+/eePXtobm5mxIgRTJkyhdtuu41Dhw7xi1/8AoDrrruO++67j1tuuYVrr72WZ555hkcffZQnnnhC+43ly5fzne98hylTpnDmmWeydetW7rnnHq699lrL5XMidz65ndf2dwJw6+/e4PkvX0RVwGfvoEwikszwPy8Xra8/em4XF502xsYRWcetv32DJ/7aAsC+tjgPXf0um0dkLlv2dXDr7/4KwBsHu1h/0/uQJMnmUZlLVzzDRx/4Cy1d+c3+wU/P47Kzxts8KnN5cVcbq9ZuB+BQR4InV7634ud5f1ucZT/8M9FkllF1Qdb883sZU19l97BM566n3ub+Z3cxvqGKJ774XkbUBu0ekmNxlMXu1VdfZe7cucydOxeAm2++mblz5/KNb3wDgJaWFvbv368dP336dJ544gnWr1/PnDlzuPvuu3nooYe0UicAP/zhD/nYxz7G9ddfz+mnn86XvvQl/t//+3/827/9m7XCOZBYKssfXz+s/ftoJFXRLsoXd7aRzimE/Pnb/pW97RyLpgb4lvt5+0hUU+oAnt52lG0tlW3d+O2WogK/szXGln0dNo7GGn76592aUgfwH2u3k1MquxD7Y1sPaf//7aNRXj/YZeNorOHOdduJJvNWq+OxND94eofNIzKftliKHz+/G4CWriS/fmmfzSNyNo5S7BYvXoyqqif9J7pJPPzwwzz33HMnfWfr1q2kUil27drFP/7jP/b4e319Pffeey/79u0jkUiwa9cu/v3f/51g0NP2n93eSjKjMH1ULVcvmgrkN/1K5aU9bQB8/F2TOWN8GFUtflbJ/P61gwB84Iyx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", + "text/plain": [ + "
" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "image/png": "iVBORw0KGgoAAAANSUhEUgAAAnYAAAHWCAYAAAD6oMSKAAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjkuMiwgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy8hTgPZAAAACXBIWXMAAA9hAAAPYQGoP6dpAAD090lEQVR4nOy9eZwcZZ34/67q6u6ZnnuSyX2REAwgRAiGoCDHgiFk4+ru4qLfXVjPrwthF1lXRf0u6H5Xviq6ugus66KC+tvDXQUPEiGA6CIJR5IBMQQScieTYyYz0/dZ9fuj+qmuSebonq6zp96vFy9NT3XX86mnqp7P8zklTdM0AgICAgICAgICfI/s9gACAgICAgICAgKsIVDsAgICAgICAgIahECxCwgICAgICAhoEALFLiAgICAgICCgQQgUu4CAgICAgICABiFQ7AICAgICAgICGoRAsQsICAgICAgIaBACxS4gICAgICAgoEEIFLuAgICAgICAgAYhUOwCAgICAgICAhqEQLELCAgICAgICGgQAsUuIGCK84Mf/ABJkkb979prrx31Ow8++CCSJLFv3z5nB1sjfhnnXXfdhSRJ9Pf3V/2dL3/5yyxbtgxVVY3PFi1axF133VXXWEb7jW9+85ssWLCAXC5X1287hV3XAUa/7jDxc+S3a5jNZgmHw3R2dtZ9LQOcJVDsAjyPWJxffPHFmr/77LPPctdddzE0NGT9wFzADnnOP/98vv/97/P973+fBx98kBUrVgCMq9gFuEs8HudLX/oSn/rUp5DliV/jjz322GnKRnt7OytXruSRRx6Z8Pt//ud/Tj6f51/+5V8sGP3Y2Pm81nsNYPzrPtFz5NQ1BEgmk9x5551ce+21dHd3I0kSDz744JjHq6pKT08PX/7yl43PisUiDzzwAAsXLuQLX/gCx48ft33cAdYQKHYBDc2zzz7L5z//+YZS7KyW5/zzz+dP//RPueKKK/iXf/kXtm7dyqWXXsrWrVu57bbbRv3On/3Zn5HJZFi4cKFl47ADv4yzVr7zne9QLBZ53/veV9XxL730EgD/+I//yPe//30eeughPvWpT7F//36uv/56du7cOe73m5qauOmmm/ja176Gpml1j38s7Hxe670GMP51n+g5cuoaAvT39/OFL3yBV199leXLl094/PPPP09/fz9r1641PmttbeWmm27i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", + "text/plain": [ + "
" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "image/png": "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9TBCHCCMsQsJCTHp6OigsbHxuM4J9cTQ0NCwn7dt28batWu57LLLvBnQBGhra+Ozn/0sX/3qVyvKwq2VH/zgB0Sj0RFr+p1IVHrdR3qO/HYNL7vsMm6//XavhxHiAKFiFxISAhgB/ffccw833HAD8Xjc6+E4xsKFC7nzzjv513/9V+666y6WL19OLBbjs5/9rNdDq4rPfe5zbN26teaWUpVw0003sXv37rq+LyplvOs+2nPkt2v42c9+dsK1+0L8TZg8ERISAsAPf/hDPvShD/H1r3/d66E4ytVXX82///u/c+DAAeLxOBdddBFf+tKXjisiHBIyEU6U5yjEv0i6bkN11JCQkJCQkJCQEM8JXbEhISEhISEhIXVCqNiFhISEhISEhNQJYYxdBWiaxv79+2lpafFF+6WQkJCQkJCQEwdd10mlUsyaNWvchKlQsauA/fv3M3fuXK+HERISEhISEnICs2fPHubMmTPmMaFiVwEtLS2AcUFbW1s9Hk1ISEhISEjIiUQymWTu3LmmPjIWoWJXAcL92traGip2ISEhISEhIZ5QSThYmDwREhISEhISElInhIpdSEhISEhISEidECp2ISEhISEhISF1QqjYhYSEhISEhITUCaFiFxISEhISEhJSJ4SKXUhISEhISEhInRAqdiEhISEhISEhdUKo2IWEhISEhISE1AmhYhcSEhISEhISUieEil1ISEhISEhISJ0QKnYhISEhISEhIXVCqNiFhISEhISEhNQJoWIXEhISEhISElInhIpdSEhIXaLrOkfTOXRd93ooIQ4xlC/y0Is72bw/6fVQQkJ8Q6jYhYSE1CVfeOwNlv6fZ/inJ7d6PZQQh7j3iS188b8388HvvcxApuD1cEJCfEGo2IWccORVjQee6+JH63ehaaE1px7ZeWSQH/9+NwDfe2EH/Zm8xyMKsRu1qPGzDXsBSGZVntly0OMRhTiBpul89amtfPzhV+gZGPJ6OIEgVOxOcAZz6gmn3HzruS6++tRb3PXYG/y0tDCE1Be/3XbY/H9dhxe7jng4mhAnePtgmsF80fz5d9vDOa5HHv9jDw88t51nthzi/z6+xevhBIJQsTuBefz1Hpb+n3Vcdt9vOJTMej0cV9A0nR//fpf58/+z/H9I/fD7nb3Dfv7j3gGPRhLiFK/v7R/285aelDcDCXGUX7623/z/p948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", + "text/plain": [ + "
" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ "plot_wells(\n", " eq0,\n", " grid,\n", " theta,\n", - " # Plotting for 3 toroidal transits to see by eye\n", - " # if Y_B is high enough that |B|(ζ) doesn't change as Y_B is varied.\n", - " Y_B=100,\n", + " Y_B=Y_B,\n", " num_transit=num_transit,\n", - " # Plot the field lines to obtain a tight upper bound on ``num_well``.\n", - " num_well=15 * num_transit,\n", + " # Here we see some wells are ignored if num_well is too low.\n", + " num_well=1 * num_transit,\n", ");" ] }, @@ -154,13 +323,13 @@ }, { "cell_type": "code", - "execution_count": 4, + "execution_count": 5, "id": "066b90da-9212-4834-bb81-0488d69a5c3d", "metadata": {}, "outputs": [ { "data": { - "image/png": "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", + "image/png": "iVBORw0KGgoAAAANSUhEUgAAAnYAAAHWCAYAAAD6oMSKAAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjkuMiwgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy8hTgPZAAAACXBIWXMAAA9hAAAPYQGoP6dpAABj+ElEQVR4nO3dfVyT9f4/8NfGYANkQ0Q2hqioGHiLgiDepOkK0yzKEm9K82faqehkVJZl2im/hzI9xyxPnOx0rJOm0klP3lEImpmEgph34E3iPeNGZEOUu+36/YGbTRFFgWsbr+fjsQd57X1t7+3SfHl9rs/1kQiCIICIiIiIHJ5U7AaIiIiIqGkw2BERERE5CQY7IiIiIifBYEdERETkJBjsiIiIiJwEgx0RERGRk2CwIyIiInISDHZEREREToLBjoiIiMhJMNgRETWzp59+Gp07dxa7DSJqBRjsiMjprFixAhKJxPpQKBTo3r074uPjUVhYKHZ7LUYQBPznP//BvffeC29vb3h4eKB3795YsGABLl++fEP98OHD0atXr3pf6+TJk5BIJFi0aFFzt01Ed0EmdgNERM3l3XffRVBQECorK7Fz5058+umn2Lx5Mw4ePAgPD48W62P58uUwm80t9n4AYDKZMGnSJKxduxZDhw7FO++8Aw8PD/z888+YP38+1q5di61bt8LPz69F+yKi5sVgR0RO68EHH0RERAQA4JlnnkG7du3wt7/9Df/73/8wceLEevepqKiAp6dnk/bh6urapK93OxYuXIi1a9fi1VdfxYcffmjdPnPmTIwfPx6xsbGYNm0aNm3a1OK9EVHz4VAsEbUaI0aMAADk5+cDqLv2rU2bNvj9998xevRoeHl5YfLkyQAAs9mMJUuWoGfPnlAoFFCr1Xj22Wdx8eLFG153y5YtGDZsGLy8vKBUKjFgwACsWrXK+nx919itXr0a4eHh1n169+6Njz76yKamrKwMs2bNQmBgIORyObp164YPPvjglmf/rly5gg8//BDdu3dHYmLiDc+PHTsWU6dOxebNm7F79+5bf3FE5DAY7Iio1fj9998BAO3atbNuq62tRUxMDPz8/LBo0SKMGzcOAPDss8/itddew+DBg/HRRx9h2rRpWLlyJWJiYlBTU2Pdf8WKFRgzZgxKS0sxZ84cvP/++wgLC0NKSspN+0hNTcXEiRPRtm1bfPDBB3j//fcxfPhw/PLLL9aay5cvY9iwYfj6668xZcoULF26FIMHD8acOXOQkJDQ4OfcuXMnLl68iEmTJkEmq39gZsqUKQCADRs22Gw3mUwoKSm54VFfoCUi+8OhWCJyWgaDASUlJaisrMQvv/yCd999F+7u7njooYesNVVVVXjiiSdszmzt3LkTn3/+OVauXIlJkyZZt993330YNWoUkpOTMWnSJBgMBvz5z39GZGQktm/fDoVCYa0VBOGmfW3atAlKpRI//PADXFxc6q3529/+ht9//x05OTkIDg4GUBc2tVotPvzwQ7zyyisIDAysd9/Dhw8DAPr27XvTHizPWWot8vLy0L59+5vuR0T2jcGOiJyWTqez+XWnTp2wcuVKBAQE2Gx/7rnnbH6dnJwMlUqF+++/HyUlJdbt4eHhaNOmDbZt24ZJkyYhNTUV5eXleOONN2xCHQBIJJKb9uXt7Y2KigqkpqZi1KhR9dYkJydj6NChaNu2rU0POp0O77//Pnbs2GEdNr5eeXk5AMDLy+umPVies9RadO7cGcuXL7+hvrCwEE8++eRNX4+I7AODHRE5rWXLlqF79+6QyWRQq9W45557IJXaXoEik8nQoUMHm23Hjh2DwWC46YzRoqIiANeGdm92i5Cbef7557F27Vo8+OCDCAgIwAMPPIDx48fbhLxjx45h//79Nz17ZumhPjcLbX9kee76z+jp6XlDIAbqbndCRPaPwY6InFZkZKR1VuzNyOXyG8Ke2WyGn58fVq5cWe8+dztU6efnh3379uGHH37Ali1bsGXLFvz73//GlClT8OWXX1p7uP/++zF79ux6X6N79+43ff0ePXoAAPbv34/Y2Nh6a/bv3w8A6NKly118EiKyNwx2RETX6dq1K7Zu3YrBgwfD3d29wToAOHjwILp169ao93Bzc8PYsWMxduxYmM1mPP/88/jnP/+Jt99+G926dUPXrl1x6dKles+e3crgwYPh7e2NVatW4a233qr3Or6vvvoKAPDEE080+vWJyH5xViwR0XXGjx8Pk8mE995774bnamtrUVZWBgB44IEH4OXlhcTERFRWVtrUNTR54sKFCza/lkql6NOnD4C6yRyWHjIyMvDDDz/csH9ZWRlqa2tv+voeHh6YPXs2jhw5grfeeuuG5zdt2oQVK1Zg7Nix6N27901fh4gcD8/YERFd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", "text/plain": [ "
" ] @@ -172,24 +341,22 @@ "source": [ "num_transit = 20\n", "num_well = 10 * num_transit\n", + "num_quad = 32\n", "num_pitch = 45\n", "data = eq0.compute(\n", " \"effective ripple\",\n", " grid=grid,\n", " theta=theta,\n", - " Y_B=100,\n", + " Y_B=Y_B,\n", " num_transit=num_transit,\n", - " # Optional; improves performance if num well < Y_B * num transit.\n", " num_well=num_well,\n", - " # number of quadrature points for each bounce integral\n", - " num_quad=32,\n", - " # number of pitch angles for integration over velocity coordinate\n", + " num_quad=num_quad,\n", " num_pitch=num_pitch,\n", + " # Can also specify ``batch_size`` which determines the\n", " # number of pitch angles to compute simultaneously.\n", " # Reduce this if insufficient memory. If insufficient memory is detected\n", " # early then the code will exit and return ε = 0 everywhere. If not detected\n", " # early then typical OOM errors will occur.\n", - " batch_size=None,\n", ")\n", "\n", "eps = grid.compress(data[\"effective ripple\"])\n", @@ -205,18 +372,20 @@ "id": "b6389a76-18ee-4fe8-89d5-a20ae80a2b24", "metadata": {}, "source": [ - "## Calculating effective ripple for Heliotron" + "## Calculating effective ripple for Heliotron\n", + "\n", + "Let us do a high resolution compuation so that we are certain the optimization is successful when we compare to the optimized result later." ] }, { "cell_type": "code", - "execution_count": 5, + "execution_count": 6, "id": "36934653-6515-4c86-854e-062adbee9dec", "metadata": {}, "outputs": [ { "data": { - "image/png": "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WqWlS5fqq6++6oQKg09brsnu3bv173//WzfddJNWrFihgoIC3XXXXaqrq9P8+fM7o+yA1pZrcuONN6q0tFTjx4+XYRiqr6/Xz372Mz3wwAOdUTKacbrf8U6nU8ePH1eXLl069Ptzxw74jt/85jd69dVX9dZbbyk8PNzscoJSZWWlbrnlFr344ouKi4szuxyc4Ha7FR8frxdeeEEZGRmaMmWKfv3rX2vJkiVmlxa0Vq5cqSeeeEJ/+tOftH79er355pt677339Oijj5pdGkzCHbtzFBcXJ5vNppKSEq/tJSUlSkxMbHafxMTEVrVH67TlmjR6+umn9Zvf/Eb/+te/lJ6e3pFlBpXWXpNdu3Zpz549uuaaazzb3G63JCkkJETbt29XWlpaxxYd4Nry5yQpKUmhoaGy2WyebUOHDlVxcbFqa2sVFhbWoTUHurZck4ceeki33HKLbr/9dknSyJEjVVVVpTvuuEO//vWvZbVy/6azne53fFRUVIffrZO4Y3fOwsLClJGRoby8PM82t9utvLw8jR07ttl9xo4d69Vekj766KPTtkfrtOWaSNKTTz6pRx99VLm5uRozZkxnlBo0WntNhgwZok2bNumrr77yvH74wx/q+9//vr766islJyd3ZvkBqS1/Ti688EIVFBR4QrYk7dixQ0lJSYS6dtCWa3Ls2LEm4a0xeBusGGoK03/Hd8oQjQD36quvGna73Xj55ZeNrVu3GnfccYfRvXt3o7i42DAMw7jllluMOXPmeNp//vnnRkhIiPH0008b33zzjTF//nymO2lnrb0mv/nNb4ywsDDjjTfeMIqKijyvyspKs04h4LT2mnwXo2LbX2uvyb59+4zIyEjj7rvvNrZv327885//NOLj443HHnvMrFMIOK29JvPnzzciIyONv//978bu3buNDz/80EhLSzNuuOEGs04h4FRWVhobNmwwNmzYYEgynnnmGWPDhg3G3r17DcMwjDlz5hi33HKLp33jdCe/+tWvjG+++cZYvHgx0534oz/+8Y9G3759jbCwMCMzM9P44osvPJ9dfPHFxvTp073a/+Mf/zAGDRpkhIWFGcOHDzfee++9Tq448LXmmvTr18+Q1OQ1f/78zi88gLX2z8mpCHYdo7XXZPXq1UZWVpZht9uN/v37G48//rhRX1/fyVUHttZck7q6OuPhhx820tLSjPDwcCM5Odm46667jCNHjnR+4QHq448/bvb3Q+N1mD59unHxxRc32WfUqFFGWFiY0b9/f+Oll17qtHothsG9WgAAgEDAM3YAAAABgmAHAAAQIAh2AAAAAYJgBwAAECAIdgAAAAGCYAcAABAgCHYAAAABgmAHAAAQIAh2AAAAAYJgBwAAECAIdgDQQVatWqXMzEyFh4crLi5Of/jDH8wuCUCAI9gBQAdYsWKFfvSjH+muu+7Sxo0bdeedd+qee+7Rnj17zC4NQACzGIZhmF0EAASS6upqDRw4UL/97W914403SpJcLpe6d++uxYsXa9q0aSZXCCBQcccOANrZv//9bx0/flxTpkzxbLPZbLJYLLLb7SZWBiDQEewAoJ19/PHHGjVqlGw2m2dbQUGBKisrdf7555tYGYBAR7ADgHa2YcMG1dbWem3705/+pIyMDA0aNMikqgAEgxCzCwCAQLNhwwYZhqG//OUvysrK0uuvv67nnntOq1evNrs0AAGOYAcA7Wjfvn0qLy/XP//5T82ZM0c7duxQenq6cnNz6YYF0OEYFQsA7eidd97RjBkzVFZWZnYpAIIQz9gBQDvasGGDRo4caXYZAIIUwQ4A2tGGDRuUnp5udhkAghRdsQAAAAGCO3YAAAABgmAHAAAQIAh2AAAAAYJgBwAAECAIdgAAAAGCYAcAABAgCHYAAAABgmAHAAAQIAh2AAAAAYJgBwAAECAIdgAAAAHi/wObeDOXUaVy4wAAAABJRU5ErkJggg==", + "image/png": "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ibLZbEpNTdXq1as933/00UdlsVi8PiNGjOjq2wAAACb7+kCl3IaUGG1XQrTd7HJMEWrmD1+1apWys7O1bNkyZWZmasmSJZo8ebIKCgoUFxfXrH1dXZ2++93vKi4uTu+884769++vvXv3KiYmxqvd6NGj9Y9//MPzdWioqbcJAAC6QTCvX9fE1MTz3HPPafbs2Zo1a5YkadmyZXr//ff12muvad68ec3av/baayovL9cXX3yhsLAwSVJKSkqzdqGhoUpISOjS2gEAgG/xTJwIwvXrmpj2Kraurk7r169XVlbWiWJCQpSVlaV169a1eM5f//pXTZgwQXPnzlV8fLzGjBmjp556Si6Xy6vdjh07lJSUpMGDB+uGG27Qvn37uvReAACAuQzDUH7TwsT02HW/0tJSuVwuxcfHex2Pj4/Xtm3bWjynsLBQH3/8sW644QatXr1aO3fu1B133KH6+notXLhQkpSZmakVK1Zo+PDhOnTokBYtWqSLL75YmzdvVmRkywsVOp1OOZ1Oz9cOh6OT7hIAAHSHbyuOqaTKqdAQi8b0jza7HNP41eAzt9utuLg4vfLKK7JarcrIyNC3336rX/ziF55gd9VVV3nap6WlKTMzUwMHDtQf//hH3XrrrS1ed/HixVq0aFG33AMAAOh8TePrRiVFyR5mNbcYE5n2KjY2NlZWq1XFxcVex4uLi1sdH5eYmKjU1FRZrSce2MiRI1VUVKS6uroWz4mJiVFqaqp27tzZai3z589XZWWl57N///4O3BEAADBLsK9f18S0YBceHq6MjAzl5uZ6jrndbuXm5mrChAktnnPRRRdp586dcrvdnmPbt29XYmKiwsPDWzynurpau3btUmJiYqu12Gw2RUVFeX0AAID/yN8f3DtONDF1Hbvs7Gy9+uqrWrlypbZu3ao5c+aopqbGM0t25syZmj9/vqf9nDlzVF5errvvvlvbt2/X+++/r6eeekpz5871tLnvvvv06aefas+ePfriiy/0/e9/X1arVT/+8Y+7/f4AAEDXcza49M23TQsTx5hbjMlMHWM3ffp0lZSUaMGCBSoqKlJ6erpycnI8Eyr27dunkJAT2TM5OVkffPCB7r33XqWlpal///66++679cADD3jaHDhwQD/+8Y9VVlamfv36adKkSfryyy/Vr1+/br8/AADQ9bYcdKjO5VafnuE6p0+E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mJgYo6ioyDAMw7jpppuMefPmedr/85//NEJDQ41f/vKXxtatW42FCxey3Ekna+8zefrpp43w8HDjnXfeMQ4dOuT5VFVVmXULAae9z+RUzIrtfO19Jvv27TMiIyONO++80ygoKDD+9re/GXFxccYTTzxh1i0EnPY+k4ULFxqRkZHGH/7wB6OwsND48MMPjSFDhhg/+tGPzLqFgFNVVWXk5+cb+fn5hiTjueeeM/Lz8429e/cahmEY8+bNM2666SZP+6blTn7+858bW7duNZYuXcpyJ/7o+eefN8455xwjPDzcGD9+vPHll196vnfppZcaN998s1f7P/7xj0ZqaqoRHh5ujB492nj//fe7ueLA155nMnDgQENSs8/ChQu7v/AA1t4/Jycj2HWN9j6TL774wsjMzDRsNpsxePBg48knnzQaGhq6uerA1p5nUl9fbzz66KPGkCFDDLvdbiQnJxt33HGHceTIke4vPEB98sknLf790PQcbr75ZuPSSy9tdk56eroRHh5uDB482Hj99de7rV6LYdBXCwAAEAgYYwcAABAgCHYAAAABgmAHAAAQIAh2AAAAAYJgBwAAECAIdgAAAAGCYAcAABAgCHYAAAABgmAHAAAQIAh2AAAAAYJgBwBdZO3atRo/frzsdrtiY2P161//2uySAAQ4gh0AdIHVq1fr+9//vu644w59/fXX+slPfqJ7771Xe/bsMbs0AAHMYhiGYXYRABBIamtrNWzYMD3zzDO6/vrrJUkul0sxMTFaunSpZs6caXKFAAIVPXYA0Mk+/vhjHTt2TNOnT/ccs1qtslgsstlsJlYGINAR7ACgk33yySdKT0+X1Wr1HNu5c6eqqqo0btw4EysDEOgIdgDQyfLz81VXV+d17MUXX1RGRoZSU1NNqgpAMAg1uwAACDT5+fkyDENvvPGGMjMz9fbbb+ull17SF198YXZpAAIcwQ4AOtG+fftUXl6uv/3tb5o3b562b9+utLQ05eTk8BoWQJdjViwAdKK//vWvmjVrlsrKyswuBUAQYowdAHSi/Px8jR071uwyAAQpgh0AdKL8/HylpaWZXQaAIMWrWAAAgABBjx0AAECAINgBAAAECIIdAABAgCDYAQAABAiCHQAAQIAg2AEAAAQIgh0AAECAINgBAAAECIIdAABAgCDYAQAABAiCHQAAQID4//Mn7u2TWe4QAAAAAElFTkSuQmCC", "text/plain": [ "
" ] @@ -227,8 +396,11 @@ ], "source": [ "eq0 = get(\"HELIOTRON\")\n", + "rho = np.linspace(0.01, 1, 10)\n", "grid = LinearGrid(rho=rho, M=eq0.M_grid, N=eq0.N_grid, NFP=eq0.NFP, sym=False)\n", - "Y_B = 150\n", + "X = 32\n", + "Y = 64\n", + "Y_B = 128\n", "num_transit = 20\n", "num_well = 30 * num_transit\n", "num_quad = 64\n", @@ -260,7 +432,7 @@ }, { "cell_type": "code", - "execution_count": 6, + "execution_count": 7, "id": "5e65af04-7b46-4f30-b265-6467254eb2cb", "metadata": {}, "outputs": [ @@ -274,67 +446,67 @@ "---------------------------------------\n", "Building objective: Effective ripple\n", "Precomputing transforms\n", - "Timer: Precomputing transforms = 928 ms\n", + "Timer: Precomputing transforms = 1.04 sec\n", "Building objective: aspect ratio\n", "Precomputing transforms\n", - "Timer: Precomputing transforms = 67.8 ms\n", + "Timer: Precomputing transforms = 127 ms\n", "Building objective: generic\n", - "Timer: Objective build = 2.29 sec\n", + "Timer: Objective build = 2.77 sec\n", "Building objective: force\n", "Precomputing transforms\n", - "Timer: Precomputing transforms = 579 ms\n", - "Timer: Objective build = 1.06 sec\n", - "Timer: Proximal projection build = 9.95 sec\n", + "Timer: Precomputing transforms = 537 ms\n", + "Timer: Objective build = 1.07 sec\n", + "Timer: Proximal projection build = 11.1 sec\n", "Building objective: lcfs R\n", "Building objective: lcfs Z\n", "Building objective: fixed pressure\n", "Building objective: fixed iota\n", "Building objective: fixed Psi\n", - "Timer: Objective build = 544 ms\n", - "Timer: Linear constraint projection build = 2.67 sec\n", + "Timer: Objective build = 618 ms\n", + "Timer: Linear constraint projection build = 2.75 sec\n", "Number of parameters: 24\n", "Number of objectives: 253\n", - "Timer: Initializing the optimization = 13.2 sec\n", + "Timer: Initializing the optimization = 14.6 sec\n", "\n", "Starting optimization\n", "Using method: proximal-lsq-exact\n", " Iteration Total nfev Cost Cost reduction Step norm Optimality \n", - " 0 1 9.463e-01 2.703e+01 \n", - " 1 2 8.425e-01 1.038e-01 4.308e-03 2.537e+01 \n", - " 2 3 6.922e-01 1.503e-01 7.640e-03 2.143e+01 \n", - " 3 4 5.504e-01 1.417e-01 1.584e-02 2.344e+01 \n", - " 4 5 4.169e-01 1.335e-01 1.428e-02 1.237e+01 \n", - " 5 6 2.867e-01 1.303e-01 1.304e-02 1.035e+01 \n", + " 0 1 7.884e-01 1.215e+00 \n", + " 1 2 7.278e-01 6.069e-02 4.309e-03 1.097e+00 \n", + " 2 3 6.565e-01 7.125e-02 7.446e-03 9.975e-01 \n", + " 3 4 5.382e-01 1.183e-01 7.610e-03 7.876e-01 \n", + " 4 5 4.509e-01 8.734e-02 1.415e-02 8.481e-01 \n", + " 5 6 3.607e-01 9.017e-02 1.965e-02 5.717e-01 \n", "Warning: Maximum number of iterations has been exceeded.\n", - " Current function value: 2.867e-01\n", - " Total delta_x: 4.960e-02\n", + " Current function value: 3.607e-01\n", + " Total delta_x: 4.441e-02\n", " Iterations: 5\n", " Function evaluations: 6\n", " Jacobian evaluations: 6\n", - "Timer: Solution time = 16.3 min\n", - "Timer: Avg time per step = 2.72 min\n", + "Timer: Solution time = 15.7 min\n", + "Timer: Avg time per step = 2.62 min\n", "==============================================================================================================\n", " Start --> End\n", - "Total (sum of squares): 9.463e-01 --> 2.867e-01, \n", - "Maximum absolute Effective ripple ε: 6.869e-01 --> 4.418e-01 ~\n", - "Minimum absolute Effective ripple ε: 5.379e-01 --> 1.801e-01 ~\n", - "Average absolute Effective ripple ε: 6.126e-01 --> 3.249e-01 ~\n", - "Maximum absolute Effective ripple ε: 6.869e-01 --> 4.418e-01 (normalized)\n", - "Minimum absolute Effective ripple ε: 5.379e-01 --> 1.801e-01 (normalized)\n", - "Average absolute Effective ripple ε: 6.126e-01 --> 3.249e-01 (normalized)\n", + "Total (sum of squares): 7.884e-01 --> 3.607e-01, \n", + "Maximum absolute Effective ripple ε: 6.834e-01 --> 5.172e-01 ~\n", + "Minimum absolute Effective ripple ε: 4.986e-01 --> 2.126e-01 ~\n", + "Average absolute Effective ripple ε: 5.578e-01 --> 3.643e-01 ~\n", + "Maximum absolute Effective ripple ε: 6.834e-01 --> 5.172e-01 (normalized)\n", + "Minimum absolute Effective ripple ε: 4.986e-01 --> 2.126e-01 (normalized)\n", + "Average absolute Effective ripple ε: 5.578e-01 --> 3.643e-01 (normalized)\n", "Aspect ratio: 1.048e+01 --> 1.064e+01 (dimensionless)\n", - "Maximum Generic objective value: -6.864e-01 --> -6.591e-01 (m^{-1})\n", - "Minimum Generic objective value: -5.858e+00 --> -5.808e+00 (m^{-1})\n", - "Average Generic objective value: -1.566e+00 --> -1.584e+00 (m^{-1})\n", - "Maximum Generic objective value: -6.864e-01 --> -6.591e-01 (normalized)\n", - "Minimum Generic objective value: -5.858e+00 --> -5.808e+00 (normalized)\n", - "Average Generic objective value: -1.566e+00 --> -1.584e+00 (normalized)\n", - "Maximum absolute Force error: 5.586e+03 --> 1.012e+04 (N)\n", - "Minimum absolute Force error: 9.586e-03 --> 4.612e-02 (N)\n", - "Average absolute Force error: 9.992e+01 --> 7.996e+01 (N)\n", - "Maximum absolute Force error: 4.492e-04 --> 8.136e-04 (normalized)\n", - "Minimum absolute Force error: 7.710e-10 --> 3.709e-09 (normalized)\n", - "Average absolute Force error: 8.036e-06 --> 6.431e-06 (normalized)\n", + "Maximum Generic objective value: -6.864e-01 --> -6.645e-01 (m^{-1})\n", + "Minimum Generic objective value: -5.858e+00 --> -5.919e+00 (m^{-1})\n", + "Average Generic objective value: -1.566e+00 --> -1.581e+00 (m^{-1})\n", + "Maximum Generic objective value: -6.864e-01 --> -6.645e-01 (normalized)\n", + "Minimum Generic objective value: -5.858e+00 --> -5.919e+00 (normalized)\n", + "Average Generic objective value: -1.566e+00 --> -1.581e+00 (normalized)\n", + "Maximum absolute Force error: 5.705e+03 --> 1.190e+04 (N)\n", + "Minimum absolute Force error: 2.188e-02 --> 5.924e-04 (N)\n", + "Average absolute Force error: 7.113e+01 --> 8.510e+01 (N)\n", + "Maximum absolute Force error: 4.588e-04 --> 9.574e-04 (normalized)\n", + "Minimum absolute Force error: 1.760e-09 --> 4.765e-11 (normalized)\n", + "Average absolute Force error: 5.720e-06 --> 6.844e-06 (normalized)\n", "R boundary error: 0.000e+00 --> 0.000e+00 (m)\n", "Z boundary error: 0.000e+00 --> 0.000e+00 (m)\n", "Fixed pressure profile error: 0.000e+00 --> 0.000e+00 (Pa)\n", @@ -382,12 +554,9 @@ " Y=32,\n", " Y_B=128,\n", " num_transit=10,\n", - " num_well=30 * 10,\n", + " num_well=25 * 10,\n", " num_quad=32,\n", " num_pitch=45,\n", - " # Uncomment to compute at only batch_size pitch angles at a time.\n", - " # This will reduce peak memory by 2.5 GB.\n", - " # batch_size=1,\n", " ),\n", " AspectRatio(eq1, bounds=(8, 11), weight=1e3),\n", " GenericObjective(\n", @@ -412,7 +581,7 @@ }, { "cell_type": "code", - "execution_count": 7, + "execution_count": 8, "id": "ceced2bb-a5ef-45b7-8864-e874d78239fd", "metadata": {}, "outputs": [], @@ -430,13 +599,13 @@ }, { "cell_type": "code", - "execution_count": 8, + "execution_count": 9, "id": "7289f3dc-857a-49d6-9a21-1835d55ef6c0", "metadata": {}, "outputs": [ { "data": { - "image/png": "iVBORw0KGgoAAAANSUhEUgAAAnYAAAHWCAYAAAD6oMSKAAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjkuMiwgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy8hTgPZAAAACXBIWXMAAA9hAAAPYQGoP6dpAABlV0lEQVR4nO3deXhU1f3H8ffMZN8JIQsQSNh30WAim6KiuEHRVrG2Yqli61752Qq1imgVtNVilYparFbbom3dpbgEaUFAFLAFwiI7SBIIgSQkZJu5vz9uMklIQraZ3Mnk83qePJmcuct3OrV+es4959gMwzAQERERkQ7PbnUBIiIiIuIZCnYiIiIifkLBTkRERMRPKNiJiIiI+AkFOxERERE/oWAnIiIi4icU7ERERET8hIKdiIiIiJ9QsBMRERHxEwp2IiKn+dGPfkRKSkqdNpvNxsMPP2xJPSIizaVgJyId1iuvvILNZuOrr75q8P0JEyYwbNiwdq6qrqysLB5++GH27dtnaR0i0jkEWF2AiEhHcOrUKQICWv4/mVlZWcybN48JEybU6wUUEfE09diJiDRDSEhIq4JdSxiGwalTp7x6DxHxbwp2ItKpvP7666SlpREaGkpsbCzXX389Bw8ebPK8hp6x27RpE5dffjlRUVFERERw8cUXs27dOvf7r7zyCtdeey0AF154ITabDZvNxsqVKwFISUnhqquu4qOPPmLUqFGEhobywgsvALBnzx6uvfZaYmNjCQsL47zzzuPDDz+sc/+VK1dis9l48803eeyxx+jZsychISFcfPHF7Nq1qw3/KYlIR6WhWBHp8AoKCsjLy6vXXlFRUefvxx57jAcffJDrrruOW265haNHj/Lss89y/vnns2nTJmJiYpp9z61btzJ+/HiioqL4xS9+QWBgIC+88AITJkzg3//+NxkZGZx//vncfffd/P73v+eXv/wlgwcPBnD/BtixYwff//73+clPfsLMmTMZOHAgubm5jBkzhpKSEu6++266du3Kq6++ypQpU/jHP/7B1VdfXaeWBQsWYLfbue+++ygoKODJJ5/kBz/4AV988UUL/lMUEb9giIh0UH/6058M4Iw/Q4cONQzDMPbt22c4HA7jscceq3ONzZs3GwEBAXXab7rpJqN37951jgOMuXPnuv+eOnWqERQUZOzevdvddvjwYSMyMtI4//zz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OF3W95V1qOVOOhKny2D93nyOFJUSHxlCemosDrtvDQfed9993HXXXS0656233iIwMNBLFYmIiHQMy7dkM+/9LLILSt1tSdEhzJ08hMuGWbcCg4KdF/jql13NMAycTicRERFERES06NzY2FgvVSUiItIxLN+SzW2vb+T0/rmcglJue30jz//wHMv+fa+hWA+r/rJrhzqo+bKXb8n2yn3Lysq4++67iY+PJyQkhHHjxvHll18C5sLONpuNf/3rX6SlpREcHMzq1avrDYFWVlZy9913ExMTQ9euXbn//vu56aab3MvRQP2h2JSUFB5//HF+/OMfExkZSa9evXjxxRfr1Hb//fczYMAAwsLC6NOnDw8++KB29RARkQ7J6TKY935WvVAHuNvmvZ9l2bCsgl0TDMOgpLyyWT9FpRXMfW/rGb/sh9/Loqi0olnXa8m8ll/84hf885//5NVXX2Xjxo3069ePSZMmkZ+f7z5m9uzZLFiwgG3btjFixIh613jiiSf4y1/+wp/+9Cc+//xzCgsLeeedd5q891NPPcWoUaPYtGkTt99+O7fddhs7duxwvx8ZGckrr7xCVlYWzzzzDC+99BK/+93vmv3ZREREfMX6vfn1Om9qM4DsglLW781v9Bhv0lBsE05VOBny0EceuZYB5BSWMvzhj5t1fNYjkwgLavorKi4u5vnnn+eVV17h8ssvB+Cll17ik08+YcmSJZx77rkAPPLII1xyySWNXufZZ59lzpw5XH311QA899xzLFu2rMn7X3HFFdx+++2A2Tv3u9/9js8++4yBAwcC5jI11VJSUrjvvvtYunQpv/jFL5q8toiIiC85UtR4qGvNcZ6mYOcHdu/eTUVFBWPHjnW3BQYGkp6ezrZt29zBbtSoUY1eo6CggNzcXNLT091tDoeDtLQ0XC7XGe9fu/fPZrORmJjo3sIL4I033uD3v/89u3fv5uTJk1RWVjY5XVtERMQXxUc2b8ms5h7naQp2TQgNdJD1yKRmHbt+bz4/+tOXTR73yoxzSU9tehJCaKBnd0gIDw/36PWqnT5L1mazucPg2rVr+cEPfsC8efOYNGkS0dHRLF26lKeeesortYiIiHhTemosCVHB5BaWNfi+DUiMDmnWv+e9Qc/YNcFmsxEWFNCsn/H9u5EUHUJji5rYMGfHju/frVnXa+5uCX379iUoKIjPP//c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RHySFhjzlOpn0AD3M2duegZNREREvE/BzpOqn0GLSqrbHtW9ZUudiIiIiLSChmI9Tc+giYiIiEUU7LxBz6CJiIiIBTQUKyIiIuInFOxERERE/ISCnYiIiIifULATERER8RMKdiIiIiJ+QsFORERExE8o2ImIiIj4CQU7ERERET+hYCciIiLiJxTsRERERPxEp9tSzDAMAAoLCy2uRERERKRp1ZmlOsOcSacLdkVFRQAkJydbXImIiIhI8xUVFREdHX3GY2xGc+KfH3G5XBw+fJjIyEhsNptHrllYWEhycjIHDx4kKirKI9eUttP34rv03fgmfS++S9+N72qP78YwDIqKiujevTt2+5mfout0PXZ2u52ePXt65dpRUVH6B84H6XvxXfpufJO+F9+l78Z3efu7aaqnrpomT4iIiIj4CQU7ERERET+hYOcBwcHBzJ07l+DgYKtLkVr0vfgufTe+Sd+L79J347t87bvpdJMnRERERPyVeuxERERE/ISCnYiIiIifULATERER8RMKds2waNEiUlJSCAkJISMjg/Xr15/x+L///e8MGjSIkJAQhg8fzrJly9qp0s6nJd/NSy+9xPjx4+nSpQtdunRh4sSJTX6X0not/eem2tKlS7HZbEydOtW7BXZSLf1eTpw4wR133EFSUhLBwcEMGDBA/5vmJS39bhYuXMjAgQMJDQ0lOTmZe++9l9LS0naqtnP4z3/+w+TJk+nevTs2m4133nmnyXNWrlzJOeecQ3BwMP369eOVV17xep11GHJGS5cuNYKCgoyXX37Z2Lp1qzFz5kwjJibGyM3NbfD4zz//3HA4HMaTTz5pZGVlGb/61a+MwMBAY/Pmze1cuf9r6Xdzww03GIsWLTI2bdpkbNu2zfjRj35kREdHG4cOHWrnyv1fS7+banv37jV69OhhjB8/3vjOd77TPsV2Ii39XsrKyoxRo0YZV1xxhbF69Wpj7969xsqVK42vv/66nSv3fy39bv7yl78YwcHBxl/+8hdj7969xkcffWQkJSUZ9957bztX7t+WLVtmPPDAA8Zbb71lAMbbb799xuP37NljhIWFGbNmzTKysrKMZ5991nA4HMby5cvbp2DDMBTsmpCenm7ccccd7r+dTqfRvXt3Y/78+Q0ef9111xlXXnllnbaMjAzjJz/5iVfr7Ixa+t2crrKy0oiMjDReffVV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", + "image/png": "iVBORw0KGgoAAAANSUhEUgAAAnYAAAHWCAYAAAD6oMSKAAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjkuMiwgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy8hTgPZAAAACXBIWXMAAA9hAAAPYQGoP6dpAABkMElEQVR4nO3deXiU1f3+8ffMZCcbELKAgbBDWESCRHBDRcEFinVBbYFSxVZF2/KzArWKaBW01dIqFetXC9a27gsKBjVKi4IFWSoYCAJhEbIQlqxkm3l+fzzJhJBtEmYyycz9uq5cmZxnyWcclNtznnOOxTAMAxERERHp8KzeLkBERERE3EPBTkRERMRHKNiJiIiI+AgFOxEREREfoWAnIiIi4iMU7ERERER8hIKdiIiIiI9QsBMRERHxEQp2IiIiIj5CwU5E5Aw/+clPSEpKqtNmsVh45JFHvFKPiIirFOxEpMNavnw5FouFr7/+usHj48aNY+jQoW1cVV0ZGRk88sgj7N+/36t1iIh/CPB2ASIiHcGpU6cICGj5fzIzMjJYuHAh48aNq9cLKCLibuqxExFxQUhISKuCXUsYhsGpU6c8+jtExLcp2ImIX3n11VdJSUkhNDSULl26cMstt3Do0KFmr2voGbutW7dy9dVXExkZSXh4OFdccQVfffWV8/jy5cu56aabALjsssuwWCxYLBbWrl0LQFJSEtdddx1r1qxh1KhRhIaG8sILLwCwb98+brrpJrp06UJYWBgXXHABq1atqvP7165di8Vi4Y033uDxxx/nnHPOISQkhCuuuII9e/acxT8lEemoNBQrIh1eQUEB+fn59dorKyvr/Pz444/z0EMPcfPNN3PHHXdw9OhRnn32WS655BK2bt1KdHS0y7/z22+/5eKLLyYyMpIHHniAwMBAXnjhBcaNG8e///1vUlNTueSSS7jvvvv485//zG9+8xsGDx4M4PwOkJmZya233srPfvYzZs2axcCBA8nNzWXs2LGUlpZy33330bVrV1asWMHkyZN56623uP766+vUsnjxYqxWK/fffz8FBQU89dRT/OhHP+K///1vC/4piohPMEREOqi//e1vBtDk15AhQwzDMIz9+/cbNpvNePzxx+vcY/v27UZAQECd9hkzZhi9evWqcx5gLFiwwPnzlClTjKCgIGPv3r3OtiNHjhgRERHGJZdc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rrsoKSlh5syZAEyfPp358+c7z580aRLPP/88r732GllZWXzyySc89NBDTJo0qd0sYVHzYZ8e6qD2w07bke2R31teXs59991HbGwsISEhXHTRRWzatAkwh7AtFgsfffQRKSkpBAcH88UXX9QbAq2qquK+++4jOjqarl27MnfuXGbMmOEM3lB/KDYpKYknnniCn/70p0RERNCzZ0/++te/1qlt7ty5DBgwgLCwMPr06cNDDz2k2akiItIh2R0GCz/IqBfqAGfbwg8yvDYs69V17KZOncrRo0d5+OGHycnJYcSIEaSlpTknVBw8eLBOD91vf/tbLBYLv/3tbzl8+DDdunVj0qRJPP744x6r0TAMTlXaXTrX7jBYsPLbRj9sC/DIygwu7Bfj0rBsaKDN5dmcDzzwAG+//TYrVqygV69ePPXUU0yYMIE9e/Y4z5k3bx5/+MMf6NOnD507d2bt2rV17vHkk0/yj3/8g7/97W8MHjyYP/3pT7z33ntcdtllTf7up59+mscee4zf/OY3vPXWW9x1111ceumlDBw4EICIiAiWL19O9+7d2b59O7NmzSIiIoIHHnjApfcmIiLSXmzMOl6v8+Z0BpBdUMbGrOOM6dv2a+J6feeJ2bNnNzr0embwCAgIYMGCBSxYsKANKjOdqrST/PAat9zLAHIKyxj2yMcunZ/x6ATCgpr/iEpKSnj++edZvnw5V199NQAvvvgin3zyCS+99BLnn38+AI8++ihXXnllo/d59tlnmT9/Ptdffz0Azz33HKtXr272919zzTXcfffdgNk798c//pHPP//cGex++9vfOs9NSkri/vvv57XXXlOwExGRDievqPFQ15rz3M3rwU7O3t69e6msrOTCCy90tgUGBjJ69Gh27tzpDHajRo1q9B4FBQXk5ubW2c7NZrORkpKCw+Fo8vcPHz7c+dpisRAfH+/cwgvMHUb+/Oc/s3fvXoqLi6mqqiIyMrLF71NERMTbYiNc28LU1fPcTcGuGaGBNjIeneDSuRuzjvOTv21q9rzlM89ndO/mJyGEBrr3ucFOnTq59X41zpwla7FYnGFww4YN/OhHP2LhwoVMmDCBqKgoXnvtNZ5++mmP1CIiIuJJo3t3ISEqpNHhWAsQHxXi0t/zntCh1rHzBovFQlhQgEtfF/fvRkJUCI09FWfBnB17cf9uLt3P1efr+vbt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u40TJ060feE+7PPPP2/w742az2LGjBnGpZdeWu+aESNGGEFBQUafPn2Mv/3tb21as8Uw1GcrIiIi4gv0jJ2IiIiIj1CwExEREfERCnYiIiIiPkLBTkRERMRHKNiJiIiI+AgFOxEREREfoWAnIiIi4iMU7ERERER8hIKdiIiIiI9QsBMRERHxEQp2IiJu8MUXXzB69GhCQkKIiYnhT3/6k7dLEhE/pGAnInKWVq9ezfXXX8/dd9/NN998w89+9jN+9atfsX//fm+XJiJ+xmIYhuHtIkREOqqysjL69+/Pk08+yW233QaA3W4nOjqapUuXMn36dC9XKCL+RD12IiJn4bPPPuPUqVNMnTrV2Waz2bBYLAQHB3uxMhHxRwp2IiJn4fPPP2fEiBHYbDZn2549eygqKuK8887zYmUi4o8U7EREzsLWrVupqKio0/aXv/yFlJQUBgwY4KWqRMRfBXi7ABGRjmzr1q0YhsErr7xCamoqb775Js8//zzr16/3dmki4ocU7EREWungwYMcP36cDz/8kHnz5rF7926GDx9OWlqahmFFxCs0K1ZEpJVWrlzJzJkzOXbsmLdLEREB9IydiEirbd26lWHDhnm7DBERJwU7EZFW2rp1K8OHD/d2GSIiThqKFREREfER6rETERER8REKdiIiIiI+QsFORERExEco2ImIiIj4CAU7ERERER+hYCciIiLiIxTsRERERHyEgp2IiIiIj1CwExEREfERCnYiIiIiPkLBTkRERMRH/H+RfJbGkbWU2gAAAABJRU5ErkJggg==", "text/plain": [ "
" ] From 566c7357e758e9ac103276ffa51f5552b2c5c9b4 Mon Sep 17 00:00:00 2001 From: unalmis Date: Thu, 19 Dec 2024 03:12:12 -0500 Subject: [PATCH 47/60] Allow python 3.9 for Rory --- .github/workflows/benchmark.yml | 2 +- .github/workflows/cache_dependencies.yml | 2 +- .github/workflows/unit_tests.yml | 9 +++++---- .github/workflows/weekly_tests.yml | 7 ++++--- desc/compute/_neoclassical.py | 7 +++---- desc/objectives/_fast_ion.py | 2 +- desc/objectives/_neoclassical.py | 2 +- requirements.txt | 2 +- ..._Gamma_c_Nemov.png => test_Gamma_c_Nemov_2D.png} | Bin ...ma_c_Velasco.png => test_Gamma_c_Velasco_2D.png} | Bin ...tive_ripple.png => test_effective_ripple_2D.png} | Bin tests/test_fast_ion.py | 4 ++-- tests/test_neoclassical.py | 2 +- 13 files changed, 20 insertions(+), 19 deletions(-) rename tests/baseline/{test_Gamma_c_Nemov.png => test_Gamma_c_Nemov_2D.png} (100%) rename tests/baseline/{test_Gamma_c_Velasco.png => test_Gamma_c_Velasco_2D.png} (100%) rename tests/baseline/{test_effective_ripple.png => test_effective_ripple_2D.png} (100%) diff --git a/.github/workflows/benchmark.yml b/.github/workflows/benchmark.yml index 4d4f9e3f85..73257e7a6f 100644 --- a/.github/workflows/benchmark.yml +++ b/.github/workflows/benchmark.yml @@ -24,7 +24,7 @@ jobs: GH_TOKEN: ${{ github.token }} strategy: matrix: - python-version: ['3.10'] + python-version: ['3.9'] group: [1, 2] steps: diff --git a/.github/workflows/cache_dependencies.yml b/.github/workflows/cache_dependencies.yml index 91c6533232..8b8fdc9edb 100644 --- a/.github/workflows/cache_dependencies.yml +++ b/.github/workflows/cache_dependencies.yml @@ -14,7 +14,7 @@ jobs: GH_TOKEN: ${{ github.token }} strategy: matrix: - python-version: ['3.10', '3.11', '3.12'] + python-version: ['3.9', '3.10', '3.11', '3.12'] steps: - uses: actions/checkout@v4 diff --git a/.github/workflows/unit_tests.yml b/.github/workflows/unit_tests.yml index ad057e6ac5..023e6503b3 100644 --- a/.github/workflows/unit_tests.yml +++ b/.github/workflows/unit_tests.yml @@ -22,13 +22,14 @@ jobs: GH_TOKEN: ${{ github.token }} strategy: matrix: - combos: [{group: 1, python_version: '3.10'}, - {group: 2, python_version: '3.11'}, - {group: 3, python_version: '3.12'}, + combos: [{group: 1, python_version: '3.9'}, + {group: 2, python_version: '3.10'}, + {group: 3, python_version: '3.11'}, {group: 4, python_version: '3.12'}, {group: 5, python_version: '3.12'}, {group: 6, python_version: '3.12'}, - {group: 7, python_version: '3.12'}] + {group: 7, python_version: '3.12'}, + {group: 8, python_version: '3.12'}] steps: - uses: actions/checkout@v4 diff --git a/.github/workflows/weekly_tests.yml b/.github/workflows/weekly_tests.yml index 5a1b4fc083..4247b6594c 100644 --- a/.github/workflows/weekly_tests.yml +++ b/.github/workflows/weekly_tests.yml @@ -11,9 +11,10 @@ jobs: runs-on: ubuntu-latest strategy: matrix: - combos: [{group: 1, python_version: '3.10'}, - {group: 2, python_version: '3.11'}, - {group: 3, python_version: '3.12'}] + combos: [{group: 1, python_version: '3.9'}, + {group: 2, python_version: '3.10'}, + {group: 3, python_version: '3.11'}, + {group: 4, python_version: '3.12'}] steps: - uses: actions/checkout@v4 diff --git a/desc/compute/_neoclassical.py b/desc/compute/_neoclassical.py index f877bf231c..ed7580db56 100644 --- a/desc/compute/_neoclassical.py +++ b/desc/compute/_neoclassical.py @@ -6,6 +6,7 @@ from desc.backend import imap, jit, jnp +from ..batching import _chunk_vmapped_function from ..integrals.bounce_integral import Bounce2D from ..integrals.quad_utils import chebgauss2 from ..utils import safediv @@ -116,13 +117,11 @@ def _foreach_pitch(fun, pitch_inv, batch_size): If given ``None``, then computes everything simultaneously. """ - # FIXME: Make this work with older JAX versions. - # We don't need to rely on JAX to iteratively vectorize since - # ``fun``` natively supports vectorization. return ( fun(pitch_inv) if (batch_size is None or batch_size >= (pitch_inv.size - 1)) - else imap(fun, pitch_inv, batch_size=batch_size).squeeze(axis=-1) + # else imap(fun, pitch_inv, batch_size=batch_size).squeeze(axis=-1) # noqa: E800 + else _chunk_vmapped_function(fun, chunk_size=batch_size)(pitch_inv) ) diff --git a/desc/objectives/_fast_ion.py b/desc/objectives/_fast_ion.py index 32d46f75fa..14afbd1659 100644 --- a/desc/objectives/_fast_ion.py +++ b/desc/objectives/_fast_ion.py @@ -1,4 +1,4 @@ -"""Objectives for targeting neoclassical transport.""" +"""Objectives for fast ion confinement.""" import numpy as np from orthax.legendre import leggauss diff --git a/desc/objectives/_neoclassical.py b/desc/objectives/_neoclassical.py index d6ad08082e..c741296247 100644 --- a/desc/objectives/_neoclassical.py +++ b/desc/objectives/_neoclassical.py @@ -1,4 +1,4 @@ -"""Objectives for targeting neoclassical transport.""" +"""Objectives for neoclassical transport.""" import numpy as np from orthax.legendre import leggauss diff --git a/requirements.txt b/requirements.txt index 999b62375d..9e0525e93e 100644 --- a/requirements.txt +++ b/requirements.txt @@ -1,4 +1,4 @@ -jax >= 0.4.31, != 0.4.36, <= 0.4.37 +jax >= 0.4.24, != 0.4.36, <= 0.4.37 colorama <= 0.4.6 diffrax >= 0.4.1, <= 0.6.1 h5py >= 3.0.0, <= 3.12.1 diff --git a/tests/baseline/test_Gamma_c_Nemov.png b/tests/baseline/test_Gamma_c_Nemov_2D.png similarity index 100% rename from tests/baseline/test_Gamma_c_Nemov.png rename to tests/baseline/test_Gamma_c_Nemov_2D.png diff --git a/tests/baseline/test_Gamma_c_Velasco.png b/tests/baseline/test_Gamma_c_Velasco_2D.png similarity index 100% rename from tests/baseline/test_Gamma_c_Velasco.png rename to tests/baseline/test_Gamma_c_Velasco_2D.png diff --git a/tests/baseline/test_effective_ripple.png b/tests/baseline/test_effective_ripple_2D.png similarity index 100% rename from tests/baseline/test_effective_ripple.png rename to tests/baseline/test_effective_ripple_2D.png diff --git a/tests/test_fast_ion.py b/tests/test_fast_ion.py index debc315273..909d99580a 100644 --- a/tests/test_fast_ion.py +++ b/tests/test_fast_ion.py @@ -14,7 +14,7 @@ @pytest.mark.unit @pytest.mark.slow @pytest.mark.mpl_image_compare(remove_text=True, tolerance=tol_1d) -def test_Gamma_c_Nemov(): +def test_Gamma_c_Nemov_2D(): """Test Γ_c Nemov with W7-X.""" eq = get("W7-X") rho = np.linspace(1e-12, 1, 10) @@ -37,7 +37,7 @@ def test_Gamma_c_Nemov(): @pytest.mark.unit @pytest.mark.slow @pytest.mark.mpl_image_compare(remove_text=True, tolerance=tol_1d) -def test_Gamma_c_Velasco(): +def test_Gamma_c_Velasco_2D(): """Test Γ_c Velasco with W7-X.""" eq = get("W7-X") rho = np.linspace(1e-12, 1, 10) diff --git a/tests/test_neoclassical.py b/tests/test_neoclassical.py index d1dfd11625..d533efb130 100644 --- a/tests/test_neoclassical.py +++ b/tests/test_neoclassical.py @@ -18,7 +18,7 @@ @pytest.mark.unit @pytest.mark.slow @pytest.mark.mpl_image_compare(remove_text=True, tolerance=tol_1d) -def test_effective_ripple(): +def test_effective_ripple_2D(): """Test effective ripple with W7-X against NEO.""" eq = get("W7-X") rho = np.linspace(0, 1, 10) From 67484f1235964e5fb715c1f6e80328b554a6c275 Mon Sep 17 00:00:00 2001 From: unalmis Date: Thu, 19 Dec 2024 04:37:36 -0500 Subject: [PATCH 48/60] Fix space --- .github/workflows/weekly_tests.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/weekly_tests.yml b/.github/workflows/weekly_tests.yml index 4247b6594c..b9ca2b9163 100644 --- a/.github/workflows/weekly_tests.yml +++ b/.github/workflows/weekly_tests.yml @@ -14,7 +14,7 @@ jobs: combos: [{group: 1, python_version: '3.9'}, {group: 2, python_version: '3.10'}, {group: 3, python_version: '3.11'}, - {group: 4, python_version: '3.12'}] + {group: 4, python_version: '3.12'}] steps: - uses: actions/checkout@v4 From 98483540a8e864fd5cd664c3f0eb4e4b4689052c Mon Sep 17 00:00:00 2001 From: unalmis Date: Thu, 19 Dec 2024 05:23:11 -0500 Subject: [PATCH 49/60] Fighting with the docs. all of these edits were necesseary apparently --- desc/compute/_neoclassical.py | 4 +- desc/integrals/_bounce_utils.py | 18 ++--- desc/integrals/bounce_integral.py | 68 +++++++------------ desc/integrals/quad_utils.py | 10 +-- desc/objectives/_fast_ion.py | 4 +- desc/objectives/_neoclassical.py | 4 +- .../notebooks/tutorials/EffectiveRipple.ipynb | 4 +- 7 files changed, 47 insertions(+), 65 deletions(-) diff --git a/desc/compute/_neoclassical.py b/desc/compute/_neoclassical.py index ed7580db56..0ca82231ca 100644 --- a/desc/compute/_neoclassical.py +++ b/desc/compute/_neoclassical.py @@ -36,7 +36,7 @@ Specifying a number that tightly upper bounds the number of wells will increase performance. In general, an upper bound on the number of wells per toroidal transit is ``Aι+B`` where ``A``,``B`` are the poloidal and - toroidal Fourier resolution of |B|, respectively, in straight-field line + toroidal Fourier resolution of B, respectively, in straight-field line PEST coordinates, and ι is the rotational transform normalized by 2π. A tighter upper bound than ``num_well=(Aι+B)*num_transit`` is preferable. The ``check_points`` or ``plot`` methods in ``desc.integrals.Bounce2D`` @@ -52,7 +52,7 @@ If given ``None``, then ``batch_size`` defaults to ``num_pitch``. """, "fieldline_quad": """tuple[jnp.ndarray] : - Used to compute the proper length of the field line ∫ dℓ / |B|. + Used to compute the proper length of the field line ∫ dℓ / B. Quadrature points xₖ and weights wₖ for the approximate evaluation of the integral ∫₋₁¹ f(x) dx ≈ ∑ₖ wₖ f(xₖ). Default is Gauss-Legendre quadrature at resolution ``Y_B//2`` diff --git a/desc/integrals/_bounce_utils.py b/desc/integrals/_bounce_utils.py index 585a235328..b79d3497c9 100644 --- a/desc/integrals/_bounce_utils.py +++ b/desc/integrals/_bounce_utils.py @@ -45,9 +45,9 @@ def get_pitch_inv_quad(min_B, max_B, num_pitch, simp=False): Parameters ---------- min_B : jnp.ndarray - Minimum |B| value. + Minimum B value. max_B : jnp.ndarray - Maximum |B| value. + Maximum B value. num_pitch : int Number of values. simp : bool @@ -56,7 +56,7 @@ def get_pitch_inv_quad(min_B, max_B, num_pitch, simp=False): Returns ------- x, w : tuple[jnp.ndarray] - Shape (*min_B.shape, num pitch). + Shape (min_B.shape, num pitch). 1/λ values and weights. """ @@ -126,7 +126,7 @@ def _check_spline_shape(knots, g, dg_dz, pitch_inv=None): def bounce_points( pitch_inv, knots, B, dB_dz, num_well=None, check=False, plot=True, **kwargs ): - """Compute the bounce points given spline of |B| and pitch λ. + """Compute the bounce points given spline of B and pitch λ. Parameters ---------- @@ -138,12 +138,12 @@ def bounce_points( ζ coordinates of spline knots. Must be strictly increasing. B : jnp.ndarray Shape (..., N - 1, B.shape[-1]). - Polynomial coefficients of the spline of |B| in local power basis. + Polynomial coefficients of the spline of B in local power basis. Last axis enumerates the coefficients of power series. Second to last axis enumerates the polynomials that compose a particular spline. dB_dz : jnp.ndarray Shape (..., N - 1, B.shape[-1] - 1). - Polynomial coefficients of the spline of (∂|B|/∂ζ)|(ρ,α) in local power basis. + Polynomial coefficients of the spline of (∂B/∂ζ)|(ρ,α) in local power basis. Last axis enumerates the coefficients of power series. Second to last axis enumerates the polynomials that compose a particular spline. num_well : int or None @@ -153,7 +153,7 @@ def bounce_points( Specifying a number that tightly upper bounds the number of wells will increase performance. In general, an upper bound on the number of wells per toroidal transit is ``Aι+B`` where ``A``,``B`` are the poloidal and - toroidal Fourier resolution of |B|, respectively, in straight-field line + toroidal Fourier resolution of B, respectively, in straight-field line PEST coordinates, and ι is the rotational transform normalized by 2π. A tighter upper bound than ``num_well=(Aι+B)*num_transit`` is preferable. @@ -172,7 +172,7 @@ def bounce_points( Shape (..., num pitch, num well). ζ coordinates of bounce points. The points are ordered and grouped such that the straight line path between ``z1`` and ``z2`` resides in the - epigraph of |B|. + epigraph of B. If there were less than ``num_well`` wells detected along a field line, then the last axis, which enumerates bounce points for a particular field @@ -351,7 +351,7 @@ def _bounce_quadrature( Optional, output of method ``self.points``. Tuple of length two (z1, z2) that stores ζ coordinates of bounce points. The points are ordered and grouped such that the straight line path - between ``z1`` and ``z2`` resides in the epigraph of |B|. + between ``z1`` and ``z2`` resides in the epigraph of B. method : str Method of interpolation. See https://interpax.readthedocs.io/en/latest/_api/interpax.interp1d.html. diff --git a/desc/integrals/bounce_integral.py b/desc/integrals/bounce_integral.py index c027ee4224..b1d1305299 100644 --- a/desc/integrals/bounce_integral.py +++ b/desc/integrals/bounce_integral.py @@ -76,10 +76,10 @@ class Bounce2D(Bounce): * dℓ parameterizes the distance along the field line in meters. * f(ρ,α,λ,ℓ) is the quantity to integrate along the field line. - * The boundaries of the integral are bounce points ℓ₁, ℓ₂ s.t. λ|B|(ρ,α,ℓᵢ) = 1. + * The boundaries of the integral are bounce points ℓ₁, ℓ₂ s.t. λB(ρ,α,ℓᵢ) = 1. * λ is a constant defining the integral proportional to the magnetic moment over energy. - * |B| is the norm of the magnetic field. + * B is the norm of the magnetic field. For a particle with fixed λ, bounce points are defined to be the location on the field line such that the particle's velocity parallel to the magnetic field is zero. @@ -94,7 +94,7 @@ class Bounce2D(Bounce): Interpolate Fourier-Chebyshev series to DESC poloidal coordinate. θ : ρ, α, ζ ↦ tₘₙ(ρ) exp(jmα) Tₙ(ζ) Compute bounce points. - r(ζₖ) = |B|(ζₖ) − 1/λ = 0 + r(ζₖ) = B(ζₖ) − 1/λ = 0 Interpolate smooth periodic components of integrand with FFTs. G : ρ, α, ζ ↦ gₘₙ(ρ) exp(j [m θ(ρ,α,ζ) + n ζ]) Perform Gaussian quadrature after removing singularities. @@ -134,11 +134,6 @@ class Bounce2D(Bounce): whereas cubic splines take 𝒪(C Q) time. However, as NFP increases, F decreases whereas C increases. Also, Q >> F and Q >> C. - Attributes - ---------- - required_names : list - Names in ``data_index`` required to compute bounce integrals. - """ # Notes @@ -153,11 +148,11 @@ class Bounce2D(Bounce): # The DESC coordinate system is related to field-line-following coordinate # systems by a relation whose solution is best found with Newton iteration # since this solution is unique. Newton iteration is not a globally - # convergent algorithm to find the real roots of r : ζ ↦ |B|(ζ) − 1/λ where + # convergent algorithm to find the real roots of r : ζ ↦ B(ζ) − 1/λ where # ζ is a field-line-following coordinate. For this, function approximation - # of |B| is necessary. + # of B is necessary. # - # Therefore, to compute bounce points {(ζ₁, ζ₂)}, we approximate |B| by a + # Therefore, to compute bounce points {(ζ₁, ζ₂)}, we approximate B by a # series expansion of basis functions parameterized by a single variable ζ, # restricting the class of basis functions to low order (e.g. n = 2ᵏ where # k is small) algebraic or trigonometric polynomial with integer frequencies. @@ -176,7 +171,7 @@ class Bounce2D(Bounce): # polynomials are preferred to other orthogonal polynomial series is # fast discrete polynomial transforms (DPT) are implemented via fast transform # to Chebyshev then DCT. Therefore, a Fourier-Chebyshev series is chosen - # to interpolate θ(α,ζ) and a piecewise Chebyshev series interpolates |B|(ζ). + # to interpolate θ(α,ζ) and a piecewise Chebyshev series interpolates B(ζ). # # * An alternative to Chebyshev series is # [filtered Fourier series](doi.org/10.1016/j.aml.2006.10.001). @@ -188,11 +183,11 @@ class Bounce2D(Bounce): # * The advantage of Fourier series in DESC coordinates is that they may use the # spectrally condensed variable ζ* = NFP ζ. This cannot be done in any other # coordinate system, regardless of whether the basis functions are periodic. - # The strategy of parameterizing |B| along field lines with a single variable + # The strategy of parameterizing B along field lines with a single variable # in Clebsch coordinates (as opposed to two variables in straight-field line - # coordinates) also serves to minimize this penalty since evaluation of |B| + # coordinates) also serves to minimize this penalty since evaluation of B # when computing bounce points will be less expensive (assuming the 2D - # Fourier resolution of |B|(ϑ, ϕ) is larger than the 1D Chebyshev resolution). + # Fourier resolution of B(ϑ, ϕ) is larger than the 1D Chebyshev resolution). # # Computing accurate series expansions in (α, ζ) coordinates demands # particular interpolation points in that coordinate system. Newton iteration @@ -464,7 +459,7 @@ def points(self, pitch_inv, *, num_well=None): Specifying a number that tightly upper bounds the number of wells will increase performance. In general, an upper bound on the number of wells per toroidal transit is ``Aι+B`` where ``A``,``B`` are the poloidal and - toroidal Fourier resolution of |B|, respectively, in straight-field line + toroidal Fourier resolution of B, respectively, in straight-field line PEST coordinates, and ι is the rotational transform normalized by 2π. A tighter upper bound than ``num_well=(Aι+B)*num_transit`` is preferable. The ``check_points`` or ``plot`` method is useful to select a reasonable @@ -479,7 +474,7 @@ def points(self, pitch_inv, *, num_well=None): Shape (num rho, num pitch, num well). Tuple of length two (z1, z2) that stores ζ coordinates of bounce points. The points are ordered and grouped such that the straight line path - between ``z1`` and ``z2`` resides in the epigraph of |B|. + between ``z1`` and ``z2`` resides in the epigraph of B. If there were less than ``num_well`` wells detected along a field line, then the last axis, which enumerates bounce points for a particular field @@ -506,7 +501,7 @@ def points(self, pitch_inv, *, num_well=None): return z1, z2 def _polish_points(self, points, pitch_inv): - # TODO (#1154): One application of secant on Fourier series |B| - 1/λ. + # TODO (#1154): One application of secant on Fourier series B - 1/λ. raise NotImplementedError def check_points(self, points, pitch_inv, *, plot=True, **kwargs): @@ -519,7 +514,7 @@ def check_points(self, points, pitch_inv, *, plot=True, **kwargs): Output of method ``self.points``. Tuple of length two (z1, z2) that stores ζ coordinates of bounce points. The points are ordered and grouped such that the straight line path - between ``z1`` and ``z2`` resides in the epigraph of |B|. + between ``z1`` and ``z2`` resides in the epigraph of B. pitch_inv : jnp.ndarray Shape (num rho, num pitch). 1/λ values to compute the bounce integrals. 1/λ(ρ) is specified by @@ -581,7 +576,7 @@ def integrate( Notes ----- - Make sure to replace √(1−λ|B|) with √|1−λ|B|| in ``integrand`` to account + Make sure to replace √(1−λB) with √|1−λB| in ``integrand`` to account for imperfect computation of bounce points. Parameters @@ -608,7 +603,7 @@ def integrate( Optional, output of method ``self.points``. Tuple of length two (z1, z2) that stores ζ coordinates of bounce points. The points are ordered and grouped such that the straight line path - between ``z1`` and ``z2`` resides in the epigraph of |B|. + between ``z1`` and ``z2`` resides in the epigraph of B. is_fourier : bool If true, then it is assumed that ``data`` holds Fourier transforms as returned by ``Bounce2D.fourier``. Default is false. @@ -770,7 +765,7 @@ def interp_to_argmin(self, f, points, *, is_fourier=False): Optional, output of method ``self.points``. Tuple of length two (z1, z2) that stores ζ coordinates of bounce points. The points are ordered and grouped such that the straight line path - between ``z1`` and ``z2`` resides in the epigraph of |B|. + between ``z1`` and ``z2`` resides in the epigraph of B. is_fourier : bool If true, then it is assumed that ``f`` is the Fourier transforms as returned by ``Bounce2D.fourier``. Default is false. @@ -804,7 +799,7 @@ def interp_to_argmin(self, f, points, *, is_fourier=False): ) def compute_fieldline_length(self, quad=None): - """Compute the proper length of the field line ∫ dℓ / |B|. + """Compute the proper length of the field line ∫ dℓ / B. Parameters ---------- @@ -949,10 +944,10 @@ class Bounce1D(Bounce): * dℓ parameterizes the distance along the field line in meters. * f(ρ,α,λ,ℓ) is the quantity to integrate along the field line. - * The boundaries of the integral are bounce points ℓ₁, ℓ₂ s.t. λ|B|(ρ,α,ℓᵢ) = 1. + * The boundaries of the integral are bounce points ℓ₁, ℓ₂ s.t. λB(ρ,α,ℓᵢ) = 1. * λ is a constant defining the integral proportional to the magnetic moment over energy. - * |B| is the norm of the magnetic field. + * B is the norm of the magnetic field. For a particle with fixed λ, bounce points are defined to be the location on the field line such that the particle's velocity parallel to the magnetic field is zero. @@ -971,14 +966,6 @@ class Bounce1D(Bounce): This is useful if one can efficiently obtain data along field lines and the number of toroidal transits to follow a field line is not large. - After computing the bounce points, the supplied quadrature is performed. - By default, this is a Gauss quadrature after removing the singularity. - Local splines interpolate smooth functions in the integrand to the quadrature - nodes. Quadrature is chosen over Runge-Kutta methods of the form - ∂Fᵢ/∂ζ = f(λ,ζ,{Gⱼ}) subject to Fᵢ(ζ₁) = 0 - A fourth order Runge-Kutta method is equivalent to a quadrature - with Simpson's rule. The quadratures resolve these integrals more efficiently. - See Also -------- Bounce2D : Uses two-dimensional pseudo-spectral techniques for the same task. @@ -987,11 +974,6 @@ class Bounce1D(Bounce): -------- See ``tests/test_integrals.py::TestBounce::test_bounce1d_checks``. - Attributes - ---------- - required_names : list - Names in ``data_index`` required to compute bounce integrals. - """ required_names = ["B^zeta", "B^zeta_z|r,a", "|B|", "|B|_z|r,a"] @@ -1126,7 +1108,7 @@ def points(self, pitch_inv, *, num_well=None): Specifying a number that tightly upper bounds the number of wells will increase performance. In general, an upper bound on the number of wells per toroidal transit is ``Aι+B`` where ``A``,``B`` are the poloidal and - toroidal Fourier resolution of |B|, respectively, in straight-field line + toroidal Fourier resolution of B, respectively, in straight-field line PEST coordinates, and ι is the rotational transform normalized by 2π. A tighter upper bound than ``num_well=(Aι+B)*num_transit`` is preferable. The ``check_points`` or ``plot`` method is useful to select a reasonable @@ -1141,7 +1123,7 @@ def points(self, pitch_inv, *, num_well=None): Shape (num alpha, num rho, num pitch, num well). Tuple of length two (z1, z2) that stores ζ coordinates of bounce points. The points are ordered and grouped such that the straight line path - between ``z1`` and ``z2`` resides in the epigraph of |B|. + between ``z1`` and ``z2`` resides in the epigraph of B. If there were less than ``num_well`` wells detected along a field line, then the last axis, which enumerates bounce points for a particular field @@ -1160,7 +1142,7 @@ def check_points(self, points, pitch_inv, *, plot=True, **kwargs): Output of method ``self.points``. Tuple of length two (z1, z2) that stores ζ coordinates of bounce points. The points are ordered and grouped such that the straight line path - between ``z1`` and ``z2`` resides in the epigraph of |B|. + between ``z1`` and ``z2`` resides in the epigraph of B. pitch_inv : jnp.ndarray Shape (num alpha, num rho, num pitch). 1/λ values to compute the bounce points at each field line. 1/λ(α,ρ) is @@ -1232,7 +1214,7 @@ def integrate( Optional, output of method ``self.points``. Tuple of length two (z1, z2) that stores ζ coordinates of bounce points. The points are ordered and grouped such that the straight line path - between ``z1`` and ``z2`` resides in the epigraph of |B|. + between ``z1`` and ``z2`` resides in the epigraph of B. method : str Method of interpolation. See https://interpax.readthedocs.io/en/latest/_api/interpax.interp1d.html. @@ -1297,7 +1279,7 @@ def interp_to_argmin(self, f, points, *, method="cubic"): Optional, output of method ``self.points``. Tuple of length two (z1, z2) that stores ζ coordinates of bounce points. The points are ordered and grouped such that the straight line path - between ``z1`` and ``z2`` resides in the epigraph of |B|. + between ``z1`` and ``z2`` resides in the epigraph of B. method : str Method of interpolation. See https://interpax.readthedocs.io/en/latest/_api/interpax.interp1d.html. diff --git a/desc/integrals/quad_utils.py b/desc/integrals/quad_utils.py index 1ba4c86b91..723fd3c725 100644 --- a/desc/integrals/quad_utils.py +++ b/desc/integrals/quad_utils.py @@ -2,13 +2,13 @@ Notes ----- -Bounce integrals with bounce points where the derivative of |B| does not vanish +Bounce integrals with bounce points where the derivative of B does not vanish have 1/2 power law singularities. However, strongly singular integrals where the -domain of the integral ends at the local extrema of |B| are not integrable. +domain of the integral ends at the local extrema of B are not integrable. Hence, everywhere except for the extrema, an implicit Chebyshev (``chebgauss1`` or ``chebgauss2`` or modified Legendre quadrature (with ``automorphism_sin``) -captures the integral because √(1−ζ²) / √ (1−λ|B|) ∼ k(λ, ζ) is smooth in ζ. +captures the integral because √(1−ζ²) / √ (1−λB) ∼ k(λ, ζ) is smooth in ζ. The clustering of the nodes near the singularities is sufficient to estimate k(ζ, λ). """ @@ -22,12 +22,12 @@ def bijection_to_disc(x, a, b): """[a, b] ∋ x ↦ y ∈ [−1, 1].""" - return 2.0 * (x - a) / (b - a) - 1.0 + return 2 * (x - a) / (b - a) - 1 def bijection_from_disc(x, a, b): """[−1, 1] ∋ x ↦ y ∈ [a, b].""" - return 0.5 * (b - a) * (x + 1.0) + a + return 0.5 * (b - a) * (x + 1) + a def grad_bijection_from_disc(a, b): diff --git a/desc/objectives/_fast_ion.py b/desc/objectives/_fast_ion.py index 14afbd1659..b4cddbd208 100644 --- a/desc/objectives/_fast_ion.py +++ b/desc/objectives/_fast_ion.py @@ -66,7 +66,7 @@ class GammaC(_Objective): Desired resolution for algorithm to compute bounce points. Default is double ``Y``. Something like 100 is usually sufficient. Currently, this is the number of knots per toroidal transit over - to approximate |B| with cubic splines. + to approximate B with cubic splines. num_transit : int Number of toroidal transits to follow field line. For axisymmetric devices, one poloidal transit is sufficient. Otherwise, @@ -79,7 +79,7 @@ class GammaC(_Objective): Specifying a number that tightly upper bounds the number of wells will increase performance. In general, an upper bound on the number of wells per toroidal transit is ``Aι+B`` where ``A``,``B`` are the poloidal and - toroidal Fourier resolution of |B|, respectively, in straight-field line + toroidal Fourier resolution of B, respectively, in straight-field line PEST coordinates, and ι is the rotational transform normalized by 2π. A tighter upper bound than ``num_well=(Aι+B)*num_transit`` is preferable. The ``check_points`` or ``plot`` methods in ``desc.integrals.Bounce2D`` diff --git a/desc/objectives/_neoclassical.py b/desc/objectives/_neoclassical.py index c741296247..02501ed6cb 100644 --- a/desc/objectives/_neoclassical.py +++ b/desc/objectives/_neoclassical.py @@ -65,7 +65,7 @@ class EffectiveRipple(_Objective): Desired resolution for algorithm to compute bounce points. Default is double ``Y``. Something like 100 is usually sufficient. Currently, this is the number of knots per toroidal transit over - to approximate |B| with cubic splines. + to approximate B with cubic splines. num_transit : int Number of toroidal transits to follow field line. For axisymmetric devices, one poloidal transit is sufficient. Otherwise, @@ -78,7 +78,7 @@ class EffectiveRipple(_Objective): Specifying a number that tightly upper bounds the number of wells will increase performance. In general, an upper bound on the number of wells per toroidal transit is ``Aι+B`` where ``A``,``B`` are the poloidal and - toroidal Fourier resolution of |B|, respectively, in straight-field line + toroidal Fourier resolution of B, respectively, in straight-field line PEST coordinates, and ι is the rotational transform normalized by 2π. A tighter upper bound than ``num_well=(Aι+B)*num_transit`` is preferable. The ``check_points`` or ``plot`` methods in ``desc.integrals.Bounce2D`` diff --git a/docs/notebooks/tutorials/EffectiveRipple.ipynb b/docs/notebooks/tutorials/EffectiveRipple.ipynb index 9299d4c32a..a57c05c417 100644 --- a/docs/notebooks/tutorials/EffectiveRipple.ipynb +++ b/docs/notebooks/tutorials/EffectiveRipple.ipynb @@ -81,7 +81,7 @@ "- The equilibrium resolution determines the spectral resolution of the FourierZernike series fit to the boundary.\n", "- The grid determines the flux surfaces to compute on and the resolution of FFTs.\n", "- The parameters ``X`` and ``Y`` determine the spectral resolution of the map between coordinates that parameterize the boundary and field line coordinates.\n", - "- The parameter ``Y_B`` determines the resolution for the bounce point finding algorithm. Feel free to reduce this until the plots of |B| along field lines do not change. If |B| is high frequency, then a larger value will be needed (usually much larger than ``Y``).\n", + "- The parameter ``Y_B`` determines the resolution for the bounce point finding algorithm. Feel free to reduce this until the plots of $\\vert B\\vert$ along field lines do not change. If $\\vert B\\vert$ is high frequency, then a larger value will be needed (usually much larger than ``Y``).\n", "\n", "## Plotting ripple wells\n", "\n", @@ -135,7 +135,7 @@ " Specifying a number that tightly upper bounds the number of wells will\n", " increase performance. In general, an upper bound on the number of wells\n", " per toroidal transit is ``Aι+B`` where ``A``,``B`` are the poloidal and\n", - " toroidal Fourier resolution of |B|, respectively, in straight-field line\n", + " toroidal Fourier resolution of B, respectively, in straight-field line\n", " PEST coordinates, and ι is the rotational transform normalized by 2π.\n", " A tighter upper bound than ``num_well=(Aι+B)*num_transit`` is preferable.\n", " The ``check_points`` or ``plot`` methods in ``desc.integrals.Bounce2D``\n", From 548674ecc7c1706a28adef51d2e9d15c9514822b Mon Sep 17 00:00:00 2001 From: unalmis Date: Thu, 19 Dec 2024 05:45:40 -0500 Subject: [PATCH 50/60] . --- desc/compute/_fast_ion.py | 7 +++---- desc/integrals/bounce_integral.py | 2 +- 2 files changed, 4 insertions(+), 5 deletions(-) diff --git a/desc/compute/_fast_ion.py b/desc/compute/_fast_ion.py index b24c24fcba..43f388c88c 100644 --- a/desc/compute/_fast_ion.py +++ b/desc/compute/_fast_ion.py @@ -130,10 +130,9 @@ def _Gamma_c(params, transforms, profiles, data, **kwargs): num_well = kwargs.get("num_well", Y_B * num_transit) batch_size = kwargs.get("batch_size", None) spline = kwargs.get("spline", True) - if "fieldline_quad" in kwargs: - fieldline_quad = kwargs["fieldline_quad"] - else: - fieldline_quad = leggauss(Y_B // 2) + fieldline_quad = ( + kwargs["fieldline_quad"] if "fieldline_quad" in kwargs else leggauss(Y_B // 2) + ) quad = ( kwargs["quad"] if "quad" in kwargs diff --git a/desc/integrals/bounce_integral.py b/desc/integrals/bounce_integral.py index b1d1305299..cc7bc0dbf0 100644 --- a/desc/integrals/bounce_integral.py +++ b/desc/integrals/bounce_integral.py @@ -70,7 +70,7 @@ def _swap_pl(f): class Bounce2D(Bounce): - """Computes bounce integrals using two-dimensional pseudo-spectral methods. + """Computes bounce integrals using pseudo-spectral methods. The bounce integral is defined as ∫ f(ρ,α,λ,ℓ) dℓ where From f3237b11ba7920a944d55528b7bccdbbdb16a4d2 Mon Sep 17 00:00:00 2001 From: unalmis Date: Thu, 19 Dec 2024 06:03:40 -0500 Subject: [PATCH 51/60] Update notebook name so it appears in docs --- docs/notebooks/tutorials/EffectiveRipple.ipynb | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/notebooks/tutorials/EffectiveRipple.ipynb b/docs/notebooks/tutorials/EffectiveRipple.ipynb index a57c05c417..72feff581f 100644 --- a/docs/notebooks/tutorials/EffectiveRipple.ipynb +++ b/docs/notebooks/tutorials/EffectiveRipple.ipynb @@ -5,7 +5,7 @@ "id": "988097b0-18ad-4202-8dea-3423bfcaecbe", "metadata": {}, "source": [ - "# Introduction\n", + "# Neoclassical transport and fast ions\n", "- In this tutorial, we will show how to optimize for the effective ripple in DESC.\n", "The computation involves integration over ripple wells whose structure determines the optimal resolution for the optimization.\n", "So we will also breifly show how to visualize the ripples and accordingly pick resolution parameters.\n", From 274352cb4a9ccf96009c0149d5b0e35e8d209ec8 Mon Sep 17 00:00:00 2001 From: unalmis Date: Thu, 19 Dec 2024 06:31:54 -0500 Subject: [PATCH 52/60] Fix docs --- desc/compute/_neoclassical.py | 2 +- desc/integrals/_bounce_utils.py | 8 +-- desc/integrals/bounce_integral.py | 57 +++++++++---------- desc/objectives/_fast_ion.py | 20 +++---- desc/objectives/_neoclassical.py | 20 +++---- docs/api_objectives.rst | 11 +++- .../notebooks/tutorials/EffectiveRipple.ipynb | 6 +- 7 files changed, 65 insertions(+), 59 deletions(-) diff --git a/desc/compute/_neoclassical.py b/desc/compute/_neoclassical.py index 0ca82231ca..f2ef2b4954 100644 --- a/desc/compute/_neoclassical.py +++ b/desc/compute/_neoclassical.py @@ -35,7 +35,7 @@ JAX this will have worse performance. Specifying a number that tightly upper bounds the number of wells will increase performance. In general, an upper bound on the number of wells - per toroidal transit is ``Aι+B`` where ``A``,``B`` are the poloidal and + per toroidal transit is ``Aι+B`` where ``A``, ``B`` are the poloidal and toroidal Fourier resolution of B, respectively, in straight-field line PEST coordinates, and ι is the rotational transform normalized by 2π. A tighter upper bound than ``num_well=(Aι+B)*num_transit`` is preferable. diff --git a/desc/integrals/_bounce_utils.py b/desc/integrals/_bounce_utils.py index b79d3497c9..4680269a4a 100644 --- a/desc/integrals/_bounce_utils.py +++ b/desc/integrals/_bounce_utils.py @@ -152,7 +152,7 @@ def bounce_points( but due to current limitations in JAX this will have worse performance. Specifying a number that tightly upper bounds the number of wells will increase performance. In general, an upper bound on the number of wells - per toroidal transit is ``Aι+B`` where ``A``,``B`` are the poloidal and + per toroidal transit is ``Aι+B`` where ``A``, ``B`` are the poloidal and toroidal Fourier resolution of B, respectively, in straight-field line PEST coordinates, and ι is the rotational transform normalized by 2π. A tighter upper bound than ``num_well=(Aι+B)*num_transit`` is preferable. @@ -330,9 +330,9 @@ def _bounce_quadrature( Shape (N, ). Unique ζ coordinates where the arrays in ``data`` and ``f`` were evaluated. integrand : callable or list[callable] - The composition operator on the set of functions in ``data`` that - maps that determines ``f`` in ∫ f(ρ,α,λ,ℓ) dℓ. It should accept a dictionary - which stores the interpolated data and the keyword argument ``pitch``. + The composition operator on the set of functions in ``data`` + that determines ``f`` in ∫ f(ρ,α,λ,ℓ) dℓ. It should accept a dictionary + which stores the interpolated data and the arguments ``B`` and ``pitch``. pitch_inv : jnp.ndarray Shape (num alpha, num rho, num pitch). 1/λ values to compute the bounce integrals. 1/λ(α,ρ) is specified by diff --git a/desc/integrals/bounce_integral.py b/desc/integrals/bounce_integral.py index cc7bc0dbf0..6adebf1667 100644 --- a/desc/integrals/bounce_integral.py +++ b/desc/integrals/bounce_integral.py @@ -87,8 +87,8 @@ class Bounce2D(Bounce): the particle's guiding center trajectory traveling in the direction of increasing field-line-following coordinate ζ. - Overview - -------- + Notes + ----- Magnetic field line with label α, defined by B = ∇ψ × ∇α, is determined from α : ρ, θ, ζ ↦ θ + λ(ρ,θ,ζ) − ι(ρ) [ζ + ω(ρ,θ,ζ)] Interpolate Fourier-Chebyshev series to DESC poloidal coordinate. @@ -113,27 +113,6 @@ class Bounce2D(Bounce): -------- Bounce1D : Uses one-dimensional local spline methods for the same task. - - Comparison to Bounce1D - ---------------------- - ``Bounce2D`` solves the dominant cost of optimization objectives relying on - ``Bounce1D``: interpolating DESC's 3D transforms to an optimization-step - dependent grid that is dense enough for function approximation with local - splines. This is sometimes referred to as off-grid interpolation in literature; - it is often a bottleneck. - - * The function approximation done here requires DESC transforms on a fixed - grid with typical resolution, using FFTs to compute the map between - coordinate systems. This enables evaluating functions along field lines - without root-finding. - * The faster convergence of spectral methods requires a less dense - grid to interpolate onto from DESC's 3D transforms. - * 2D interpolation enables tracing the field line for many toroidal transits. - * The drawback is that evaluating a Fourier series with resolution F at Q - non-uniform quadrature points takes 𝒪([F+Q] log[F] log[1/ε]) time - whereas cubic splines take 𝒪(C Q) time. However, as NFP increases, - F decreases whereas C increases. Also, Q >> F and Q >> C. - """ # Notes @@ -217,6 +196,24 @@ class Bounce2D(Bounce): # Fast transforms are used where possible. Fast multipoint methods are not # implemented. For non-uniform interpolation, MMTs are used. It will be # worthwhile to use the inverse non-uniform fast transforms. + # + # ``Bounce2D`` solves the dominant cost of optimization objectives relying on + # ``Bounce1D``: interpolating DESC's 3D transforms to an optimization-step + # dependent grid that is dense enough for function approximation with local + # splines. This is sometimes referred to as off-grid interpolation in literature; + # it is often a bottleneck. + # + # * The function approximation done here requires DESC transforms on a fixed + # grid with typical resolution, using FFTs to compute the map between + # coordinate systems. This enables evaluating functions along field lines + # without root-finding. + # * The faster convergence of spectral methods requires a less dense + # grid to interpolate onto from DESC's 3D transforms. + # * 2D interpolation enables tracing the field line for many toroidal transits. + # * The drawback is that evaluating a Fourier series with resolution F at Q + # non-uniform quadrature points takes 𝒪([F+Q] log[F] log[1/ε]) time + # whereas cubic splines take 𝒪(C Q) time. However, as NFP increases, + # F decreases whereas C increases. Also, Q >> F and Q >> C. required_names = ["B^zeta", "|B|", "iota"] @@ -458,7 +455,7 @@ def points(self, pitch_inv, *, num_well=None): but due to current limitations in JAX this will have worse performance. Specifying a number that tightly upper bounds the number of wells will increase performance. In general, an upper bound on the number of wells - per toroidal transit is ``Aι+B`` where ``A``,``B`` are the poloidal and + per toroidal transit is ``Aι+B`` where ``A``, ``B`` are the poloidal and toroidal Fourier resolution of B, respectively, in straight-field line PEST coordinates, and ι is the rotational transform normalized by 2π. A tighter upper bound than ``num_well=(Aι+B)*num_transit`` is preferable. @@ -582,8 +579,8 @@ def integrate( Parameters ---------- integrand : callable or list[callable] - The composition operator on the set of functions in ``data`` that - maps that determines ``f`` in ∫ f(ρ,α,λ,ℓ) dℓ. It should accept a dictionary + The composition operator on the set of functions in ``data`` + that determines ``f`` in ∫ f(ρ,α,λ,ℓ) dℓ. It should accept a dictionary which stores the interpolated data and the arguments ``B`` and ``pitch``. pitch_inv : jnp.ndarray Shape (num rho, num pitch). @@ -968,7 +965,7 @@ class Bounce1D(Bounce): See Also -------- - Bounce2D : Uses two-dimensional pseudo-spectral techniques for the same task. + Bounce2D : Uses pseudo-spectral methods for the same task. Examples -------- @@ -1107,7 +1104,7 @@ def points(self, pitch_inv, *, num_well=None): but due to current limitations in JAX this will have worse performance. Specifying a number that tightly upper bounds the number of wells will increase performance. In general, an upper bound on the number of wells - per toroidal transit is ``Aι+B`` where ``A``,``B`` are the poloidal and + per toroidal transit is ``Aι+B`` where ``A``, ``B`` are the poloidal and toroidal Fourier resolution of B, respectively, in straight-field line PEST coordinates, and ι is the rotational transform normalized by 2π. A tighter upper bound than ``num_well=(Aι+B)*num_transit`` is preferable. @@ -1193,8 +1190,8 @@ def integrate( Parameters ---------- integrand : callable or list[callable] - The composition operator on the set of functions in ``data`` that - maps that determines ``f`` in ∫ f(ρ,α,λ,ℓ) dℓ. It should accept a dictionary + The composition operator on the set of functions in ``data`` + that determines ``f`` in ∫ f(ρ,α,λ,ℓ) dℓ. It should accept a dictionary which stores the interpolated data and the arguments ``B`` and ``pitch``. pitch_inv : jnp.ndarray Shape (num alpha, num rho, num pitch). diff --git a/desc/objectives/_fast_ion.py b/desc/objectives/_fast_ion.py index b4cddbd208..bb6e020db9 100644 --- a/desc/objectives/_fast_ion.py +++ b/desc/objectives/_fast_ion.py @@ -47,6 +47,15 @@ class GammaC(_Objective): https://doi.org/10.1088/1741-4326/ac2994. Equation 16. + Notes + ----- + Performance will improve significantly by resolving these GitHub issues. + * ``1154`` Improve coordinate mapping performance + * ``1294`` Nonuniform fast transforms + * ``1303`` Patch for differentiable code with dynamic shapes + * ``1206`` Upsample data above midplane to full grid assuming stellarator symmetry + * ``1034`` Optimizers/objectives with auxiliary output + Parameters ---------- eq : Equilibrium @@ -78,7 +87,7 @@ class GammaC(_Objective): JAX this will have worse performance. Specifying a number that tightly upper bounds the number of wells will increase performance. In general, an upper bound on the number of wells - per toroidal transit is ``Aι+B`` where ``A``,``B`` are the poloidal and + per toroidal transit is ``Aι+B`` where ``A``, ``B`` are the poloidal and toroidal Fourier resolution of B, respectively, in straight-field line PEST coordinates, and ι is the rotational transform normalized by 2π. A tighter upper bound than ``num_well=(Aι+B)*num_transit`` is preferable. @@ -103,15 +112,6 @@ class GammaC(_Objective): to be evaluated by measuring decrease in Γ_c at a fixed number of toroidal transits. - Notes - ----- - Performance will improve significantly by resolving these GitHub issues. - * ``1154`` Improve coordinate mapping performance - * ``1294`` Nonuniform fast transforms - * ``1303`` Patch for differentiable code with dynamic shapes - * ``1206`` Upsample data above midplane to full grid assuming stellarator symmetry - * ``1034`` Optimizers/objectives with auxiliary output - """ __doc__ = __doc__.rstrip() + collect_docs( diff --git a/desc/objectives/_neoclassical.py b/desc/objectives/_neoclassical.py index 02501ed6cb..7324d3fd97 100644 --- a/desc/objectives/_neoclassical.py +++ b/desc/objectives/_neoclassical.py @@ -46,6 +46,15 @@ class EffectiveRipple(_Objective): V. V. Nemov, S. V. Kasilov, W. Kernbichler, M. F. Heyn. Phys. Plasmas 1 December 1999; 6 (12): 4622–4632. + Notes + ----- + Performance will improve significantly by resolving these GitHub issues. + * ``1154`` Improve coordinate mapping performance + * ``1294`` Nonuniform fast transforms + * ``1303`` Patch for differentiable code with dynamic shapes + * ``1206`` Upsample data above midplane to full grid assuming stellarator symmetry + * ``1034`` Optimizers/objectives with auxiliary output + Parameters ---------- eq : Equilibrium @@ -77,7 +86,7 @@ class EffectiveRipple(_Objective): JAX this will have worse performance. Specifying a number that tightly upper bounds the number of wells will increase performance. In general, an upper bound on the number of wells - per toroidal transit is ``Aι+B`` where ``A``,``B`` are the poloidal and + per toroidal transit is ``Aι+B`` where ``A``, ``B`` are the poloidal and toroidal Fourier resolution of B, respectively, in straight-field line PEST coordinates, and ι is the rotational transform normalized by 2π. A tighter upper bound than ``num_well=(Aι+B)*num_transit`` is preferable. @@ -91,15 +100,6 @@ class EffectiveRipple(_Objective): Number of pitch values with which to compute simultaneously. If given ``None``, then ``batch_size`` defaults to ``num_pitch``. - Notes - ----- - Performance will improve significantly by resolving these GitHub issues. - * ``1154`` Improve coordinate mapping performance - * ``1294`` Nonuniform fast transforms - * ``1303`` Patch for differentiable code with dynamic shapes - * ``1206`` Upsample data above midplane to full grid assuming stellarator symmetry - * ``1034`` Optimizers/objectives with auxiliary output - """ __doc__ = __doc__.rstrip() + collect_docs( diff --git a/docs/api_objectives.rst b/docs/api_objectives.rst index 145a2898d6..64603268e3 100644 --- a/docs/api_objectives.rst +++ b/docs/api_objectives.rst @@ -35,6 +35,16 @@ Equilibrium desc.objectives.HelicalForceBalance +Fast ion confinement +-------------------- +.. autosummary:: + :toctree: _api/objectives + :recursive: + :template: class.rst + + desc.objectives.GammaC + + Geometry -------- .. autosummary:: @@ -61,7 +71,6 @@ Neoclassical :template: class.rst desc.objectives.EffectiveRipple - desc.objectives.GammaC Omnigenity diff --git a/docs/notebooks/tutorials/EffectiveRipple.ipynb b/docs/notebooks/tutorials/EffectiveRipple.ipynb index 72feff581f..ef4119f38e 100644 --- a/docs/notebooks/tutorials/EffectiveRipple.ipynb +++ b/docs/notebooks/tutorials/EffectiveRipple.ipynb @@ -78,6 +78,7 @@ "source": [ "## Documentation\n", "Please read the full documentation of the methods to understand what the input parameters do. In Jupyter Lab, you can click on the code and press ``Shift+Tab`` to pull up the documentation. Breifly,\n", + "\n", "- The equilibrium resolution determines the spectral resolution of the FourierZernike series fit to the boundary.\n", "- The grid determines the flux surfaces to compute on and the resolution of FFTs.\n", "- The parameters ``X`` and ``Y`` determine the spectral resolution of the map between coordinates that parameterize the boundary and field line coordinates.\n", @@ -86,7 +87,6 @@ "## Plotting ripple wells\n", "\n", "- Here we plot $\\vert B\\vert$ along field lines to see the structure of the ripple wells. This is beneficial to choose the resolution for the optimization.\n", - "\n", "- Due to limitations in JAX, it is recommended to plot the field lines and pick a reasonable, yet preferably tight, upper bound on the number of ripple wells. From the plots, we see that ``num_well=10 * num_transit`` is a reasonable upper bound. By making this extra effort, the optimization will be ``Y_B/10`` times more performant. If one were to select something much less than ``10``, as shown in the next example, then it should be clear from the plot that some ripple wells are ignored, which is not desirable." ] }, @@ -134,7 +134,7 @@ " JAX this will have worse performance.\n", " Specifying a number that tightly upper bounds the number of wells will\n", " increase performance. In general, an upper bound on the number of wells\n", - " per toroidal transit is ``Aι+B`` where ``A``,``B`` are the poloidal and\n", + " per toroidal transit is ``Aι+B`` where ``A``, ``B`` are the poloidal and\n", " toroidal Fourier resolution of B, respectively, in straight-field line\n", " PEST coordinates, and ι is the rotational transform normalized by 2π.\n", " A tighter upper bound than ``num_well=(Aι+B)*num_transit`` is preferable.\n", @@ -374,7 +374,7 @@ "source": [ "## Calculating effective ripple for Heliotron\n", "\n", - "Let us do a high resolution compuation so that we are certain the optimization is successful when we compare to the optimized result later." + "Let us do a high resolution computation so that we are certain the optimization is successful when we compare to the optimized result later." ] }, { From 4097aa8242a68996f22d437a7d331d0ba8573cf6 Mon Sep 17 00:00:00 2001 From: unalmis Date: Thu, 19 Dec 2024 16:17:01 -0500 Subject: [PATCH 53/60] Fix math comment --- desc/compute/_deprecated.py | 2 +- desc/compute/_neoclassical.py | 6 +++--- desc/integrals/bounce_integral.py | 12 +++--------- 3 files changed, 7 insertions(+), 13 deletions(-) diff --git a/desc/compute/_deprecated.py b/desc/compute/_deprecated.py index bcce0db5b7..35142f268e 100644 --- a/desc/compute/_deprecated.py +++ b/desc/compute/_deprecated.py @@ -121,7 +121,7 @@ def _epsilon_32_1D(params, transforms, profiles, data, **kwargs): ) def eps_32(data): - """(∂ψ/∂ρ)⁻² B₀⁻² ∫ dλ λ⁻² ∑ⱼ Hⱼ²/Iⱼ.""" + """(∂ψ/∂ρ)⁻² B₀⁻³ ∫ dλ λ⁻² ∑ⱼ Hⱼ²/Iⱼ.""" # B₀ has units of λ⁻¹. # Nemov's ∑ⱼ Hⱼ²/Iⱼ = (∂ψ/∂ρ)² (λB₀)³ ``(H**2 / I).sum(axis=-1)``. # (λB₀)³ d(λB₀)⁻¹ = B₀² λ³ d(λ⁻¹) = -B₀² λ dλ. diff --git a/desc/compute/_neoclassical.py b/desc/compute/_neoclassical.py index f2ef2b4954..bbc3fe6293 100644 --- a/desc/compute/_neoclassical.py +++ b/desc/compute/_neoclassical.py @@ -6,7 +6,7 @@ from desc.backend import imap, jit, jnp -from ..batching import _chunk_vmapped_function +from ..batching import _eval_fun_in_chunks from ..integrals.bounce_integral import Bounce2D from ..integrals.quad_utils import chebgauss2 from ..utils import safediv @@ -121,7 +121,7 @@ def _foreach_pitch(fun, pitch_inv, batch_size): fun(pitch_inv) if (batch_size is None or batch_size >= (pitch_inv.size - 1)) # else imap(fun, pitch_inv, batch_size=batch_size).squeeze(axis=-1) # noqa: E800 - else _chunk_vmapped_function(fun, chunk_size=batch_size)(pitch_inv) + else _eval_fun_in_chunks(fun, batch_size, (0,), pitch_inv) ) @@ -199,7 +199,7 @@ def _epsilon_32(params, transforms, profiles, data, **kwargs): ) def eps_32(data): - """(∂ψ/∂ρ)⁻² B₀⁻² ∫ dλ λ⁻² ∑ⱼ Hⱼ²/Iⱼ.""" + """(∂ψ/∂ρ)⁻² B₀⁻³ ∫ dλ λ⁻² ∑ⱼ Hⱼ²/Iⱼ.""" # B₀ has units of λ⁻¹. # Nemov's ∑ⱼ Hⱼ²/Iⱼ = (∂ψ/∂ρ)² (λB₀)³ ``(H**2 / I).sum(axis=-1)``. # (λB₀)³ d(λB₀)⁻¹ = B₀² λ³ d(λ⁻¹) = -B₀² λ dλ. diff --git a/desc/integrals/bounce_integral.py b/desc/integrals/bounce_integral.py index 6adebf1667..c38c321cfd 100644 --- a/desc/integrals/bounce_integral.py +++ b/desc/integrals/bounce_integral.py @@ -1045,9 +1045,10 @@ def __init__( # Compute local splines. # Note it is simple to do FFT across field line axis, and spline # Fourier coefficients across ζ to obtain Fourier-CubicSpline of functions. - # The point of Bounce2D is to do such a 2D interpolation but also do so - # without rebuilding DESC transforms each time an objective is computed. + # The point of Bounce2D is to do such a 2D interpolation without + # rebuilding DESC transforms each time an objective is computed. self._zeta = grid.compress(grid.nodes[:, 2], surface_label="zeta") + # Shape is (num alpha, num rho, N - 1, -1). self._B = jnp.moveaxis( CubicHermiteSpline( x=self._zeta, @@ -1059,13 +1060,6 @@ def __init__( source=(0, 1), destination=(-1, -2), ) - # Shape (num alpha, num rho, N - 1, -1). - # Polynomial coefficients of the spline of |B| in local power basis. - # Last axis enumerates the coefficients of power series. For a polynomial - # given by ∑ᵢⁿ cᵢ xⁱ, coefficient cᵢ is stored at ``B[...,n-i]``. - # Third axis enumerates the polynomials that compose a particular spline. - # Second axis enumerates flux surfaces. - # First axis enumerates field lines of a particular flux surface. self._dB_dz = polyder_vec(self._B) @staticmethod From 30988de84108636f5268efd35cb18b14d9d8e77a Mon Sep 17 00:00:00 2001 From: unalmis Date: Thu, 19 Dec 2024 16:29:44 -0500 Subject: [PATCH 54/60] Fix math comment --- desc/compute/_fast_ion.py | 4 ++-- desc/compute/_neoclassical.py | 2 +- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/desc/compute/_fast_ion.py b/desc/compute/_fast_ion.py index 43f388c88c..f86c30bd30 100644 --- a/desc/compute/_fast_ion.py +++ b/desc/compute/_fast_ion.py @@ -143,7 +143,7 @@ def _Gamma_c(params, transforms, profiles, data, **kwargs): ) def Gamma_c(data): - """∫ dλ ∑ⱼ [v τ γ_c²]ⱼ π²/4.""" + """∫ dλ 〈 ∑ⱼ [v τ γ_c²]ⱼ 〉 π²/4.""" bounce = Bounce2D( grid, data, @@ -297,7 +297,7 @@ def _Gamma_c_Velasco(params, transforms, profiles, data, **kwargs): ) def Gamma_c(data): - """∫ dλ ∑ⱼ [v τ γ_c²]ⱼ π²/4.""" + """∫ dλ 〈 ∑ⱼ [v τ γ_c²]ⱼ 〉 π²/4.""" bounce = Bounce2D( grid, data, diff --git a/desc/compute/_neoclassical.py b/desc/compute/_neoclassical.py index bbc3fe6293..6eb70d5470 100644 --- a/desc/compute/_neoclassical.py +++ b/desc/compute/_neoclassical.py @@ -199,7 +199,7 @@ def _epsilon_32(params, transforms, profiles, data, **kwargs): ) def eps_32(data): - """(∂ψ/∂ρ)⁻² B₀⁻³ ∫ dλ λ⁻² ∑ⱼ Hⱼ²/Iⱼ.""" + """(∂ψ/∂ρ)⁻² B₀⁻³ ∫ dλ λ⁻² 〈 ∑ⱼ Hⱼ²/Iⱼ 〉.""" # B₀ has units of λ⁻¹. # Nemov's ∑ⱼ Hⱼ²/Iⱼ = (∂ψ/∂ρ)² (λB₀)³ ``(H**2 / I).sum(axis=-1)``. # (λB₀)³ d(λB₀)⁻¹ = B₀² λ³ d(λ⁻¹) = -B₀² λ dλ. From 3fd85a16aadde22b4c9c20130fa1f0a62d7bd836 Mon Sep 17 00:00:00 2001 From: unalmis Date: Thu, 19 Dec 2024 17:39:53 -0500 Subject: [PATCH 55/60] Fix docs --- desc/integrals/bounce_integral.py | 259 ++++++++++++++---------------- 1 file changed, 125 insertions(+), 134 deletions(-) diff --git a/desc/integrals/bounce_integral.py b/desc/integrals/bounce_integral.py index c38c321cfd..f4f1f17983 100644 --- a/desc/integrals/bounce_integral.py +++ b/desc/integrals/bounce_integral.py @@ -69,6 +69,10 @@ def _swap_pl(f): return jnp.swapaxes(f, 0, -2) +default_quad = leggauss(32) +default_auto = (automorphism_sin, grad_automorphism_sin) + + class Bounce2D(Bounce): """Computes bounce integrals using pseudo-spectral methods. @@ -111,12 +115,80 @@ class Bounce2D(Bounce): See Also -------- - Bounce1D : Uses one-dimensional local spline methods for the same task. + Bounce1D + ``Bounce1D`` uses one-dimensional splines for the same task. + ``Bounce2D`` solves the dominant cost of optimization objectives in DESC + relying on ``Bounce1D``: interpolating FourierZernike transforms to an + optimization-step dependent grid that is dense enough for function + approximation with local splines. + The function approximation done here requires FourierZernike transforms on a + fixed grid with typical resolution, using FFTs to compute the map between + coordinate systems. + The faster convergence of spectral methods requires a less dense + grid to interpolate onto from FourierZernike transforms. + 2D interpolation enables tracing the field line for many toroidal transits. + The drawback is that evaluating a Fourier series with resolution F at Q + non-uniform quadrature points takes 𝒪(-(F+Q) log(F) log(ε)) time + whereas cubic splines take 𝒪(C Q) time. However, as NFP increases, + F decreases whereas C increases. Also, Q >> F and Q >> C. + + Parameters + ---------- + grid : Grid + Tensor-product grid in (ρ, θ, ζ) with uniformly spaced nodes + (θ, ζ) ∈ [0, 2π) × [0, 2π/NFP). The ζ coordinates (the unique values prior + to taking the tensor-product) must be strictly increasing. + Below shape notation defines ``M=grid.num_theta`` and ``N=grid.num_zeta``. + ``M`` and ``N`` are preferably powers of two. + data : dict[str, jnp.ndarray] + Data evaluated on ``grid``. + Must include names in ``Bounce2D.required_names``. + theta : jnp.ndarray + Shape (num rho, X, Y). + DESC coordinates θ sourced from the Clebsch coordinates + ``FourierChebyshevSeries.nodes(X,Y,rho,domain=(0,2*jnp.pi))``. + Use the ``Bounce2D.compute_theta`` method to obtain this. + ``X`` and ``Y`` are preferably powers of two. + Y_B : int + Desired resolution for algorithm to compute bounce points. + Default is double ``Y``. + alpha : float + Starting field line poloidal label. + num_transit : int + Number of toroidal transits to follow field line. + quad : tuple[jnp.ndarray] + Quadrature points xₖ and weights wₖ for the approximate evaluation of an + integral ∫₋₁¹ g(x) dx = ∑ₖ wₖ g(xₖ). Default is 32 points. + automorphism : tuple[Callable] or None + The first callable should be an automorphism of the real interval [-1, 1]. + The second callable should be the derivative of the first. This map defines + a change of variable for the bounce integral. The choice made for the + automorphism will affect the performance of the quadrature. + Bref : float + Optional. Reference magnetic field strength for normalization. + Lref : float + Optional. Reference length scale for normalization. + is_reshaped : bool + Whether the arrays in ``data`` are already reshaped to the expected form of + shape (..., M, N) or (num rho, M, N). This option can be used to iteratively + compute bounce integrals one flux surface at a time, reducing memory usage + To do so, set to true and provide only those axes of the reshaped data. + Default is false. + is_fourier : bool + If true, then it is assumed that ``data`` holds Fourier transforms + as returned by ``Bounce2D.fourier``. Default is false. + check : bool + Flag for debugging. Must be false for JAX transformations. + spline : bool + Whether to use cubic splines to compute bounce points. + Default is true, because the algorithm for efficient root-finding on + Chebyshev series algorithm is not yet implemented. + When using splines, it is recommended to reduce the ``num_well`` + parameter in the ``points`` method from ``3*Y_B*num_transit`` to + at most ``Y_B*num_transit``. """ - # Notes - # ----- # For applications which reduce to computing a nonlinear function of distance # along field lines between bounce points, it is required to identify these # points with field-line-following coordinates. (In the special case of a linear @@ -196,24 +268,6 @@ class Bounce2D(Bounce): # Fast transforms are used where possible. Fast multipoint methods are not # implemented. For non-uniform interpolation, MMTs are used. It will be # worthwhile to use the inverse non-uniform fast transforms. - # - # ``Bounce2D`` solves the dominant cost of optimization objectives relying on - # ``Bounce1D``: interpolating DESC's 3D transforms to an optimization-step - # dependent grid that is dense enough for function approximation with local - # splines. This is sometimes referred to as off-grid interpolation in literature; - # it is often a bottleneck. - # - # * The function approximation done here requires DESC transforms on a fixed - # grid with typical resolution, using FFTs to compute the map between - # coordinate systems. This enables evaluating functions along field lines - # without root-finding. - # * The faster convergence of spectral methods requires a less dense - # grid to interpolate onto from DESC's 3D transforms. - # * 2D interpolation enables tracing the field line for many toroidal transits. - # * The drawback is that evaluating a Fourier series with resolution F at Q - # non-uniform quadrature points takes 𝒪([F+Q] log[F] log[1/ε]) time - # whereas cubic splines take 𝒪(C Q) time. However, as NFP increases, - # F decreases whereas C increases. Also, Q >> F and Q >> C. required_names = ["B^zeta", "|B|", "iota"] @@ -227,8 +281,8 @@ def __init__( # TODO (#1309): Allow multiple starting labels for near-rational surfaces. # Can just add axis for piecewise chebyshev stuff cheb. alpha=0.0, - quad=leggauss(32), - automorphism=(automorphism_sin, grad_automorphism_sin), + quad=default_quad, + automorphism=default_auto, *, Bref=1.0, Lref=1.0, @@ -237,66 +291,7 @@ def __init__( check=False, spline=True, ): - """Returns an object to compute bounce integrals. - - Notes - ----- - Performance may improve if ``M``,``N``,``X``,``Y``,``Y_B`` are powers of two. - - Parameters - ---------- - grid : Grid - Tensor-product grid in (ρ, θ, ζ) with uniformly spaced nodes - (θ, ζ) ∈ [0, 2π) × [0, 2π/NFP). The ζ coordinates (the unique values prior - to taking the tensor-product) must be strictly increasing. - Below shape notation defines ``M=grid.num_theta`` and ``N=grid.num_zeta``. - data : dict[str, jnp.ndarray] - Data evaluated on ``grid``. - Must include names in ``Bounce2D.required_names``. - theta : jnp.ndarray - Shape (num rho, X, Y). - DESC coordinates θ sourced from the Clebsch coordinates - ``FourierChebyshevSeries.nodes(X,Y,rho,domain=(0,2*jnp.pi))``. - Use the ``Bounce2D.compute_theta`` method to obtain this. - Y_B : int - Desired resolution for algorithm to compute bounce points. - Default is double ``Y``. - alpha : float - Starting field line poloidal label. - num_transit : int - Number of toroidal transits to follow field line. - quad : tuple[jnp.ndarray] - Quadrature points xₖ and weights wₖ for the approximate evaluation of an - integral ∫₋₁¹ g(x) dx = ∑ₖ wₖ g(xₖ). Default is 32 points. - automorphism : tuple[Callable] or None - The first callable should be an automorphism of the real interval [-1, 1]. - The second callable should be the derivative of the first. This map defines - a change of variable for the bounce integral. The choice made for the - automorphism will affect the performance of the quadrature method. - Bref : float - Optional. Reference magnetic field strength for normalization. - Lref : float - Optional. Reference length scale for normalization. - is_reshaped : bool - Whether the arrays in ``data`` are already reshaped to the expected form of - shape (..., M, N) or (num rho, M, N). This option can be used to iteratively - compute bounce integrals one flux surface at a time, reducing memory usage - To do so, set to true and provide only those axes of the reshaped data. - Default is false. - is_fourier : bool - If true, then it is assumed that ``data`` holds Fourier transforms - as returned by ``Bounce2D.fourier``. Default is false. - check : bool - Flag for debugging. Must be false for JAX transformations. - spline : bool - Whether to use cubic splines to compute bounce points. - Default is true, because the algorithm for efficient root-finding on - Chebyshev series algorithm is not yet implemented. - When using splines, it is recommended to reduce the ``num_well`` - parameter in the ``points`` method from ``3*Y_B*num_transit`` to - at most ``Y_B*num_transit``. - - """ + """Returns an object to compute bounce integrals.""" is_reshaped = is_reshaped or is_fourier assert grid.can_fft2 self._M = grid.num_theta @@ -345,7 +340,7 @@ def __init__( @staticmethod def reshape_data(grid, f): - """Reshape ``data`` arrays for acceptable input to ``integrate``. + """Reshape arrays for acceptable input to ``integrate``. Parameters ---------- @@ -952,25 +947,56 @@ class Bounce1D(Bounce): the particle's guiding center trajectory traveling in the direction of increasing field-line-following coordinate ζ. - Notes - ----- - The function approximation in ``Bounce1D`` is ignorant that the objects to - approximate are defined on a bounded subset of ℝ². Instead, the domain is - projected to ℝ, where information sampled about the function at infinity - cannot support reconstruction of the function near the origin. As the - functions of interest do not vanish at infinity, pseudo-spectral techniques - are not used. Instead, function approximation is done with local splines. - This is useful if one can efficiently obtain data along field lines and the - number of toroidal transits to follow a field line is not large. - See Also -------- - Bounce2D : Uses pseudo-spectral methods for the same task. + Bounce2D + ``Bounce2D`` uses 2D pseudo-spectral methods for the same task. + The function approximation in ``Bounce1D`` is ignorant + that the objects to approximate are defined on a bounded subset of ℝ². + The domain is projected to ℝ, where information sampled about the function + at infinity cannot support reconstruction of the function near the origin. + As the functions of interest do not vanish at infinity, pseudo-spectral + techniques are not used. Instead, function approximation is done with local + splines. This is useful if one can efficiently obtain data along field lines + and the number of toroidal transits to follow a field line is not large. Examples -------- See ``tests/test_integrals.py::TestBounce::test_bounce1d_checks``. + Parameters + ---------- + grid : Grid + Tensor-product grid in (ρ, α, ζ) Clebsch coordinates. + The ζ coordinates (the unique values prior to taking the tensor-product) + must be strictly increasing and preferably uniformly spaced. These are used + as knots to construct splines. A reference knot density is 100 knots per + toroidal transit. + data : dict[str, jnp.ndarray] + Data evaluated on ``grid``. + Must include names in ``Bounce1D.required_names``. + quad : tuple[jnp.ndarray] + Quadrature points xₖ and weights wₖ for the approximate evaluation of an + integral ∫₋₁¹ g(x) dx = ∑ₖ wₖ g(xₖ). Default is 32 points. + automorphism : tuple[Callable] or None + The first callable should be an automorphism of the real interval [-1, 1]. + The second callable should be the derivative of the first. This map defines + a change of variable for the bounce integral. The choice made for the + automorphism will affect the performance of the quadrature. + Bref : float + Optional. Reference magnetic field strength for normalization. + Lref : float + Optional. Reference length scale for normalization. + is_reshaped : bool + Whether the arrays in ``data`` are already reshaped to the expected form of + shape (..., num zeta) or (..., num rho, num zeta) or + (num alpha, num rho, num zeta). This option can be used to iteratively + compute bounce integrals one field line or one flux surface at a time, + respectively, reducing memory usage. To do so, set to true and provide + only those axes of the reshaped data. Default is false. + check : bool + Flag for debugging. Must be false for JAX transformations. + """ required_names = ["B^zeta", "B^zeta_z|r,a", "|B|", "|B|_z|r,a"] @@ -979,50 +1005,15 @@ def __init__( self, grid, data, - quad=leggauss(32), - automorphism=(automorphism_sin, grad_automorphism_sin), + quad=default_quad, + automorphism=default_auto, *, Bref=1.0, Lref=1.0, is_reshaped=False, check=False, ): - """Returns an object to compute bounce integrals. - - Parameters - ---------- - grid : Grid - Tensor-product grid in (ρ, α, ζ) Clebsch coordinates. - The ζ coordinates (the unique values prior to taking the tensor-product) - must be strictly increasing and preferably uniformly spaced. These are used - as knots to construct splines. A reference knot density is 100 knots per - toroidal transit. - data : dict[str, jnp.ndarray] - Data evaluated on ``grid``. - Must include names in ``Bounce1D.required_names``. - quad : tuple[jnp.ndarray] - Quadrature points xₖ and weights wₖ for the approximate evaluation of an - integral ∫₋₁¹ g(x) dx = ∑ₖ wₖ g(xₖ). Default is 32 points. - automorphism : tuple[Callable] or None - The first callable should be an automorphism of the real interval [-1, 1]. - The second callable should be the derivative of the first. This map defines - a change of variable for the bounce integral. The choice made for the - automorphism will affect the performance of the quadrature method. - Bref : float - Optional. Reference magnetic field strength for normalization. - Lref : float - Optional. Reference length scale for normalization. - is_reshaped : bool - Whether the arrays in ``data`` are already reshaped to the expected form of - shape (..., num zeta) or (..., num rho, num zeta) or - (num alpha, num rho, num zeta). This option can be used to iteratively - compute bounce integrals one field line or one flux surface at a time, - respectively, reducing memory usage. To do so, set to true and provide - only those axes of the reshaped data. Default is false. - check : bool - Flag for debugging. Must be false for JAX transformations. - - """ + """Returns an object to compute bounce integrals.""" assert grid.is_meshgrid self._data = { # Strictly increasing zeta knots enforces dζ > 0. From 0a4c3eb5decd1f3d6ac2b26843b0fe5bd81a47c4 Mon Sep 17 00:00:00 2001 From: unalmis Date: Fri, 20 Dec 2024 04:34:18 -0500 Subject: [PATCH 56/60] adding back method useful for nan debugging --- desc/integrals/_bounce_utils.py | 54 +++++++++++++++++++++++++++++-- desc/integrals/bounce_integral.py | 10 +++--- tests/test_integrals.py | 17 +++------- 3 files changed, 62 insertions(+), 19 deletions(-) diff --git a/desc/integrals/_bounce_utils.py b/desc/integrals/_bounce_utils.py index 4680269a4a..1552633ff1 100644 --- a/desc/integrals/_bounce_utils.py +++ b/desc/integrals/_bounce_utils.py @@ -4,7 +4,7 @@ from interpax import CubicSpline, PPoly from matplotlib import pyplot as plt -from desc.backend import dct, imap, jnp +from desc.backend import dct, imap, jnp, softargmax from desc.integrals._interp_utils import ( cheb_from_dct, cheb_pts, @@ -210,7 +210,7 @@ def bounce_points( # Transform out of local power basis expansion. intersect = flatten_matrix(intersect + knots[:-1, jnp.newaxis]) # New versions of JAX only like static sentinels. - sentinel = -10000000.0 # instead of knots[0] - 1 + sentinel = -100000.0 # instead of knots[0] - 1 z1 = take_mask(intersect, is_z1, size=num_well, fill_value=sentinel) z2 = take_mask(intersect, is_z2, size=num_well, fill_value=sentinel) @@ -220,6 +220,7 @@ def bounce_points( z2 = jnp.where(mask, z2, 0.0) if check: + errorif(jnp.min(knots) <= sentinel, msg="Decrease sentinel.") _check_bounce_points(z1, z2, pitch_inv, knots, B, plot, **kwargs) return z1, z2 @@ -879,6 +880,55 @@ def interp_fft_to_argmin( ) +# This is kept for the inevitable nan debugging. +def _interp_fft_to_argmin_soft( + NFP, T, h, points, knots, g, dg_dz, is_fourier=False, M=None, N=None, beta=-1e4 +): + """Interpolate ``h`` to the deepest point of ``g`` between ``z1`` and ``z2``. + + Let E = {ζ ∣ ζ₁ < ζ < ζ₂} and A = argmin_E g(ζ). Returns mean_A h(ζ). + + Parameters + ---------- + beta : float + More negative gives exponentially better approximation. + The argmin operation is defined as the expected value under the softmin + probability distribution. + s : x ∈ ℝⁿ, β ∈ ℝ ↦ [eᵝˣ⁽¹⁾, …, eᵝˣ⁽ⁿ⁾] / ∑ₖ₌₁ⁿ eᵝˣ⁽ᵏ⁾ + + """ + ext, g_ext = _get_extrema(knots, g, dg_dz, sentinel=0) + theta = T.eval1d(ext) + if is_fourier: + h = irfft2_non_uniform( + theta, + ext, + h[..., jnp.newaxis, :, :], + M, + N, + domain1=(0, 2 * jnp.pi / NFP), + axes=(-1, -2), + ) + else: + h = interp_rfft2( + theta, + ext, + h[..., jnp.newaxis, :, :], + domain1=(0, 2 * jnp.pi / NFP), + axes=(-1, -2), + ) + z1, z2 = points + where = jnp.where( + (z1[..., jnp.newaxis] < ext[..., jnp.newaxis, :]) + & (ext[..., jnp.newaxis, :] < z2[..., jnp.newaxis]), + g_ext[..., jnp.newaxis, :], + jnp.finfo(jnp.float16).max, + ) + # softargmax does the proper shift to compute softargmax(x - max(x)) + assert beta < 0 + return jnp.linalg.vecdot(softargmax(beta * where, axis=-1), h[..., jnp.newaxis, :]) + + # TODO (#568): Generalize this beyond ζ = ϕ or just map to Clebsch with ϕ. def get_fieldline(alpha_0, iota, num_transit, period): """Get sequence of poloidal coordinates A = (α₀, α₁, …, αₘ₋₁) of field line. diff --git a/desc/integrals/bounce_integral.py b/desc/integrals/bounce_integral.py index f4f1f17983..9de5e8a645 100644 --- a/desc/integrals/bounce_integral.py +++ b/desc/integrals/bounce_integral.py @@ -277,7 +277,7 @@ def __init__( data, theta, Y_B=None, - num_transit=32, + num_transit=20, # TODO (#1309): Allow multiple starting labels for near-rational surfaces. # Can just add axis for piecewise chebyshev stuff cheb. alpha=0.0, @@ -947,6 +947,10 @@ class Bounce1D(Bounce): the particle's guiding center trajectory traveling in the direction of increasing field-line-following coordinate ζ. + Examples + -------- + See ``tests/test_integrals.py::TestBounce::test_bounce1d_checks``. + See Also -------- Bounce2D @@ -960,10 +964,6 @@ class Bounce1D(Bounce): splines. This is useful if one can efficiently obtain data along field lines and the number of toroidal transits to follow a field line is not large. - Examples - -------- - See ``tests/test_integrals.py::TestBounce::test_bounce1d_checks``. - Parameters ---------- grid : Grid diff --git a/tests/test_integrals.py b/tests/test_integrals.py index 1ff569ae4f..732f93fb63 100644 --- a/tests/test_integrals.py +++ b/tests/test_integrals.py @@ -35,7 +35,7 @@ surface_variance, virtual_casing_biot_savart, ) -from desc.integrals._bounce_utils import _get_extrema, bounce_points, interp_to_argmin +from desc.integrals._bounce_utils import _get_extrema, bounce_points from desc.integrals._interp_utils import fourier_pts from desc.integrals.basis import FourierChebyshevSeries from desc.integrals.quad_utils import ( @@ -1181,16 +1181,9 @@ def dg_dz(z): data = dict.fromkeys(Bounce1D.required_names, g(zeta)) data["|B|_z|r,a"] = dg_dz(zeta) bounce = Bounce1D(Grid.create_meshgrid([1, 0, zeta], coordinates="raz"), data) + points = np.array(0, ndmin=2), np.array(2 * np.pi, ndmin=2) np.testing.assert_allclose( - interp_to_argmin( - h=h(zeta), - points=(np.array(0, ndmin=2), np.array(2 * np.pi, ndmin=2)), - knots=zeta, - g=bounce._B, - dg_dz=bounce._dB_dz, - ), - h(argmin_g), - rtol=1e-3, + bounce.interp_to_argmin(h(zeta), points), h(argmin_g), rtol=1e-3 ) @staticmethod @@ -1501,10 +1494,10 @@ def g(z): num_transit=1, spline=True, ) + points = np.array(0, ndmin=2), np.array(2 * np.pi, ndmin=2) np.testing.assert_allclose( bounce.interp_to_argmin( - grid.meshgrid_reshape(h(grid.nodes[:, 2]), "rtz"), - (np.array(0, ndmin=2), np.array(2 * np.pi, ndmin=2)), + grid.meshgrid_reshape(h(grid.nodes[:, 2]), "rtz"), points ), h(argmin_g), rtol=1e-6, From d3c84d3c1d066b0ea73e793d876bd2b7fe5b79f2 Mon Sep 17 00:00:00 2001 From: unalmis Date: Fri, 20 Dec 2024 04:36:08 -0500 Subject: [PATCH 57/60] Remove unneded min --- desc/integrals/_bounce_utils.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/desc/integrals/_bounce_utils.py b/desc/integrals/_bounce_utils.py index 1552633ff1..e59b1a7ade 100644 --- a/desc/integrals/_bounce_utils.py +++ b/desc/integrals/_bounce_utils.py @@ -220,7 +220,7 @@ def bounce_points( z2 = jnp.where(mask, z2, 0.0) if check: - errorif(jnp.min(knots) <= sentinel, msg="Decrease sentinel.") + errorif(knots[0] <= sentinel, msg="Decrease sentinel.") _check_bounce_points(z1, z2, pitch_inv, knots, B, plot, **kwargs) return z1, z2 From 735bf21debf2e9f8a9483f07c43ae9456dbb0b87 Mon Sep 17 00:00:00 2001 From: unalmis Date: Sat, 21 Dec 2024 02:29:10 -0500 Subject: [PATCH 58/60] Fix batching --- desc/batching.py | 9 ++ desc/compute/_deprecated.py | 69 +++++------ desc/compute/_fast_ion.py | 41 ++++--- desc/compute/_neoclassical.py | 62 +++++----- desc/integrals/_bounce_utils.py | 108 +++++++++--------- desc/integrals/bounce_integral.py | 52 +++++---- desc/objectives/_fast_ion.py | 25 ++-- desc/objectives/_neoclassical.py | 29 +++-- desc/objectives/_stability.py | 2 + .../notebooks/tutorials/EffectiveRipple.ipynb | 4 +- tests/test_fast_ion.py | 2 - tests/test_integrals.py | 12 +- tests/test_neoclassical.py | 1 - 13 files changed, 217 insertions(+), 199 deletions(-) diff --git a/desc/batching.py b/desc/batching.py index ec45b29aa5..8c0a37ccbb 100644 --- a/desc/batching.py +++ b/desc/batching.py @@ -174,6 +174,15 @@ def _chunk_vmapped_function( return functools.partial(_eval_fun_in_chunks, vmapped_fun, chunk_size, argnums) +def batch_map(fun, fun_input, batch_size): + """Compute vectorized ``fun`` in batches.""" + return ( + fun(fun_input) + if batch_size is None + else _eval_fun_in_chunks(fun, batch_size, (0,), fun_input) + ) + + def _parse_in_axes(in_axes): if isinstance(in_axes, int): in_axes = (in_axes,) diff --git a/desc/compute/_deprecated.py b/desc/compute/_deprecated.py index 35142f268e..afb70b8c99 100644 --- a/desc/compute/_deprecated.py +++ b/desc/compute/_deprecated.py @@ -64,7 +64,7 @@ def foreach_rho(x): for name in Bounce1D.required_names: fun_data[name] = data[name] for name in fun_data: - fun_data[name] = Bounce1D.reshape_data(grid, fun_data[name]) + fun_data[name] = Bounce1D.reshape(grid, fun_data[name]) out = imap(foreach_rho, fun_data) # Simple mean over α rather than integrating over α and dividing by 2π # (i.e. f.T.dot(dα) / dα.sum()), because when the toroidal angle extends @@ -115,7 +115,7 @@ def _epsilon_32_1D(params, transforms, profiles, data, **kwargs): """ # noqa: unused dependency num_well = kwargs.get("num_well", None) - num_pitch = kwargs.get("num_pitch", 50) + num_pitch = kwargs.get("num_pitch", 51) quad = ( kwargs["quad"] if "quad" in kwargs else chebgauss2(kwargs.get("num_quad", 32)) ) @@ -190,7 +190,7 @@ def _effective_ripple_1D(params, transforms, profiles, data, **kwargs): @register_compute_fun( name="deprecated(Gamma_c)", label=( - # Γ_c = π/(8√2) ∫dλ 〈 ∑ⱼ [v τ γ_c²]ⱼ 〉 + # Γ_c = π/(8√2) ∫ dλ 〈 ∑ⱼ [v τ γ_c²]ⱼ 〉 "\\Gamma_c = \\frac{\\pi}{8 \\sqrt{2}} " "\\int d\\lambda \\langle \\sum_j (v \\tau \\gamma_c^2)_j \\rangle" ), @@ -282,29 +282,24 @@ def Gamma_c(data): ) grid = transforms["grid"].source_grid - data["deprecated(Gamma_c)"] = ( - _compute( - Gamma_c, - fun_data={ - "|grad(psi)|*kappa_g": data["|grad(psi)|"] * data["kappa_g"], - "|grad(rho)|*|e_alpha|r,p|": data["|grad(rho)|"] - * data["|e_alpha|r,p|"], - "|B|_r|v,p": data["|B|_r|v,p"], - "K": data["iota_r"] - * dot(cross(data["grad(psi)"], data["b"]), data["grad(phi)"]) - - ( - 2 * data["|B|_r|v,p"] - - data["|B|"] * data["B^phi_r|v,p"] / data["B^phi"] - ), - }, - data=data, - grid=grid, - num_pitch=num_pitch, - simp=False, - ) - / data["fieldline length"] - / (2**1.5 * jnp.pi) - ) + data["deprecated(Gamma_c)"] = _compute( + Gamma_c, + fun_data={ + "|grad(psi)|*kappa_g": data["|grad(psi)|"] * data["kappa_g"], + "|grad(rho)|*|e_alpha|r,p|": data["|grad(rho)|"] * data["|e_alpha|r,p|"], + "|B|_r|v,p": data["|B|_r|v,p"], + "K": data["iota_r"] + * dot(cross(data["grad(psi)"], data["b"]), data["grad(phi)"]) + - ( + 2 * data["|B|_r|v,p"] + - data["|B|"] * data["B^phi_r|v,p"] / data["B^phi"] + ), + }, + data=data, + grid=grid, + num_pitch=num_pitch, + simp=False, + ) / (data["fieldline length"] * 2**1.5 * jnp.pi) return data @@ -317,7 +312,7 @@ def _gbdrift(data, B, pitch): @register_compute_fun( name="deprecated(Gamma_c Velasco)", label=( - # Γ_c = π/(8√2) ∫dλ 〈 ∑ⱼ [v τ γ_c²]ⱼ 〉 + # Γ_c = π/(8√2) ∫ dλ 〈 ∑ⱼ [v τ γ_c²]ⱼ 〉 "\\Gamma_c = \\frac{\\pi}{8 \\sqrt{2}} " "\\int d\\lambda \\langle \\sum_j (v \\tau \\gamma_c^2)_j \\rangle" ), @@ -376,16 +371,12 @@ def Gamma_c(data): ) grid = transforms["grid"].source_grid - data["deprecated(Gamma_c Velasco)"] = ( - _compute( - Gamma_c, - fun_data={"cvdrift0": data["cvdrift0"], "gbdrift": data["gbdrift"]}, - data=data, - grid=grid, - num_pitch=num_pitch, - simp=False, - ) - / data["fieldline length"] - / (2**1.5 * jnp.pi) - ) + data["deprecated(Gamma_c Velasco)"] = _compute( + Gamma_c, + fun_data={"cvdrift0": data["cvdrift0"], "gbdrift": data["gbdrift"]}, + data=data, + grid=grid, + num_pitch=num_pitch, + simp=False, + ) / (data["fieldline length"] * 2**1.5 * jnp.pi) return data diff --git a/desc/compute/_fast_ion.py b/desc/compute/_fast_ion.py index f86c30bd30..c28662688a 100644 --- a/desc/compute/_fast_ion.py +++ b/desc/compute/_fast_ion.py @@ -6,6 +6,7 @@ from desc.backend import jit, jnp +from ..batching import batch_map from ..integrals.bounce_integral import Bounce2D from ..integrals.quad_utils import ( automorphism_sin, @@ -13,7 +14,7 @@ grad_automorphism_sin, ) from ..utils import cross, dot, safediv -from ._neoclassical import _bounce_doc, _compute, _foreach_pitch +from ._neoclassical import _bounce_doc, _compute from .data_index import register_compute_fun # We rewrite equivalents of Nemov et al.'s expressions (21, 22) to resolve @@ -58,7 +59,7 @@ def _drift2(data, B, pitch): @register_compute_fun( name="Gamma_c", label=( - # Γ_c = π/(8√2) ∫dλ 〈 ∑ⱼ [v τ γ_c²]ⱼ 〉 + # Γ_c = π/(8√2) ∫ dλ 〈 ∑ⱼ [v τ γ_c²]ⱼ 〉 "\\Gamma_c = \\frac{\\pi}{8 \\sqrt{2}} " "\\int d\\lambda \\langle \\sum_j (v \\tau \\gamma_c^2)_j \\rangle" ), @@ -98,7 +99,8 @@ def _drift2(data, B, pitch): "num_well", "num_quad", "num_pitch", - "batch_size", + "pitch_batch_size", + "surf_batch_size", "spline", ], ) @@ -128,7 +130,11 @@ def _Gamma_c(params, transforms, profiles, data, **kwargs): num_transit = kwargs.get("num_transit", 20) num_pitch = kwargs.get("num_pitch", 64) num_well = kwargs.get("num_well", Y_B * num_transit) - batch_size = kwargs.get("batch_size", None) + pitch_batch_size = kwargs.get("pitch_batch_size", None) + surf_batch_size = kwargs.get("surf_batch_size", 1) + assert ( + surf_batch_size == 1 or pitch_batch_size is None + ), f"Expected pitch_batch_size to be None, got {pitch_batch_size}." spline = kwargs.get("spline", True) fieldline_quad = ( kwargs["fieldline_quad"] if "fieldline_quad" in kwargs else leggauss(Y_B // 2) @@ -143,7 +149,6 @@ def _Gamma_c(params, transforms, profiles, data, **kwargs): ) def Gamma_c(data): - """∫ dλ 〈 ∑ⱼ [v τ γ_c²]ⱼ 〉 π²/4.""" bounce = Bounce2D( grid, data, @@ -179,11 +184,11 @@ def fun(pitch_inv): return jnp.sum(v_tau * gamma_c**2, axis=-1) return jnp.sum( - _foreach_pitch(fun, data["pitch_inv"], batch_size) + batch_map(fun, data["pitch_inv"], pitch_batch_size) * data["pitch_inv weight"] / data["pitch_inv"] ** 2, axis=-1, - ) / bounce.compute_fieldline_length(fieldline_quad) + ) / (bounce.compute_fieldline_length(fieldline_quad) * 2**1.5 * jnp.pi) grid = transforms["grid"] # It is assumed the grid is sufficiently dense to reconstruct |B|, @@ -210,7 +215,8 @@ def fun(pitch_inv): grid=grid, num_pitch=num_pitch, simp=False, - ) / (2**1.5 * jnp.pi) + surf_batch_size=surf_batch_size, + ) return data @@ -231,7 +237,7 @@ def _gbdrift(data, B, pitch): @register_compute_fun( name="Gamma_c Velasco", label=( - # Γ_c = π/(8√2) ∫dλ 〈 ∑ⱼ [v τ γ_c²]ⱼ 〉 + # Γ_c = π/(8√2) ∫ dλ 〈 ∑ⱼ [v τ γ_c²]ⱼ 〉 "\\Gamma_c = \\frac{\\pi}{8 \\sqrt{2}} " "\\int d\\lambda \\langle \\sum_j (v \\tau \\gamma_c^2)_j \\rangle" ), @@ -264,7 +270,8 @@ def _gbdrift(data, B, pitch): "num_well", "num_quad", "num_pitch", - "batch_size", + "pitch_batch_size", + "surf_batch_size", "spline", ], ) @@ -282,7 +289,11 @@ def _Gamma_c_Velasco(params, transforms, profiles, data, **kwargs): num_transit = kwargs.get("num_transit", 20) num_pitch = kwargs.get("num_pitch", 64) num_well = kwargs.get("num_well", Y_B * num_transit) - batch_size = kwargs.get("batch_size", None) + pitch_batch_size = kwargs.get("pitch_batch_size", None) + surf_batch_size = kwargs.get("surf_batch_size", 1) + assert ( + surf_batch_size == 1 or pitch_batch_size is None + ), f"Expected pitch_batch_size to be None, got {pitch_batch_size}." spline = kwargs.get("spline", True) fieldline_quad = ( kwargs["fieldline_quad"] if "fieldline_quad" in kwargs else leggauss(Y_B // 2) @@ -297,7 +308,6 @@ def _Gamma_c_Velasco(params, transforms, profiles, data, **kwargs): ) def Gamma_c(data): - """∫ dλ 〈 ∑ⱼ [v τ γ_c²]ⱼ 〉 π²/4.""" bounce = Bounce2D( grid, data, @@ -323,11 +333,11 @@ def fun(pitch_inv): return jnp.sum(v_tau * gamma_c**2, axis=-1) return jnp.sum( - _foreach_pitch(fun, data["pitch_inv"], batch_size) + batch_map(fun, data["pitch_inv"], pitch_batch_size) * data["pitch_inv weight"] / data["pitch_inv"] ** 2, axis=-1, - ) / bounce.compute_fieldline_length(fieldline_quad) + ) / (bounce.compute_fieldline_length(fieldline_quad) * 2**1.5 * jnp.pi) grid = transforms["grid"] data["Gamma_c Velasco"] = _compute( @@ -342,5 +352,6 @@ def fun(pitch_inv): grid=grid, num_pitch=num_pitch, simp=False, - ) / (2**1.5 * jnp.pi) + surf_batch_size=surf_batch_size, + ) return data diff --git a/desc/compute/_neoclassical.py b/desc/compute/_neoclassical.py index 6eb70d5470..40e9f252b4 100644 --- a/desc/compute/_neoclassical.py +++ b/desc/compute/_neoclassical.py @@ -4,9 +4,9 @@ from orthax.legendre import leggauss -from desc.backend import imap, jit, jnp +from desc.backend import jit, jnp -from ..batching import _eval_fun_in_chunks +from ..batching import batch_map from ..integrals.bounce_integral import Bounce2D from ..integrals.quad_utils import chebgauss2 from ..utils import safediv @@ -47,9 +47,15 @@ Default is 32. This parameter is ignored if given ``quad``. """, "num_pitch": "int : Resolution for quadrature over velocity coordinate.", - "batch_size": """int : + "pitch_batch_size": """int : Number of pitch values with which to compute simultaneously. - If given ``None``, then ``batch_size`` defaults to ``num_pitch``. + If given ``None``, then ``pitch_batch_size`` is ``num_pitch``. + Default is ``num_pitch``. + """, + "surf_batch_size": """int : + Number of flux surfaces with which to compute simultaneously. + If given ``None``, then ``surf_batch_size`` is ``grid.num_rho``. + Default is ``1``. Only consider increasing if ``pitch_batch_size`` is ``None``. """, "fieldline_quad": """tuple[jnp.ndarray] : Used to compute the proper length of the field line ∫ dℓ / B. @@ -67,7 +73,9 @@ } -def _compute(fun, fun_data, data, theta, grid, num_pitch, simp=False): +def _compute( + fun, fun_data, data, theta, grid, num_pitch, simp=False, surf_batch_size=1 +): """Compute ``fun`` for each ρ value iteratively. Parameters @@ -84,13 +92,16 @@ def _compute(fun, fun_data, data, theta, grid, num_pitch, simp=False): ``FourierChebyshevSeries.nodes(X,Y,rho,domain=(0,2*jnp.pi))``. simp : bool Whether to use an open Simpson rule instead of uniform weights. + surf_batch_size : int + Number of flux surfaces with which to compute simultaneously. + Default is ``1``. """ for name in Bounce2D.required_names: fun_data[name] = data[name] fun_data.pop("iota", None) for name in fun_data: - fun_data[name] = Bounce2D.fourier(Bounce2D.reshape_data(grid, fun_data[name])) + fun_data[name] = Bounce2D.fourier(Bounce2D.reshape(grid, fun_data[name])) fun_data["iota"] = grid.compress(data["iota"]) fun_data["theta"] = theta fun_data["pitch_inv"], fun_data["pitch_inv weight"] = Bounce2D.get_pitch_inv_quad( @@ -99,30 +110,7 @@ def _compute(fun, fun_data, data, theta, grid, num_pitch, simp=False): num_pitch, simp=simp, ) - return grid.expand(imap(fun, fun_data)) - - -def _foreach_pitch(fun, pitch_inv, batch_size): - """Compute ``fun`` for pitch values iteratively to reduce memory usage. - - Parameters - ---------- - fun : callable - Function to compute. - pitch_inv : jnp.ndarray - Shape (num_pitch, ). - 1/λ values to compute the bounce integrals. - batch_size : int or None - Number of pitch values with which to compute simultaneously. - If given ``None``, then computes everything simultaneously. - - """ - return ( - fun(pitch_inv) - if (batch_size is None or batch_size >= (pitch_inv.size - 1)) - # else imap(fun, pitch_inv, batch_size=batch_size).squeeze(axis=-1) # noqa: E800 - else _eval_fun_in_chunks(fun, batch_size, (0,), pitch_inv) - ) + return grid.expand(batch_map(fun, fun_data, surf_batch_size)) def _dH(data, B, pitch): @@ -171,7 +159,8 @@ def _dI(data, B, pitch): "num_well", "num_quad", "num_pitch", - "batch_size", + "pitch_batch_size", + "surf_batch_size", "spline", ], ) @@ -187,9 +176,13 @@ def _epsilon_32(params, transforms, profiles, data, **kwargs): theta = kwargs["theta"] Y_B = kwargs.get("Y_B", theta.shape[-1] * 2) num_transit = kwargs.get("num_transit", 20) - num_pitch = kwargs.get("num_pitch", 50) + num_pitch = kwargs.get("num_pitch", 51) num_well = kwargs.get("num_well", Y_B * num_transit) - batch_size = kwargs.get("batch_size", None) + pitch_batch_size = kwargs.get("pitch_batch_size", None) + surf_batch_size = kwargs.get("surf_batch_size", 1) + assert ( + surf_batch_size == 1 or pitch_batch_size is None + ), f"Expected pitch_batch_size to be None, got {pitch_batch_size}." spline = kwargs.get("spline", True) fieldline_quad = ( kwargs["fieldline_quad"] if "fieldline_quad" in kwargs else leggauss(Y_B // 2) @@ -227,7 +220,7 @@ def fun(pitch_inv): return safediv(H**2, I).sum(axis=-1) return jnp.sum( - _foreach_pitch(fun, data["pitch_inv"], batch_size) + batch_map(fun, data["pitch_inv"], pitch_batch_size) * data["pitch_inv weight"] / data["pitch_inv"] ** 3, axis=-1, @@ -244,6 +237,7 @@ def fun(pitch_inv): grid=grid, num_pitch=num_pitch, simp=True, + surf_batch_size=surf_batch_size, ) * (B0 * data["R0"] / data["<|grad(rho)|>"]) ** 2 * jnp.pi diff --git a/desc/integrals/_bounce_utils.py b/desc/integrals/_bounce_utils.py index e59b1a7ade..edd0bf7c74 100644 --- a/desc/integrals/_bounce_utils.py +++ b/desc/integrals/_bounce_utils.py @@ -343,7 +343,7 @@ def _bounce_quadrature( Shape (num alpha, num rho, num zeta). Real scalar-valued periodic functions in (θ, ζ) ∈ [0, 2π) × [0, 2π/NFP) evaluated on the ``grid`` supplied to construct this object. - Use the method ``Bounce1D.reshape_data`` to reshape the data into the + Use the method ``Bounce1D.reshape`` to reshape the data into the expected shape. names : str or list[str] Names in ``data`` to interpolate. Default is all keys in ``data``. @@ -711,48 +711,12 @@ def _get_extrema(knots, g, dg_dz, sentinel=jnp.nan): return ext, g_ext -# We can use the non-differentiable min because we actually want the gradients +# We can use the non-differentiable argmin because we actually want the gradients # to accumulate through only the minimum since we are differentiating how our # physics objective changes wrt equilibrium perturbations not wrt which of the # extrema get interpolated to. -def _argmin(z1, z2, ext, g_ext): - assert z1.ndim > 1 and z2.ndim > 1 - # Given - # z1 and z2 with shape (..., num pitch, num well) - # and ext, g_ext with shape (..., num extrema), - # add dims to broadcast - # z1 and z2 with shape (..., num pitch, num well, 1). - # and ext, g_ext with shape (..., 1, 1, num extrema). - where = jnp.where( - (z1[..., jnp.newaxis] < ext[..., jnp.newaxis, jnp.newaxis, :]) - & (ext[..., jnp.newaxis, jnp.newaxis, :] < z2[..., jnp.newaxis]), - g_ext[..., jnp.newaxis, jnp.newaxis, :], - jnp.inf, - ) - # shape is (..., num pitch, num well, 1) - return jnp.argmin(where, axis=-1, keepdims=True) - - -def _fft_argmin(z1, z2, ext, g_ext): - assert z1.ndim >= 1 and z2.ndim >= 1 - # Given - # z1 and z2 with shape (..., num well) - # and ext, g_ext with shape (..., num extrema), - # add dims to broadcast - # z1 and z2 with shape (..., num well, 1). - # and ext, g_ext with shape (..., 1, num extrema). - where = jnp.where( - (z1[..., jnp.newaxis] < ext[..., jnp.newaxis, :]) - & (ext[..., jnp.newaxis, :] < z2[..., jnp.newaxis]), - g_ext[..., jnp.newaxis, :], - jnp.inf, - ) - # shape is (..., num well, 1) - return jnp.argmin(where, axis=-1, keepdims=True) - - def interp_to_argmin(h, points, knots, g, dg_dz, method="cubic"): """Interpolate ``h`` to the deepest point of ``g`` between ``z1`` and ``z2``. @@ -791,12 +755,29 @@ def interp_to_argmin(h, points, knots, g, dg_dz, method="cubic"): Shape (..., num pitch, num well). """ - z1, z2 = points ext, g_ext = _get_extrema(knots, g, dg_dz, sentinel=0) + + z1, z2 = points + assert z1.ndim > 1 and z2.ndim > 1 + # Given + # z1 and z2 with shape (..., num pitch, num well) + # and ext, g_ext with shape (..., num extrema), + # add dims to broadcast + # z1 and z2 with shape (..., num pitch, num well, 1). + # and ext, g_ext with shape (..., 1, 1, num extrema). + where = jnp.where( + (z1[..., jnp.newaxis] < ext[..., jnp.newaxis, jnp.newaxis, :]) + & (ext[..., jnp.newaxis, jnp.newaxis, :] < z2[..., jnp.newaxis]), + g_ext[..., jnp.newaxis, jnp.newaxis, :], + jnp.inf, + ) + # shape is (..., num pitch, num well, 1) + argmin = jnp.argmin(where, axis=-1, keepdims=True) + return jnp.take_along_axis( # adding axes to broadcast with num pitch and num well axes interp1d_vec(ext, knots, h, method=method)[..., jnp.newaxis, jnp.newaxis, :], - _argmin(z1, z2, ext, g_ext), + argmin, axis=-1, ).squeeze(axis=-1) @@ -852,6 +833,24 @@ def interp_fft_to_argmin( """ ext, g_ext = _get_extrema(knots, g, dg_dz, sentinel=0) + + z1, z2 = points + assert z1.ndim >= 1 and z2.ndim >= 1 + # Given + # z1 and z2 with shape (..., num well) + # and ext, g_ext with shape (..., num extrema), + # add dims to broadcast + # z1 and z2 with shape (..., num well, 1). + # and ext, g_ext with shape (..., 1, num extrema). + where = jnp.where( + (z1[..., jnp.newaxis] < ext[..., jnp.newaxis, :]) + & (ext[..., jnp.newaxis, :] < z2[..., jnp.newaxis]), + g_ext[..., jnp.newaxis, :], + jnp.inf, + ) + # shape is (..., num well, 1) + argmin = jnp.argmin(where, axis=-1, keepdims=True) + theta = T.eval1d(ext) if is_fourier: h = irfft2_non_uniform( @@ -871,13 +870,10 @@ def interp_fft_to_argmin( domain1=(0, 2 * jnp.pi / NFP), axes=(-1, -2), ) - h = h[..., jnp.newaxis, :] # to broadcast with num well axis - z1, z2 = points - if z1[0].ndim == h.ndim - 1: + if z1.ndim == h.ndim + 1: h = h[jnp.newaxis] # to broadcast with num pitch axis - return jnp.take_along_axis(h, _fft_argmin(z1, z2, ext, g_ext), axis=-1).squeeze( - axis=-1 - ) + # add axis to broadcast with num well axis + return jnp.take_along_axis(h[..., jnp.newaxis, :], argmin, axis=-1).squeeze(axis=-1) # This is kept for the inevitable nan debugging. @@ -898,6 +894,16 @@ def _interp_fft_to_argmin_soft( """ ext, g_ext = _get_extrema(knots, g, dg_dz, sentinel=0) + + z1, z2 = points + assert z1.ndim >= 1 and z2.ndim >= 1 + where = jnp.where( + (z1[..., jnp.newaxis] < ext[..., jnp.newaxis, :]) + & (ext[..., jnp.newaxis, :] < z2[..., jnp.newaxis]), + g_ext[..., jnp.newaxis, :], + jnp.finfo(jnp.float16).max, + ) + theta = T.eval1d(ext) if is_fourier: h = irfft2_non_uniform( @@ -917,16 +923,10 @@ def _interp_fft_to_argmin_soft( domain1=(0, 2 * jnp.pi / NFP), axes=(-1, -2), ) - z1, z2 = points - where = jnp.where( - (z1[..., jnp.newaxis] < ext[..., jnp.newaxis, :]) - & (ext[..., jnp.newaxis, :] < z2[..., jnp.newaxis]), - g_ext[..., jnp.newaxis, :], - jnp.finfo(jnp.float16).max, - ) + # add axis to broadcast with num well axis # softargmax does the proper shift to compute softargmax(x - max(x)) assert beta < 0 - return jnp.linalg.vecdot(softargmax(beta * where, axis=-1), h[..., jnp.newaxis, :]) + return jnp.linalg.vecdot(h[..., jnp.newaxis, :], softargmax(beta * where, axis=-1)) # TODO (#568): Generalize this beyond ζ = ϕ or just map to Clebsch with ϕ. diff --git a/desc/integrals/bounce_integral.py b/desc/integrals/bounce_integral.py index 9de5e8a645..8484a89da3 100644 --- a/desc/integrals/bounce_integral.py +++ b/desc/integrals/bounce_integral.py @@ -311,8 +311,8 @@ def __init__( ), } if not is_reshaped: - self._c["|B|"] = Bounce2D.reshape_data(grid, self._c["|B|"]) - self._c["B^zeta"] = Bounce2D.reshape_data(grid, self._c["B^zeta"]) + self._c["|B|"] = Bounce2D.reshape(grid, self._c["|B|"]) + self._c["B^zeta"] = Bounce2D.reshape(grid, self._c["B^zeta"]) if not is_fourier: self._c["|B|"] = Bounce2D.fourier(self._c["|B|"]) self._c["B^zeta"] = Bounce2D.fourier(self._c["B^zeta"]) @@ -339,7 +339,7 @@ def __init__( ) @staticmethod - def reshape_data(grid, f): + def reshape(grid, f): """Reshape arrays for acceptable input to ``integrate``. Parameters @@ -392,11 +392,11 @@ def compute_theta(eq, X=16, Y=32, rho=1.0, iota=None, clebsch=None, **kwargs): eq : Equilibrium Equilibrium to use defining the coordinate mapping. X : int - Poloidal Fourier grid resolution to interpolate the map α, ζ ↦ θ(α, ζ). - Preferably power of 2. + Poloidal Fourier grid resolution to interpolate the poloidal coordinate. + Preferably rounded down to power of 2. Y : int - Toroidal Chebyshev grid resolution to interpolate the map α, ζ ↦ θ(α, ζ). - Preferably power of 2. + Toroidal Chebyshev grid resolution to interpolate the poloidal coordinate. + Preferably rounded down to power of 2. rho : float or jnp.ndarray Shape (num rho, ). Flux surfaces labels in [0, 1] on which to compute. @@ -586,7 +586,7 @@ def integrate( Shape (num rho, M, N). Real scalar-valued periodic functions in (θ, ζ) ∈ [0, 2π) × [0, 2π/NFP) evaluated on the ``grid`` supplied to construct this object. - Use the method ``Bounce2D.reshape_data`` to reshape the data into the + Use the method ``Bounce2D.reshape`` to reshape the data into the expected shape. names : str or list[str] Names in ``data`` to interpolate. Default is all keys in ``data``. @@ -750,7 +750,7 @@ def interp_to_argmin(self, f, points, *, is_fourier=False): Shape (num rho, M, N). Real scalar-valued periodic function in (θ, ζ) ∈ [0, 2π) × [0, 2π/NFP) evaluated on the ``grid`` supplied to construct this object. - Use the method ``Bounce2D.reshape_data`` to reshape the data into the + Use the method ``Bounce2D.reshape`` to reshape the data into the expected shape. points : tuple[jnp.ndarray] Shape (num rho, num pitch, num well). @@ -777,17 +777,19 @@ def interp_to_argmin(self, f, points, *, is_fourier=False): # We move num pitch axis to front so that the num rho axis broadcasts # with the spectral coefficients (whose first axis is also num rho), # assuming this axis exists. - return interp_fft_to_argmin( - self._NFP, - self._c["T(z)"], - f, - map(_swap_pl, points), - self._c["knots"], - self._c["B(z)"], - polyder_vec(self._c["B(z)"]), - is_fourier=is_fourier, - M=self._M, - N=self._N, + return _swap_pl( + interp_fft_to_argmin( + self._NFP, + self._c["T(z)"], + f, + map(_swap_pl, points), + self._c["knots"], + self._c["B(z)"], + polyder_vec(self._c["B(z)"]), + is_fourier=is_fourier, + M=self._M, + N=self._N, + ) ) def compute_fieldline_length(self, quad=None): @@ -1030,7 +1032,7 @@ def __init__( } if not is_reshaped: for name in self._data: - self._data[name] = Bounce1D.reshape_data(grid, self._data[name]) + self._data[name] = Bounce1D.reshape(grid, self._data[name]) self._x, self._w = get_quadrature(quad, automorphism) # Compute local splines. @@ -1054,7 +1056,7 @@ def __init__( self._dB_dz = polyder_vec(self._B) @staticmethod - def reshape_data(grid, f): + def reshape(grid, f): """Reshape arrays for acceptable input to ``integrate``. Parameters @@ -1187,7 +1189,7 @@ def integrate( Shape (num alpha, num rho, num zeta). Real scalar-valued periodic functions in (θ, ζ) ∈ [0, 2π) × [0, 2π/NFP) evaluated on the ``grid`` supplied to construct this object. - Use the method ``Bounce1D.reshape_data`` to reshape the data into the + Use the method ``Bounce1D.reshape`` to reshape the data into the expected shape. names : str or list[str] Names in ``data`` to interpolate. Default is all keys in ``data``. @@ -1254,7 +1256,7 @@ def interp_to_argmin(self, f, points, *, method="cubic"): f : jnp.ndarray Shape (num alpha, num rho, num zeta). Real scalar-valued functions evaluated on the ``grid`` supplied to - construct this object. Use the method ``Bounce1D.reshape_data`` to + construct this object. Use the method ``Bounce1D.reshape`` to reshape the data into the expected shape. points : tuple[jnp.ndarray] Shape (num alpha, num rho, num pitch, num well). @@ -1283,7 +1285,7 @@ def plot(self, m, l, pitch_inv=None, **kwargs): ---------- m, l : int, int Indices into the nodes of the grid supplied to make this object. - ``alpha,rho=Bounce1D.reshape_data(grid,grid.nodes[:,:2])[m,l,0]``. + ``alpha,rho=Bounce1D.reshape(grid,grid.nodes[:,:2])[m,l,0]``. pitch_inv : jnp.ndarray Shape (num pitch, ). Optional, 1/λ values whose corresponding bounce points on the field line diff --git a/desc/objectives/_fast_ion.py b/desc/objectives/_fast_ion.py index bb6e020db9..980f1a0337 100644 --- a/desc/objectives/_fast_ion.py +++ b/desc/objectives/_fast_ion.py @@ -66,11 +66,11 @@ class GammaC(_Objective): Determines the flux surfaces to compute on and resolution of FFTs. Default grid samples the boundary surface at ρ=1. X : int - Poloidal Fourier grid resolution to interpolate the map α, ζ ↦ θ(α, ζ). - Preferably power of 2. + Poloidal Fourier grid resolution to interpolate the poloidal coordinate. + Preferably rounded down to power of 2. Y : int - Toroidal Chebyshev grid resolution to interpolate the map α, ζ ↦ θ(α, ζ). - Preferably power of 2. + Toroidal Chebyshev grid resolution to interpolate the poloidal coordinate. + Preferably rounded down to power of 2. Y_B : int Desired resolution for algorithm to compute bounce points. Default is double ``Y``. Something like 100 is usually sufficient. @@ -97,9 +97,14 @@ class GammaC(_Objective): Resolution for quadrature of bounce integrals. Default is 32. num_pitch : int Resolution for quadrature over velocity coordinate. Default is 64. - batch_size : int + pitch_batch_size : int Number of pitch values with which to compute simultaneously. - If given ``None``, then ``batch_size`` defaults to ``num_pitch``. + If given ``None``, then ``pitch_batch_size`` is ``num_pitch``. + Default is ``num_pitch``. + surf_batch_size : int + Number of flux surfaces with which to compute simultaneously. + If given ``None``, then ``surf_batch_size`` is ``grid.num_rho``. + Default is ``1``. Only consider increasing if ``pitch_batch_size`` is ``None``. Nemov : bool Whether to use the Γ_c as defined by Nemov et al. or Velasco et al. Default is Nemov. Set to ``False`` to use Velascos's. @@ -140,7 +145,7 @@ def __init__( jac_chunk_size=None, name="Gamma_c", grid=None, - X=16, # X is cheap to increase. + X=16, Y=32, # Y_B is expensive to increase if one does not fix num well per transit. Y_B=None, @@ -148,7 +153,8 @@ def __init__( num_well=None, num_quad=32, num_pitch=64, - batch_size=None, + pitch_batch_size=None, + surf_batch_size=1, Nemov=True, ): if target is None and bounds is None: @@ -165,7 +171,8 @@ def __init__( "num_well": setdefault(num_well, Y_B * num_transit), "num_quad": num_quad, "num_pitch": num_pitch, - "batch_size": batch_size, + "pitch_batch_size": pitch_batch_size, + "surf_batch_size": surf_batch_size, } self._key = "Gamma_c" if Nemov else "Gamma_c Velasco" if deriv_mode == "rev" and jac_chunk_size is None: diff --git a/desc/objectives/_neoclassical.py b/desc/objectives/_neoclassical.py index 7324d3fd97..c6666c13e9 100644 --- a/desc/objectives/_neoclassical.py +++ b/desc/objectives/_neoclassical.py @@ -65,11 +65,11 @@ class EffectiveRipple(_Objective): Determines the flux surfaces to compute on and resolution of FFTs. Default grid samples the boundary surface at ρ=1. X : int - Poloidal Fourier grid resolution to interpolate the map α, ζ ↦ θ(α, ζ). - Preferably power of 2. + Poloidal Fourier grid resolution to interpolate the poloidal coordinate. + Preferably rounded down to power of 2. Y : int - Toroidal Chebyshev grid resolution to interpolate the map α, ζ ↦ θ(α, ζ). - Preferably power of 2. + Toroidal Chebyshev grid resolution to interpolate the poloidal coordinate. + Preferably rounded down to power of 2. Y_B : int Desired resolution for algorithm to compute bounce points. Default is double ``Y``. Something like 100 is usually sufficient. @@ -95,10 +95,15 @@ class EffectiveRipple(_Objective): num_quad : int Resolution for quadrature of bounce integrals. Default is 32. num_pitch : int - Resolution for quadrature over velocity coordinate. Default is 50. - batch_size : int + Resolution for quadrature over velocity coordinate. Default is 51. + pitch_batch_size : int Number of pitch values with which to compute simultaneously. - If given ``None``, then ``batch_size`` defaults to ``num_pitch``. + If given ``None``, then ``pitch_batch_size`` is ``num_pitch``. + Default is ``num_pitch``. + surf_batch_size : int + Number of flux surfaces with which to compute simultaneously. + If given ``None``, then ``surf_batch_size`` is ``grid.num_rho``. + Default is ``1``. Only consider increasing if ``pitch_batch_size`` is ``None``. """ @@ -128,15 +133,16 @@ def __init__( jac_chunk_size=None, name="Effective ripple", grid=None, - X=16, # X is cheap to increase. + X=16, Y=32, # Y_B is expensive to increase if one does not fix num well per transit. Y_B=None, num_transit=20, num_well=None, num_quad=32, - num_pitch=50, - batch_size=None, + num_pitch=51, + pitch_batch_size=None, + surf_batch_size=1, ): if target is None and bounds is None: target = 0.0 @@ -152,7 +158,8 @@ def __init__( "num_well": setdefault(num_well, Y_B * num_transit), "num_quad": num_quad, "num_pitch": num_pitch, - "batch_size": batch_size, + "pitch_batch_size": pitch_batch_size, + "surf_batch_size": surf_batch_size, } if deriv_mode == "rev" and jac_chunk_size is None: # Reverse mode is bottlenecked by coordinate mapping. diff --git a/desc/objectives/_stability.py b/desc/objectives/_stability.py index 1a0fd6ba08..3ef4debc82 100644 --- a/desc/objectives/_stability.py +++ b/desc/objectives/_stability.py @@ -355,6 +355,8 @@ class BallooningStability(_Objective): Parameters ---------- + eq : Equilibrium + ``Equilibrium`` to be optimized. rho : float Flux surface to optimize on. To optimize over multiple surfaces, use multiple objectives each with a single rho value. diff --git a/docs/notebooks/tutorials/EffectiveRipple.ipynb b/docs/notebooks/tutorials/EffectiveRipple.ipynb index ef4119f38e..10bbbd7818 100644 --- a/docs/notebooks/tutorials/EffectiveRipple.ipynb +++ b/docs/notebooks/tutorials/EffectiveRipple.ipynb @@ -352,8 +352,8 @@ " num_well=num_well,\n", " num_quad=num_quad,\n", " num_pitch=num_pitch,\n", - " # Can also specify ``batch_size`` which determines the\n", - " # number of pitch angles to compute simultaneously.\n", + " # Can also specify ``pitch_batch_size`` which determines the\n", + " # number of pitch values to compute simultaneously.\n", " # Reduce this if insufficient memory. If insufficient memory is detected\n", " # early then the code will exit and return ε = 0 everywhere. If not detected\n", " # early then typical OOM errors will occur.\n", diff --git a/tests/test_fast_ion.py b/tests/test_fast_ion.py index 909d99580a..cb604c9e3e 100644 --- a/tests/test_fast_ion.py +++ b/tests/test_fast_ion.py @@ -58,7 +58,6 @@ def test_Gamma_c_Velasco_2D(): @pytest.mark.unit -@pytest.mark.slow @pytest.mark.mpl_image_compare(remove_text=True, tolerance=tol_1d) def test_Gamma_c_Nemov_1D(): """Test Γ_c Nemov 1D with W7-X.""" @@ -79,7 +78,6 @@ def test_Gamma_c_Nemov_1D(): @pytest.mark.unit -@pytest.mark.slow @pytest.mark.mpl_image_compare(remove_text=True, tolerance=tol_1d) def test_Gamma_c_Velasco_1D(): """Test Γ_c Velasco 1D with W7-X.""" diff --git a/tests/test_integrals.py b/tests/test_integrals.py index 732f93fb63..6e24277e4a 100644 --- a/tests/test_integrals.py +++ b/tests/test_integrals.py @@ -1121,7 +1121,7 @@ def test_bounce1d_checks(self): num = bounce.integrate( integrand=TestBounce._example_numerator, pitch_inv=pitch_inv, - data={"g_zz": Bounce1D.reshape_data(grid.source_grid, data["g_zz"])}, + data={"g_zz": Bounce1D.reshape(grid.source_grid, data["g_zz"])}, points=points, check=True, ) @@ -1368,8 +1368,8 @@ def test_binormal_drift_bounce1d(self): points = bounce.points(pitch_inv, num_well=1) bounce.check_points(points, pitch_inv, plot=False) interp_data = { - "cvdrift": Bounce1D.reshape_data(things["grid"].source_grid, cvdrift), - "gbdrift": Bounce1D.reshape_data(things["grid"].source_grid, gbdrift), + "cvdrift": Bounce1D.reshape(things["grid"].source_grid, cvdrift), + "gbdrift": Bounce1D.reshape(things["grid"].source_grid, gbdrift), } drift_numerical_num = bounce.integrate( integrand=TestBounce.drift_num_integrand, @@ -1543,7 +1543,7 @@ def test_bounce2d_checks(self): num = bounce.integrate( integrand=TestBounce._example_numerator, pitch_inv=pitch_inv, - data={"g_zz": Bounce2D.reshape_data(grid, data["g_zz"])}, + data={"g_zz": Bounce2D.reshape(grid, data["g_zz"])}, points=points, check=True, ) @@ -1642,9 +1642,7 @@ def test_binormal_drift_bounce2d(self): ) points = bounce.points(pitch_inv, num_well=1) bounce.check_points(points, pitch_inv, plot=False) - interp_data = { - name: Bounce2D.reshape_data(grid, grid_data[name]) for name in names - } + interp_data = {name: Bounce2D.reshape(grid, grid_data[name]) for name in names} drift_numerical_num = bounce.integrate( integrand=TestBounce2D.drift_num_integrand, pitch_inv=pitch_inv, diff --git a/tests/test_neoclassical.py b/tests/test_neoclassical.py index d533efb130..bcfc85ef28 100644 --- a/tests/test_neoclassical.py +++ b/tests/test_neoclassical.py @@ -46,7 +46,6 @@ def test_effective_ripple_2D(): @pytest.mark.unit -@pytest.mark.slow @pytest.mark.mpl_image_compare(remove_text=True, tolerance=tol_1d) def test_effective_ripple_1D(): """Test effective ripple 1D with W7-X against NEO.""" From 059f21750eeaa3d61745c610473da167d9919939 Mon Sep 17 00:00:00 2001 From: unalmis Date: Sat, 21 Dec 2024 16:05:56 -0500 Subject: [PATCH 59/60] Set default automorphism to None to simplify for user --- desc/compute/_deprecated.py | 6 +++--- desc/compute/_fast_ion.py | 2 -- desc/compute/_neoclassical.py | 1 - desc/integrals/bounce_integral.py | 14 ++++++++------ tests/test_integrals.py | 7 ++----- 5 files changed, 13 insertions(+), 17 deletions(-) diff --git a/desc/compute/_deprecated.py b/desc/compute/_deprecated.py index afb70b8c99..0c49d55ac6 100644 --- a/desc/compute/_deprecated.py +++ b/desc/compute/_deprecated.py @@ -125,7 +125,7 @@ def eps_32(data): # B₀ has units of λ⁻¹. # Nemov's ∑ⱼ Hⱼ²/Iⱼ = (∂ψ/∂ρ)² (λB₀)³ ``(H**2 / I).sum(axis=-1)``. # (λB₀)³ d(λB₀)⁻¹ = B₀² λ³ d(λ⁻¹) = -B₀² λ dλ. - bounce = Bounce1D(grid, data, quad, automorphism=None, is_reshaped=True) + bounce = Bounce1D(grid, data, quad, is_reshaped=True) H, I = bounce.integrate( [_dH, _dI], data["pitch_inv"], @@ -257,7 +257,7 @@ def _Gamma_c_1D(params, transforms, profiles, data, **kwargs): def Gamma_c(data): """∫ dλ ∑ⱼ [v τ γ_c²]ⱼ π²/4.""" - bounce = Bounce1D(grid, data, quad, automorphism=None, is_reshaped=True) + bounce = Bounce1D(grid, data, quad, is_reshaped=True) points = bounce.points(data["pitch_inv"], num_well=num_well) v_tau, drift1, drift2 = bounce.integrate( [_v_tau, _drift1, _drift2], @@ -353,7 +353,7 @@ def _Gamma_c_Velasco_1D(params, transforms, profiles, data, **kwargs): def Gamma_c(data): """∫ dλ ∑ⱼ [v τ γ_c²]ⱼ π²/4.""" - bounce = Bounce1D(grid, data, quad, automorphism=None, is_reshaped=True) + bounce = Bounce1D(grid, data, quad, is_reshaped=True) points = bounce.points(data["pitch_inv"], num_well=num_well) v_tau, cvdrift0, gbdrift = bounce.integrate( [_v_tau, _cvdrift0, _gbdrift], diff --git a/desc/compute/_fast_ion.py b/desc/compute/_fast_ion.py index c28662688a..a260d5a6fb 100644 --- a/desc/compute/_fast_ion.py +++ b/desc/compute/_fast_ion.py @@ -156,7 +156,6 @@ def Gamma_c(data): Y_B, num_transit, quad=quad, - automorphism=None, is_fourier=True, spline=spline, ) @@ -315,7 +314,6 @@ def Gamma_c(data): Y_B, num_transit, quad=quad, - automorphism=None, is_fourier=True, spline=spline, ) diff --git a/desc/compute/_neoclassical.py b/desc/compute/_neoclassical.py index 40e9f252b4..010d1964a5 100644 --- a/desc/compute/_neoclassical.py +++ b/desc/compute/_neoclassical.py @@ -203,7 +203,6 @@ def eps_32(data): Y_B, num_transit, quad=quad, - automorphism=None, is_fourier=True, spline=spline, ) diff --git a/desc/integrals/bounce_integral.py b/desc/integrals/bounce_integral.py index 8484a89da3..db943f3385 100644 --- a/desc/integrals/bounce_integral.py +++ b/desc/integrals/bounce_integral.py @@ -69,8 +69,10 @@ def _swap_pl(f): return jnp.swapaxes(f, 0, -2) -default_quad = leggauss(32) -default_auto = (automorphism_sin, grad_automorphism_sin) +default_quad = get_quadrature( + leggauss(32), + (automorphism_sin, grad_automorphism_sin), +) class Bounce2D(Bounce): @@ -282,7 +284,7 @@ def __init__( # Can just add axis for piecewise chebyshev stuff cheb. alpha=0.0, quad=default_quad, - automorphism=default_auto, + automorphism=None, *, Bref=1.0, Lref=1.0, @@ -612,8 +614,8 @@ def integrate( ------- result : jnp.ndarray Shape (num rho, num pitch, num well). - Last axis enumerates the bounce integrals for a given field line, - flux surface, and pitch value. + Last axis enumerates the bounce integrals for a given + flux surface and pitch value. """ if not isinstance(integrand, (list, tuple)): @@ -1008,7 +1010,7 @@ def __init__( grid, data, quad=default_quad, - automorphism=default_auto, + automorphism=None, *, Bref=1.0, Lref=1.0, diff --git a/tests/test_integrals.py b/tests/test_integrals.py index 6e24277e4a..0f5b1ef3bd 100644 --- a/tests/test_integrals.py +++ b/tests/test_integrals.py @@ -1107,7 +1107,7 @@ def test_bounce1d_checks(self): Bounce1D.required_names + ["min_tz |B|", "max_tz |B|", "g_zz"], grid=grid ) # 5. Make the bounce integration operator. - bounce = Bounce1D(grid.source_grid, data, quad=leggauss(3), check=True) + bounce = Bounce1D(grid.source_grid, data, check=True) pitch_inv, _ = bounce.get_pitch_inv_quad( min_B=grid.compress(data["min_tz |B|"]), max_B=grid.compress(data["max_tz |B|"]), @@ -1492,7 +1492,6 @@ def g(z): theta=grid.meshgrid_reshape(grid.nodes[:, 1], "rtz"), Y_B=2 * nyquist, num_transit=1, - spline=True, ) points = np.array(0, ndmin=2), np.array(2 * np.pi, ndmin=2) np.testing.assert_allclose( @@ -1527,9 +1526,7 @@ def test_bounce2d_checks(self): # 4. Compute DESC coordinates of optimal interpolation nodes. theta = Bounce2D.compute_theta(eq, X=8, Y=64, rho=rho) # 5. Make the bounce integration operator. - bounce = Bounce2D( - grid, data, theta, num_transit=2, quad=leggauss(3), check=True, spline=False - ) + bounce = Bounce2D(grid, data, theta, num_transit=2, check=True, spline=False) pitch_inv, _ = bounce.get_pitch_inv_quad( min_B=grid.compress(data["min_tz |B|"]), max_B=grid.compress(data["max_tz |B|"]), From 2cb0f3e5819b03ad354b8b35f9f4652d75a065c1 Mon Sep 17 00:00:00 2001 From: unalmis Date: Sun, 22 Dec 2024 02:46:31 -0500 Subject: [PATCH 60/60] Remove softargmax interp to argmin now that nan gradient identified --- desc/integrals/_bounce_utils.py | 55 +-------------------------------- 1 file changed, 1 insertion(+), 54 deletions(-) diff --git a/desc/integrals/_bounce_utils.py b/desc/integrals/_bounce_utils.py index edd0bf7c74..06018fc74c 100644 --- a/desc/integrals/_bounce_utils.py +++ b/desc/integrals/_bounce_utils.py @@ -4,7 +4,7 @@ from interpax import CubicSpline, PPoly from matplotlib import pyplot as plt -from desc.backend import dct, imap, jnp, softargmax +from desc.backend import dct, imap, jnp from desc.integrals._interp_utils import ( cheb_from_dct, cheb_pts, @@ -876,59 +876,6 @@ def interp_fft_to_argmin( return jnp.take_along_axis(h[..., jnp.newaxis, :], argmin, axis=-1).squeeze(axis=-1) -# This is kept for the inevitable nan debugging. -def _interp_fft_to_argmin_soft( - NFP, T, h, points, knots, g, dg_dz, is_fourier=False, M=None, N=None, beta=-1e4 -): - """Interpolate ``h`` to the deepest point of ``g`` between ``z1`` and ``z2``. - - Let E = {ζ ∣ ζ₁ < ζ < ζ₂} and A = argmin_E g(ζ). Returns mean_A h(ζ). - - Parameters - ---------- - beta : float - More negative gives exponentially better approximation. - The argmin operation is defined as the expected value under the softmin - probability distribution. - s : x ∈ ℝⁿ, β ∈ ℝ ↦ [eᵝˣ⁽¹⁾, …, eᵝˣ⁽ⁿ⁾] / ∑ₖ₌₁ⁿ eᵝˣ⁽ᵏ⁾ - - """ - ext, g_ext = _get_extrema(knots, g, dg_dz, sentinel=0) - - z1, z2 = points - assert z1.ndim >= 1 and z2.ndim >= 1 - where = jnp.where( - (z1[..., jnp.newaxis] < ext[..., jnp.newaxis, :]) - & (ext[..., jnp.newaxis, :] < z2[..., jnp.newaxis]), - g_ext[..., jnp.newaxis, :], - jnp.finfo(jnp.float16).max, - ) - - theta = T.eval1d(ext) - if is_fourier: - h = irfft2_non_uniform( - theta, - ext, - h[..., jnp.newaxis, :, :], - M, - N, - domain1=(0, 2 * jnp.pi / NFP), - axes=(-1, -2), - ) - else: - h = interp_rfft2( - theta, - ext, - h[..., jnp.newaxis, :, :], - domain1=(0, 2 * jnp.pi / NFP), - axes=(-1, -2), - ) - # add axis to broadcast with num well axis - # softargmax does the proper shift to compute softargmax(x - max(x)) - assert beta < 0 - return jnp.linalg.vecdot(h[..., jnp.newaxis, :], softargmax(beta * where, axis=-1)) - - # TODO (#568): Generalize this beyond ζ = ϕ or just map to Clebsch with ϕ. def get_fieldline(alpha_0, iota, num_transit, period): """Get sequence of poloidal coordinates A = (α₀, α₁, …, αₘ₋₁) of field line.