Skip to content

Commit 89f4b95

Browse files
committed
Fix Lao profile finite-difference inputs
1 parent 300c067 commit 89f4b95

2 files changed

Lines changed: 9 additions & 13 deletions

File tree

freegsnke/nonlinear_solve.py

Lines changed: 3 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -38,7 +38,6 @@
3838
from .Myy_builder import Myy_handler
3939
from .simplified_solve import simplified_solver_J1
4040

41-
4241
_parallel_linearization_solver = None
4342

4443

@@ -1784,7 +1783,7 @@ def _build_dIydI_columns(
17841783
del self._column_plasma_descriptor_function
17851784

17861785
def _profile_parameters_for_column(self, profiles, j, delta):
1787-
"""Return a complete profile-parameter set with column ``j`` perturbed."""
1786+
"""Return independent profile parameters with column ``j`` perturbed."""
17881787
if self.profiles_param is not None:
17891788
parameters = {
17901789
"alpha_m": profiles.alpha_m,
@@ -1795,17 +1794,13 @@ def _profile_parameters_for_column(self, profiles, j, delta):
17951794
parameters[parameter_name] += delta
17961795
return parameters
17971796

1798-
alpha = profiles.alpha.copy()
1799-
beta = profiles.beta.copy()
1797+
alpha = profiles.alpha[: self.n_profiles_parameters_alpha].copy()
1798+
beta = profiles.beta[: self.n_profiles_parameters_beta].copy()
18001799
if j < self.n_profiles_parameters_alpha:
18011800
alpha[j] += delta
1802-
if profiles.alpha_logic:
1803-
alpha[-1] -= delta
18041801
else:
18051802
beta_index = j - self.n_profiles_parameters_alpha
18061803
beta[beta_index] += delta
1807-
if profiles.beta_logic:
1808-
beta[-1] -= delta
18091804
return {"alpha": alpha, "beta": beta}
18101805

18111806
def _profile_parameter_name(self, j):

freegsnke/tests/test_linearisation_perturbations.py

Lines changed: 6 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -185,10 +185,11 @@ def test_dIydI_columns_preserve_order_with_multiple_workers(monkeypatch):
185185
assert results == [4, 2, 3]
186186

187187

188-
def test_profile_parameter_shift_preserves_lao_constraints():
188+
def test_profile_parameter_shift_supplies_independent_lao_coefficients():
189189
solver = bare_solver()
190190
solver.profiles_param = None
191191
solver.n_profiles_parameters_alpha = 2
192+
solver.n_profiles_parameters_beta = 1
192193
profiles = SimpleNamespace(
193194
alpha=np.array([1.0, 2.0, -3.0]),
194195
beta=np.array([4.0, -4.0]),
@@ -199,10 +200,10 @@ def test_profile_parameter_shift_preserves_lao_constraints():
199200
alpha_shift = solver._profile_parameters_for_column(profiles, 1, 0.25)
200201
beta_shift = solver._profile_parameters_for_column(profiles, 2, 0.5)
201202

202-
np.testing.assert_allclose(alpha_shift["alpha"], [1.0, 2.25, -3.25])
203-
np.testing.assert_allclose(alpha_shift["beta"], profiles.beta)
204-
np.testing.assert_allclose(beta_shift["alpha"], profiles.alpha)
205-
np.testing.assert_allclose(beta_shift["beta"], [4.5, -4.5])
203+
np.testing.assert_allclose(alpha_shift["alpha"], [1.0, 2.25])
204+
np.testing.assert_allclose(alpha_shift["beta"], [4.0])
205+
np.testing.assert_allclose(beta_shift["alpha"], [1.0, 2.0])
206+
np.testing.assert_allclose(beta_shift["beta"], [4.5])
206207
np.testing.assert_allclose(profiles.alpha, [1.0, 2.0, -3.0])
207208
np.testing.assert_allclose(profiles.beta, [4.0, -4.0])
208209

0 commit comments

Comments
 (0)