Skip to content

Commit b85c995

Browse files
committed
remove deepcopy from _get_dummy_equilibrium, replace input eq with opt_problem.eq in PicardIterator
1 parent 447515f commit b85c995

File tree

12 files changed

+16
-37
lines changed

12 files changed

+16
-37
lines changed

bluemira/equilibria/optimisation/constraints.py

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -11,7 +11,6 @@
1111
from __future__ import annotations
1212

1313
from abc import ABC, abstractmethod
14-
from copy import deepcopy
1514
from typing import TYPE_CHECKING
1615

1716
import numpy as np
@@ -54,7 +53,7 @@ def _get_dummy_equilibrium(equilibrium: Equilibrium):
5453
# TODO @hsaunders1904: Add passive coil contributions here
5554
# 3579
5655
dummy = equilibrium.plasma
57-
dummy.coilset = deepcopy(equilibrium.coilset)
56+
dummy.coilset = equilibrium.coilset
5857
return dummy
5958

6059

bluemira/equilibria/run.py

Lines changed: 9 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -449,7 +449,6 @@ def run_reference_equilibrium(self):
449449
gamma=self.eq_config.gamma,
450450
)
451451
program = PicardIterator(
452-
eq,
453452
opt_problem,
454453
convergence=deepcopy(self.eq_config.convergence),
455454
relaxation=self.eq_config.relaxation,
@@ -470,7 +469,6 @@ def run_reference_equilibrium(self):
470469
)
471470

