# NWPU-CFD **Repository Path**: hww-ww/nwpu-cfd ## Basic Information - **Project Name**: NWPU-CFD - **Description**: NWPU计算流体力学大作业C++实现 - **Primary Language**: C++ - **License**: MIT - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 9 - **Forks**: 2 - **Created**: 2021-03-30 - **Last Updated**: 2025-09-22 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # NWPU-CFD #### 介绍 NWPU计算流体力学大作业C++实现 #### 软件架构 本文档为计算流体力学基础大作业的说明文档 使用语言:C++ CPU配置:Intel(R) Core(TM) i5-6300 CPU @ 2.40GHz 2.50GHz,计算时间供参考。 本次大作业分为三个,其文件夹格式为: 1. O型网格生成 输入:input.txt 编译并运行文件:O-grid.cpp 输出:Output/O-grid.dat, Output/Flowfield.dat, Output/Cp_x.dat 2. 一维Burgers方程数值求解 输入:input.txt 编译并运行文件:Burgers.cpp 输出:Output/burgers_mu_0.00.dat, Output/burgers_mu_0.01.dat, Output/burgers_mu_0.05.dat, Output/burgers_mu_0.10.dat 3. 准一维Laval流动 输入:input.txt 编译并运行文件:Laval.cpp 输出:Output/Laval_Cx=0.05.dat, Output/Laval_Cx=0.15.dat, Output/Laval_Cx=0.20.dat, Output/precise.dat #### 使用说明 1. 基于椭圆型微分方程网格生成与流场求解 1.1. 输入文档说明 O-grid.cpp为C++编写的源程序,input.txt为输入参数文本文件,文件中第一行为参数名,第二行为对应的参数值。 输入文档格式如下: ``` Points,Radius,errlimit,iterlimit,Velocity 101,30,1e-5,20000,20.0 ``` - Points:径向节点数 - Radius:半径 - errlimit:误差限 - iterlimit:最大允许迭代次数 - Velocity:来流速度 参考运行时间:50s 1.2. 运行结果 1.2.1 O网格 ![翼型全局网格](https://images.gitee.com/uploads/images/2021/0330/221609_59c72344_8898272.jpeg "O-grid1.jpg") ![翼型后缘网格](https://images.gitee.com/uploads/images/2021/0330/221523_ce4f3403_8898272.jpeg "O-grid2.jpg") 1.2.2. 流场显示 ![压力系数云图](https://images.gitee.com/uploads/images/2021/0330/222504_14b33ad3_8898272.jpeg "Cp-field.jpg") ![压力系数云图](https://images.gitee.com/uploads/images/2021/0330/222253_c92f69fb_8898272.jpeg "Cp-field2.jpg") ![U速度云图](https://images.gitee.com/uploads/images/2021/0330/222322_9bf75ecd_8898272.jpeg "U-field.jpg") ![V速度云图](https://images.gitee.com/uploads/images/2021/0330/222340_269374f8_8898272.jpeg "V-field.jpg") 1.2.3. 压力系数分布 ![翼型表面压力系数分布](https://images.gitee.com/uploads/images/2021/0330/222201_4347d8c4_8898272.jpeg "Cp.jpg") 2. 一维Burgers方程求解 2.1. 输入文档说明 Burgers.cpp为C++编写的源程序,input.txt为输入参数文本文件,从第二行起,第一列为无量纲时间,第二列为粘性系数。 输入文档格式如下: ``` time,mu 0.8,0.0 1.4,0.01 2.0,0.05 2.0,0.1 ``` 输入n行参数,则会生成n个.dat文件,文件名分别为burgers_mu_***.dat,“***”位置为输入参数中的粘性系数值,每个.dat文件中包含不同无量纲时间下的结果。 参考运行时间:9s 2.2. 运行结果 ![mu=0.00](https://images.gitee.com/uploads/images/2021/0330/223946_27a3efb7_8898272.jpeg "mu=0.00.jpg") 2.3. 结果分析 无粘情况下 (μ = 0)速度到最后会发生突变,并且存在振荡;随着粘性的逐渐增大,速度变化逐渐放缓,速度曲线更加平缓,激波的非物理振荡被消除,并且在时间推进过程中,速度曲线间的差异越来越小。 3. 求解准一维Laval 管流动的Euler方程 3.1. 输入文档说明 Laval.cpp为C++编写的源程序,input.txt为输入参数文本文件,从第二行起,第一行为参数名,第二行为对应的参数值。 输入文档格式如下: ``` Mach Number,xleft,xright,Pe,Cx,CFL,Errlimit,Iterlimit,xStep 1.16,0.1,1.0,0.8785,0.2,0.5,0.000001,20000,200 ``` - Mach Number:入口处马赫数 - xleft:左边界(入口)坐标 - xright:右边界(出口)坐标 - Pe:出口反压 - Cx:人工粘性系数 - CFL:Courant数 - Errlimit:误差限 - Iterlimit:最大允许迭代次数 - xStep:空间离散节点数 编译并运行Laval.cpp文件后,程序会自动新建一个名为“Output”的文件夹,计算结果的数据文件将保存在其中,如果结果已存在,则会用新的结果覆盖旧的。 运行后会生成2个数据文件,一个文件名为Laval_Cx=***.dat,“***”为输入参数中的人工粘性系数值,每改变一次输入参数中的Cx值,就会生成一个新结果;另一个生成的文件为precise.dat的精确解数据文件。 参考运行时间:3s 2.2. 运行结果 2.3. 结果分析 从比较中可以看出,添加人工粘性系数后,间断处的震荡得到抑制,增加了数值解的稳定性,但与精确解的差别有所增大,计算精度有所降低。 #### 参与贡献 1. Fork 本仓库 2. 新建 Feat_xxx 分支 3. 提交代码 4. 新建 Pull Request Reference:https://gitee.com/Bsuniverse/NWPU-CFD.git