bpip¶
bpip ¶
PyAERMOD BPIP Module - Building Profile Input Program Calculations
Computes direction-dependent building dimensions for AERMOD's PRIME downwash algorithm. AERMOD requires 36 values (one per 10° wind sector) for each building parameter: BUILDHGT, BUILDWID, BUILDLEN, XBADJ, YBADJ.
This module provides: - Building: rectangular building geometry definition - BPIPCalculator: direction-dependent projection engine - BPIPResult: container for the 36-value arrays
Reference: EPA BPIP User's Guide, AERMOD Implementation Guide (Section 3.3)
Building
dataclass
¶
Rectangular building footprint for BPIP calculations.
Parameters:
| Name | Type | Description | Default |
|---|---|---|---|
building_id
|
str
|
Identifier for this building (e.g., "BLDG1"). |
required |
corners
|
list of (float, float)
|
Four (x, y) corner coordinates defining the rectangular footprint, in the same coordinate system as sources/receptors (typically UTM meters). |
required |
height
|
float
|
Building height in meters (above ground level). |
required |
tiers
|
list of (float, float)
|
Multi-tier definition as (tier_height, coverage_fraction) pairs. Each tier_height must exceed the base height. Coverage fraction is the proportion of the footprint covered by that tier (0-1). If omitted, the building is treated as a single-tier structure. |
None
|
get_effective_height ¶
Effective building height for downwash calculations.
For single-tier buildings, returns the base height. For multi-tier, returns the coverage-fraction-weighted average of all tier heights plus the base contribution.
get_footprint_area ¶
Compute footprint area using the shoelace formula.
Returns:
| Type | Description |
|---|---|
float
|
Area of the quadrilateral in square meters. |
get_centroid ¶
Compute centroid (average of corner coordinates).
Returns:
| Type | Description |
|---|---|
tuple of (float, float)
|
(x, y) centroid coordinates. |
BPIPResult
dataclass
¶
Container for 36 direction-dependent building parameters.
Each list contains exactly 36 values corresponding to wind directions 10°, 20°, ..., 360° (measured clockwise from north).
BPIPCalculator ¶
Computes direction-dependent building dimensions for AERMOD PRIME.
For each of 36 wind directions (10° increments), the algorithm: 1. Translates building corners so the stack is at the origin 2. Rotates corners to align the wind direction with the +Y axis 3. Computes projected width (perpendicular to wind) and length (along wind) 4. Computes XBADJ/YBADJ offsets from the projected building centroid
Parameters:
| Name | Type | Description | Default |
|---|---|---|---|
building
|
Building
|
The building geometry. |
required |
stack_x
|
float
|
X-coordinate of the affected stack. |
required |
stack_y
|
float
|
Y-coordinate of the affected stack. |
required |
calculate_all ¶
Calculate building parameters for all 36 wind directions.
Directions are 10°, 20°, ..., 360° (AERMOD convention).
Returns:
| Type | Description |
|---|---|
BPIPResult
|
Contains 36-value arrays for each building parameter. |