

快速开始DeepFlame | 从安装到燃烧模拟
本教程可在 Bohrium Notebook 上直接运行。你可以点击界面上方蓝色按钮开始连接,选择
deepflame-handson:part1
镜像及至少8核的cpu配置,稍等片刻即可运行。 如您遇到任何问题,请联系 bohrium@dp.tech 。本作品采用知识共享署名-非商业性使用-相同方式共享 4.0 国际许可协议进行许可。
📖 DeepFlame平台介绍
围绕着「机器学习+物理建模+高性能计算」的核心理念,DeepFlame项目基于OpenFOAM、Cantera、Torch等开源平台,结合异构并行与AI加速器等新一代算力基础设施,旨在建设高精度、高效率、简单易用、覆盖面广的燃烧反应流的数值模拟程序,尝试解决闭源代码权威化、算力资源垄断化、祖传代码老化僵化等问题。同时希望结合开源社区的力量,为广大燃烧模拟用户搭建共享代码、算力平台和算例库,尝试改变研究者无代码可用、论文结果难以复现等诸多困局。 本教程将带你从安装DeepFlame开始,到使用DeepFlame内的求解器模拟经典的燃烧反应流算例,并对结果进行分析。这里我们采用DeepFlame v1.2版本。
阅读该教程约需 15 分钟,让我们开始吧!
--2023-06-30 10:10:38-- https://dl.openfoam.org/gpg.key Resolving ga.dp.tech (ga.dp.tech)... 10.255.254.18, 10.255.254.7, 10.255.254.37 Connecting to ga.dp.tech (ga.dp.tech)|10.255.254.18|:8118... connected. Proxy request sent, awaiting response... 200 OK Length: 1710 (1.7K) [application/pgp-keys] Saving to: ‘STDOUT’ - 100%[===================>] 1.67K --.-KB/s in 0s 2023-06-30 10:10:39 (471 MB/s) - written to stdout [1710/1710] OK Hit:1 http://mirrors.aliyun.com/ubuntu bionic InRelease Get:2 http://mirrors.aliyun.com/ubuntu bionic-security InRelease [88.7 kB] Get:3 http://mirrors.aliyun.com/ubuntu bionic-updates InRelease [88.7 kB] Get:4 http://mirrors.aliyun.com/ubuntu bionic-proposed InRelease [242 kB] Hit:5 http://dl.openfoam.org/ubuntu focal InRelease Get:6 http://mirrors.aliyun.com/ubuntu bionic-backports InRelease [83.3 kB] Get:7 http://mirrors.aliyun.com/ubuntu bionic-updates/main amd64 Packages [3785 kB] Get:8 http://mirrors.aliyun.com/ubuntu bionic-proposed/main Sources [89.6 kB] Get:9 http://mirrors.aliyun.com/ubuntu bionic-proposed/restricted amd64 Packages [189 kB] Get:10 http://mirrors.aliyun.com/ubuntu bionic-proposed/main amd64 Packages [202 kB] Fetched 4768 kB in 7s (722 kB/s) Reading package lists... Done E: Invalid operation updat Reading package lists... Done Building dependency tree Reading state information... Done openfoam7 is already the newest version (20200508). 0 upgraded, 0 newly installed, 0 to remove and 2 not upgraded.
OpenFOAM-7和ParaView 5.6.0将被安装在/opt目录下。
LibCantera和PyTorch可以通过conda安装。
注意,安装PyTorch时,请在PyTorch官网按照硬件配置获取相对应的安装命令行。为了方便在任意镜像下安装PyTorch,这里使用的是PyTorch的仅CPU工作的安装选项,小伙伴们如果在本地运行可以选择使用GPU的安装命令。运行命令如下:
Collecting package metadata (current_repodata.json): done Solving environment: - Warning: 2 possible package resolutions (only showing differing packages): - https://mirrors.tuna.tsinghua.edu.cn/anaconda/pkgs/main/noarch::certifi-2020.6.20-pyhd3eb1b0_3 - defaults/noarch::certifi-2020.6.20-pyhd3eb1b0done # All requested packages already installed. Retrieving notices: ...working... done Collecting package metadata (current_repodata.json): done Solving environment: - Warning: 2 possible package resolutions (only showing differing packages): - https://mirrors.tuna.tsinghua.edu.cn/anaconda/pkgs/main/noarch::certifi-2020.6.20-pyhd3eb1b0_3 - defaults/noarch::certifi-2020.6.20-pyhd3eb1b0done ## Package Plan ## environment location: /root/anaconda3 added / updated specs: - cpuonly - pytorch - torchaudio - torchvision The following packages will be downloaded: package | build ---------------------------|----------------- cpuonly-2.0 | 0 2 KB pytorch pytorch-2.0.1 | py3.8_cpu_0 86.0 MB pytorch torchaudio-2.0.2 | py38_cpu 7.3 MB pytorch torchvision-0.15.2 | py38_cpu 33.1 MB pytorch ------------------------------------------------------------ Total: 126.5 MB The following packages will be SUPERSEDED by a higher-priority channel: cpuonly anaconda/cloud/pytorch --> pytorch None pytorch anaconda/cloud/pytorch --> pytorch None torchaudio anaconda/cloud/pytorch --> pytorch None torchvision anaconda/cloud/pytorch --> pytorch None Downloading and Extracting Packages cpuonly-2.0 | 2 KB | ##################################### | 100% pytorch-2.0.1 | 86.0 MB | ##################################### | 100% torchaudio-2.0.2 | 7.3 MB | ##################################### | 100% torchvision-0.15.2 | 33.1 MB | ##################################### | 100% Preparing transaction: done Verifying transaction: done Executing transaction: done Retrieving notices: ...working... done Collecting package metadata (current_repodata.json): done Solving environment: done ## Package Plan ## environment location: /root/anaconda3 added / updated specs: - pybind11 The following packages will be downloaded: package | build ---------------------------|----------------- certifi-2020.6.20 | pyhd3eb1b0_3 155 KB defaults ------------------------------------------------------------ Total: 155 KB The following packages will be SUPERSEDED by a higher-priority channel: certifi anaconda/pkgs/main --> pkgs/main None Downloading and Extracting Packages certifi-2020.6.20 | 155 KB | ##################################### | 100% Preparing transaction: done Verifying transaction: done Executing transaction: done Retrieving notices: ...working... done Collecting package metadata (current_repodata.json): done Solving environment: done ## Package Plan ## environment location: /root/anaconda3 added / updated specs: - easydict The following packages will be downloaded: package | build ---------------------------|----------------- easydict-1.9 | py_0 9 KB conda-forge ------------------------------------------------------------ Total: 9 KB The following packages will be SUPERSEDED by a higher-priority channel: easydict anaconda/cloud/conda-forge --> conda-forge None Downloading and Extracting Packages easydict-1.9 | 9 KB | ##################################### | 100% Preparing transaction: done Verifying transaction: done Executing transaction: done Retrieving notices: ...working... done
读取执行OpenFOAM-7的环境变量文件,从github获取DeepFlame库,配置DeepFlame使用PyTorch,之后可以安装DeepFLame:
setup for deepflame bashrc: LIBCANTERA_DIR=/root/anaconda3 PYTORCH_INC=-I/root/anaconda3/include/python3.8 -I/root/anaconda3/lib/python3.8/site-packages/pybind11/include PYTORCH_LIB=/root/anaconda3/lib LIBTORCH_DIR= src_orig exist. Compiling enabled on 8 cores Allwmake /root/deepflame-dev wmake src/thermophysicalModels/thermophysicalProperties wmake src/thermophysicalModels/basic wmake src/functionObjects/field wmake src/dfCanteraMixture wmake src/thermophysicalModels/SLGThermo wmake src/dfChemistryModel wmake src/TurbulenceModels/compressible wmake src/TurbulenceModels/turbulenceModels wmake src/regionModels/surfaceFilmModels Allwmake /root/deepflame-dev/src/lagrangian wmake intermediate wmake turbulence wmake spray wmake src/dfCombustionModels wmake src/dynamicMesh wmake src/dynamicFvMesh wmake applications/solvers/df0DFoam wmake applications/solvers/dfLowMachFoam wmake applications/solvers/dfHighSpeedFoam wmake applications/solvers/dfSprayFoam wmake applications/utilities/flameSpeed = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = | deepflame (linked with libcantera and pytorch) compiled successfully! Enjoy!! | = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = fatal: destination path 'deepflame-dev' already exists and is not an empty directory. /bin/bash: /root/anaconda3/lib/libtinfo.so.6: no version information available (required by /bin/bash) /bin/bash: /root/anaconda3/lib/libtinfo.so.6: no version information available (required by /bin/bash) /bin/bash: /root/anaconda3/lib/libtinfo.so.6: no version information available (required by /bin/bash) /bin/bash: /root/anaconda3/lib/libtinfo.so.6: no version information available (required by /bin/bash) /bin/bash: /root/anaconda3/lib/libtinfo.so.6: no version information available (required by /bin/bash) /bin/bash: /root/anaconda3/lib/libtinfo.so.6: no version information available (required by /bin/bash) /bin/bash: /root/anaconda3/lib/libtinfo.so.6: no version information available (required by /bin/bash) /bin/bash: /root/anaconda3/lib/libtinfo.so.6: no version information available (required by /bin/bash) /bin/bash: /root/anaconda3/lib/libtinfo.so.6: no version information available (required by /bin/bash) /bin/bash: /root/anaconda3/lib/libtinfo.so.6: no version information available (required by /bin/bash) /bin/bash: /root/anaconda3/lib/libtinfo.so.6: no version information available (required by /bin/bash) /bin/bash: /root/anaconda3/lib/libtinfo.so.6: no version information available (required by /bin/bash) /bin/bash: /root/anaconda3/lib/libtinfo.so.6: no version information available (required by /bin/bash) /bin/bash: /root/anaconda3/lib/libtinfo.so.6: no version information available (required by /bin/bash) /bin/bash: /root/anaconda3/lib/libtinfo.so.6: no version information available (required by /bin/bash) /bin/bash: /root/anaconda3/lib/libtinfo.so.6: no version information available (required by /bin/bash) /bin/bash: /root/anaconda3/lib/libtinfo.so.6: no version information available (required by /bin/bash) /bin/bash: /root/anaconda3/lib/libtinfo.so.6: no version information available (required by /bin/bash) /bin/bash: /root/anaconda3/lib/libtinfo.so.6: no version information available (required by /bin/bash) /bin/bash: /root/anaconda3/lib/libtinfo.so.6: no version information available (required by /bin/bash) /bin/bash: /root/anaconda3/lib/libtinfo.so.6: no version information available (required by /bin/bash) /bin/bash: /root/anaconda3/lib/libtinfo.so.6: no version information available (required by /bin/bash) /bin/bash: /root/anaconda3/lib/libtinfo.so.6: no version information available (required by /bin/bash) /bin/bash: /root/anaconda3/lib/libtinfo.so.6: no version information available (required by /bin/bash) /bin/bash: /root/anaconda3/lib/libtinfo.so.6: no version information available (required by /bin/bash) /bin/bash: /root/anaconda3/lib/libtinfo.so.6: no version information available (required by /bin/bash) /bin/bash: /root/anaconda3/lib/libtinfo.so.6: no version information available (required by /bin/bash) /bin/bash: /root/anaconda3/lib/libtinfo.so.6: no version information available (required by /bin/bash) /bin/bash: /root/anaconda3/lib/libtinfo.so.6: no version information available (required by /bin/bash) /bin/bash: /root/anaconda3/lib/libtinfo.so.6: no version information available (required by /bin/bash) /bin/bash: /root/anaconda3/lib/libtinfo.so.6: no version information available (required by /bin/bash) /bin/bash: /root/anaconda3/lib/libtinfo.so.6: no version information available (required by /bin/bash) /bin/bash: /root/anaconda3/lib/libtinfo.so.6: no version information available (required by /bin/bash) /bin/bash: /root/anaconda3/lib/libtinfo.so.6: no version information available (required by /bin/bash) /bin/bash: /root/anaconda3/lib/libtinfo.so.6: no version information available (required by /bin/bash) /bin/bash: /root/anaconda3/lib/libtinfo.so.6: no version information available (required by /bin/bash) /bin/bash: /root/anaconda3/lib/libtinfo.so.6: no version information available (required by /bin/bash) /bin/bash: /root/anaconda3/lib/libtinfo.so.6: no version information available (required by /bin/bash) /bin/bash: /root/anaconda3/lib/libtinfo.so.6: no version information available (required by /bin/bash) /bin/bash: /root/anaconda3/lib/libtinfo.so.6: no version information available (required by /bin/bash) /bin/bash: /root/anaconda3/lib/libtinfo.so.6: no version information available (required by /bin/bash)
如果DeepFlame成功编译,你应该会看到:
在本教程算例中用到的深度神经网络是由我们的合作伙伴独立训练的。如果想使用DeepFlame的神经网络求解器,需要将DeepCombustion仓库下载到deepflame-dev文件夹下。
fatal: destination path 'intelligent-combustion' already exists and is not an empty directory.
读取OpenFOAM配置文件,读取DeepFlame的配置文件,进入零维自动点火算例的CPU版本目录下,使用文件内置的脚本运行算例(时间大约在5分钟左右,请耐心等待):
Running blockMesh on /root/deepflame-dev/examples/df0DFoam/zeroD_cubicReactor/H2/cvodeIntegrator Running decomposePar on /root/deepflame-dev/examples/df0DFoam/zeroD_cubicReactor/H2/cvodeIntegrator Running mpirun on /root/deepflame-dev/examples/df0DFoam/zeroD_cubicReactor/H2/cvodeIntegrator
后处理需要的探针(probe)数据保存在/systems/probes路径下。在这个案例中,探针位置定义在(0.0025, 0.0025, 0.0025)处,测量温度随时间的变化情况。如果算例运行成功,结果将被保存到/postProcessing/probes/0/T,通过如下命令可以看到结果:

