@@ -38,37 +38,76 @@ Take the time to specify correct parameter values !
The parameters are located in several subdirectories according to their purpose:
- AV_CENTRAL/ : set parameters of the agrivoltaics plant (number of panels, azimuth of the central, etc.)
- CROPS/ : parameter files for the crop models (SIMPLE, STICS, Gras-Sim)
- HARDWARE/ : Configure key properties of a PV panel for simulation, including its dimensions, peak power output, and whether it is bifacial. It also specifies if the panel has thickness and includes a 3D model file. These settings define the panel’s physical and operational characteristics in the simulation environment.
- SCENARIOS/ : define the parameters of the simulation scenario, such as location, latitude and longitude, altitude, simulation options, start and end year of the simulation, etc.
- STRUCTURES/ : define the parameters of the mounting structure, such as the height of the panels, their tilt, etc.
- AV_CENTRAL/ : set parameters of the agrivoltaics plant (number of panels, azimuth of the central, height of the panels, their tilt, etc.)
- HARDWARE/ :
- PV_MODULES/: Configure key properties of a PV panel for simulation, including its dimensions, peak power output, and
whether it is bifacial.
It also specifies if the panel has thickness and includes a 3D model file.
These settings define the panel’s physical and operational characteristics in the simulation environment.
- STRUCTURES/ : define the parameters of the mounting structure, such as the type of structure, the shape of the profiles used in the structure, etc.
- CROPS/ : parameter files for the crop models (SIMPLE, STICS, GrasSim)
- WEATHER_FILES/ : the simulation can run on data fetched from an online database or on data files located in this subdirectory.
## AV central
The parameters of the agrivoltaics central (or the photovoltaics installation).
- NumberOfPanelsX: this defines the number of modules across a block of PV modules.
- NumberOfPanelsY: this defines the number of modules along a block of PV modules.
- RepetitionDistanceOfPanelsX: point-to-point (or center-to-center) distance between two neighboring panels across the block.
- RepetitionDistanceOfPanelsY: point-to-point (or center-to-center) distance between two neighboring panels along the block.
Figure 1 below shows an example with the following parameter values :
- NumberOfPanelsX: 2
- NumberOfPanelsY: 8
- RepetitionDistanceOfPanelsX: 2.5 [m]
- RepetitionDistanceOfPanelsY: 2.0 [m] (this distance is exaggerated for demonstration purposes)
- NumberOfPVBlocksX: 2
- NumberOfPVBlocksY: 1
- RepetitionDistanceOfPVBlocksX: 10 [m]
(the solar modules are 2.384 * 1.303 m)
This section details parameters of the photovoltaics component of the agrivoltaics central, i.e. the PV modules and structures.
Currently, PASE natively supports regular centrals : the user can configure one block of PV modules and structures, that can be repeated along a rectangular grid.
Figure 1 displays a schematic example of the layout.
Figure 1 - Illustration of blocks of PV modules. A block is highlighted by the dashed rectangle.
In this example, each block counts 4 PV modules and there are respectively 3 block repetitions in the X axis and 2 block repetitions in the Y axis for a total of 6 blocks.
</div>
### PV modules
The PV modules are layed out in blocks. The user must start by defining the properties of the PV modules in a parameter file under `INPUTS/HARDWARE/PV_MODULES/`, e.g. `INPUTS/HARDWARE/PV_MODULES/Example1_PV_Module.yaml`.
Then, based on the dimensions of the PV modules and the desired layout, set parameter values in `INPUTS/AV_CENTRAL/` (e.g. `INPUTS/AV_CENTRAL/Example1_AV.yaml`) for the number of PV modules repetitions in a block (in both X and Y directions) as well as the repetition distance between successive PV modules.
Once the PV block is correctly parametrized, the same operation can be done to lay out the blocks to shape the entire PV central.
Table 2 and Figure 2 illustrate the result of this process.
Table 1 - Basic parameters to design a **block** of PV modules in an agrivoltaic central.
figure 4 - Show a pole with a rectangular PoleShape and how parameters PoleWidth, PoleHeight and PoleLength are used to define the dimensions of the pole.
<divalign="center">
Figure 8 - Pole with rectangular PoleShape. PoleWidth, PoleHeight and Length are
highlighted (note: the pole length is automatically derived from other parameters and is not input by the user).
</div>
###### Purlins
##### Purlins
Horizontal beams running along the **Y axis**, connecting poles and supporting panels from below.
Table 5 - Parametrization of purlins.
| Parameter | Unit | Description |
|---|---|---|
| `PurlinShape` | — | Cross-section type |
...
...
@@ -158,12 +240,16 @@ Horizontal beams running along the **Y axis**, connecting poles and supporting p
figure 5 - Show a purlin with a rectangular PurlinShape and how parameters PurlinWidth, PurlinHeight and PurlinLength are used to define the dimensions of the purlin.
<divalign="center">
Figure 9 - Purlin with rectangular PurlinShape. PurlinWidth and PurlinHeight are highlighted. The purlin length is automatically derived from the structure group spacing along Y.
</div>
###### Rafters
##### Rafters
Beams oriented along the **X axis**, used to carry purlins or panels across the span.
Table 6 - Parametrization of rafters.
| Parameter | Unit | Description |
|---|---|---|
| `RafterShape` | — | Cross-section type |
...
...
@@ -173,59 +259,101 @@ Beams oriented along the **X axis**, used to carry purlins or panels across the
figure 6 - Show a rafter with a rectangular Raftershape and how parameters RafterWidth, RafterHeight and RafterLength are used to define the dimensions of the rafter.
<divalign="center">
Figure 10 - Rafter with rectangular RafterShape. RafterWidth, RafterHeight and
RafterLength are highlighted.
</div>
##### Horizontal bars
###### Diagonals
Horizontal bars are used exclusively by the Agrivoltaic Fence structure. They are attached to each pole at heights derived from the `Height` parameter and the panel layout. Their cross-section shape and dimensions are controlled by the `Purlin*` parameters (`PurlinShape`, `PurlinRadius`, etc.).
##### Diagonals
Diagonal bracing bars connecting two poles to stiffen the structure against lateral loads.
Figure 11 highlights how diagonals are built in a PV table structure.
Each structure type validates a specific set of required parameters at startup:
if any required key is missing from the aggregated YAML inputs, PASE raises a
`ValueError` before the simulation begins.
Parameters that are irrelevant to a given structure type — for example, diagonal
parameters for HSATS, or rafter and tilt parameters for the Agrivoltaic Fence —
are optional and fall back to zero if omitted from the YAML.
The safest approach is to copy the provided example YAML for the chosen structure
type (e.g. `INPUTS/HARDWARE/STRUCTURES/PV_table.yaml`) and adjust values from
there. All parameters in those files are either required or carry a meaningful
non-zero default for that structure type.
---
#### Structure types
Three structure types are available.
The active type is set with parameter `StructureType`.
The following subsections detail how each structure type can be parametrized.
---
Figure 7 - Three structure types available in PASE : (a) PV table ; (b) Horizontal Single Axis Tracker ; (c) Agrivoltaic Fence.
##### PV Table
**Description:** A fixed, tilted table structure. Two poles of different heights support a tilted rafter, with diagonal bracing and horizontal purlins.
A fixed, tilted table structure.
Two poles of different heights support a tilted rafter, with diagonal bracing and horizontal purlins.
**How it works:**
- Two poles per bay — one taller (high side) and one shorter (low side) — create the tilt.
- A rafter sits on top of both poles at the tilted angle.
- Purlins run horizontally along Y to support the panels.
- Purlins rest on the rafters and run horizontally along Y to support the PV modules.
- A diagonal brace connects the two poles for rigidity.
**Key parameters:**
| Parameter | Default | Description |
|---|---|---|
| `TiltY` | — | Tilt angle of the table (°). Combined with `PoleSpacingX` it determines the pole height difference. |
| `PoleSpacingX` | 0.2 m | Total distance between the two poles along X |
| `RafterLength` | 3.8 m | Minimum rafter length (auto-adjusted if too short for the tilt) |
| `NumberOfPurlins` | 5 | Purlins distributed evenly across the rafter span |
| Parameter | Description |
|---|---|
| `TiltY` | Tilt angle of the table (°). Combined with `PoleSpacingX` it determines the pole height difference. |
| `PoleSpacingX` | Total distance between the two poles along X |
| `RafterLength` | Minimum rafter length (auto-adjusted upward if the tilt geometry requires a longer rafter) |
| `NumberOfPurlins` | Number of purlins distributed evenly across the rafter span |
> If `TiltY` is too large relative to `Height` and `PoleSpacingX`, the structure will extend below ground.
> PASE will raise a `ValueError` in that case.
> ⚠️ If `TiltY` is toolarge relative to `Height` and `PoleSpacingX`, the structure will extend below ground. PASE will raise a `ValueError` in that case.
TODO link to example pv table (py script, yaml files).
**Example YAML snippet (`PV_table.yaml`):**
...
...
@@ -236,44 +364,46 @@ Material:
Value:Wood
PoleShape:
Value:square
PoleLength:
Value:3.8
PoleSpacingX:
Value:2.0
NumberOfPurlins:
Value:5
NumberOfRafters:
Value:2
```

Figure 8 - PV Table structure groups. PV tables have diagonals that start from the smallest pole of the group and end at the largest pole of the group. The length and angle of the diagonals are calculated automatically.
<divalign="center">
Figure 11 - PV Table structure groups.
PV tables have diagonals that start from the smallest pole of the group and end at the largest pole of the group.
The length and angle of the diagonals are calculated automatically.
</div>

Figure 9 - TiltY parameter : the tilt angle of the PV modules (and rafters/purlins depending on the type).
<divalign="center">
Figure 12 - TiltY parameter : the tilt angle of the PV modules (and rafters/purlins depending on the type).
</div>
---
##### HSATS
**Description:** Horizontal Single-Axis Tracking Structure. A central pole supports a rotating frame that can track the sun along one axis.
Horizontal Single-Axis Tracking Structure.
A central pole supports a rotating frame that can track the sun along one axis.
**How it works:**
- A single central pole is placed at the base height.
- Purlins run along X, rafters run along Y — together they form a flat frame that can be tilted.
- Purlins run along Y, rafters run along X — together they form a flat frame that can be tilted.
- No diagonal brace is used.
**Key parameters:**
| Parameter | Default | Description |
|---|---|---|
| `PoleRadius` | 0.1 m | Cylindrical pole (default shape: `Cylinder`) |
| `NumberOfPurlins` | 5 | Purlins distributed across the rafter span |
| `NumberOfRafters` | 3 | Rafters distributed across the purlin span |
| `RafterLength` | 1.8 m | Length of each rafter along X |
| `PoleShape` / `PoleRadius` / `PoleSide` / `PoleWidth` / `PoleHeight` | Cross-section shape and dimensions of the central pole |
| `NumberOfPurlins` | Number of purlins distributed across the rafter span (along X) |
| `NumberOfRafters` | Number of rafters distributed across the purlin span (along Y) |
| `RafterLength` | Length of each rafter along X; must cover the panel span (minus panel height to allow for some overhang) |
**Example YAML snippet (`HSATS.yaml`):**
...
...
@@ -282,42 +412,53 @@ StructureType:
Value:HSATS
Material:
Value:Metal
RafterShape:
Value:Cylinder
RafterRadius:
Value:0.1
PoleShape:
Value:Rectangle
PoleWidth:
Value:0.2
PoleHeight:
Value:0.2
PurlinShape:
Value:Cylinder
PurlinRadius:
Value:0.1
Value:0.05
NumberOfPurlins:
Value:5
Value:2
RafterShape:
Value:Square
RafterSide:
Value:0.1
NumberOfRafters:
Value:3
Value:5
```