472471
program = PicardIterator(
473-
eq,
474472
opt_problem,
475473
convergence=deepcopy(self.eq_config.convergence),
476474
relaxation=self.eq_config.relaxation,
@@ -554,7 +552,7 @@ def get_sof_eof_opt_problems(
554552

555553
return opt_problems
556554

557-
def converge_equilibrium(self, eq: Equilibrium, problem: CoilsetOptimisationProblem):
555+
def converge_equilibrium(self, problem: EqCoilsetOptimisationProblem):
558556
"""Converge an equilibrium problem from a 'frozen' plasma optimised state.
559557
560558
Returns
@@ -563,7 +561,6 @@ def converge_equilibrium(self, eq: Equilibrium, problem: CoilsetOptimisationProb
563561
The iterator
564562
"""
565563
program = PicardIterator(
566-
eq,
567564
problem,
568565
fixed_coils=True,
569566
convergence=deepcopy(self.eq_config.convergence),
@@ -575,15 +572,19 @@ def converge_equilibrium(self, eq: Equilibrium, problem: CoilsetOptimisationProb
575572

576573
def converge_and_snapshot(
577574
self,
578-
sub_opt_problems: Iterable[CoilsetOptimisationProblem],
575+
sub_opt_problems: Iterable[EqCoilsetOptimisationProblem],
579576
problem_names: Iterable[str] = (SOF, EOF),
580577
):
581578
"""Converge equilibrium optimisation problems and take snapshots."""
582579
for snap, problem in zip(problem_names, sub_opt_problems, strict=False):
583-
eq = problem.eq
584-
program = self.converge_equilibrium(eq, problem)
580+
program = self.converge_equilibrium(problem)
585581
self.take_snapshot(
586-
snap, eq, eq.coilset, problem, eq.profiles, iterator=program
582+
snap,
583+
problem.eq,
584+
problem.eq.coilset,
585+
problem,
586+
problem.eq.profiles,
587+
iterator=program,
587588
)
588589

589590
def plot(self):

bluemira/equilibria/solve.py

Lines changed: 3 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -30,8 +30,7 @@
3030

3131
import numpy.typing as npt
3232

33-
from bluemira.equilibria.equilibrium import Equilibrium
34-
from bluemira.equilibria.optimisation.problem import CoilsetOptimisationProblem
33+
from bluemira.equilibria.optimisation.problem import EqCoilsetOptimisationProblem
3534
from bluemira.equilibria.optimisation.problem.base import CoilsetOptimiserResult
3635

3736
__all__ = [
@@ -440,8 +439,6 @@ class PicardIterator:
440439
441440
Parameters
442441
----------
443-
eq:
444-
The equilibrium to solve for
445442
optimisation_problem:
446443
The optimisation problem to use when iterating
447444
convergence:
@@ -460,16 +457,15 @@ class PicardIterator:
460457

461458
def __init__(
462459
self,
463-
eq: Equilibrium,
464-
optimisation_problem: CoilsetOptimisationProblem,
460+
optimisation_problem: EqCoilsetOptimisationProblem,
465461
diagnostic_plotting: PicardDiagnosticOptions | None = None,
466462
convergence: ConvergenceCriterion | None = None,
467463
*,
468464
fixed_coils: bool = False,
469465
relaxation: float = 0,
470466
maxiter: int = 30,
471467
):
472-
self.eq = eq
468+
self.eq = optimisation_problem.eq
473469
self.coilset = self.eq.coilset
474470
self.opt_prob = optimisation_problem
475471
if isinstance(convergence, ConvergenceCriterion):

eudemo/eudemo/equilibria/_designer.py

Lines changed: 0 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -158,7 +158,6 @@ def run(self) -> Equilibrium:
158158
eq = self._make_equilibrium()
159159
opt_problem = self._make_opt_problem(eq)
160160
iterator_program = PicardIterator(
161-
eq,
162161
opt_problem,
163162
convergence=DudsonConvergence(),
164163
relaxation=0.2,
@@ -722,7 +721,6 @@ def run(self) -> Equilibrium:
722721

723722
iter_err_max = settings.pop("iter_err_max")
724723
iterator_program = PicardIterator(
725-
eq,
726724
self.opt_problem,
727725
convergence=DudsonConvergence(iter_err_max),
728726
diagnostic_plotting=self.diagnostic_plotting,

examples/design/optimised_reactor.ex.py

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -192,7 +192,6 @@ def ref_eq(R_0, A) -> Equilibrium: # noqa: D103
192192
)
193193
diagnostic_plotting = PicardDiagnosticOptions(plot=PicardDiagnostic.EQ)
194194
program = PicardIterator(
195-
eq,
196195
current_opt_problem,
197196
fixed_coils=True,
198197
relaxation=0.2,

examples/equilibria/Toroidal_Harmonics_Optimisation_Set_Up.ex.py

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -160,7 +160,6 @@
160160
)
161161

162162
program = PicardIterator(
163-
th_current_opt_eq,
164163
current_opt_problem,
165164
fixed_coils=True,
166165
convergence=DudsonConvergence(1e-3),

examples/equilibria/coilset_opt_problem_tutorial.ex.py

Lines changed: 0 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -294,7 +294,6 @@
294294
eq, magnetic_targets, gamma=1e-8
295295
)
296296
unconstrained_iterator = PicardIterator(
297-
eq,
298297
unconstrained_cop,
299298
fixed_coils=True,
300299
relaxation=0.3,
@@ -375,7 +374,6 @@
375374
constraints=[field_constraints, x_point, lcfs_isoflux, legs_isoflux],
376375
)
377376
constrained_iterator = PicardIterator(
378-
eq,
379377
opt_problem,
380378
fixed_coils=True,
381379
relaxation=0.1,

examples/equilibria/eudemo_2017.ex.py

Lines changed: 1 addition & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -298,7 +298,7 @@
298298
gamma=1e-7,
299299
)
300300

301-
program = PicardIterator(reference_eq, ref_opt_problem, fixed_coils=True, relaxation=0.2)
301+
program = PicardIterator(ref_opt_problem, fixed_coils=True, relaxation=0.2)
302302
program()
303303

304304
sof_psi_boundary = PsiBoundaryConstraint(
@@ -319,7 +319,6 @@
319319
)
320320

321321
iterator = PicardIterator(
322-
sof,
323322
sof_opt_problem,
324323
fixed_coils=True,
325324
relaxation=0.2,
@@ -345,7 +344,6 @@
345344

346345
diagnostic_plotting = PicardDiagnosticOptions(plot=PicardDiagnostic.EQ)
347346
iterator = PicardIterator(
348-
eof,
349347
eof_opt_problem,
350348
relaxation=0.2,
351349
fixed_coils=True,

examples/equilibria/single_null.ex.py

Lines changed: 0 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -244,7 +244,6 @@
244244
)
245245
diagnostic_plotting = PicardDiagnosticOptions(plot=PicardDiagnostic.EQ)
246246
program = PicardIterator(
247-
eq,
248247
current_opt_problem,
249248
convergence=DudsonConvergence(1e-3),
250249
fixed_coils=True,
@@ -294,7 +293,6 @@
294293
constraints=[x_point, field_constraints, force_constraints],
295294
)
296295
program = PicardIterator(
297-
eq,
298296
current_opt_problem,
299297
fixed_coils=True,
300298
convergence=DudsonConvergence(1e-4),
@@ -326,7 +324,6 @@
326324
)
327325

328326
program = PicardIterator(
329-
minimal_current_eq,
330327
minimal_current_opt_problem,
331328
fixed_coils=True,
332329
convergence=DudsonConvergence(1e-4),
@@ -511,7 +508,6 @@
511508

512509
# %%
513510
program = PicardIterator(
514-
sof,
515511
current_opt_problem_sof,
516512
fixed_coils=True,
517513
convergence=DudsonConvergence(1e-4),
@@ -521,7 +517,6 @@
521517
program()
522518

523519
program = PicardIterator(
524-
eof,
525520
current_opt_problem_eof,
526521
fixed_coils=True,
527522
convergence=DudsonConvergence(1e-4),

tests/equilibria/test_equilibrium.py

Lines changed: 1 addition & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -63,7 +63,7 @@ def setup_class(cls):
6363

6464
opt_problem = UnconstrainedTikhonovCurrentGradientCOP(eq, targets, gamma=1e-8)
6565

66-
program = PicardIterator(eq, opt_problem, relaxation=0.1)
66+
program = PicardIterator(opt_problem, relaxation=0.1)
6767
program()
6868
cls.eq = eq
6969

@@ -266,7 +266,6 @@ def test_custom_profile(self):
266266
eq, self.targets, gamma=1e-8
267267
)
268268
program = PicardIterator(
269-
eq,
270269
opt_problem,
271270
convergence=DudsonConvergence(1e-1),
272271
fixed_coils=True,
@@ -289,7 +288,6 @@ def test_betaip_profile(self, shape):
289288
eq, self.targets, gamma=1e-8
290289
)
291290
program = PicardIterator(
292-
eq,
293291
opt_problem,
294292
convergence=DudsonConvergence(1e-1),
295293
fixed_coils=True,
@@ -324,7 +322,6 @@ def test_betapliip_profile(self, shape, o_point_fallback):
324322
eq, self.targets, gamma=1e-8
325323
)
326324
program = PicardIterator(
327-
eq,
328325
opt_problem,
329326
convergence=DudsonConvergence(1e-2),
330327
fixed_coils=True,

0 commit comments

Comments
 (0)