MTT69/TurbulentChannel
收藏资源简介:
--- license: cc-by-4.0 language: - en tags: - piv - particle-image-velocimetry - fluid-dynamics - turbulence - channel-flow - validation - benchmark - synthetic-data pretty_name: PIVtools Turbulent Channel Validation Dataset size_categories: - 10K<n<100K --- # PIVtools Turbulent Channel Validation Dataset Synthetic particle-image-velocimetry (PIV) images of a turbulent channel flow at Re_τ ≈ 1000, paired with DNS-derived ground-truth statistics. Designed to benchmark PIV algorithms end-to-end against a reference dataset of known answer. Two cases are provided: - **Case A (clean)**: 85 000 particles per 2048 × 2048 image (≈ 5.2 ppw at 16 × 16 windows), no noise. Sets an upper bound on PIV accuracy. - **Case B (noisy)**: 22 000 particles per image (≈ 1.3 ppw), Gaussian sensor noise (mean 80, std 16, SNR ≈ 8). Realistic experimental conditions. Each case contains 4 000 image pairs in both planar and stereo geometries. The stereo cameras are placed symmetrically at ± 45° from the sheet normal, in a side-scatter arrangement. Ground truth is provided separately for each case — both derive from the same underlying JHTDB channel snapshots but with their respective particle counts, so finite-sample statistics are self-consistent. Companion to the PIVtools software paper (SoftwareX, submitted). The dataset is self-contained: drop it next to a [PIVtools](https://github.com/MTT69/python-PIVtools) install and the benchmark scripts reproduce every validation figure in the paper. ## Quickstart ```bash # 1. Install pivtools (C extensions are pre-built in the PyPI wheel) pip install pivtools # 2. Download this dataset hf download MTT69/TurbulentChannel --repo-type dataset --local-dir ./tc # 3. Process the planar noisy images (ensemble PIV — example) pivtools-cli init --output ./work/config.yaml # edit config.yaml to point sources at ./tc/planar_noisy pivtools-cli ensemble --config ./work/config.yaml # 4. Benchmark against DNS (use ground_truth/clean for Case A, ground_truth/noisy for Case B) python ./tc/scripts/benchmark_comparison.py \ --mode ensemble \ --gt-dir ./tc/ground_truth/noisy \ --ensemble-dir ./work/calibrated_piv/4000/Cam1/ensemble \ --num-frames 4000 \ --output-dir ./work/validation ``` ## Contents ``` MTT69/TurbulentChannel/ ├── README.md (this file) ├── LICENSE (CC-BY-4.0) ├── ground_truth/ │ ├── clean/direct_stats.mat DNS statistics for Case A (85k particles) │ └── noisy/direct_stats.mat DNS statistics for Case B (22k particles) ├── planar_clean/ Case A planar images (4000 pairs, 85k particles) │ └── B00001_A.tif … B04000_B.tif 2048 × 2048 TIFF, flat at root ├── planar_noisy/ Case B planar images (4000 pairs, 22k particles) │ ├── B00001_A.tif … B04000_B.tif │ └── calibration_boards/ 20 synthetic dotboard calibration images │ (shared between Case A and Case B) ├── stereo_clean/ Case A stereo images (4000 pairs × 2 cameras) │ ├── camera1/ cam 1 TIFFs │ ├── camera2/ cam 2 TIFFs │ ├── mask_Cam1.mat pixel-space masks │ └── mask_Cam2.mat ├── stereo_noisy/ Case B stereo images (4000 pairs × 2 cameras) │ ├── camera1/ │ ├── camera2/ │ ├── calibration/ │ │ ├── cam1/ 20 stereo dotboard images, cam 1 │ │ └── cam2/ 20 stereo dotboard images, cam 2 │ │ (shared between Case A and Case B) │ ├── mask_Cam1.mat │ └── mask_Cam2.mat └── scripts/ ├── benchmark_comparison.py Planar + ensemble vs DNS ├── stereo_benchmark_comparison.py Stereo 3-component + 6 stresses vs DNS ├── cross_method_comparison.py Multi-method overlay figures ├── paper_figures.py Combined clean + noisy paper figures ├── tcf_direct_stats.py Recompute ground truth from JHTDB particles └── sig_configs/ EUROSIG configuration files (.cdl) ``` **Calibration boards are shared.** To avoid duplicate uploads, the calibration images for both Case A and Case B live at `planar_noisy/calibration_boards/` (planar) and `stereo_noisy/calibration/{cam1,cam2}/` (stereo). When processing Case A, point your PIVtools config at those same calibration paths. ## Image specifications | Parameter | Value | |-----------|-------| | Image size | 2048 × 2048 px, 16-bit TIFF | | Particle diameter | 3 px | | Laser sheet thickness | 16 px (1.2 mm physical) | | Number of pairs | 4000 | | Case A particle count | 85 000 per image (≈ 5.2 ppw at 16 × 16 windows), no noise | | Case B particle count | 22 000 per image (≈ 1.3 ppw at 16 × 16 windows) | | Case B noise | Gaussian, mean = 80, std = 16, SNR ≈ 8 | | Stereo geometry | Two cameras at ± 45° from the sheet normal (side-scatter arrangement) | | dt | Matches JHTDB snapshot spacing (see CDL configs) | ## Ground truth Two ground-truth files are provided, one per case, each in its own subdirectory so the benchmark scripts can point at them directly via `--gt-dir`: - `ground_truth/clean/direct_stats.mat` — Case A reference (85 000 particle trajectories) - `ground_truth/noisy/direct_stats.mat` — Case B reference (22 000 trajectories) Both are computed directly from the JHTDB particle position snapshots used to render the corresponding images. Benchmark Case A PIV against the clean file and Case B against the noisy one — finite-sample statistics are self-consistent within each case. Both share this schema: | Key | Shape | Description | |-----|-------|-------------| | `y_plus` | (N,) | wall-normal coordinate, wall units | | `U_plus` | (N, 3) | mean velocity [U, V, W] in wall units | | `stress_plus` | (N, 3, 3) | Reynolds stress tensor in wall units | | `stress_ci_lo`, `stress_ci_hi` | (N, 3, 3) | 95% confidence interval | | `umean_ci_lo`, `umean_ci_hi` | (N, 3) | 95% CI for mean velocity | | `u_tau` | scalar | friction velocity (mm/s) | | `delta_nu` | scalar | viscous length scale (mm) | | `Re_tau` | scalar | friction Reynolds number | The Case B ground truth is self-consistent with the 22 000-particle rendering — finite-sample statistics from the subsampled particle set, not the full DNS. Benchmark Case B PIV against Case B ground truth. ## How this was generated Synthetic images are rendered from JHTDB turbulent-channel particle trajectories using the **EUROSIG / EUROPIV synthetic image generator**. The configuration files in `scripts/sig_configs/` are the authoritative build instructions: | Configuration | Role | |---------------|------| | `sigconf_planar_noisy_A.cdl` | Planar frame A, 22k particles, noise pattern A | | `sigconf_planar_noisy_B.cdl` | Planar frame B, 22k particles, noise pattern B | | `SIGconf_Stereo_cam1_noisy_A.cdl`, `..._B.cdl` | Stereo cam 1, frames A and B | | `SIGconf_Stereo_cam2_noisy_A.cdl`, `..._B.cdl` | Stereo cam 2, frames A and B | | `sigconf_planar.cdl`, `SIGconf_Stereo_cam{1,2}.cdl` | Case A planar + stereo (85k particles, no noise) | To regenerate images bit-for-bit, install EUROSIG and invoke each `.cdl` with its associated particle-position files from JHTDB. See the SIG documentation for build instructions. ## Scripts ### `benchmark_comparison.py` — single-method benchmark Compares planar or ensemble PIV against the DNS ground truth; produces U+, Reynolds stress, residual, trace invariant, and noise-decomposition plots. ```bash python scripts/benchmark_comparison.py \ --mode ensemble \ --gt-dir ./ground_truth/noisy \ --ensemble-dir <path/to/your/ensemble_result_directory> \ --num-frames 4000 \ --output-dir ./out ``` | Flag | Description | |------|-------------| | `--mode` / `-m` | `instantaneous` or `ensemble` | | `--runs` / `-r` | Comma-separated 0-based pass indices (e.g. `2,3`) | | `--windows` / `-w` | Labels for those passes (e.g. `32,16`) | | `--gt-dir` / `-g` | Directory containing `direct_stats.mat` — e.g. `./ground_truth/noisy` or `./ground_truth/clean` (required) | | `--base-dir` / `-b` | PIV results base (instantaneous mode) | | `--ensemble-dir` / `-e` | Direct path to ensemble result directory | | `--num-frames` / `-n` | Frame count subdirectory (default 1000; use 4000 for this dataset) | | `--output-dir` / `-o` | Output directory | | `--y-plus-offset` / `-y` | Additional y+ offset on top of hardcoded +1 | | `--show-fit-lines` | Overlay log-law and viscous sublayer curves | ### `stereo_benchmark_comparison.py` — stereo 3C + 6-stress benchmark Uses LaTeX for labels (`text.usetex=True`); requires MiKTeX / TeXLive. ```bash python scripts/stereo_benchmark_comparison.py \ --gt-dir ./ground_truth/noisy \ --stereo-base <path/to/your/stereo_results> \ --num-frames 4000 \ --output-dir ./out ``` ### `cross_method_comparison.py` — multi-method overlay Publication-quality plots comparing one pass from each of instantaneous, ensemble, and stereo against DNS on the same axes. Okabe-Ito colourblind palette. ```bash python scripts/cross_method_comparison.py \ --gt-dir ./ground_truth/noisy \ --output-dir ./out \ --inst-stats <path/to/instantaneous/mean_stats.mat> \ --ens-dir <path/to/ensemble_dir> \ --stereo-stats <path/to/stereo/mean_stats.mat> ``` ### `paper_figures.py` — combined Case A + Case B figures Reproduces the figures in the PIVtools paper: Case A (open symbols) and Case B (filled symbols) overlaid. Any combination of paths may be supplied — the script plots whichever it receives. ```bash # Case B only (what this dataset ships today) python scripts/paper_figures.py \ --gt-noisy-dir ./ground_truth \ --inst-noisy-stats <path/to/noisy/instantaneous/mean_stats.mat> \ --ens-noisy-dir <path/to/noisy/ensemble_dir> \ --stereo-noisy-stats <path/to/noisy/stereo/mean_stats.mat> \ --output-dir ./out ``` ### `tcf_direct_stats.py` — recompute ground truth If you regenerate the synthetic images via EUROSIG, this script recomputes `direct_stats.mat` from the underlying JHTDB particle position files (`B*_A.data`, `B*_B.data`). ```bash python scripts/tcf_direct_stats.py \ --data-dir <path/to/particle_positions> \ --output-dir ./ground_truth ``` ## Unit conventions | Quantity | PIVtools storage | Benchmark display | |----------|-----------------|-------------------| | Velocity | m/s | mm/s (× 1000) | | Reynolds stress | (m/s)² | (mm/s)² (× 1e6) | | Spatial coordinates | mm | wall units y⁺ = y / δ_ν | ## Masks `stereo_noisy/mask_Cam{1,2}.mat` hold pixel-space boolean masks (same shape as images) that exclude regions outside the valid field of view. PIVtools loads them automatically when configured with `masking.enabled: true` and `mask_file_pattern: mask_Cam{cam}.mat`. ## Citation If you use this dataset, please cite both the PIVtools paper and the underlying DNS source. ```bibtex @article{taylor_pivtools, title={PIVtools: an open-source PIV framework with integrated planar, stereoscopic, and ensemble pipelines}, author={Taylor, M.T. and Lawson, J.M. and Ganapathisubramani, B.}, journal={SoftwareX}, note={submitted} } @article{lee2015direct, title={Direct numerical simulation of turbulent channel flow up to Re_tau = 5200}, author={Lee, M. and Moser, R.D.}, journal={J. Fluid Mech.}, year={2015} } @article{li2008public, title={A public turbulence database cluster and applications to study Lagrangian evolution of velocity increments in turbulence}, author={Li, Y. and others}, journal={J. Turbulence}, year={2008} } ``` DNS reference data is from the **Johns Hopkins Turbulence Database** (JHTDB). ## License CC-BY-4.0 — free to use, modify, and redistribute with attribution to the PIVtools paper. The DNS ground truth is derived from publicly accessible JHTDB data and is redistributed here under the same permissive terms; consult the JHTDB usage policy (http://turbulence.pha.jhu.edu) for their citation requirements.
--- 许可证:CC-BY-4.0 语言: - 英语 标签: - PIV - 粒子图像测速法(particle-image-velocimetry,PIV) - 流体动力学 - 湍流 - 槽道流 - 验证 - 基准测试 - 合成数据 友好名称:PIVtools 槽道湍流验证数据集 样本规模:10000 < n < 100000 --- # PIVtools 槽道湍流验证数据集 合成粒子图像测速法(particle-image-velocimetry,PIV)图像,对应摩擦雷诺数Re_τ≈1000的槽道湍流,配套直接数值模拟(Direct Numerical Simulation,DNS)得到的真实统计量。本数据集旨在针对已知真值的参考数据集,对PIV算法开展端到端基准测试。 本次提供两组测试工况: - **工况A(无噪声)**:每张2048×2048图像包含85000个示踪粒子(16×16分析窗口下约5.2个粒子每窗口,particles per window,ppw),无额外噪声,可作为PIV算法精度的理论上限基准。 - **工况B(带噪声)**:每张图像包含22000个示踪粒子(16×16窗口下约1.3 ppw),叠加均值为80、标准差为16的高斯传感器噪声,信噪比约为8,贴合实际实验工况。 每组工况均包含4000对平面及立体PIV图像。立体相机采用侧散射布局,相对于激光片法线对称布置在±45°位置。两组工况的真实值均源自同一套约翰·霍普金斯湍流数据库(Johns Hopkins Turbulence Database,JHTDB)槽流快照,但对应各自的粒子数,因此各组工况内的有限样本统计量自洽。 本数据集配套提交于《SoftwareX》的PIVtools软件论文。数据集为自包含格式:将其放置于[PIVtools](https://github.com/MTT69/python-PIVtools)安装目录旁,即可通过基准测试脚本复现论文中的全部验证图。 ## 快速上手 bash # 1. 安装pivtools(PyPI wheel中已预编译C扩展) pip install pivtools # 2. 下载本数据集 hf download MTT69/TurbulentChannel --repo-type dataset --local-dir ./tc # 3. 处理带噪声的平面图像(集成PIV——示例) pivtools-cli init --output ./work/config.yaml # 编辑config.yaml,将数据源指向./tc/planar_noisy pivtools-cli ensemble --config ./work/config.yaml # 4. 与DNS真实值进行基准测试(工况A使用ground_truth/clean,工况B使用ground_truth/noisy) python ./tc/scripts/benchmark_comparison.py --mode ensemble --gt-dir ./tc/ground_truth/noisy --ensemble-dir ./work/calibrated_piv/4000/Cam1/ensemble --num-frames 4000 --output-dir ./work/validation ## 数据集目录结构 MTT69/TurbulentChannel/ ├── README.md (本文档) ├── LICENSE (CC-BY-4.0) ├── ground_truth/ │ ├── clean/direct_stats.mat 工况A的DNS统计量(85000粒子) │ └── noisy/direct_stats.mat 工况B的DNS统计量(22000粒子) ├── planar_clean/ 工况A平面图像(4000对,85000粒子) │ └── B00001_A.tif … B04000_B.tif 2048×2048 TIFF格式,根目录下为平场图像 ├── planar_noisy/ 工况B平面图像(4000对,22000粒子) │ ├── B00001_A.tif … B04000_B.tif │ └── calibration_boards/ 20张合成圆点板标定图像(工况A、B共享) ├── stereo_clean/ 工况A立体图像(4000对×2台相机) │ ├── camera1/ 相机1的TIFF图像 │ ├── camera2/ 相机2的TIFF图像 │ ├── mask_Cam1.mat 像素空间掩码 │ └── mask_Cam2.mat ├── stereo_noisy/ 工况B立体图像(4000对×2台相机) │ ├── camera1/ │ ├── camera2/ │ ├── calibration/ │ │ ├── cam1/ 20张立体圆点板图像,相机1 │ │ └── cam2/ 20张立体圆点板图像,相机2(工况A、B共享) │ ├── mask_Cam1.mat │ └── mask_Cam2.mat └── scripts/ ├── benchmark_comparison.py 平面+集成PIV与DNS对比脚本 ├── stereo_benchmark_comparison.py 立体3C+六分量雷诺应力与DNS对比脚本 ├── cross_method_comparison.py 多方法叠加绘图脚本 ├── paper_figures.py 论文联合绘图脚本 ├── tcf_direct_stats.py 从JHTDB粒子数据重新计算真实统计量 └── sig_configs/ EUROSIG配置文件(.cdl) **标定板图像为共享资源**。为避免重复上传,工况A与工况B的标定图像均存放于`planar_noisy/calibration_boards/`(平面PIV)及`stereo_noisy/calibration/{cam1,cam2}/`(立体PIV)路径下。处理工况A时,只需将PIVtools配置指向上述标定路径即可。 ## 图像参数规格 | 参数 | 取值 | |-----------|-------| | 图像尺寸 | 2048 × 2048 像素,16位TIFF格式 | | 粒子直径 | 3 像素 | | 激光片厚度 | 16 像素(对应物理厚度1.2 mm) | | 图像对总数 | 4000 对 | | 工况A粒子数 | 每张图像85000个粒子(16×16窗口下约5.2 ppw),无噪声 | | 工况B粒子数 | 每张图像22000个粒子(16×16窗口下约1.3 ppw) | | 工况B噪声 | 高斯噪声,均值80,标准差16,信噪比≈8 | | 立体布局 | 两台相机相对于激光片法线对称布置于±45°位置(侧散射布局) | | 时间间隔dt | 与JHTDB快照间距一致(详见CDL配置文件) | ## 真实统计量 本次提供两组真实统计量文件,分别对应两个工况,各自存放在独立子目录中,以便基准测试脚本可通过`--gt-dir`参数直接指向对应路径: - `ground_truth/clean/direct_stats.mat` —— 工况A参考文件(85000粒子轨迹) - `ground_truth/noisy/direct_stats.mat` —— 工况B参考文件(22000粒子轨迹) 两组文件均源自用于渲染对应图像的JHTDB粒子位置快照。请将工况A的PIV处理结果与工况A的真实统计量对比,工况B的PIV结果与工况B的真实统计量对比——每组工况内的有限样本统计量均自洽。两组文件的字段格式统一如下: | 键名 | 形状 | 描述 | |-----|-------|-------------| | `y_plus` | (N,) | 壁面法向坐标,采用壁面单位 | | `U_plus` | (N, 3) | 平均速度[U, V, W],采用壁面单位 | | `stress_plus` | (N, 3, 3) | 雷诺应力张量,采用壁面单位 | | `stress_ci_lo`, `stress_ci_hi` | (N, 3, 3) | 95%置信区间上下界 | | `umean_ci_lo`, `umean_ci_hi` | (N, 3) | 平均速度的95%置信区间上下界 | | `u_tau` | 标量 | 摩擦速度(单位:mm/s) | | `delta_nu` | 标量 | 粘性长度尺度(单位:mm) | | `Re_tau` | 标量 | 摩擦雷诺数 | 工况B的真实统计量与22000粒子的合成图像自洽——其统计量来自降采样后的粒子集,而非完整DNS结果。请将工况B的PIV处理结果与工况B的真实统计量进行基准对比。 ## 数据集生成方式 合成图像基于JHTDB槽道湍流粒子轨迹,通过**EUROSIG / EUROPIV合成图像生成器**渲染得到。`scripts/sig_configs/`目录下的配置文件为权威构建指令: | 配置文件 | 用途 | |---------------|------| | `sigconf_planar_noisy_A.cdl` | 平面PIV帧A,22000粒子,噪声模式A | | `sigconf_planar_noisy_B.cdl` | 平面PIV帧B,22000粒子,噪声模式B | | `SIGconf_Stereo_cam1_noisy_A.cdl`、`..._B.cdl` | 立体相机1的帧A与帧B | | `SIGconf_Stereo_cam2_noisy_A.cdl`、`..._B.cdl` | 立体相机2的帧A与帧B | | `sigconf_planar.cdl`、`SIGconf_Stereo_cam{1,2}.cdl` | 工况A的平面及立体PIV配置(85000粒子,无噪声) | 若需逐位复现合成图像,请安装EUROSIG,并使用JHTDB提供的粒子位置文件调用每个.cdl配置文件。详见EUROSIG官方文档的构建说明。 ## 配套脚本 ### `benchmark_comparison.py` —— 单方法基准测试 用于对比平面或集成PIV结果与DNS真实统计量,可生成平均速度剖面、雷诺应力、残差、迹不变量及噪声分解相关绘图。 bash python scripts/benchmark_comparison.py --mode ensemble --gt-dir ./ground_truth/noisy --ensemble-dir <path/to/your/ensemble_result_directory> --num-frames 4000 --output-dir ./out | 命令行标志 | 说明 | |------|-------------| | `--mode` / `-m` | 可选`instantaneous`(瞬时PIV)或`ensemble`(集成PIV) | | `--runs` / `-r` | 以逗号分隔的0索引处理通道编号(例如`2,3`) | | `--windows` / `-w` | 对应处理通道的窗口尺寸标签(例如`32,16`) | | `--gt-dir` / `-g` | 包含`direct_stats.mat`的目录路径——例如`./ground_truth/noisy`或`./ground_truth/clean`(必填) | | `--base-dir` / `-b` | 瞬时PIV结果的根目录(瞬时PIV模式使用) | | `--ensemble-dir` / `-e` | 集成PIV结果目录的直接路径 | | `--num-frames` / `-n` | 图像对子目录的帧数(默认值为1000;本数据集需使用4000) | | `--output-dir` / `-o` | 输出结果目录 | | `--y-plus-offset` / `-y` | 基于硬编码+1偏移的额外y+偏移量 | | `--show-fit-lines` | 叠加对数律与粘性底层曲线 | ### `stereo_benchmark_comparison.py` —— 立体3C+六分量雷诺应力基准测试 需使用LaTeX渲染标签(`text.usetex=True`),请安装MiKTeX或TeXLive。 bash python scripts/stereo_benchmark_comparison.py --gt-dir ./ground_truth/noisy --stereo-base <path/to/your/stereo_results> --num-frames 4000 --output-dir ./out ### `cross_method_comparison.py` —— 多方法叠加绘图 生成可用于发表的绘图,将瞬时PIV、集成PIV及立体PIV的单通道结果与DNS真实值绘制于同一坐标轴下,采用Okabe-Ito色盲友好配色方案。 bash python scripts/cross_method_comparison.py --gt-dir ./ground_truth/noisy --output-dir ./out --inst-stats <path/to/instantaneous/mean_stats.mat> --ens-dir <path/to/ensemble_dir> --stereo-stats <path/to/stereo/mean_stats.mat> ### `paper_figures.py` —— 工况A+B联合绘图 复现PIVtools论文中的绘图:将工况A(空心符号)与工况B(实心符号)的结果叠加展示。可按需提供任意组合的路径,脚本将仅绘制已传入的结果。 bash # 仅绘制工况B(本数据集当前附带内容) python scripts/paper_figures.py --gt-noisy-dir ./ground_truth --inst-noisy-stats <path/to/noisy/instantaneous/mean_stats.mat> --ens-noisy-dir <path/to/noisy/ensemble_dir> --stereo-noisy-stats <path/to/noisy/stereo/mean_stats.mat> --output-dir ./out ### `tcf_direct_stats.py` —— 重新计算真实统计量 若通过EUROSIG重新合成图像,本脚本可基于原始JHTDB粒子位置文件(`B*_A.data`、`B*_B.data`)重新生成`direct_stats.mat`。 bash python scripts/tcf_direct_stats.py --data-dir <path/to/particle_positions> --output-dir ./ground_truth ## 单位约定 | 物理量 | PIVtools存储单位 | 基准测试显示单位 | |----------|-----------------|-------------------| | 速度 | m/s | mm/s(×1000) | | 雷诺应力 | (m/s)² | (mm/s)²(×1e6) | | 空间坐标 | mm | 壁面单位y⁺ = y / δ_ν | ## 掩码 `stereo_noisy/mask_Cam{1,2}.mat`文件存储像素空间的布尔掩码(与图像尺寸一致),用于排除有效视场外的区域。当PIVtools配置中开启`masking.enabled: true`并设置`mask_file_pattern: mask_Cam{cam}.mat`时,将自动加载该掩码。 ## 引用要求 若使用本数据集,请同时引用PIVtools论文及底层DNS数据源。 bibtex @article{taylor_pivtools, title={PIVtools: an open-source PIV framework with integrated planar, stereoscopic, and ensemble pipelines}, author={Taylor, M.T. and Lawson, J.M. and Ganapathisubramani, B.}, journal={SoftwareX}, note={submitted} } @article{lee2015direct, title={Direct numerical simulation of turbulent channel flow up to Re_tau = 5200}, author={Lee, M. and Moser, R.D.}, journal={J. Fluid Mech.}, year={2015} } @article{li2008public, title={A public turbulence database cluster and applications to study Lagrangian evolution of velocity increments in turbulence}, author={Li, Y. and others}, journal={J. Turbulence}, year={2008} } DNS参考数据源自**约翰·霍普金斯湍流数据库(Johns Hopkins Turbulence Database,JHTDB)**。 ## 许可证 本数据集采用CC-BY-4.0许可证——可自由使用、修改及再分发,但需注明引用PIVtools论文。 DNS真实统计量源自公开可获取的JHTDB数据,遵循相同宽松条款进行重分发;请查阅JHTDB使用政策(http://turbulence.pha.jhu.edu)以了解其引用要求。