Figure 10 - HSATS structure with highlighting objects representing the different components. This object represent a group you can duplicate along the X axis and Y axis to form a full AV system.
<divalign="center">
Figure 13 - HSATS structure with highlighted objects representing the different components.
This object represents one group; groups are repeated along the Y axis to form a full AV system.
</div>
---
##### Agrivoltaic Fence
**Description:** A fence-like structure where panels are mounted vertically or near-vertically between posts.
A fence-like structure where panels are mounted vertically between posts.
It is possible to apply a tilt value to the panels to simulate the effect of wind on free hanging panels.
Note that this structure type was designed to canonically have 2 PV modules in the X axis of a block.
Other values will produce erroneous geometries.
**How it works:**
- A single vertical pole per bay is placed along Y.
- Two horizontal bars are attached to each pole — one at `StructureHeight`, one offset downward by `RepetitionDistanceOfPanelsX`.
- Two horizontal bars are attached to each pole at heights derived from the Height parameter, the panel dimensions
and the panel pitch (`RepetitionDistanceOfPanelsX`).
- A terminal end-post closes the last bay.
**Key parameters:**
| Parameter | Default | Description |
|---|---|---|
| `StructureHeight` | 3.3 m | Height of the top horizontal bar |
| `PoleLength` | 3.8 m | Total pole length (should exceed `StructureHeight`) |
| `PoleGroundPositioning` | -0.5 m | Buries the pole base 0.5 m underground for stability |
| `StructureSpacingY` | 5.0 m | Spacing between fence bays |
| Parameter | Description |
|---|---|
| `PoleGroundPositioning` | Vertical offset of the pole base relative to ground level (negative = buried) |