These parameters control where panels and structure groups are placed in space.
Figure 4 - Three examples of structures: HSATS, PV Table and Agrivoltaic Fence.
| Parameter | Unit | Description |
|---|---|---|
| `Height` | m | Base elevation of the panel array above the ground |
| `TiltY` | ° | Tilt angle of the panels around the Y axis |
| `PanelOffset` | m | Offset applied to panel positioning |
| `PoleSpacingX` | m | Total distance between the two poles along X |
| `StructureSpacingY` | m | Spacing between structure groups along Y |
| `PoleGroundPositioning` | m | Vertical offset relative to ground level (0 = flush, negative = buried) |
---
#### Structure Components
A structure is built from several elementary objects. You can customize the dimensions and shape of each:
A PV structure is composed of several elementary parts. Each part has a **shape**, **dimensions**, and a **count**.
1.**Pole**: Vertical support posts.
2.**Rafter**: Beams oriented along the X-axis (often tilted).
3.**Purlin**: Horizontal bars oriented along the Y-axis (supporting the panels).
4.**Diagonal**: Bracing struts (specific to PV Table).
#### Shape options

All structural members support three cross-section profiles:
Figure 5 - 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.
| Shape | Parameters used |
|---|---|
| `Square` | `Side` |
| `Rectangle` | `Width`, `Height` |
| `Cylinder` | `Radius` |
#### Customizing Geometry
For each component (Pole, Purlin, Rafter, Diagonal), you can define its shape and size using these parameters:
#### Poles
-**Shape**: Defined by `Shape` (e.g., `PoleShape`). Choices are `Square`, `Rectangle`, or `Cylinder`.
-**Dimensions**:
- For **Square/Rectangle**: Use `Width` (X-dimension), `Height` (Y-dimension), or `Side` (for Square).
- For **Cylinder**: Use `Radius`.
-**Length**: Defined by `Length` (e.g., `PoleLength`).
Figure 4 - Three examples of structures: HSATS, PV Table and 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.
**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.
- 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 |
> ⚠️ If `TiltY` is too large relative to `Height` and `PoleSpacingX`, the structure will extend below ground. PASE will raise a `ValueError` in that case.
**Example YAML snippet (`PV_table.yaml`):**
```yaml
StructureType:
Value:PV Table
Material:
Value:Wood
PoleShape:
Value:square
PoleLength:
Value:3.8
PoleSpacingX:
Value:0.2
NumberOfPurlins:
Value:5
NumberOfRafters:
Value:3
```

Figure 6 - 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.
Figure 5 - 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.

Figure 7 - TiltY parameter : the tilt angle of the PV modules (and rafters/purlins depending on the type).
Figure 6 - TiltY parameter : the tilt angle of the PV modules (and rafters/purlins depending on the type).
You can set the `PanelOffset`, this is the distance between the structure's group and the panel center, this parameter is always applied along the normal of the panel.
---
#### HSATS
**Description:** Horizontal Single-Axis Tracking Structure. A central pole supports a rotating frame that can track the sun along one axis.
**Typical use case:** Tracking installations where panels rotate around a horizontal 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.
- 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 |
**Example YAML snippet (`HSATS.yaml`):**
```yaml
StructureType:
Value:HSATS
Material:
Value:Metal
PoleShape:
Value:Cylinder
PoleRadius:
Value:0.1
PoleLength:
Value:3.8
NumberOfPurlins:
Value:5
NumberOfRafters:
Value:3
```

**Warning**: If the tilt angle is too high for the given base height, the structure may extend below ground level. Ensure that `Height` or `PoleSpacingX` is increased, or `TiltY` is decreased, to avoid a `ValueError`: "Invalid PVTable configuration: The tilt angle is too high for the given base height. This results in the structure extending below ground level. Please increase 'Height' or 'PoleSpacingX' or decrease 'TiltY'."
Figure 7 - 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.
---
#### Agrivoltaic Fence
**Description:** A fence-like structure where panels are mounted vertically or near-vertically between posts.
**Typical use case:** Agrivoltaic fields where crops or livestock coexist with the PV installation.
**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`.
- 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 |