artist.field.heliostat_group_rigid_body ======================================= .. py:module:: artist.field.heliostat_group_rigid_body Attributes ---------- .. autoapisummary:: artist.field.heliostat_group_rigid_body.log Classes ------- .. autoapisummary:: artist.field.heliostat_group_rigid_body.HeliostatGroupRigidBody Module Contents --------------- .. py:data:: log A logger for the heliostat groups with a rigid body kinematics. .. py:class:: HeliostatGroupRigidBody(names: list[str], positions: torch.Tensor, surface_points: torch.Tensor, surface_normals: torch.Tensor, canting: torch.Tensor, facet_translations: torch.Tensor, initial_orientations: torch.Tensor, nurbs_control_points: torch.Tensor, nurbs_degrees: torch.Tensor, kinematics_translation_deviation_parameters: torch.Tensor, kinematics_rotation_deviation_parameters: torch.Tensor, actuator_parameters_non_optimizable: torch.Tensor, actuator_parameters_optimizable: torch.Tensor = torch.tensor([]), device: torch.device | None = None) Bases: :py:obj:`artist.field.heliostat_group.HeliostatGroup` Initialize a heliostat group with a rigid body kinematics and linear or ideal actuator type. Parameters ---------- names : list[str] The string names of each heliostat in the group in order. positions : torch.Tensor The positions of all heliostats in the group. Shape is ``[number_of_heliostats, 4]``. surface_points : torch.Tensor The surface points of all heliostats in the group. Shape is ``[number_of_heliostats, number_of_combined_surface_points_all_facets, 4]``. surface_normals : torch.Tensor The surface normals of all heliostats in the group. Shape is ``[number_of_heliostats, number_of_combined_surface_normals_all_facets, 4]``. initial_orientations : torch.Tensor The initial orientations of all heliostats in the group. Shape is ``[number_of_heliostats, 4]``. nurbs_control_points : torch.Tensor The control points for NURBS surfaces for all heliostats in the group. Shape is ``[number_of_heliostats, number_of_facets_per_heliostat, number_of_control_points_u_direction, number_of_control_points_v_direction 3]``. nurbs_degrees : torch.Tensor The spline degrees for NURBS surfaces in u and then in v direction, for all heliostats in the group. Shape is ``[2]``. kinematics_translation_deviation_parameters : torch.Tensor The kinematics translation deviation parameters of all heliostats in the group. Shape is ``[number_of_heliostats, 9]``. kinematics_rotation_deviation_parameters : torch.Tensor The kinematics rotation deviation parameters of all heliostats in the group. Shape is ``[number_of_heliostats, 4]``. actuator_parameters_non_optimizable : torch.Tensor The non-optimizable actuator parameters. Shape is ``[number_of_heliostats, 7, 2]`` for linear actuators or ``[number_of_heliostats, 4, 2]`` for ideal actuators. actuator_parameters_optimizable : torch.Tensor The optimizable actuator parameters. Shape is ``[number_of_heliostats, 2, 2]`` for linear actuators or ``[]`` for ideal actuators (default is ``torch.tensor([])``). device : torch.device | None The device on which to perform computations or load tensors and models (default is None). If None, ``ARTIST`` will automatically select the most appropriate device (CUDA or CPU) based on availability and OS. .. py:attribute:: kinematics .. py:method:: align_surfaces_with_incident_ray_directions(aim_points: torch.Tensor, incident_ray_directions: torch.Tensor, active_heliostats_mask: torch.Tensor, device: torch.device | None = None) -> None Align surface points and surface normals with incident ray directions. This method uses incident ray directions to align the heliostats. It is possible to have different incident ray directions for different heliostats, for example during calibration tasks. Only active heliostats can be aligned. Parameters ---------- aim_points : torch.Tensor The aim points for all active heliostats. Shape is ``[number_of_active_heliostats, 4]``. incident_ray_directions : torch.Tensor The incident ray directions. Shape is ``[number_of_active_heliostats, 4]``. active_heliostats_mask : torch.Tensor A mask where 0 indicates a deactivated heliostat and 1 an activated one. An integer greater than 1 indicates that this heliostat is regarded multiple times. Shape is ``[number_of_heliostats]``. device : torch.device | None The device on which to perform computations or load tensors and models (default is None). If None, ``ARTIST`` will automatically select the most appropriate device (CUDA or CPU) based on availability and OS. Raises ------ ValueError If not all heliostats trying to be aligned have been activated. .. py:method:: align_surfaces_with_motor_positions(motor_positions: torch.Tensor, active_heliostats_mask: torch.Tensor, device: torch.device | None = None) -> None Align surface points and surface normals with motor positions. Only active heliostats can be aligned. Parameters ---------- motor_positions : torch.Tensor The motor positions for all active heliostats. Shape is ``[number_of_active_heliostats, 2]``. active_heliostats_mask : torch.Tensor A mask where 0 indicates a deactivated heliostat and 1 an activated one. An integer greater than 1 indicates that this heliostat is regarded multiple times. Shape is ``[number_of_heliostats]``. device : torch.device | None The device on which to perform computations or load tensors and models (default is None). If None, ``ARTIST`` will automatically select the most appropriate device (CUDA or CPU) based on availability and OS. Raises ------ ValueError If not all heliostats trying to be aligned have been activated.