Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
56 commits
Select commit Hold shift + click to select a range
d2f187e
rename data_parser subpackage to io
mcw92 May 4, 2026
a62242e
Merge branch 'main' into maintenance/restructure_package
mcw92 May 4, 2026
ab88b02
rename calibration_data_parser module to calibration_parser
mcw92 May 4, 2026
96a5c85
introduce new nurbs submodule
mcw92 May 4, 2026
0706252
update init to reflect two target area types
mcw92 May 4, 2026
eb5b082
introduce new subpackage raytracing and refactor code accordingly
mcw92 May 4, 2026
82f30db
add geometry submodule to raytracing
mcw92 May 4, 2026
1b36a32
update tests to reflect updated package structure
mcw92 May 4, 2026
f81998c
introduce new optimization subpackage
mcw92 May 4, 2026
aa6021d
add dirty fix for circular import
mcw92 May 4, 2026
91e83b1
introduce geometry subpackage
mcw92 May 4, 2026
d207df5
introduce flux subpackage
mcw92 May 4, 2026
18e7b1d
introduce flux subpackage
mcw92 May 4, 2026
9a7499e
refactor utils package
mcw92 May 4, 2026
04c4253
refactor utils
mcw92 May 4, 2026
3067fb6
remove core submodule
mcw92 May 4, 2026
692c2b6
remove core submodule remainder
mcw92 May 4, 2026
fac5bdb
update init to reflect new package structure
mcw92 May 4, 2026
aee5dda
clean up init files
mcw92 May 4, 2026
48b4575
remove heliostat convention... second try
MarleneBusch May 5, 2026
0856146
fill init, consistify imports, and fix docstrings
mcw92 May 7, 2026
f97b7d5
fill init and consistify imports
mcw92 May 7, 2026
381d0e7
fill init, consistify imports, and fix docstrings
mcw92 May 7, 2026
e333733
fill init, consistify imports, and fix docstrings
mcw92 May 7, 2026
4edc1eb
fix bug
mcw92 May 7, 2026
3d75227
fill init and consistify imports
mcw92 May 7, 2026
0f163fc
fill init and consistify imports
mcw92 May 7, 2026
9e8349b
fill init and consistify imports
mcw92 May 7, 2026
7a22a80
fill init and consistify imports
mcw92 May 7, 2026
9ef1f10
make pre-commit happy
mcw92 May 7, 2026
414d848
use short imports
mcw92 May 7, 2026
47dfe87
[pre-commit.ci] auto fixes from pre-commit.com hooks
pre-commit-ci[bot] May 7, 2026
af766c6
fix mypy issue
mcw92 May 7, 2026
3eaa9b7
Merge branch 'maintenance/restructure_package' of https://github.com/…
mcw92 May 7, 2026
c199855
consistify imports
mcw92 May 11, 2026
5ad08d0
add missing objects to all
mcw92 May 11, 2026
ad9affa
try to make import more explicit
mcw92 May 11, 2026
5a7f2ac
rename tutorial
MarleneBusch May 11, 2026
bc32508
update plots for read the docs
MarleneBusch May 11, 2026
c3a56da
update imports to reflect new package structure
mcw92 May 11, 2026
d296a3e
fix merge conflict
mcw92 May 11, 2026
9b7ede2
fix paint mapping kex error
MarleneBusch May 11, 2026
15c3307
Merge branch 'maintenance/restructure_package' of github.com:ARTIST-A…
MarleneBusch May 11, 2026
d88e312
[pre-commit.ci] auto fixes from pre-commit.com hooks
pre-commit-ci[bot] May 11, 2026
1719bc5
fix relative paths issue
mcw92 May 11, 2026
3e8c53d
Merge branch 'maintenance/restructure_package' of https://github.com/…
mcw92 May 11, 2026
c7ab733
fix comments
mcw92 May 11, 2026
53d12f7
fix relative paths issue
mcw92 May 11, 2026
962eca4
try to fix relative path issue
mcw92 May 11, 2026
f809eb5
polish comments and docstrings
mcw92 May 11, 2026
6bf08a7
set values
MarleneBusch May 12, 2026
d8c6afb
fix relative paths
MarleneBusch May 12, 2026
35912b3
Merge branch 'main' into maintenance/restructure_package
MarleneBusch May 12, 2026
20058ed
remove comment line
MarleneBusch May 12, 2026
8751c64
merge
MarleneBusch May 12, 2026
2b82f9e
[pre-commit.ci] auto fixes from pre-commit.com hooks
pre-commit-ci[bot] May 12, 2026
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
14 changes: 1 addition & 13 deletions artist/__init__.py
Original file line number Diff line number Diff line change
@@ -1,18 +1,6 @@
"""Bundle ``ARTIST`` as a package."""
"""Top-level package for ARTIST."""

