Skip to content

Commit 76b124b

Browse files
committed
✨ Regrid eqdsk after read in
1 parent b99c019 commit 76b124b

File tree

2 files changed

+32
-1
lines changed

2 files changed

+32
-1
lines changed

bluemira/equilibria/equilibrium.py

Lines changed: 15 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -139,6 +139,7 @@ def _get_eqdsk(
139139
*,
140140
qpsi_positive: bool | None = None,
141141
full_coil: bool = False,
142+
regrid_nx_nz: tuple[int, int] | None = None,
142143
**kwargs,
143144
) -> tuple[EQDSKInterface, Grid]:
144145
"""
@@ -190,7 +191,10 @@ def _get_eqdsk(
190191
e.dxc /= 2
191192
e.dzc /= 2
192193

193-
return e, Grid.from_eqdsk(e)
194+
grid = Grid.from_eqdsk(e)
195+
if regrid_nx_nz is not None:
196+
grid = grid.regrid(*regrid_nx_nz)
197+
return e, grid
194198

195199
def to_eqdsk(
196200
self,
@@ -280,6 +284,7 @@ def from_eqdsk(
280284
*,
281285
qpsi_positive: bool | None = None,
282286
full_coil: bool = False,
287+
regrid_nx_nz: tuple[int, int] | None = None,
283288
**kwargs,
284289
):
285290
"""
@@ -306,8 +311,10 @@ def from_eqdsk(
306311
from_cocos=from_cocos,
307312
full_coil=full_coil,
308313
qpsi_positive=qpsi_positive,
314+
regrid_nx_nz=regrid_nx_nz,
309315
**kwargs,
310316
)
317+
311318
psi_ax = e.psimag
312319
psi_b = e.psibdry
313320
lcfs = Coordinates({"x": e.xbdry, "z": e.zbdry})
@@ -472,6 +479,7 @@ def _get_eqdsk(
472479
user_coils: CoilSet | None = None,
473480
force_symmetry: bool = False,
474481
full_coil: bool = False,
482+
regrid_nx_nz: tuple[int, int] | None = None,
475483
**kwargs,
476484
) -> tuple[EQDSKInterface, Grid, CoilSet, Limiter | None]:
477485
"""
@@ -515,6 +523,7 @@ def _get_eqdsk(
515523
from_cocos=from_cocos,
516524
qpsi_positive=qpsi_positive,
517525
full_coil=full_coil,
526+
regrid_nx_nz=regrid_nx_nz,
518527
**kwargs,
519528
)
520529
coilset = user_coils if user_coils is not None else CoilSet.from_group_vecs(e)
@@ -659,6 +668,7 @@ def from_eqdsk(
659668
force_symmetry: bool,
660669
user_coils: CoilSet | None = None,
661670
full_coil: bool = False,
671+
regrid_nx_nz: tuple[int, int] | None = None,
662672
**kwargs,
663673
):
664674
"""
@@ -692,8 +702,10 @@ def from_eqdsk(
692702
force_symmetry=force_symmetry,
693703
user_coils=user_coils,
694704
full_coil=full_coil,
705+
regrid_nx_nz=regrid_nx_nz,
695706
**kwargs,
696707
)
708+
697709
self = cls(coilset, grid, limiter=limiter, psi=eqdsk.psi, filename=filename)
698710
self._eqdsk = eqdsk
699711
return self
@@ -1025,6 +1037,7 @@ def from_eqdsk(
10251037
force_symmetry: bool = False,
10261038
user_coils: CoilSet | None = None,
10271039
full_coil: bool = False,
1040+
regrid_nx_nz: tuple[int, int] | None = None,
10281041
**kwargs,
10291042
):
10301043
"""
@@ -1062,6 +1075,7 @@ def from_eqdsk(
10621075
force_symmetry=force_symmetry,
10631076
user_coils=user_coils,
10641077
full_coil=full_coil,
1078+
regrid_nx_nz=regrid_nx_nz,
10651079
**kwargs,
10661080
)
10671081

bluemira/equilibria/grid.py

Lines changed: 17 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -132,6 +132,23 @@ def __init__(
132132
[(nx - 1, z) for z in range(nz)],
133133
])
134134

135+
def regrid(self, nx: int, nz: int) -> Grid:
136+
"""Reinitialise the grid with different x and z discretisation
137+
138+
Parameters
139+
----------
140+
nx:
141+
number of x grid points
142+
nz:
143+
number of z grid points
144+
145+
Returns
146+
-------
147+
:
148+
New grid object
149+
"""
150+
return type(self)(self.x_min, self.x_max, self.z_min, self.z_max, nx, nz)
151+
135152
@classmethod
136153
def from_eqdict(cls, e) -> Grid:
137154
"""

0 commit comments

Comments
 (0)