From 97d174722301dfff89b32d1205a8a4332f7ecf24 Mon Sep 17 00:00:00 2001 From: unalmis Date: Wed, 18 Sep 2024 19:45:31 -0400 Subject: [PATCH] Add negative sign to residual for diagbroyden optimizer --- desc/equilibrium/coords.py | 6 +++--- desc/equilibrium/equilibrium.py | 1 - desc/vmec.py | 8 ++------ 3 files changed, 5 insertions(+), 10 deletions(-) diff --git a/desc/equilibrium/coords.py b/desc/equilibrium/coords.py index 6e941a2e5..8a02e5eaa 100644 --- a/desc/equilibrium/coords.py +++ b/desc/equilibrium/coords.py @@ -134,7 +134,7 @@ def map_coordinates( # noqa: C901 L_lmn=params["L_lmn"], L_basis=eq.L_basis, guess=guess[:, 1] if guess is not None else None, - period=period[1] if period is not None else 2 * np.pi, + period=period[1] if period is not None else np.inf, tol=tol, maxiter=maxiter, full_output=full_output, @@ -289,7 +289,7 @@ def _map_PEST_coordinates( L_lmn, L_basis, guess, - period=2 * np.pi, + period=np.inf, tol=1e-6, maxiter=30, full_output=False, @@ -311,7 +311,7 @@ def _map_PEST_coordinates( Shape (k, ). Optional initial guess for the computational coordinates. period : float - Assumed periodicity for ϑ. Default is 2π. + Assumed periodicity for ϑ. Use ``np.inf`` to denote no periodicity. tol : float Stopping tolerance. diff --git a/desc/equilibrium/equilibrium.py b/desc/equilibrium/equilibrium.py index 4e0ea1588..dd85b123c 100644 --- a/desc/equilibrium/equilibrium.py +++ b/desc/equilibrium/equilibrium.py @@ -1266,7 +1266,6 @@ def compute_theta_coords( inbasis=("rho", "theta_PEST", "zeta"), outbasis=("rho", "theta", "zeta"), params=self.params_dict if L_lmn is None else {"L_lmn": L_lmn}, - period=(np.inf, 2 * np.pi, np.inf), tol=tol, maxiter=maxiter, full_output=full_output, diff --git a/desc/vmec.py b/desc/vmec.py index 972d5248a..904fd8f2d 100644 --- a/desc/vmec.py +++ b/desc/vmec.py @@ -1722,7 +1722,7 @@ def root_fun(theta): ) theta_PEST_k = theta + lmbda r = theta_PEST_k - theta_PEST - return r + return -r # the negative sign is necessary out = optimize.root( root_fun, x0=theta_PEST, method="diagbroyden", options={"ftol": 1e-6} @@ -1786,11 +1786,7 @@ def compute_coord_surfaces(cls, equil, vmec_data, Nr=10, Nt=8, Nz=None, **kwargs # find theta angles corresponding to desired theta* angles v_grid = Grid( - equil.map_coordinates( - t_grid.nodes, - inbasis=("rho", "theta_PEST", "zeta"), - period=(np.inf, 2 * np.pi, np.inf), - ) + equil.map_coordinates(t_grid.nodes, inbasis=("rho", "theta_PEST", "zeta")) ) r_coords_desc = equil.compute(["R", "Z"], grid=r_grid) v_coords_desc = equil.compute(["R", "Z"], grid=v_grid)