import os

from . import core, data_parser, field, scenario, scene, util

ARTIST_ROOT = f"{os.sep}".join(__file__.split(os.sep)[:-2])
"""Reference to the root directory of ``ARTIST``."""

__all__ = [
"core",
"data_parser",
"field",
"scenario",
"scene",
"util",
"ARTIST_ROOT",
]
19 changes: 0 additions & 19 deletions artist/core/__init__.py

This file was deleted.

36 changes: 0 additions & 36 deletions artist/core/core_utils.py

This file was deleted.

1 change: 0 additions & 1 deletion artist/data_parser/__init__.py

This file was deleted.

40 changes: 19 additions & 21 deletions artist/field/__init__.py
Original file line number Diff line number Diff line change
@@ -1,31 +1,29 @@
"""Bundle all classes that represent physical objects in ``ARTIST``."""

from artist.field.actuators import Actuators
from artist.field.actuators_ideal import IdealActuators
from artist.field.actuators_linear import LinearActuators
from artist.field.heliostat_field import HeliostatField
from artist.field.heliostat_group import HeliostatGroup
from artist.field.heliostat_group_rigid_body import HeliostatGroupRigidBody
from artist.field.kinematics import Kinematics
from artist.field.kinematics_rigid_body import RigidBody
from artist.field.solar_tower import SolarTower
from artist.field.surface import Surface
from artist.field.tower_target_areas import TowerTargetAreas
from artist.field.tower_target_areas_cylindrical import TowerTargetAreasCylindrical
from artist.field.tower_target_areas_planar import TowerTargetAreasPlanar
from .actuators import Actuators
from .actuators_ideal import IdealActuators
from .actuators_linear import LinearActuators
from .heliostat_field import HeliostatField
from .heliostat_group import HeliostatGroup
from .heliostat_group_rigid_body import HeliostatGroupRigidBody
from .kinematics import Kinematics
from .kinematics_rigid_body import RigidBody
from .solar_tower import SolarTower
from .surface import Surface
from .tower_target_areas import TowerTargetAreas
from .tower_target_areas_cylindrical import TowerTargetAreasCylindrical
from .tower_target_areas_planar import TowerTargetAreasPlanar

__all__ = [
"HeliostatField",
"Actuators",
"IdealActuators",
"LinearActuators",
"Surface",
"HeliostatField",
"IdealActuators",
"HeliostatGroup",
"HeliostatGroupRigidBody",
"TowerTargetAreas",
"TowerTargetAreasPlanar",
"TowerTargetAreasCylindrical",
"Kinematics",
"RigidBody",
"SolarTower",
"TowerTargetAreas",
"TowerTargetAreasPlanar",
"TowerTargetAreasCylindrical",
"Surface",
]
26 changes: 15 additions & 11 deletions artist/field/actuators.py
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
import torch

from artist.util.environment_setup import get_device
from artist.util.env import get_device


class Actuators(torch.nn.Module):
Expand All @@ -11,16 +11,18 @@ class Actuators(torch.nn.Module):
----------
non_optimizable_parameters : torch.Tensor
The non-optimizable actuator parameters, describing actuator geometry.
Tensor of shape [number_of_heliostats, 7, 2] for linear actuators or [number_of_heliostats, 4, 2] for ideal actuators.
Shape is ``[number_of_heliostats, 7, 2]`` for linear actuators
or ``[number_of_heliostats, 4, 2]`` for ideal actuators.
optimizable_parameters : torch.Tensor
The two optimizable actuator parameters, describing the initial actuator configuration.
Tensor of shape [number_of_heliostats, 2, 2] for linear actuators or [] for ideal actuators.
Shape is ``[number_of_heliostats, 2, 2]`` for linear actuators or ``[]`` for ideal actuators.
active_non_optimizable_parameters : torch.Tensor
Active non-optimizable geometry parameters.
Tensor of shape [number_of_active_heliostats, 7, 2] for linear actuators or [number_of_active_heliostats, 4, 2] for ideal actuators.
Shape is ``[number_of_active_heliostats, 7, 2]`` for linear actuators
or ``[number_of_active_heliostats, 4, 2]`` for ideal actuators.
active_optimizable_parameters : torch.Tensor
Active optimizable parameters.
Tensor of shape [number_of_active_heliostats, 2, 2] for linear actuators or [] for ideal actuators.
Shape is ``[number_of_active_heliostats, 2, 2]`` for linear actuators or ``[]`` for ideal actuators.

