227 lines
8.8 KiB
Markdown
227 lines
8.8 KiB
Markdown
# bps-schema
|
||
|
||
建筑性能模拟数据模型。所有类型定义以 draft-2020-12 标准 JSON Schema 为准。
|
||
|
||
## 文件架构
|
||
|
||
采用"尺度 × 模拟域"二维分文件架构。每个尺度按几何和模拟域拆分为独立文件。
|
||
|
||
### 建筑单体尺度
|
||
|
||
| 文件 | $id | defs | 说明 |
|
||
|------|-----|------|------|
|
||
| `schema-building.json` | bps/building | 30 | 建筑几何实体,对齐 HBJSON 几何层级 |
|
||
| `schema-energy.json` | bps/energy | 49 | EnergyPlus 能耗模拟参数 |
|
||
| `schema-radiance.json` | bps/radiance | 25 | Radiance 采光模拟参数 |
|
||
| `schema-cfd.json` | bps/cfd | 14 | CFD 建筑风环境模拟参数(AI 生成的示例文件,需人工审核后使用) |
|
||
|
||
### 社区尺度
|
||
|
||
| 文件 | $id | defs | 说明 |
|
||
|------|-----|------|------|
|
||
| `schema-community.json` | bps/community | 7 | 社区几何:Site / Terrain / Road / GreenSpace / WaterBody(AI 生成的示例文件,需人工审核后使用) |
|
||
| `schema-community-energy.json` | bps/community-energy | 8 | 区域能源:Plant / Network / Pipe / BuildingConnection(AI 生成的示例文件,需人工审核后使用) |
|
||
| `schema-community-cfd.json` | bps/community-cfd | 13 | 社区风环境:计算域 / 网格 / 湍流 / 边界条件 / 求解器(AI 生成的示例文件,需人工审核后使用) |
|
||
| `schema-community-microclimate.json` | bps/community-microclimate | 2 | 微气候:UHI 强度 / 风速修正 / 地表反照率(AI 生成的示例文件,需人工审核后使用) |
|
||
|
||
### 城市尺度
|
||
|
||
| 文件 | $id | defs | 说明 |
|
||
|------|-----|------|------|
|
||
| `schema-urban.json` | bps/urban | 3 | 城市几何:ClimateZone / LandUse(AI 生成的示例文件,需人工审核后使用) |
|
||
| `schema-urban-energy.json` | bps/urban-energy | 5 | 城市能源:需求聚合 / 可再生能源潜力 / 碳平衡(AI 生成的示例文件,需人工审核后使用) |
|
||
| `schema-urban-cfd.json` | bps/urban-cfd | 15 | 城市风环境:行人高度评估 / 街道峡谷 / 风舒适标准(AI 生成的示例文件,需人工审核后使用) |
|
||
|
||
### 聚合入口
|
||
|
||
| 文件 | $id | defs | 说明 |
|
||
|------|-----|------|------|
|
||
| `schema-all.json` | bps/all | 11 | 引用以上所有文件,提供完整验证入口 |
|
||
|
||
**合计**:11 个领域文件 + 1 个聚合文件,171 个类型定义。
|
||
|
||
## Schema 规范
|
||
|
||
所有文件均遵循 [JSON Schema draft-2020-12](https://json-schema.org/draft/2020-12/release-notes):
|
||
|
||
- `$defs` — 所有类型、枚举、实体的定义区
|
||
- `$ref` — 类型引用,使用 JSON Schema 标准 `$ref` 机制
|
||
- `oneOf` — 判别联合体(如边界条件的 5 种类型)
|
||
- `allOf` — 实体组合(`_IdentifiedObject` + 具体属性)
|
||
- `const` / `enum` — 类型判别字段和枚举值
|
||
- `required` — 必填字段
|
||
- `default` — 缺省值
|
||
- `minimum` / `maximum` / `exclusiveMinimum` — 数值约束
|
||
- `pattern` / `minLength` / `maxLength` — 字符串约束
|
||
- `additionalProperties: false` — 严格模式,禁止额外字段
|
||
|
||
## schema-building.json:建筑几何
|
||
|
||
对齐 [honeybee-schema](https://github.com/ladybug-tools/honeybee-schema) 几何层级,覆盖 Model → Room → Face → Aperture/Door → Shade 层级。
|
||
|
||
### 几何原语
|
||
|
||
- `Point3D` — 三维坐标 (x, y, z)
|
||
- `Face3D` — 平面多边形(boundary + holes + plane)
|
||
- `Mesh3D` — 三角/四边形网格(vertices + faces + colors)
|
||
- `Plane` — 平面(法线 n + 原点 o + x 轴)
|
||
- `Color` — RGBA 颜色
|
||
|
||
### 边界条件
|
||
|
||
- `Outdoors` / `Surface` / `Ground` / `Adiabatic` / `OtherSideTemperature`
|
||
- Aperture/Door 仅支持 Outdoors 和 Surface 两种
|
||
|
||
### 标识符规范
|
||
|
||
- `identifier`:`^[.A-Za-z0-9_-]+$`,1-100 字符
|
||
- `display_name`:无限制(仅用于 UI 展示)
|
||
- `user_data`:可选字典
|
||
|
||
## schema-energy.json:能耗模拟参数
|
||
|
||
覆盖 HBJSON energy properties 核心实体:材料、构造、时间表、负荷、HVAC、构造集、程序类型。
|
||
|
||
### 材料
|
||
|
||
- `EnergyMaterial` — 有质量材料
|
||
- `EnergyMaterialNoMass` — 无质量材料
|
||
- `EnergyMaterialVegetation` — 植被材料
|
||
- `EnergyWindowMaterialGlazing` / `Gas` / `GasCustom` / `GasMixture` / `SimpleGlazSys` — 窗材料
|
||
- `EnergyWindowMaterialBlind` / `Shade` — 百叶/遮阳
|
||
- `EnergyWindowFrame` — 窗框
|
||
|
||
### 构造
|
||
|
||
- `OpaqueConstruction` / `WindowConstruction` / `AirBoundaryConstruction` / `ShadeConstruction`
|
||
- 各自 Abridged 版本(identifier 引用)
|
||
- `WindowConstructionShade` / `WindowConstructionDynamic` — 含动态遮阳的窗构造
|
||
|
||
### 时间表
|
||
|
||
- `ScheduleTypeLimit` / `ScheduleDay` / `ScheduleFixedInterval` / `ScheduleRulesetAbridged` / `ScheduleRule`
|
||
|
||
### 负荷与设定值
|
||
|
||
- `PeopleAbridged` / `LightingAbridged` / `ElectricEquipmentAbridged` / `GasEquipmentAbridged`
|
||
- `ServiceHotWaterAbridged` / `InfiltrationAbridged` / `VentilationAbridged`
|
||
- `SetpointAbridged` / `InternalMassAbridged` / `ProcessAbridged`
|
||
|
||
### 程序类型 / 构造集 / HVAC
|
||
|
||
- `ProgramTypeAbridged` / `ConstructionSetAbridged`
|
||
- `DefaultProgramTypesAbridged` / `DefaultConstructionSetAbridged`
|
||
- `IdealAirSystemAbridged`
|
||
|
||
## schema-radiance.json:采光模拟参数
|
||
|
||
兼容 HBJSON radiance properties,覆盖 Radiance 材质、构造集、传感器网格、视角。
|
||
|
||
### 材质(Modifiers)
|
||
|
||
- `Plastic` — 塑料材质(RGB 反射率 + 镜面度 + 粗糙度)
|
||
- `Metal` — 金属材质(继承 Plastic,镜面度默认 0.9)
|
||
- `Trans` — 半透明材质(透射漫反射比 + 透射镜面比)
|
||
- `Glass` — 玻璃材质(RGB 透射率 + 折射率)
|
||
- `Mirror` — 镜面材质(RGB 反射率)
|
||
- `Light` / `Glow` — 发光材质(RGB 发射率)
|
||
- `BSDF` — 双向散射分布函数材质(BSDF XML 数据 + 朝向)
|
||
- `Void` — 空材质
|
||
|
||
### 材质集(Modifier Sets)
|
||
|
||
- `WallModifierSetAbridged` / `FloorModifierSetAbridged` / `RoofCeilingModifierSetAbridged`
|
||
- `ApertureModifierSetAbridged` / `DoorModifierSetAbridged` / `ShadeModifierSetAbridged`
|
||
- `ModifierSet` — 材质集聚合
|
||
|
||
### 传感器与视角
|
||
|
||
- `Sensor` / `SensorGrid` — 传感器网格
|
||
- `View` — Radiance 视角(6 种视角类型)
|
||
|
||
## schema-cfd.json:CFD 风环境模拟
|
||
|
||
独立领域(非 HBJSON),覆盖 CFD 建筑风环境分析的完整参数体系。
|
||
|
||
### 核心参数
|
||
|
||
- `WindProfile` — 风剖面(4 种剖面 + 地形类别 + 风向)
|
||
- `CFDDomain` — 计算域定义
|
||
- `MeshParameters` — 网格设置(基础网格 + 局部加密 + 壁面层)
|
||
- `TurbulenceParameters` — 湍流设置(6 种模型 + 壁面函数)
|
||
- `BoundaryConditions` — 进出口/顶部/侧面/地面/建筑墙面边界类型
|
||
- `SolverSettings` — 求解器设置(稳态/瞬态 + SIMPLE/PISO + 收敛准则)
|
||
|
||
## schema-community*.json:社区尺度
|
||
|
||
### 几何(schema-community.json)
|
||
|
||
- `Site` — 场地顶级实体,含 2D 边界
|
||
- `TerrainGrid` / `TerrainTIN` — 高程网格或三角网
|
||
- `Road` / `GreenSpace` / `WaterBody` — 基础设施
|
||
|
||
### 区域能源(schema-community-energy.json)
|
||
|
||
- `DistrictEnergy` — 区域能源系统顶级实体
|
||
- `Plant` — 源站(CHP / Boiler / HeatPump / Chiller / PV 等)
|
||
- `Network` — 管网(CHW / HW / Steam / Electricity)
|
||
- `Pipe` / `BuildingConnection` — 管段与建筑接入
|
||
|
||
### 风环境(schema-community-cfd.json)
|
||
|
||
- `CFDDomain` — 社区尺度计算域
|
||
- `MeshParameters` — 含局部加密区域
|
||
- `SolverSettings` / `TurbulenceParameters` / `BoundaryConditions`
|
||
|
||
## schema-urban*.json:城市尺度
|
||
|
||
### 几何(schema-urban.json)
|
||
|
||
- `ClimateZone` — 气候分区(边界 + 气候区代码 + 度日数)
|
||
- `LandUse` — 用地性质(边界 + 用地类型 + 容积率 + 建筑密度)
|
||
|
||
### 能源(schema-urban-energy.json)
|
||
|
||
- `UrbanEnergyDemand` — 各用地类型年度能耗
|
||
- `RenewablePotential` — 屋顶/立面/地面可再生能源潜力
|
||
- `UrbanEnergyBalance` — 城市能源平衡(自给率 / 碳排放 / EUI)
|
||
|
||
### 风环境(schema-urban-cfd.json)
|
||
|
||
- `UrbanCFDSettings` — 城市级 CFD 设置
|
||
- `WindComfortAssessment` — 行人风舒适评估(Laws / NEN_8100 / COST_732 标准)
|
||
- `MeshParameters` — 含行人高度加密层
|
||
|
||
## 使用方式
|
||
|
||
### 数据验证
|
||
|
||
```bash
|
||
pip install jsonschema
|
||
python3 -c "
|
||
import json, jsonschema
|
||
with open('schema-building.json') as f:
|
||
schema = json.load(f)
|
||
with open('model.hbjson') as f:
|
||
data = json.load(f)
|
||
jsonschema.validate(data, schema)
|
||
"
|
||
```
|
||
|
||
### TypeScript 类型生成
|
||
|
||
```bash
|
||
npx quicktype schema-building.json -o dist/building.d.ts --lang typescript
|
||
npx quicktype schema-energy.json -o dist/energy.d.ts --lang typescript
|
||
npx quicktype schema-radiance.json -o dist/radiance.d.ts --lang typescript
|
||
npx quicktype schema-cfd.json -o dist/cfd.d.ts --lang typescript
|
||
```
|
||
|
||
### Python Pydantic 生成
|
||
|
||
```bash
|
||
pip install datamodel-code-generator
|
||
datamodel-codegen --input schema-building.json --output dist/building.py --output-model-type pydantic_v2.BaseModel
|
||
datamodel-codegen --input schema-energy.json --output dist/energy.py --output-model-type pydantic_v2.BaseModel
|
||
```
|