bluemira.equilibria.optimisation.harmonics.harmonics_constraints ================================================================ .. py:module:: bluemira.equilibria.optimisation.harmonics.harmonics_constraints .. autoapi-nested-parse:: Harmonics constraint functions. Classes ------- .. autoapisummary:: bluemira.equilibria.optimisation.harmonics.harmonics_constraints.SphericalHarmonicConstraint bluemira.equilibria.optimisation.harmonics.harmonics_constraints.ToroidalHarmonicConstraint Module Contents --------------- .. py:class:: SphericalHarmonicConstraint(ref_harmonics: numpy.typing.NDArray[numpy.float64], r_t: float, sh_coil_names: list, tolerance: float | numpy.typing.NDArray | None = None, smallest_tol: float = 1e-06, constraint_type: str = 'equality', *, invert: bool = False) Bases: :py:obj:`bluemira.equilibria.optimisation.constraints.UpdateableConstraint` .. autoapi-inheritance-diagram:: bluemira.equilibria.optimisation.harmonics.harmonics_constraints.SphericalHarmonicConstraint :parts: 1 :private-bases: Spherical harmonic constraints for the desired core plasma of a spherical tokamak equilibria. :param ref_harmonics: Initial harmonic amplitudes obtained from desired core plasma (Returned by spherical_harmonic_approximation) :param r_t: (Returned by spherical_harmonic_approximation) :type r_t: float :param sh_coil_names: Names of the coils to use with SH approximation (Returned by spherical_harmonic_approximation) :param tolerance: Tolerance with which the constraint(s) will be met .. py:attribute:: constraint_type :value: 'equality' .. py:attribute:: tolerance :value: None .. py:attribute:: target_harmonics .. py:attribute:: max_degree .. py:attribute:: invert :value: False .. py:attribute:: sh_coil_names .. py:attribute:: r_t .. py:attribute:: _args .. py:property:: control_coil_names The names of the allowed control coils when using the SH approximation constraints. .. py:method:: prepare(equilibrium: bluemira.equilibria.equilibrium.Equilibrium, *, I_not_dI=False, fixed_coils=False) Prepare the constraint for use in an equilibrium optimisation problem. :raises ValueError: Constraint requires fixed coils .. py:method:: control_response(coilset: bluemira.equilibria.coils.CoilSet) -> numpy.ndarray Calculate control response of a CoilSet to the constraint. :returns: The coil harmonic amplitude matrix .. py:method:: evaluate(_eq: bluemira.equilibria.equilibrium.Equilibrium) -> numpy.typing.NDArray[numpy.float64] Calculate the value of the constraint in an Equilibrium. .. py:method:: f_constraint() -> bluemira.equilibria.optimisation.harmonics.harmonics_constraint_functions.SphericalHarmonicConstraintFunction Constraint function. .. py:method:: plot(ax) Plot the constraint onto an Axes. .. py:class:: ToroidalHarmonicConstraint(th_result: bluemira.equilibria.optimisation.harmonics.toroidal_harmonics_approx_functions.ToroidalHarmonicsSelectionResult, relative_tolerance_cos: float | numpy.typing.NDArray[numpy.float64] = 0.001, relative_tolerance_sin: float | numpy.typing.NDArray[numpy.float64] = 0.001, constraint_type: str = 'equality', weights: float | numpy.ndarray = 1.0) Bases: :py:obj:`bluemira.equilibria.optimisation.constraints.UpdateableConstraint` .. autoapi-inheritance-diagram:: bluemira.equilibria.optimisation.harmonics.harmonics_constraints.ToroidalHarmonicConstraint :parts: 1 :private-bases: Toroidal harmonic constraints for the desired core plasma of a conventional aspect ratio stokamak equilibria. :param ref_harmonics: Initial harmonic amplitudes obtained from desired core plasma (Returned by toroidal_harmonic_approximation) :param th_params: ToroidalHarmonicsParams dataclass containing necessary parameters for use in TH approximation :param tolerance: Tolerance with which the constraint(s) will be met .. py:attribute:: constraint_type :value: 'equality' .. py:attribute:: cos_degrees_chosen .. py:attribute:: sin_degrees_chosen .. py:attribute:: th_params .. py:attribute:: target_value .. py:attribute:: weights :value: 1.0 .. py:attribute:: _args .. py:property:: control_coil_names The names of the allowed control coils when using the TH approximation constraints. .. py:method:: prepare(equilibrium: bluemira.equilibria.equilibrium.Equilibrium, *, I_not_dI=False, fixed_coils=True) Prepare the constraint for use in an equilibrium optimisation problem. :raises ValueError: Constraint requires fixed coils .. py:method:: control_response(coilset: bluemira.equilibria.coils.CoilSet) -> numpy.ndarray Calculate control response of a CoilSet to the constraint. :returns: The coil harmonic amplitude matrix .. py:method:: evaluate(_eq: bluemira.equilibria.equilibrium.Equilibrium) -> tuple[numpy.typing.NDArray[numpy.float64], numpy.typing.NDArray[numpy.float64]] Calculate the value of the constraint in an Equilibrium. .. py:method:: f_constraint() -> bluemira.equilibria.optimisation.harmonics.harmonics_constraint_functions.ToroidalHarmonicConstraintFunction Constraint function. .. py:method:: plot(ax) Plot the constrained region onto an Axes. .. py:method:: __len__() -> int Length of TH constraint.