Methods
-------
Expand Down Expand Up @@ -51,10 +53,12 @@ def __init__(
----------
non_optimizable_parameters : torch.Tensor
The non-optimizable actuator parameters, describing actuator geometry.
Tensor of shape [number_of_heliostats, 7, 2] for linear actuators or [number_of_heliostats, 4, 2] for ideal actuators.
Shape is ``[number_of_heliostats, 7, 2]`` for linear actuators
or ``[number_of_heliostats, 4, 2]`` for ideal actuators.
optimizable_parameters : torch.Tensor
The two optimizable actuator parameters, describing the initial actuator configuration.
Tensor of shape [number_of_heliostats, 2, 2] for linear actuators or [] for ideal actuators (default is torch.Tensor([])).
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
Expand Down Expand Up @@ -82,7 +86,7 @@ def motor_positions_to_angles(
----------
motor_positions : torch.Tensor
The motor positions.
Tensor of shape [number_of_active_heliostats, 2].
Shape is ``[number_of_active_heliostats, 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
Expand All @@ -105,7 +109,7 @@ def angles_to_motor_positions(
----------
angles : torch.Tensor
The joint angles.
Tensor of shape [number_of_active_heliostats, 2].
Shape is ``[number_of_active_heliostats, 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
Expand All @@ -128,7 +132,7 @@ def forward(
----------
motor_positions : torch.Tensor
The motor positions to be converted to joint angles.
Tensor of shape [number_of_active_heliostats, 2].
Shape is ``[number_of_active_heliostats, 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
Expand All @@ -138,7 +142,7 @@ def forward(
-------
torch.Tensor
The joint angles.
Tensor of shape [number_of_active_heliostats, 2].
Shape is ``[number_of_active_heliostats, 2]``.

"""
device = get_device(device=device)
Expand Down
21 changes: 11 additions & 10 deletions artist/field/actuators_ideal.py
Original file line number Diff line number Diff line change
Expand Up @@ -11,16 +11,16 @@ class IdealActuators(Actuators):
----------
non_optimizable_parameters : torch.Tensor
The four non-optimizable actuator parameters, describing actuator geometry.
Tensor of shape [number_of_heliostats, 4, 2].
Shape is ``[number_of_heliostats, 4, 2]``.
optimizable_parameters : torch.Tensor
The ideal actuators do not have optimizable parameters, this tensor is therefore empty.
Tensor of shape [].
Shape is ``[]``.
active_non_optimizable_parameters : torch.Tensor
Active non-optimizable geometry parameters.
Tensor of shape [number_of_active_heliostats, 4, 2].
Shape is ``[number_of_active_heliostats, 4, 2]``.
active_optimizable_parameters : torch.Tensor
The ideal actuators do not have optimizable parameters, this tensor is therefore empty.
Tensor of shape [].
Shape is ``[]``.

Methods
-------
Expand All @@ -47,10 +47,11 @@ def __init__(
----------
non_optimizable_parameters : torch.Tensor
The four non-optimizable actuator parameters, describing actuator geometry.
Tensor of shape [number_of_heliostats, 4, 2].
Shape is ``[number_of_heliostats, 4, 2]``.
optimizable_parameters : torch.Tensor
The ideal actuators do not have optimizable parameters, this tensor is therefore empty (default is torch.tensor([])).
Tensor of shape [].
The ideal actuators do not have optimizable parameters, this tensor is therefore empty
(default is ``torch.tensor([])``).
Shape is ``[]``.
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
Expand All @@ -72,7 +73,7 @@ def motor_positions_to_angles(
----------
motor_positions : torch.Tensor
The motor positions.
Tensor of shape [number_of_active_heliostats, 2].
Shape is ``[number_of_active_heliostats, 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
Expand All @@ -95,7 +96,7 @@ def angles_to_motor_positions(
----------
angles : torch.Tensor
The joint angles.
Tensor of shape [number_of_active_heliostats, 2].
Shape is ``[number_of_active_heliostats, 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
Expand All @@ -105,6 +106,6 @@ def angles_to_motor_positions(
-------
torch.Tensor
The motor steps.
Tensor of shape [number_of_active_heliostats, 2].
Shape is ``[number_of_active_heliostats, 2]``.
"""
return angles
Loading
Loading