From 7e443635d5e434e13bdbdb4d1d5a11e8741b0b06 Mon Sep 17 00:00:00 2001 From: unalmis Date: Wed, 4 Dec 2024 20:23:24 -0500 Subject: [PATCH] Rory's requested changes --- desc/compute/_basis_vectors.py | 20 +++++++------- desc/compute/_core.py | 12 ++++----- desc/compute/_metric.py | 32 +++++++++++------------ tests/inputs/master_compute_data_rpz.pkl | Bin 8736128 -> 8747801 bytes tests/test_axis_limits.py | 14 +++++----- tests/test_compute_funs.py | 6 ++--- 6 files changed, 42 insertions(+), 42 deletions(-) diff --git a/desc/compute/_basis_vectors.py b/desc/compute/_basis_vectors.py index 04302bab9c..dd0b244691 100644 --- a/desc/compute/_basis_vectors.py +++ b/desc/compute/_basis_vectors.py @@ -3223,15 +3223,15 @@ def _e_sub_zeta_zz(params, transforms, profiles, data, **kwargs): transforms={}, profiles=[], coordinates="rtz", - data=["periodic(grad(alpha))", "secular(grad(alpha))"], + data=["grad(alpha) (periodic)", "grad(alpha) (secular)"], ) def _grad_alpha(params, transforms, profiles, data, **kwargs): - data["grad(alpha)"] = data["periodic(grad(alpha))"] + data["secular(grad(alpha))"] + data["grad(alpha)"] = data["grad(alpha) (periodic)"] + data["grad(alpha) (secular)"] return data @register_compute_fun( - name="periodic(grad(alpha))", + name="grad(alpha) (periodic)", label="\\mathrm{periodic}(\\nabla \\alpha)", units="m^{-1}", units_long="Inverse meters", @@ -3244,11 +3244,11 @@ def _grad_alpha(params, transforms, profiles, data, **kwargs): transforms={}, profiles=[], coordinates="rtz", - data=["e^rho", "e^theta", "e^zeta", "periodic(alpha_r)", "alpha_t", "alpha_z"], + data=["e^rho", "e^theta", "e^zeta", "alpha_r (periodic)", "alpha_t", "alpha_z"], ) def _periodic_grad_alpha(params, transforms, profiles, data, **kwargs): - data["periodic(grad(alpha))"] = ( - data["periodic(alpha_r)"] * data["e^rho"].T + data["grad(alpha) (periodic)"] = ( + data["alpha_r (periodic)"] * data["e^rho"].T + data["alpha_t"] * data["e^theta"].T + data["alpha_z"] * data["e^zeta"].T ).T @@ -3256,7 +3256,7 @@ def _periodic_grad_alpha(params, transforms, profiles, data, **kwargs): @register_compute_fun( - name="secular(grad(alpha))", + name="grad(alpha) (secular)", label="\\mathrm{secular}(\\nabla \\alpha)", units="m^{-1}", units_long="Inverse meters", @@ -3269,11 +3269,11 @@ def _periodic_grad_alpha(params, transforms, profiles, data, **kwargs): transforms={}, profiles=[], coordinates="rtz", - data=["e^rho", "secular(alpha_r)"], + data=["e^rho", "alpha_r (secular)"], ) def _secular_grad_alpha(params, transforms, profiles, data, **kwargs): - data["secular(grad(alpha))"] = ( - data["secular(alpha_r)"][:, jnp.newaxis] * data["e^rho"] + data["grad(alpha) (secular)"] = ( + data["alpha_r (secular)"][:, jnp.newaxis] * data["e^rho"] ) return data diff --git a/desc/compute/_core.py b/desc/compute/_core.py index ef0466f8be..c6651c834d 100644 --- a/desc/compute/_core.py +++ b/desc/compute/_core.py @@ -1518,15 +1518,15 @@ def _alpha(params, transforms, profiles, data, **kwargs): transforms={}, profiles=[], coordinates="rtz", - data=["periodic(alpha_r)", "secular(alpha_r)"], + data=["alpha_r (periodic)", "alpha_r (secular)"], ) def _alpha_r(params, transforms, profiles, data, **kwargs): - data["alpha_r"] = data["periodic(alpha_r)"] + data["secular(alpha_r)"] + data["alpha_r"] = data["alpha_r (periodic)"] + data["alpha_r (secular)"] return data @register_compute_fun( - name="periodic(alpha_r)", + name="alpha_r (periodic)", label="\\mathrm{periodic}(\\partial_\\rho \\alpha)", units="~", units_long="None", @@ -1540,12 +1540,12 @@ def _alpha_r(params, transforms, profiles, data, **kwargs): data=["theta_PEST_r", "iota", "phi_r"], ) def _periodic_alpha_r(params, transforms, profiles, data, **kwargs): - data["periodic(alpha_r)"] = data["theta_PEST_r"] - data["iota"] * data["phi_r"] + data["alpha_r (periodic)"] = data["theta_PEST_r"] - data["iota"] * data["phi_r"] return data @register_compute_fun( - name="secular(alpha_r)", + name="alpha_r (secular)", label="\\mathrm{secular}(\\partial_\\rho \\alpha)", units="~", units_long="None", @@ -1559,7 +1559,7 @@ def _periodic_alpha_r(params, transforms, profiles, data, **kwargs): data=["iota_r", "phi"], ) def _secular_alpha_r(params, transforms, profiles, data, **kwargs): - data["secular(alpha_r)"] = -data["iota_r"] * data["phi"] + data["alpha_r (secular)"] = -data["iota_r"] * data["phi"] return data diff --git a/desc/compute/_metric.py b/desc/compute/_metric.py index 8aad617e3a..e2ac6b1a82 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", @@ -1970,18 +1970,18 @@ def _gbdrift(params, transforms, profiles, data, **kwargs): transforms={}, profiles=[], coordinates="rtz", - data=["|B|^2", "b", "periodic(grad(alpha))", "grad(|B|)"], + data=["|B|^2", "b", "grad(alpha) (periodic)", "grad(|B|)"], ) def _periodic_gbdrift(params, transforms, profiles, data, **kwargs): - data["periodic(gbdrift)"] = ( - dot(data["b"], cross(data["grad(|B|)"], data["periodic(grad(alpha))"])) + data["gbdrift (periodic)"] = ( + dot(data["b"], cross(data["grad(|B|)"], data["grad(alpha) (periodic)"])) / data["|B|^2"] ) return data @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", @@ -1991,18 +1991,18 @@ def _periodic_gbdrift(params, transforms, profiles, data, **kwargs): transforms={}, profiles=[], coordinates="rtz", - data=["|B|^2", "b", "secular(grad(alpha))", "grad(|B|)"], + data=["|B|^2", "b", "grad(alpha) (secular)", "grad(|B|)"], ) def _secular_gbdrift(params, transforms, profiles, data, **kwargs): - data["secular(gbdrift)"] = ( - dot(data["b"], cross(data["grad(|B|)"], data["secular(grad(alpha))"])) + data["gbdrift (secular)"] = ( + dot(data["b"], cross(data["grad(|B|)"], data["grad(alpha) (secular)"])) / data["|B|^2"] ) return data @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,10 +2040,10 @@ def _secular_gbdrift_over_phi(params, transforms, profiles, data, **kwargs): transforms={}, profiles=[], coordinates="rtz", - data=["periodic(cvdrift)", "secular(gbdrift)"], + data=["periodic(cvdrift)", "gbdrift (secular)"], ) def _cvdrift(params, transforms, profiles, data, **kwargs): - data["cvdrift"] = data["periodic(cvdrift)"] + data["secular(gbdrift)"] + data["cvdrift"] = data["periodic(cvdrift)"] + data["gbdrift (secular)"] return data @@ -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)"] + mu_0 * data["p_r"] / data["psi_r"] / data["|B|^2"] + data["gbdrift (periodic)"] ) return data diff --git a/tests/inputs/master_compute_data_rpz.pkl b/tests/inputs/master_compute_data_rpz.pkl index dee1792648d82f896795bbfd5182a1ac5fc7cd5d..28bf91d6c14676b363138c28de11141c9dbe0df6 100644 GIT binary patch delta 31900 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 XAb}F=1j&z`coB1L#ph;)g<<~#A^2>> delta 27216 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 diff --git a/tests/test_axis_limits.py b/tests/test_axis_limits.py index 4e02eb775c..c02bf4ff10 100644 --- a/tests/test_axis_limits.py +++ b/tests/test_axis_limits.py @@ -66,9 +66,9 @@ "g^ra", "gbdrift", "grad(alpha)", - "periodic(grad(alpha))", - "periodic(gbdrift)", - "periodic(cvdrift)", + "grad(alpha) (periodic)", + "gbdrift (periodic)", + "cvdrift (periodic)", "|e^helical|", "|grad(theta)|", " Redl", # may not exist for all configurations @@ -292,10 +292,10 @@ def test_limit_continuity(self): "iota_r": {"atol": 1e-6}, "iota_num_rr": {"atol": 5e-5}, "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}, + "alpha_r (secular)": {"atol": 1e-4}, + "grad(alpha) (secular)": {"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 030e4eedc6..752cfdcc8a 100644 --- a/tests/test_compute_funs.py +++ b/tests/test_compute_funs.py @@ -1555,8 +1555,8 @@ def test_parallel_grad(): "|e_zeta|r,a|_z|r,a", "B^zeta_z|r,a", "|B|", - "secular(gbdrift)", - "secular(gbdrift)/phi", + "gbdrift (secular)", + "gbdrift (secular)/phi", "phi", ], ) @@ -1573,5 +1573,5 @@ def test_parallel_grad(): / data["B^zeta"] ** 2, ) np.testing.assert_allclose( - data["secular(gbdrift)"], data["secular(gbdrift)/phi"] * data["phi"] + data["gbdrift (secular)"], data["gbdrift (secular)/phi"] * data["phi"] )