读取OpenFOAM配置文件,读取DeepFlame的配置文件,进入零维自动点火算例的DNN版本目录下,使用文件内置的脚本运行算例(时间大约在5分钟左右,请耐心等待):
Running blockMesh on /root/deepflame-dev/examples/df0DFoam/zeroD_cubicReactor/H2/pytorchIntegrator Running decomposePar on /root/deepflame-dev/examples/df0DFoam/zeroD_cubicReactor/H2/pytorchIntegrator Running mpirun on /root/deepflame-dev/examples/df0DFoam/zeroD_cubicReactor/H2/pytorchIntegrator
后处理需要的探针(probe)数据保存在/systems/probes路径下。在这个案例中,探针位置定义在(0.0025, 0.0025, 0.0025)处,测量温度随时间的变化情况。如果算例运行成功,结果将被保存到/postProcessing/probes/0/T,通过如下命令可以看到结果:

比较一下用CPU计算和用神经网络计算的结果:

本算例进行一维自由传播火焰的稳态模拟。结果可以捕捉火焰厚度,层流火焰速度和一维火焰的具体结构。本算例使用到了DeepFlame中的对流-扩散-反应算法。
案例条件设置如下:
一维平面火焰的示意图以及预期的火焰结构:
爆轰的传播过程包含了前端激波和自动点火间的复杂交互,体现了激波和化学反应间的耦合作用。本案例将通过DeepFlame准确捕捉此过程,并计算出爆轰的传播速度。
案例条件设置如下:
一维爆轰传播算例的预期结果:
基于悉尼大学的实验设置,在一个喷雾燃烧器内模拟一个二维楔形的稀释喷雾燃烧过程。本案例在液滴-化学-湍流的研究领域被广泛使用。
案例条件设置如下:
需要注意的是,当使用OpenFOAM运行楔形案例时,你也许会碰到“Hitting a wedge patch should not be possible”的报错。可行的解决办法是注释掉src/lagrangian/basic/particle/particleTemplates.C文件中“FatalErrorIn”的行。
预期结果:







