bluemira.builders.coil_supports =============================== .. py:module:: bluemira.builders.coil_supports .. autoapi-nested-parse:: Coil support builders Classes ------- .. autoapisummary:: bluemira.builders.coil_supports.ITERGravitySupportBuilderParams bluemira.builders.coil_supports.ITERGravitySupportBuilder bluemira.builders.coil_supports.PFCoilSupportBuilderParams bluemira.builders.coil_supports.PFCoilSupportBuilder bluemira.builders.coil_supports.StraightOISOptimisationProblem bluemira.builders.coil_supports.StraightOISDesignerParams bluemira.builders.coil_supports.StraightOISDesigner bluemira.builders.coil_supports.OISBuilderParams bluemira.builders.coil_supports.OISBuilder Module Contents --------------- .. py:class:: ITERGravitySupportBuilderParams Bases: :py:obj:`bluemira.base.parameter_frame.ParameterFrame` .. autoapi-inheritance-diagram:: bluemira.builders.coil_supports.ITERGravitySupportBuilderParams :parts: 1 :private-bases: ITER-like gravity support parameters .. py:attribute:: x_g_support :type: bluemira.base.parameter_frame.Parameter[float] .. py:attribute:: z_gs :type: bluemira.base.parameter_frame.Parameter[float] .. py:attribute:: tf_wp_width :type: bluemira.base.parameter_frame.Parameter[float] .. py:attribute:: tf_wp_depth :type: bluemira.base.parameter_frame.Parameter[float] .. py:attribute:: tk_tf_side :type: bluemira.base.parameter_frame.Parameter[float] .. py:attribute:: tf_gs_tk_plate :type: bluemira.base.parameter_frame.Parameter[float] .. py:attribute:: tf_gs_g_plate :type: bluemira.base.parameter_frame.Parameter[float] .. py:attribute:: tf_gs_base_depth :type: bluemira.base.parameter_frame.Parameter[float] .. py:class:: ITERGravitySupportBuilder(params: bluemira.base.parameter_frame.typed.ParameterFrameLike, build_config: bluemira.base.builder.BuildConfig, tf_xz_keep_out_zone: bluemira.geometry.wire.BluemiraWire) Bases: :py:obj:`bluemira.base.builder.Builder` .. autoapi-inheritance-diagram:: bluemira.builders.coil_supports.ITERGravitySupportBuilder :parts: 1 :private-bases: ITER-like gravity support builder :param params: Parameters to use :param build_config: Build config to use :param tf_kz_keep_out_zone: TF coil wire keep-out-zone for the outer edge of the TF coil (including casing) Note that this should be on the y=0 plane. .. py:attribute:: param_cls :type: type[ITERGravitySupportBuilderParams] The class to hold this Builders's parameters. .. py:attribute:: params :type: ITERGravitySupportBuilderParams .. py:attribute:: GS :value: 'GS' .. py:attribute:: tf_xz_keep_out_zone .. py:method:: build() -> bluemira.base.components.Component Build the ITER-like gravity support component. .. py:method:: build_xz(xyz_component: bluemira.base.components.PhysicalComponent) -> bluemira.base.components.PhysicalComponent :staticmethod: Build the x-z component of the ITER-like gravity support. .. py:method:: build_xy() Build the x-y component of the ITER-like gravity support. .. py:method:: _get_intersection_wire(width) .. py:method:: _make_connection_block(width, v1, v4, intersection_wire) :returns: The connection block of the gravity support with the TF coil .. py:method:: _make_plates(width, v1x, v4x, z_block_lower) -> list[bluemira.geometry.wire.BluemiraWire] Make the gravity support vertical plates .. py:method:: _make_floor_block(v1x, v4x) .. py:method:: build_xyz() -> bluemira.base.components.PhysicalComponent Build the x-y-z component of the ITER-like gravity support. .. py:class:: PFCoilSupportBuilderParams Bases: :py:obj:`bluemira.base.parameter_frame.ParameterFrame` .. autoapi-inheritance-diagram:: bluemira.builders.coil_supports.PFCoilSupportBuilderParams :parts: 1 :private-bases: PF coil support parameters .. py:attribute:: tf_wp_width :type: bluemira.base.parameter_frame.Parameter[float] .. py:attribute:: tf_wp_depth :type: bluemira.base.parameter_frame.Parameter[float] .. py:attribute:: tk_tf_side :type: bluemira.base.parameter_frame.Parameter[float] .. py:attribute:: pf_s_tk_plate :type: bluemira.base.parameter_frame.Parameter[float] .. py:attribute:: pf_s_n_plate :type: bluemira.base.parameter_frame.Parameter[int] .. py:attribute:: pf_s_g :type: bluemira.base.parameter_frame.Parameter[float] .. py:class:: PFCoilSupportBuilder(params: bluemira.base.parameter_frame.typed.ParameterFrameLike, build_config: dict, tf_xz_keep_out_zone: bluemira.geometry.wire.BluemiraWire, pf_coil_xz: bluemira.geometry.wire.BluemiraWire) Bases: :py:obj:`bluemira.base.builder.Builder` .. autoapi-inheritance-diagram:: bluemira.builders.coil_supports.PFCoilSupportBuilder :parts: 1 :private-bases: PF coil support builder .. py:attribute:: param_cls :type: type[PFCoilSupportBuilderParams] The class to hold this Builders's parameters. .. py:attribute:: params :type: PFCoilSupportBuilderParams .. py:attribute:: PF_ICS :value: 'PF ICS' .. py:attribute:: tf_xz_keep_out_zone .. py:attribute:: pf_coil_xz .. py:attribute:: name .. py:method:: build() -> bluemira.base.components.Component :returns: The PF coil support component. .. py:method:: build_xy() Build the x-y components of the PF coil support. .. py:method:: build_xz(xyz) :returns: The x-z components of the PF coil support. .. py:method:: _build_support_xs() .. py:method:: _get_first_intersection(point, angle, wire) :staticmethod: :returns: The first intersection from a point along an angle with a wire. .. py:method:: _get_support_point_angle(support_face: bluemira.geometry.face.BluemiraFace) .. py:method:: _get_intersecting_wire(v1, v2, v3, v4, angle) .. py:method:: _make_rib_profile(support_face) .. py:method:: _make_ribs(width, support_face) .. py:method:: build_xyz() -> bluemira.base.components.PhysicalComponent Build the x-y-z components of the PF coil support. :returns: The coil support .. py:class:: StraightOISOptimisationProblem(wire: bluemira.geometry.wire.BluemiraWire, keep_out_zone: bluemira.geometry.face.BluemiraFace, n_koz_discr: int = 100) Bases: :py:obj:`bluemira.optimisation.OptimisationProblem` .. autoapi-inheritance-diagram:: bluemira.builders.coil_supports.StraightOISOptimisationProblem :parts: 1 :private-bases: Optimisation problem for a straight outer inter-coil structure :param wire: Sub wire along which to place the OIS :param keep_out_zone: Region in which the OIS cannot be :param n_koz_discr: Number of discretisation points to use when checking the keep-out zone constraint .. py:attribute:: wire .. py:attribute:: n_koz_discr :value: 100 .. py:attribute:: koz_points .. py:method:: objective(x: numpy.ndarray) -> float Objective function to maximise length. .. py:method:: ineq_constraints() -> list[bluemira.optimisation.ConstraintT] The inequality constraints for the problem. .. py:method:: bounds() -> tuple[numpy.ndarray, numpy.ndarray] :staticmethod: The optimisation parameter bounds. .. py:method:: f_L_to_wire(wire: bluemira.geometry.wire.BluemiraWire, x_norm: list[float] | numpy.typing.NDArray) -> bluemira.geometry.wire.BluemiraWire :staticmethod: Convert a pair of normalised L values to a wire :returns: The wire .. py:method:: f_L_to_xz(wire: bluemira.geometry.wire.BluemiraWire, value: float) -> numpy.ndarray :staticmethod: Convert a normalised L value to an x, z pair. .. py:method:: negative_length(x_norm: numpy.ndarray) -> float Calculate the negative length of the straight OIS :param x_norm: Normalised solution vector :returns: Negative length from the normalised solution vector .. py:method:: constrain_koz(x_norm: numpy.ndarray) -> numpy.ndarray Constrain the straight OIS to be outside a keep-out-zone :param x_norm: Normalised solution vector :returns: KOZ constraint array .. py:method:: constrain_x(x_norm: numpy.ndarray) -> numpy.ndarray :staticmethod: Constrain the second normalised value to be always greater than the first. .. py:method:: df_constrain_x(x_norm: numpy.ndarray) -> numpy.ndarray :staticmethod: Gradient of the constraint on the solution vector .. py:class:: StraightOISDesignerParams Bases: :py:obj:`bluemira.base.parameter_frame.ParameterFrame` .. autoapi-inheritance-diagram:: bluemira.builders.coil_supports.StraightOISDesignerParams :parts: 1 :private-bases: Parameters for the StraightOISDesigner .. py:attribute:: tk_ois :type: bluemira.base.parameter_frame.Parameter[float] .. py:attribute:: g_ois_tf_edge :type: bluemira.base.parameter_frame.Parameter[float] .. py:attribute:: min_OIS_length :type: bluemira.base.parameter_frame.Parameter[float] .. py:class:: StraightOISDesigner(params: bluemira.base.parameter_frame.typed.ParameterFrameLike, build_config: bluemira.base.builder.BuildConfig, tf_coil_xz_face: bluemira.geometry.face.BluemiraFace, keep_out_zones: list[bluemira.geometry.face.BluemiraFace]) Bases: :py:obj:`bluemira.base.designer.Designer`\ [\ :py:obj:`list`\ [\ :py:obj:`bluemira.geometry.wire.BluemiraWire`\ ]\ ] .. autoapi-inheritance-diagram:: bluemira.builders.coil_supports.StraightOISDesigner :parts: 1 :private-bases: Design a set of straight length outer inter-coil structures. :param params: ParameterFrame for the StraightOISDesigner :param build_config: Build config dictionary for the StraightOISDesigner :param tf_coil_xz_face: x-z face of the TF coil on the y=0 plane :param keep_out_zones: List of x-z keep_out_zone faces on the y=0 plane .. py:attribute:: param_cls :type: type[StraightOISDesignerParams] The ParameterFrame class defining this designer's parameters. .. py:attribute:: params :type: StraightOISDesignerParams .. py:attribute:: tf_face .. py:attribute:: keep_out_zones .. py:method:: run() -> list[bluemira.geometry.wire.BluemiraWire] Create and run the design optimisation problem. :returns: A list of outer inter-coil structure wires on the y=0 plane. .. py:method:: _make_ois_wire(p1, p2) Make a rectangular wire from the two inner edge points .. py:method:: _make_ois_koz(koz_centreline) Make the (fused) keep-out-zone for the outer inter-coil structures. .. py:method:: _make_ois_regions(ois_centreline, koz_centreline) Select regions that are viable for outer inter-coil structures .. py:class:: OISBuilderParams Bases: :py:obj:`bluemira.base.parameter_frame.ParameterFrame` .. autoapi-inheritance-diagram:: bluemira.builders.coil_supports.OISBuilderParams :parts: 1 :private-bases: Outer intercoil structure parameters .. py:attribute:: n_TF :type: bluemira.base.parameter_frame.Parameter[int] .. py:attribute:: tf_wp_depth :type: bluemira.base.parameter_frame.Parameter[float] .. py:attribute:: tk_tf_side :type: bluemira.base.parameter_frame.Parameter[float] .. py:class:: OISBuilder(params: bluemira.base.parameter_frame.typed.ParameterFrameLike, build_config: bluemira.base.builder.BuildConfig, ois_xz_profiles: bluemira.geometry.wire.BluemiraWire | list[bluemira.geometry.wire.BluemiraWire]) Bases: :py:obj:`bluemira.base.builder.Builder` .. autoapi-inheritance-diagram:: bluemira.builders.coil_supports.OISBuilder :parts: 1 :private-bases: Outer intercoil structure builder .. py:attribute:: param_cls :type: type[OISBuilderParams] The class to hold this Builders's parameters. .. py:attribute:: params :type: OISBuilderParams .. py:attribute:: RIGHT_OIS :value: 'TF OIS right' .. py:attribute:: LEFT_OIS :value: 'TF OIS left' .. py:attribute:: TF_OIS :value: 'TF OIS' .. py:attribute:: ois_xz_profiles .. py:method:: build() -> bluemira.base.components.Component Build the PF coil support component. .. py:method:: build_xy() Build the x-y component of the OIS .. py:method:: build_xz() Build the x-z component of the OIS .. py:method:: build_xyz() Build the x-y-z component of the OIS