feat: add CFD/radiance/urban/community schema files, pres, docs
This commit is contained in:
@@ -0,0 +1,662 @@
|
||||
{
|
||||
"$schema": "https://json-schema.org/draft/2020-12/schema",
|
||||
"$id": "bps/community-cfd",
|
||||
"title": "Community-Scale CFD Wind Environment Schema",
|
||||
"description": "CFD parameters for community/site wind environment analysis. Covers domain setup, mesh, turbulence, boundary conditions, and solver settings for neighborhood-scale simulations.",
|
||||
"$defs": {
|
||||
"_IdentifiedObject": {
|
||||
"type": "object",
|
||||
"properties": {
|
||||
"identifier": {
|
||||
"type": "string",
|
||||
"pattern": "^[.A-Za-z0-9_-]+$",
|
||||
"minLength": 1,
|
||||
"maxLength": 100
|
||||
},
|
||||
"display_name": {
|
||||
"type": [
|
||||
"string",
|
||||
"null"
|
||||
]
|
||||
},
|
||||
"user_data": {
|
||||
"type": [
|
||||
"object",
|
||||
"null"
|
||||
]
|
||||
}
|
||||
},
|
||||
"required": [
|
||||
"identifier"
|
||||
]
|
||||
},
|
||||
"WindProfileType": {
|
||||
"type": "string",
|
||||
"enum": [
|
||||
"power_law",
|
||||
"log_law",
|
||||
"uniform",
|
||||
"atmospheric_boundary_layer"
|
||||
]
|
||||
},
|
||||
"TerrainCategory": {
|
||||
"type": "string",
|
||||
"enum": [
|
||||
"open_sea",
|
||||
"open_country",
|
||||
"suburban",
|
||||
"urban_center",
|
||||
"dense_urban"
|
||||
]
|
||||
},
|
||||
"TurbulenceModel": {
|
||||
"type": "string",
|
||||
"enum": [
|
||||
"k_epsilon_standard",
|
||||
"k_epsilon_realizable",
|
||||
"k_epsilon_RNG",
|
||||
"k_omega_SST",
|
||||
"LES",
|
||||
"DES"
|
||||
]
|
||||
},
|
||||
"SolverType": {
|
||||
"type": "string",
|
||||
"enum": [
|
||||
"steady",
|
||||
"transient"
|
||||
]
|
||||
},
|
||||
"WindProfile": {
|
||||
"type": "object",
|
||||
"allOf": [
|
||||
{
|
||||
"$ref": "#/$defs/_IdentifiedObject"
|
||||
},
|
||||
{
|
||||
"type": "object",
|
||||
"properties": {
|
||||
"type": {
|
||||
"const": "WindProfile"
|
||||
},
|
||||
"profile_type": {
|
||||
"$ref": "#/$defs/WindProfileType",
|
||||
"default": "power_law"
|
||||
},
|
||||
"reference_wind_speed": {
|
||||
"type": "number",
|
||||
"exclusiveMinimum": 0
|
||||
},
|
||||
"reference_height": {
|
||||
"type": "number",
|
||||
"exclusiveMinimum": 0,
|
||||
"default": 10
|
||||
},
|
||||
"power_law_exponent": {
|
||||
"type": "number",
|
||||
"minimum": 0
|
||||
},
|
||||
"roughness_length": {
|
||||
"type": "number",
|
||||
"exclusiveMinimum": 0
|
||||
},
|
||||
"ground_elevation": {
|
||||
"type": "number",
|
||||
"default": 0
|
||||
},
|
||||
"terrain_category": {
|
||||
"$ref": "#/$defs/TerrainCategory",
|
||||
"default": "suburban"
|
||||
},
|
||||
"wind_direction": {
|
||||
"type": "number",
|
||||
"minimum": 0,
|
||||
"maximum": 360,
|
||||
"default": 0
|
||||
}
|
||||
},
|
||||
"required": [
|
||||
"type",
|
||||
"reference_wind_speed"
|
||||
],
|
||||
"additionalProperties": false
|
||||
}
|
||||
]
|
||||
},
|
||||
"CFDDomain": {
|
||||
"type": "object",
|
||||
"allOf": [
|
||||
{
|
||||
"$ref": "#/$defs/_IdentifiedObject"
|
||||
},
|
||||
{
|
||||
"type": "object",
|
||||
"properties": {
|
||||
"type": {
|
||||
"const": "CFDDomain"
|
||||
},
|
||||
"domain_size": {
|
||||
"type": "object",
|
||||
"properties": {
|
||||
"x_min": {
|
||||
"type": "number"
|
||||
},
|
||||
"x_max": {
|
||||
"type": "number"
|
||||
},
|
||||
"y_min": {
|
||||
"type": "number"
|
||||
},
|
||||
"y_max": {
|
||||
"type": "number"
|
||||
},
|
||||
"z_min": {
|
||||
"type": "number"
|
||||
},
|
||||
"z_max": {
|
||||
"type": "number"
|
||||
}
|
||||
},
|
||||
"required": [
|
||||
"x_min",
|
||||
"x_max",
|
||||
"y_min",
|
||||
"y_max",
|
||||
"z_min",
|
||||
"z_max"
|
||||
],
|
||||
"additionalProperties": false
|
||||
},
|
||||
"upstream_distance": {
|
||||
"type": "number",
|
||||
"exclusiveMinimum": 0,
|
||||
"description": "typically 5H"
|
||||
},
|
||||
"downstream_distance": {
|
||||
"type": "number",
|
||||
"exclusiveMinimum": 0,
|
||||
"description": "typically 15H"
|
||||
},
|
||||
"lateral_distance": {
|
||||
"type": "number",
|
||||
"exclusiveMinimum": 0,
|
||||
"description": "typically 5H"
|
||||
},
|
||||
"height_distance": {
|
||||
"type": "number",
|
||||
"exclusiveMinimum": 0,
|
||||
"description": "typically 5H"
|
||||
}
|
||||
},
|
||||
"required": [
|
||||
"type",
|
||||
"domain_size"
|
||||
],
|
||||
"additionalProperties": false
|
||||
}
|
||||
]
|
||||
},
|
||||
"MeshParameters": {
|
||||
"type": "object",
|
||||
"allOf": [
|
||||
{
|
||||
"$ref": "#/$defs/_IdentifiedObject"
|
||||
},
|
||||
{
|
||||
"type": "object",
|
||||
"properties": {
|
||||
"type": {
|
||||
"const": "MeshParameters"
|
||||
},
|
||||
"base_cell_size": {
|
||||
"type": "number",
|
||||
"exclusiveMinimum": 0
|
||||
},
|
||||
"refinement_zones": {
|
||||
"type": "array",
|
||||
"items": {
|
||||
"type": "object",
|
||||
"properties": {
|
||||
"zone_name": {
|
||||
"type": "string"
|
||||
},
|
||||
"cell_size": {
|
||||
"type": "number",
|
||||
"exclusiveMinimum": 0
|
||||
},
|
||||
"extent": {
|
||||
"type": "object",
|
||||
"properties": {
|
||||
"x_min": {
|
||||
"type": "number"
|
||||
},
|
||||
"x_max": {
|
||||
"type": "number"
|
||||
},
|
||||
"y_min": {
|
||||
"type": "number"
|
||||
},
|
||||
"y_max": {
|
||||
"type": "number"
|
||||
},
|
||||
"z_min": {
|
||||
"type": "number"
|
||||
},
|
||||
"z_max": {
|
||||
"type": "number"
|
||||
}
|
||||
},
|
||||
"required": [
|
||||
"x_min",
|
||||
"x_max",
|
||||
"y_min",
|
||||
"y_max",
|
||||
"z_min",
|
||||
"z_max"
|
||||
],
|
||||
"additionalProperties": false
|
||||
}
|
||||
},
|
||||
"required": [
|
||||
"zone_name",
|
||||
"cell_size",
|
||||
"extent"
|
||||
],
|
||||
"additionalProperties": false
|
||||
}
|
||||
},
|
||||
"wall_layer_first_cell_height": {
|
||||
"type": "number",
|
||||
"exclusiveMinimum": 0
|
||||
},
|
||||
"wall_layer_growth_rate": {
|
||||
"type": "number",
|
||||
"exclusiveMinimum": 1,
|
||||
"maximum": 1.5,
|
||||
"default": 1.2
|
||||
},
|
||||
"wall_layer_total_layers": {
|
||||
"type": "integer",
|
||||
"minimum": 3,
|
||||
"default": 10
|
||||
},
|
||||
"mesh_type": {
|
||||
"type": "string",
|
||||
"enum": [
|
||||
"hexahedral",
|
||||
"polyhedral",
|
||||
"tetrahedral",
|
||||
"snappy_hex"
|
||||
],
|
||||
"default": "snappy_hex"
|
||||
}
|
||||
},
|
||||
"required": [
|
||||
"type",
|
||||
"base_cell_size"
|
||||
],
|
||||
"additionalProperties": false
|
||||
}
|
||||
]
|
||||
},
|
||||
"TurbulenceParameters": {
|
||||
"type": "object",
|
||||
"allOf": [
|
||||
{
|
||||
"$ref": "#/$defs/_IdentifiedObject"
|
||||
},
|
||||
{
|
||||
"type": "object",
|
||||
"properties": {
|
||||
"type": {
|
||||
"const": "TurbulenceParameters"
|
||||
},
|
||||
"turbulence_model": {
|
||||
"$ref": "#/$defs/TurbulenceModel",
|
||||
"default": "k_epsilon_RNG"
|
||||
},
|
||||
"turbulence_intensity": {
|
||||
"type": "number",
|
||||
"minimum": 0,
|
||||
"maximum": 1
|
||||
},
|
||||
"turbulent_length_scale": {
|
||||
"type": "number",
|
||||
"exclusiveMinimum": 0
|
||||
},
|
||||
"wall_function_type": {
|
||||
"type": "string",
|
||||
"enum": [
|
||||
"standard_wall_function",
|
||||
"non_equilibrium",
|
||||
"enhanced_wall_treatment",
|
||||
"scalable_wall_function"
|
||||
],
|
||||
"default": "standard_wall_function"
|
||||
},
|
||||
"y_plus_target": {
|
||||
"type": "number",
|
||||
"exclusiveMinimum": 0
|
||||
}
|
||||
},
|
||||
"required": [
|
||||
"type",
|
||||
"turbulence_model"
|
||||
],
|
||||
"additionalProperties": false
|
||||
}
|
||||
]
|
||||
},
|
||||
"BoundaryConditions": {
|
||||
"type": "object",
|
||||
"allOf": [
|
||||
{
|
||||
"$ref": "#/$defs/_IdentifiedObject"
|
||||
},
|
||||
{
|
||||
"type": "object",
|
||||
"properties": {
|
||||
"type": {
|
||||
"const": "BoundaryConditions"
|
||||
},
|
||||
"inlet_type": {
|
||||
"type": "string",
|
||||
"enum": [
|
||||
"velocity_inlet",
|
||||
"pressure_inlet"
|
||||
],
|
||||
"default": "velocity_inlet"
|
||||
},
|
||||
"outlet_type": {
|
||||
"type": "string",
|
||||
"enum": [
|
||||
"pressure_outlet",
|
||||
"outflow"
|
||||
],
|
||||
"default": "pressure_outlet"
|
||||
},
|
||||
"top_boundary_type": {
|
||||
"type": "string",
|
||||
"enum": [
|
||||
"symmetry",
|
||||
"slip_wall",
|
||||
"velocity_inlet"
|
||||
],
|
||||
"default": "symmetry"
|
||||
},
|
||||
"side_boundary_type": {
|
||||
"type": "string",
|
||||
"enum": [
|
||||
"symmetry",
|
||||
"slip_wall"
|
||||
],
|
||||
"default": "symmetry"
|
||||
},
|
||||
"ground_type": {
|
||||
"type": "string",
|
||||
"enum": [
|
||||
"no_slip_wall",
|
||||
"rough_wall"
|
||||
],
|
||||
"default": "no_slip_wall"
|
||||
},
|
||||
"building_wall_type": {
|
||||
"type": "string",
|
||||
"enum": [
|
||||
"no_slip_wall",
|
||||
"rough_wall"
|
||||
],
|
||||
"default": "no_slip_wall"
|
||||
},
|
||||
"surface_roughness_height": {
|
||||
"type": "number",
|
||||
"exclusiveMinimum": 0,
|
||||
"default": 0.001
|
||||
}
|
||||
},
|
||||
"required": [
|
||||
"type"
|
||||
],
|
||||
"additionalProperties": false
|
||||
}
|
||||
]
|
||||
},
|
||||
"SolverSettings": {
|
||||
"type": "object",
|
||||
"allOf": [
|
||||
{
|
||||
"$ref": "#/$defs/_IdentifiedObject"
|
||||
},
|
||||
{
|
||||
"type": "object",
|
||||
"properties": {
|
||||
"type": {
|
||||
"const": "SolverSettings"
|
||||
},
|
||||
"solver_type": {
|
||||
"$ref": "#/$defs/SolverType",
|
||||
"default": "steady"
|
||||
},
|
||||
"pressure_velocity_coupling": {
|
||||
"type": "string",
|
||||
"enum": [
|
||||
"SIMPLE",
|
||||
"SIMPLEC",
|
||||
"PISO",
|
||||
"Coupled"
|
||||
],
|
||||
"default": "SIMPLE"
|
||||
},
|
||||
"spatial_discretization": {
|
||||
"type": "string",
|
||||
"enum": [
|
||||
"first_order",
|
||||
"second_order",
|
||||
"QUICK",
|
||||
"MUSCL"
|
||||
],
|
||||
"default": "second_order"
|
||||
},
|
||||
"max_iterations": {
|
||||
"type": "integer",
|
||||
"minimum": 100,
|
||||
"default": 1000
|
||||
},
|
||||
"convergence_criteria": {
|
||||
"type": "object",
|
||||
"properties": {
|
||||
"continuity": {
|
||||
"type": "number",
|
||||
"exclusiveMinimum": 0,
|
||||
"default": 0.001
|
||||
},
|
||||
"x_velocity": {
|
||||
"type": "number",
|
||||
"exclusiveMinimum": 0,
|
||||
"default": 0.001
|
||||
},
|
||||
"y_velocity": {
|
||||
"type": "number",
|
||||
"exclusiveMinimum": 0,
|
||||
"default": 0.001
|
||||
},
|
||||
"z_velocity": {
|
||||
"type": "number",
|
||||
"exclusiveMinimum": 0,
|
||||
"default": 0.001
|
||||
},
|
||||
"k": {
|
||||
"type": "number",
|
||||
"exclusiveMinimum": 0,
|
||||
"default": 0.001
|
||||
},
|
||||
"epsilon": {
|
||||
"type": "number",
|
||||
"exclusiveMinimum": 0,
|
||||
"default": 0.001
|
||||
}
|
||||
},
|
||||
"additionalProperties": false
|
||||
},
|
||||
"under_relaxation_factors": {
|
||||
"type": "object",
|
||||
"properties": {
|
||||
"pressure": {
|
||||
"type": "number",
|
||||
"exclusiveMinimum": 0,
|
||||
"maximum": 1,
|
||||
"default": 0.3
|
||||
},
|
||||
"momentum": {
|
||||
"type": "number",
|
||||
"exclusiveMinimum": 0,
|
||||
"maximum": 1,
|
||||
"default": 0.7
|
||||
},
|
||||
"k": {
|
||||
"type": "number",
|
||||
"exclusiveMinimum": 0,
|
||||
"maximum": 1,
|
||||
"default": 0.8
|
||||
},
|
||||
"epsilon": {
|
||||
"type": "number",
|
||||
"exclusiveMinimum": 0,
|
||||
"maximum": 1,
|
||||
"default": 0.8
|
||||
}
|
||||
},
|
||||
"additionalProperties": false
|
||||
}
|
||||
},
|
||||
"required": [
|
||||
"type"
|
||||
],
|
||||
"additionalProperties": false
|
||||
}
|
||||
]
|
||||
},
|
||||
"OutputParameters": {
|
||||
"type": "object",
|
||||
"allOf": [
|
||||
{
|
||||
"$ref": "#/$defs/_IdentifiedObject"
|
||||
},
|
||||
{
|
||||
"type": "object",
|
||||
"properties": {
|
||||
"type": {
|
||||
"const": "OutputParameters"
|
||||
},
|
||||
"output_variables": {
|
||||
"type": "array",
|
||||
"items": {
|
||||
"type": "string",
|
||||
"enum": [
|
||||
"velocity",
|
||||
"pressure",
|
||||
"turbulent_kinetic_energy",
|
||||
"turbulent_dissipation",
|
||||
"wall_shear_stress",
|
||||
"vorticity"
|
||||
]
|
||||
},
|
||||
"default": [
|
||||
"velocity",
|
||||
"pressure"
|
||||
]
|
||||
},
|
||||
"monitoring_points": {
|
||||
"type": "array",
|
||||
"items": {
|
||||
"type": "object",
|
||||
"properties": {
|
||||
"point_name": {
|
||||
"type": "string"
|
||||
},
|
||||
"position": {
|
||||
"type": "array",
|
||||
"items": {
|
||||
"type": "number"
|
||||
},
|
||||
"minItems": 3,
|
||||
"maxItems": 3
|
||||
}
|
||||
},
|
||||
"required": [
|
||||
"point_name",
|
||||
"position"
|
||||
],
|
||||
"additionalProperties": false
|
||||
}
|
||||
},
|
||||
"output_format": {
|
||||
"type": "string",
|
||||
"enum": [
|
||||
"ensight",
|
||||
"paraview",
|
||||
"tecplot",
|
||||
"csv",
|
||||
"vtk"
|
||||
],
|
||||
"default": "vtk"
|
||||
},
|
||||
"output_interval": {
|
||||
"type": "integer",
|
||||
"minimum": 1,
|
||||
"default": 100
|
||||
}
|
||||
},
|
||||
"required": [
|
||||
"type"
|
||||
],
|
||||
"additionalProperties": false
|
||||
}
|
||||
]
|
||||
},
|
||||
"CommunityCFDSettings": {
|
||||
"type": "object",
|
||||
"allOf": [
|
||||
{
|
||||
"$ref": "#/$defs/_IdentifiedObject"
|
||||
},
|
||||
{
|
||||
"type": "object",
|
||||
"properties": {
|
||||
"type": {
|
||||
"const": "CommunityCFDSettings"
|
||||
},
|
||||
"wind_profiles": {
|
||||
"type": "array",
|
||||
"items": {
|
||||
"$ref": "#/$defs/WindProfile"
|
||||
}
|
||||
},
|
||||
"domain": {
|
||||
"$ref": "#/$defs/CFDDomain"
|
||||
},
|
||||
"mesh": {
|
||||
"$ref": "#/$defs/MeshParameters"
|
||||
},
|
||||
"turbulence": {
|
||||
"$ref": "#/$defs/TurbulenceParameters"
|
||||
},
|
||||
"boundary_conditions": {
|
||||
"$ref": "#/$defs/BoundaryConditions"
|
||||
},
|
||||
"solver": {
|
||||
"$ref": "#/$defs/SolverSettings"
|
||||
},
|
||||
"output": {
|
||||
"$ref": "#/$defs/OutputParameters"
|
||||
}
|
||||
},
|
||||
"required": [
|
||||
"type"
|
||||
],
|
||||
"additionalProperties": false
|
||||
}
|
||||
]
|
||||
}
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user