artist.field.surface ==================== .. py:module:: artist.field.surface Classes ------- .. autoapisummary:: artist.field.surface.Surface Module Contents --------------- .. py:class:: Surface(surface_config: artist.scenario.configuration_classes.SurfaceConfig, device: torch.device | None = None) Initialize the surface of one heliostat. The heliostat surface consists of one or more facets. The surface only describes the mirrors on the heliostat, not the whole heliostat. The surface can be aligned through the kinematic and its actuators. Each surface and thus each facet is defined through NURBS, the discrete surface points and surface normals can be retrieved. Parameters ---------- surface_config : SurfaceConfig The surface configuration parameters used to construct the surface. 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:: nurbs_facets :value: [] .. py:method:: get_surface_points_and_normals(number_of_points_per_facet: torch.Tensor, device: torch.device | None = None) -> tuple[torch.Tensor, torch.Tensor] Calculate all surface points and normals from all facets. Parameters ---------- number_of_points_per_facet : torch.Tensor The number of sampling points along each direction of each 2D facet. Tensor of shape [2]. 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. Returns ------- torch.Tensor The surface points for one heliostat, tensor of shape [number_of_facets, number_of_surface_points_per_facet, 4]. torch.Tensor The surface normals for one heliostat, tensor of shape [number_of_facets, number_of_surface_normals_per_facet, 4].