souravsud/wind-cfd-trial
收藏Hugging Face2026-04-07 更新2026-04-12 收录
下载链接:
https://hf-mirror.com/datasets/souravsud/wind-cfd-trial
下载链接
链接失效反馈官方服务:
资源简介:
---
license: cc-by-4.0
task_categories:
- other
tags:
- cfd
- openfoam
- wind
- terrain
- atmospheric-boundary-layer
- rans
- structured-mesh
- wind-energy
- computational-fluid-dynamics
pretty_name: "Wind Flow Over Complex Terrain Dataset"
size_categories:
- 1K<n<10K
---
# Wind Flow Over Complex Terrain Dataset
A large-scale dataset of steady-state RANS wind flow simulations over real-world complex terrain, designed for training machine learning models for wind resource assessment and atmospheric flow prediction.
## Overview
| Parameter | Value |
|---|---|
| Number of terrain locations | ~1000 |
| Wind directions per terrain | 2 (random) |
| Total simulation cases | ~10,000 |
| Cropped grid per case | ~298 × 298 × 64 |
| Horizontal resolution (AOI) | ~30 m |
| Vertical extent | ~500 m AGL |
| Flow variables | U (3-component), p, k, ε |
| Surface variables | DEM, roughness (z₀), height AGL |
| Reference wind speed | 10 m/s at 100 m height |
| Atmospheric stability | Neutral |
| Solver | OpenFOAM simpleFoam (RANS, k-ε) |
| Format | Zarr (xarray-compatible) |
## Quick Start
### Load a single case
```python
import xarray as xr
ds = xr.open_zarr("data/case_name.zarr")
# 3D wind field
Ux = ds['Ux'].values # (ni, nj, nk) array, m/s
Uy = ds['Uy'].values
Uz = ds['Uz'].values
# Terrain
dem = ds['dem'].values # (ni, nj), meters above sea level
z0 = ds['roughness'].values # (ni, nj), aerodynamic roughness in meters
# Height above ground
h_agl = ds['h_agl'].values # (ni, nj, nk), meters
# Metadata
print(ds.attrs['case_id'])
print(ds.attrs['rotation_deg']) # wind direction
print(ds.attrs['converged']) # simulation convergence flag
```
### Load from Hugging Face directly
```python
from huggingface_hub import hf_hub_download
import xarray as xr
import os
# Download a single case
local_path = hf_hub_download(
repo_id="souravsud/wind-terrain-cfd",
filename="data/case_name.zarr",
repo_type="dataset",
local_dir="./cache/"
)
ds = xr.open_zarr("./cache/data/case_name.zarr")
```
### PyTorch DataLoader
See `examples/02_dataloader_pytorch.py` for a ready-to-use `torch.utils.data.Dataset` class.
## Data Description
### Per-case Zarr store contents
| Variable | Shape | Units | Description |
|---|---|---|---|
| `X` | (ni, nj, nk) | m | UTM easting of cell centre |
| `Y` | (ni, nj, nk) | m | UTM northing of cell centre |
| `Z` | (ni, nj, nk) | m | Elevation above MSL |
| `Ux` | (ni, nj, nk) | m/s | Velocity x-component (UTM east) |
| `Uy` | (ni, nj, nk) | m/s | Velocity y-component (UTM north) |
| `Uz` | (ni, nj, nk) | m/s | Velocity z-component (vertical) |
| `p` | (ni, nj, nk) | m²/s² | Kinematic pressure (p/ρ) |
| `k` | (ni, nj, nk) | m²/s² | Turbulent kinetic energy |
| `epsilon` | (ni, nj, nk) | m²/s³ | Turbulent dissipation rate |
| `dem` | (ni, nj) | m | Ground elevation (MSL) |
| `roughness` | (ni, nj) | m | Aerodynamic roughness length z₀ |
| `h_agl` | (ni, nj, nk) | m | Height above ground level |
### Coordinate system
- **X, Y**: UTM coordinates. The EPSG code is stored in `ds.attrs['utm_epsg']`.
- **Z**: Absolute elevation above mean sea level (MSL), **not** height above ground.
- **h_agl**: Pre-computed height above ground: `h_agl[i,j,k] = Z[i,j,k] - dem[i,j]`.
- The mesh is **terrain-following** (curvilinear). At each (i,j) column, Z increases with k but follows the terrain surface. Horizontal coordinates vary slightly with k.
### Velocity scaling
All simulations use a **reference velocity of 10 m/s at 100 m height** under neutral atmospheric stability. Since the governing equations (incompressible RANS) are linear in velocity for neutral conditions, results can be scaled to any reference wind speed:
```python
V_ref_desired = 8.0 # m/s
scale = V_ref_desired / 10.0
U_scaled = U_dataset * scale
p_scaled = p_dataset * scale**2
k_scaled = k_dataset * scale**2
epsilon_scaled = epsilon_dataset * scale**3
```
This is a feature, not a limitation — it means the dataset effectively covers all wind speeds.
### Wind direction
Each case has a specific wind direction stored in `ds.attrs['rotation_deg']`. This is the angle (in degrees) by which the terrain was rotated to align the inlet boundary with the desired wind direction. The velocity components (Ux, Uy) are in the **rotated UTM frame** corresponding to that case.
### Convergence quality
Each case includes convergence information:
- `ds.attrs['converged']`: Boolean flag (True if all residuals < 10⁻³)
- `ds.attrs['residual_Ux']`, `ds.attrs['residual_p']`, etc.: Final residual per field
- `ds.attrs['iterations']`: Number of solver iterations
The `metadata/case_index.csv` file contains convergence data for all cases, allowing easy filtering.
## Dataset Structure
```
wind-terrain-cfd/
├── README.md # This file
├── data/
│ ├── case_0001.zarr/ # One Zarr store per simulation
│ ├── case_0002.zarr/
│ └── ...
├── metadata/
│ ├── case_index.csv # Master index (lat, lon, wind_dir, converged, ...)
│ └── dataset_summary.json # Aggregate statistics
└── examples/
├── 01_load_single_case.py
├── 02_dataloader_pytorch.py
└── 03_velocity_scaling.py
```
## Generation Pipeline
The dataset was generated using an automated pipeline:
1. **Terrain fetching**: [terrain-fetcher](https://github.com/souravsud/terrain-fetcher) — downloads DEM (Copernicus GLO-30) and land cover (ESA WorldCover) data
2. **Mesh generation**: [terrain_following_mesh_generator](https://github.com/souravsud/terrain_following_mesh_generator) — structured terrain-following mesh for OpenFOAM
3. **Boundary conditions**: [ABL_BC_generator](https://github.com/souravsud/ABL_BC_generator) — neutral atmospheric boundary layer inlet profiles
4. **Job management**: [taskManager](https://github.com/souravsud/taskManager) — SLURM job submission and monitoring
5. **Orchestration**: [CFD-dataset](https://github.com/souravsud/CFD-dataset) — end-to-end pipeline coordination
## Citation
If you use this dataset in your research, please cite:
```bibtex
@dataset{sud2026windterrain,
author = {Sud, Sourav},
title = {Wind Flow Over Complex Terrain Dataset},
year = {2026},
publisher = {Hugging Face},
url = {https://huggingface.co/datasets/souravsud/wind-terrain-cfd}
}
```
## License
This dataset is released under the [CC BY 4.0](https://creativecommons.org/licenses/by/4.0/) license.
license: CC BY 4.0
任务类别:
- 其他
标签:
- 计算流体动力学(Computational Fluid Dynamics, CFD)
- OpenFOAM
- 风
- 地形
- 大气边界层(Atmospheric Boundary Layer, ABL)
- 雷诺平均纳维-斯托克斯(Reynolds-Averaged Navier-Stokes, RANS)
- 结构化网格
- 风能
- 计算流体动力学
pretty_name: "复杂地形风场流动数据集"
样本规模区间:
- 1000 < n < 10000
---
# 复杂地形风场流动数据集(Wind Flow Over Complex Terrain Dataset)
本数据集为大规模真实复杂地形下的定常雷诺平均纳维-斯托克斯风场流动模拟数据集,旨在为风能资源评估与大气流动预测相关的机器学习模型训练提供支撑。
## 概览
| 参数 | 数值 |
|---|---|
| 地形点位数量 | ~1000 |
| 单地形点位风向数 | 2(随机选取) |
| 总模拟案例数 | ~10000 |
| 单案例裁剪网格尺寸 | ~298 × 298 × 64 |
| 研究区域水平分辨率 | ~30 m |
| 垂直范围 | ~500 m 离地高度(Above Ground Level, AGL) |
| 流动变量 | 三维速度U、压强p、湍动能k、湍流耗散率ε |
| 地表变量 | 数字高程模型(Digital Elevation Model, DEM)、空气动力学粗糙度z₀、离地高度 |
| 参考风速 | 100 m高度处10 m/s |
| 大气稳定性 | 中性 |
| 求解器 | OpenFOAM simpleFoam(基于RANS框架的k-ε模型) |
| 数据格式 | Zarr(兼容xarray库) |
## 快速入门
### 加载单个案例
python
import xarray as xr
ds = xr.open_zarr("data/case_name.zarr")
# 三维风场
Ux = ds['Ux'].values # (ni, nj, nk) 数组,单位:m/s
Uy = ds['Uy'].values
Uz = ds['Uz'].values
# 地形数据
dem = ds['dem'].values # (ni, nj) 数组,单位:米(海拔高程)
z0 = ds['roughness'].values # (ni, nj) 数组,单位:米(空气动力学粗糙度)
# 离地高度
h_agl = ds['h_agl'].values # (ni, nj, nk) 数组,单位:米
# 元数据
print(ds.attrs['case_id'])
print(ds.attrs['rotation_deg']) # 风向角度
print(ds.attrs['converged']) # 模拟收敛标记
### 直接从Hugging Face加载
python
from huggingface_hub import hf_hub_download
import xarray as xr
import os
# 下载单个案例
local_path = hf_hub_download(
repo_id="souravsud/wind-terrain-cfd",
filename="data/case_name.zarr",
repo_type="dataset",
local_dir="./cache/"
)
ds = xr.open_zarr("./cache/data/case_name.zarr")
### PyTorch数据加载器
可参考`examples/02_dataloader_pytorch.py`获取可直接使用的`torch.utils.data.Dataset`类。
## 数据说明
### 单案例Zarr存储内容
| 变量 | 维度 | 单位 | 描述 |
|---|---|---|---|
| `X` | (ni, nj, nk) | m | 网格单元中心的UTM(通用横轴墨卡托,Universal Transverse Mercator)东向坐标 |
| `Y` | (ni, nj, nk) | m | 网格单元中心的UTM北向坐标 |
| `Z` | (ni, nj, nk) | m | 平均海平面以上绝对高程 |
| `Ux` | (ni, nj, nk) | m/s | 速度x分量(UTM东向) |
| `Uy` | (ni, nj, nk) | m/s | 速度y分量(UTM北向) |
| `Uz` | (ni, nj, nk) | m/s | 速度z分量(垂直方向) |
| `p` | (ni, nj, nk) | m²/s² | 运动学压强(p/ρ) |
| `k` | (ni, nj, nk) | m²/s² | 湍流动能 |
| `epsilon` | (ni, nj, nk) | m²/s³ | 湍流耗散率 |
| `dem` | (ni, nj) | m | 地面高程(平均海平面基准) |
| `roughness` | (ni, nj) | m | 空气动力学粗糙度长度z₀ |
| `h_agl` | (ni, nj, nk) | m | 离地高度 |
### 坐标系
- **X、Y**:UTM坐标,其EPSG代码存储于`ds.attrs['utm_epsg']`。
- **Z**:平均海平面以上绝对高程,**非**离地高度。
- **h_agl**:预计算的离地高度:`h_agl[i,j,k] = Z[i,j,k] - dem[i,j]`。
- 网格采用**地形跟随曲线网格**结构:在每个(i,j)列中,Z随k增大且贴合地形表面;水平坐标随k略有变化。
### 速度缩放
所有模拟均采用**100 m高度处10 m/s的参考风速**,且大气处于中性稳定条件。由于中性条件下不可压缩RANS控制方程关于速度呈线性关系,因此模拟结果可缩放至任意参考风速:
python
V_ref_desired = 8.0 # 单位:m/s
scale = V_ref_desired / 10.0
U_scaled = U_dataset * scale
p_scaled = p_dataset * scale**2
k_scaled = k_dataset * scale**2
epsilon_scaled = epsilon_dataset * scale**3
此设计为特性而非限制——这意味着本数据集可有效覆盖所有风速场景。
### 风向
每个案例的风向存储于`ds.attrs['rotation_deg']`中,该值为地形旋转的角度(单位:度),用于将入口边界对齐至目标风向。速度分量(Ux、Uy)采用对应案例的**旋转后UTM坐标系**。
### 收敛质量
每个案例均包含收敛信息:
- `ds.attrs['converged']`:布尔标记(当所有残差小于10⁻³时为True)
- `ds.attrs['residual_Ux']`、`ds.attrs['residual_p']`等:各物理场的最终残差
- `ds.attrs['iterations']`:求解器迭代次数
`metadata/case_index.csv`文件包含所有案例的收敛数据,便于快速筛选。
## 数据集结构
wind-terrain-cfd/
├── README.md # 本文档
├── data/
│ ├── case_0001.zarr/ # 每个模拟对应一个Zarr存储文件
│ ├── case_0002.zarr/
│ └── ...
├── metadata/
│ ├── case_index.csv # 主索引文件(包含纬度、经度、风向、收敛状态等)
│ └── dataset_summary.json # 聚合统计信息
└── examples/
├── 01_load_single_case.py
├── 02_dataloader_pytorch.py
└── 03_velocity_scaling.py
## 数据集生成流程
本数据集通过自动化流水线生成:
1. **地形数据获取**:使用[terrain-fetcher](https://github.com/souravsud/terrain-fetcher)工具下载数字高程模型(Copernicus GLO-30)与土地覆盖数据(ESA WorldCover)
2. **网格生成**:使用[terrain_following_mesh_generator](https://github.com/souravsud/terrain_following_mesh_generator)工具为OpenFOAM生成结构化地形跟随网格
3. **边界条件设置**:使用[ABL_BC_generator](https://github.com/souravsud/ABL_BC_generator)工具生成中性大气边界层入口剖面
4. **作业管理**:使用[taskManager](https://github.com/souravsud/taskManager)工具进行SLURM作业提交与监控
5. **流程编排**:使用[CFD-dataset](https://github.com/souravsud/CFD-dataset)工具完成端到端流水线协调
## 引用声明
若您在研究中使用本数据集,请引用如下文献:
bibtex
@dataset{sud2026windterrain,
author = {Sud, Sourav},
title = {Wind Flow Over Complex Terrain Dataset},
year = {2026},
publisher = {Hugging Face},
url = {https://huggingface.co/datasets/souravsud/wind-terrain-cfd}
}
## 许可证
本数据集采用[CC BY 4.0](https://creativecommons.org/licenses/by/4.0/)许可证发布。
提供机构:
souravsud



