feat(schema): 扩展社区级模式定义建筑引用和能源需求结构
- 在 schema-community.json 中扩展描述字段,增加建筑引用、气象和模拟配置支持 - 添加 BuildingRef 和 CommunityBuildingAttributes 定义社区级建筑属性 - 添加 WeatherContext 和 SimulationContext 支持气象数据和模拟参数配置 - 在 schema-community-energy.json 中扩展描述字段,增加社区级能源需求聚合功能 - 添加 BuildingEnergyDemand、AggregatedEnergyDemand 和 CommunityEnergyDemand 结构 - 添加 DistrictEnergy 的设计温度配置字段 - 格式化 JSON 模式定义,简化数组和对象表示法 - 创建 docs/cea-mapping.md 文档,详细说明 bps-schema 与 CEA 软件的字段映射关系 - 包含社区几何、能源系统、数据库引用和参考案例的完整映射示例
This commit is contained in:
+136
-165
@@ -2,7 +2,7 @@
|
||||
"$schema": "https://json-schema.org/draft/2020-12/schema",
|
||||
"$id": "bps/community-energy",
|
||||
"title": "Community-Scale Energy Schema",
|
||||
"description": "District energy system parameters for community scale. Covers plants, networks, pipes, and building connections.",
|
||||
"description": "District energy system parameters for community scale. Covers plants, networks, pipes, building connections, and community-level energy demand aggregation.",
|
||||
"$defs": {
|
||||
"_IdentifiedObject": {
|
||||
"type": "object",
|
||||
@@ -14,88 +14,45 @@
|
||||
"maxLength": 100
|
||||
},
|
||||
"display_name": {
|
||||
"type": [
|
||||
"string",
|
||||
"null"
|
||||
]
|
||||
"type": ["string", "null"]
|
||||
},
|
||||
"user_data": {
|
||||
"type": [
|
||||
"object",
|
||||
"null"
|
||||
]
|
||||
"type": ["object", "null"]
|
||||
}
|
||||
},
|
||||
"required": [
|
||||
"identifier"
|
||||
]
|
||||
"required": ["identifier"]
|
||||
},
|
||||
"PlantType": {
|
||||
"type": "string",
|
||||
"enum": [
|
||||
"CHP",
|
||||
"GasBoiler",
|
||||
"ElectricBoiler",
|
||||
"GroundSourceHeatPump",
|
||||
"AirSourceHeatPump",
|
||||
"Chiller",
|
||||
"CoolingTower",
|
||||
"ThermalStorage",
|
||||
"SolarThermal",
|
||||
"PV"
|
||||
"CHP", "GasBoiler", "ElectricBoiler",
|
||||
"GroundSourceHeatPump", "AirSourceHeatPump",
|
||||
"Chiller", "CoolingTower",
|
||||
"ThermalStorage", "SolarThermal", "PV"
|
||||
]
|
||||
},
|
||||
"NetworkType": {
|
||||
"type": "string",
|
||||
"enum": [
|
||||
"CHW",
|
||||
"HW",
|
||||
"Steam",
|
||||
"Electricity"
|
||||
]
|
||||
"enum": ["CHW", "HW", "Steam", "Electricity"]
|
||||
},
|
||||
"Plant": {
|
||||
"type": "object",
|
||||
"allOf": [
|
||||
{
|
||||
"$ref": "#/$defs/_IdentifiedObject"
|
||||
},
|
||||
{ "$ref": "#/$defs/_IdentifiedObject" },
|
||||
{
|
||||
"type": "object",
|
||||
"properties": {
|
||||
"type": {
|
||||
"const": "Plant"
|
||||
},
|
||||
"plant_type": {
|
||||
"$ref": "#/$defs/PlantType"
|
||||
},
|
||||
"rated_capacity": {
|
||||
"type": "number",
|
||||
"exclusiveMinimum": 0,
|
||||
"description": "kW"
|
||||
},
|
||||
"cop": {
|
||||
"type": "number",
|
||||
"exclusiveMinimum": 0
|
||||
},
|
||||
"fuel_type": {
|
||||
"type": "string",
|
||||
"default": "natural_gas"
|
||||
},
|
||||
"type": { "const": "Plant" },
|
||||
"plant_type": { "$ref": "#/$defs/PlantType" },
|
||||
"rated_capacity": { "type": "number", "exclusiveMinimum": 0, "description": "kW" },
|
||||
"cop": { "type": "number", "exclusiveMinimum": 0 },
|
||||
"fuel_type": { "type": "string", "default": "natural_gas" },
|
||||
"location": {
|
||||
"type": "array",
|
||||
"items": {
|
||||
"type": "number"
|
||||
},
|
||||
"minItems": 3,
|
||||
"maxItems": 3
|
||||
"type": "array", "items": { "type": "number" },
|
||||
"minItems": 3, "maxItems": 3
|
||||
}
|
||||
},
|
||||
"required": [
|
||||
"type",
|
||||
"plant_type",
|
||||
"rated_capacity"
|
||||
],
|
||||
"required": ["type", "plant_type", "rated_capacity"],
|
||||
"additionalProperties": false
|
||||
}
|
||||
]
|
||||
@@ -103,49 +60,19 @@
|
||||
"Pipe": {
|
||||
"type": "object",
|
||||
"allOf": [
|
||||
{
|
||||
"$ref": "#/$defs/_IdentifiedObject"
|
||||
},
|
||||
{ "$ref": "#/$defs/_IdentifiedObject" },
|
||||
{
|
||||
"type": "object",
|
||||
"properties": {
|
||||
"type": {
|
||||
"const": "Pipe"
|
||||
},
|
||||
"start_node": {
|
||||
"type": "string"
|
||||
},
|
||||
"end_node": {
|
||||
"type": "string"
|
||||
},
|
||||
"length": {
|
||||
"type": "number",
|
||||
"exclusiveMinimum": 0,
|
||||
"description": "m"
|
||||
},
|
||||
"diameter": {
|
||||
"type": "number",
|
||||
"exclusiveMinimum": 0,
|
||||
"description": "m"
|
||||
},
|
||||
"insulation_thickness": {
|
||||
"type": "number",
|
||||
"minimum": 0,
|
||||
"default": 0
|
||||
},
|
||||
"insulation_conductivity": {
|
||||
"type": "number",
|
||||
"exclusiveMinimum": 0,
|
||||
"default": 0.04
|
||||
}
|
||||
"type": { "const": "Pipe" },
|
||||
"start_node": { "type": "string" },
|
||||
"end_node": { "type": "string" },
|
||||
"length": { "type": "number", "exclusiveMinimum": 0, "description": "m" },
|
||||
"diameter": { "type": "number", "exclusiveMinimum": 0, "description": "m" },
|
||||
"insulation_thickness": { "type": "number", "minimum": 0, "default": 0 },
|
||||
"insulation_conductivity": { "type": "number", "exclusiveMinimum": 0, "default": 0.04 }
|
||||
},
|
||||
"required": [
|
||||
"type",
|
||||
"start_node",
|
||||
"end_node",
|
||||
"length",
|
||||
"diameter"
|
||||
],
|
||||
"required": ["type", "start_node", "end_node", "length", "diameter"],
|
||||
"additionalProperties": false
|
||||
}
|
||||
]
|
||||
@@ -153,38 +80,20 @@
|
||||
"Network": {
|
||||
"type": "object",
|
||||
"allOf": [
|
||||
{
|
||||
"$ref": "#/$defs/_IdentifiedObject"
|
||||
},
|
||||
{ "$ref": "#/$defs/_IdentifiedObject" },
|
||||
{
|
||||
"type": "object",
|
||||
"properties": {
|
||||
"type": {
|
||||
"const": "Network"
|
||||
},
|
||||
"network_type": {
|
||||
"$ref": "#/$defs/NetworkType"
|
||||
},
|
||||
"supply_temperature": {
|
||||
"type": "number",
|
||||
"description": "Celsius"
|
||||
},
|
||||
"return_temperature": {
|
||||
"type": "number",
|
||||
"description": "Celsius"
|
||||
},
|
||||
"type": { "const": "Network" },
|
||||
"network_type": { "$ref": "#/$defs/NetworkType" },
|
||||
"supply_temperature": { "type": "number", "description": "Celsius" },
|
||||
"return_temperature": { "type": "number", "description": "Celsius" },
|
||||
"pipes": {
|
||||
"type": "array",
|
||||
"items": {
|
||||
"$ref": "#/$defs/Pipe"
|
||||
}
|
||||
"items": { "$ref": "#/$defs/Pipe" }
|
||||
}
|
||||
},
|
||||
"required": [
|
||||
"type",
|
||||
"network_type",
|
||||
"pipes"
|
||||
],
|
||||
"required": ["type", "network_type", "pipes"],
|
||||
"additionalProperties": false
|
||||
}
|
||||
]
|
||||
@@ -192,72 +101,134 @@
|
||||
"BuildingConnection": {
|
||||
"type": "object",
|
||||
"allOf": [
|
||||
{
|
||||
"$ref": "#/$defs/_IdentifiedObject"
|
||||
},
|
||||
{ "$ref": "#/$defs/_IdentifiedObject" },
|
||||
{
|
||||
"type": "object",
|
||||
"properties": {
|
||||
"type": {
|
||||
"const": "BuildingConnection"
|
||||
},
|
||||
"building_ref": {
|
||||
"type": "string"
|
||||
},
|
||||
"network_ref": {
|
||||
"type": "string"
|
||||
},
|
||||
"design_flow_rate": {
|
||||
"type": "number",
|
||||
"exclusiveMinimum": 0
|
||||
}
|
||||
"type": { "const": "BuildingConnection" },
|
||||
"building_ref": { "type": "string" },
|
||||
"network_ref": { "type": "string" },
|
||||
"design_flow_rate": { "type": "number", "exclusiveMinimum": 0 }
|
||||
},
|
||||
"required": [
|
||||
"type",
|
||||
"building_ref",
|
||||
"network_ref"
|
||||
],
|
||||
"required": ["type", "building_ref", "network_ref"],
|
||||
"additionalProperties": false
|
||||
}
|
||||
]
|
||||
},
|
||||
"DistrictEnergy": {
|
||||
|
||||
"BuildingEnergyDemand": {
|
||||
"type": "object",
|
||||
"properties": {
|
||||
"building_ref": {
|
||||
"type": "string",
|
||||
"description": "对应 schema-community.json 中 BuildingRef.ref 的标识符"
|
||||
},
|
||||
"gross_floor_area_m2": { "type": "number" },
|
||||
"conditioned_floor_area_m2": { "type": "number" },
|
||||
"annual": {
|
||||
"type": "object",
|
||||
"properties": {
|
||||
"heating_mwh": { "type": "number" },
|
||||
"cooling_mwh": { "type": "number" },
|
||||
"electricity_mwh": { "type": "number" },
|
||||
"dhw_mwh": { "type": "number" },
|
||||
"total_mwh": { "type": "number" }
|
||||
},
|
||||
"required": ["heating_mwh", "cooling_mwh", "electricity_mwh", "dhw_mwh"]
|
||||
},
|
||||
"peak_heating_kw": { "type": "number" },
|
||||
"peak_cooling_kw": { "type": "number" }
|
||||
},
|
||||
"required": ["building_ref", "annual"],
|
||||
"additionalProperties": false
|
||||
},
|
||||
|
||||
"AggregatedEnergyDemand": {
|
||||
"type": "object",
|
||||
"properties": {
|
||||
"total_buildings": { "type": "integer", "minimum": 0 },
|
||||
"total_gfa_m2": { "type": "number" },
|
||||
"total_conditioned_m2": { "type": "number" },
|
||||
"total_heating_mwh": { "type": "number" },
|
||||
"total_cooling_mwh": { "type": "number" },
|
||||
"total_electricity_mwh": { "type": "number" },
|
||||
"total_dhw_mwh": { "type": "number" },
|
||||
"total_energy_mwh": { "type": "number" },
|
||||
"energy_use_intensity_kwh_m2": { "type": "number" }
|
||||
},
|
||||
"required": ["total_buildings", "total_energy_mwh"],
|
||||
"additionalProperties": false
|
||||
},
|
||||
|
||||
"CommunityEnergyDemand": {
|
||||
"type": "object",
|
||||
"allOf": [
|
||||
{
|
||||
"$ref": "#/$defs/_IdentifiedObject"
|
||||
},
|
||||
{ "$ref": "#/$defs/_IdentifiedObject" },
|
||||
{
|
||||
"type": "object",
|
||||
"properties": {
|
||||
"type": {
|
||||
"const": "DistrictEnergy"
|
||||
"type": { "const": "CommunityEnergyDemand" },
|
||||
"buildings": {
|
||||
"type": "array",
|
||||
"items": { "$ref": "#/$defs/BuildingEnergyDemand" },
|
||||
"description": "每栋建筑的年度用能需求明细"
|
||||
},
|
||||
"aggregated": {
|
||||
"$ref": "#/$defs/AggregatedEnergyDemand",
|
||||
"description": "社区聚合指标"
|
||||
}
|
||||
},
|
||||
"required": ["type"],
|
||||
"additionalProperties": false
|
||||
}
|
||||
]
|
||||
},
|
||||
|
||||
"DistrictEnergy": {
|
||||
"type": "object",
|
||||
"allOf": [
|
||||
{ "$ref": "#/$defs/_IdentifiedObject" },
|
||||
{
|
||||
"type": "object",
|
||||
"properties": {
|
||||
"type": { "const": "DistrictEnergy" },
|
||||
"plants": {
|
||||
"type": "array",
|
||||
"items": {
|
||||
"$ref": "#/$defs/Plant"
|
||||
}
|
||||
"items": { "$ref": "#/$defs/Plant" }
|
||||
},
|
||||
"networks": {
|
||||
"type": "array",
|
||||
"items": {
|
||||
"$ref": "#/$defs/Network"
|
||||
}
|
||||
"items": { "$ref": "#/$defs/Network" }
|
||||
},
|
||||
"connections": {
|
||||
"type": "array",
|
||||
"items": {
|
||||
"$ref": "#/$defs/BuildingConnection"
|
||||
}
|
||||
"items": { "$ref": "#/$defs/BuildingConnection" }
|
||||
},
|
||||
"demand": {
|
||||
"$ref": "#/$defs/CommunityEnergyDemand",
|
||||
"description": "区域能源系统的负荷输入(来自建筑需求模拟)"
|
||||
},
|
||||
"supply_temperature_hw_c": {
|
||||
"type": "number",
|
||||
"description": "供热管网设计供温"
|
||||
},
|
||||
"return_temperature_hw_c": {
|
||||
"type": "number",
|
||||
"description": "供热管网设计回温"
|
||||
},
|
||||
"supply_temperature_chw_c": {
|
||||
"type": "number",
|
||||
"description": "供冷管网设计供温"
|
||||
},
|
||||
"return_temperature_chw_c": {
|
||||
"type": "number",
|
||||
"description": "供冷管网设计回温"
|
||||
}
|
||||
},
|
||||
"required": [
|
||||
"type"
|
||||
],
|
||||
"required": ["type"],
|
||||
"additionalProperties": false
|
||||
}
|
||||
]
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user