Skip to content

Commit 952124c

Browse files
sunt05claude
andcommitted
docs: clarify forcing height requirements and inertial sublayer (#953)
- Update forcing-data.rst introduction to specify that meteorological data should be within the inertial sublayer (blended response above roughness elements) - Add new "Forcing Height" section explaining the urban boundary layer structure (UCL, RSL, ISL) and why forcing height matters - Include YAML configuration example for setting the z parameter - Improve z parameter description in site.py data model to explain the inertial sublayer requirement Closes #953 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude <noreply@anthropic.com>
1 parent 78761fc commit 952124c

File tree

2 files changed

+40
-2
lines changed

2 files changed

+40
-2
lines changed

docs/source/inputs/forcing-data.rst

Lines changed: 39 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,7 @@
33
Meteorological Forcing Data
44
============================
55

6-
SUEWS requires continuous meteorological data to drive the urban energy and water balance calculations. This page describes the format and requirements for forcing data files.
6+
SUEWS requires continuous meteorological data representative of the neighbourhood scale, within the inertial sublayer (i.e. a blended response above the roughness elements of buildings and trees), to drive the urban energy and water balance calculations. This page describes the format and requirements for forcing data files.
77

88
Data Requirements
99
-----------------
@@ -58,6 +58,44 @@ Each row must include time stamps with these columns (in order):
5858
3. ``it`` - Hour (0-23)
5959
4. ``imin`` - Minute (0-59)
6060

61+
Forcing Height
62+
--------------
63+
64+
The forcing height (``z``) specifies the height at which the meteorological forcing data are representative. This is a critical parameter that must be set correctly in your site configuration.
65+
66+
**Why Forcing Height Matters**
67+
68+
In urban environments, the atmospheric boundary layer is divided into distinct regions:
69+
70+
- **Urban Canopy Layer (UCL)**: Within the urban canopy, among buildings and trees
71+
- **Roughness Sublayer (RSL)**: Extends from the surface to approximately 2-5 times the mean building/tree height. Flow and turbulence in this layer are spatially heterogeneous and influenced by individual roughness elements.
72+
- **Inertial Sublayer (ISL)**: Above the RSL, where Monin-Obukhov Similarity Theory (MOST) applies and turbulent fluxes are approximately constant with height. Values in this layer are spatially representative of the urban neighbourhood.
73+
74+
The forcing height should be within the inertial sublayer, above the blending height where meteorological variables represent a blended response from the underlying urban surface rather than individual buildings or trees.
75+
76+
**Setting the Forcing Height**
77+
78+
In your YAML configuration, set the forcing height under site properties:
79+
80+
.. code-block:: yaml
81+
82+
sites:
83+
- name: "MySite"
84+
properties:
85+
z: 50.0 # Forcing height in metres
86+
87+
The default value is 10 m, which may be appropriate for low-rise areas but is likely too low for dense urban environments with taller buildings.
88+
89+
**Guidance for Choosing z**
90+
91+
- For in-situ measurements: use the actual measurement height (typically flux tower height)
92+
- For reanalysis data (e.g., ERA5): check the reference height of the dataset (often 10 m for surface variables, but ERA5 timeseries uses surface-level data extrapolated to a diagnostic height)
93+
- For nested model output: use the height of the lowest model level above the surface
94+
95+
.. seealso::
96+
97+
:ref:`rsl_mod` in :doc:`/parameterisations-and-sub-models` for details on how SUEWS calculates wind, temperature and humidity profiles between the forcing height and the surface.
98+
6199
File Format
62100
-----------
63101

src/supy/data_model/core/site.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2440,7 +2440,7 @@ class SiteProperties(BaseModel):
24402440
)
24412441
z: FlexibleRefValue(float) = Field(
24422442
gt=0,
2443-
description="Forcing height",
2443+
description="Height at which forcing data are specified, should be within the inertial sublayer above the blending height where values are spatially representative of the urban neighbourhood",
24442444
json_schema_extra={
24452445
"unit": "m",
24462446
"display_name": "Forcing height",

0 commit comments

Comments
 (0)