Skip to content
Closed
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 1 addition & 1 deletion freegsnke/GSstaticsolver.py
Original file line number Diff line number Diff line change
Expand Up @@ -233,7 +233,7 @@ def port_critical(self, eq, profiles):
eq.flag_limiter = profiles.flag_limiter

eq._current = np.sum(profiles.jtor) * self.dRdZ
eq._profiles = deepcopy(profiles)
eq._profiles = profiles.get_profile_data()

try:
eq.tokamak_psi = self.tokamak_psi.reshape(self.nx, self.ny)
Expand Down
26 changes: 26 additions & 0 deletions freegsnke/jtor_update.py
Original file line number Diff line number Diff line change
Expand Up @@ -19,6 +19,8 @@
along with FreeGSNKE. If not, see <http://www.gnu.org/licenses/>.
"""

from dataclasses import dataclass

import freegs4e
import numpy as np
from freegs4e.gradshafranov import mu0
Expand All @@ -30,6 +32,20 @@
from . import switch_profile as swp


@dataclass
class ProfileData:
"""Data from a `Jtor_universal` that is used in other
areas of the code to avoid copying complex objects.
"""

flag_limiter: bool
jtor: np.ndarray
diverted_core_mask: np.ndarray
psi_bndry: np.ndarray
xpt: list
fvac: float


class Jtor_universal:

def __init__(self, refine_jtor=False):
Expand All @@ -39,6 +55,16 @@ def __init__(self, refine_jtor=False):
else:
self.Jtor = self.Jtor_unrefined

def get_profile_data(self):
return ProfileData(
flag_limiter=self.flag_limiter,
jtor=self.jtor,
diverted_core_mask=self.diverted_core_mask,
psi_bndry=self.psi_bndry,
xpt=self.xpt,
fvac=self._fvac,
)

def set_masks(self, eq):
"""Universal function to set all masks related to the limiter.

Expand Down