资源简介
拟一维喷管流动数值解代码,运行环境vs2019,自己写的,代码段有注释。cellField类的定义在我的博客里有,直接复制粘贴到class.h就好。
https://blog.csdn.net/weixin_39124457/article/details/101038218
https://blog.csdn.net/weixin_39124457/article/details/101038218
代码片段和文件信息
#include“class.h“
#include
#include
constexpr auto gamma = 1.4;//气体比热比
constexpr auto R = 287.0;//空气常数
constexpr auto cfl = 0.5;//库朗数
constexpr auto timeStep = 1000;//时间步
constexpr auto deltaX = 0.1;//x方向间距
using namespace std;
int main() {
cout << “开始,t=0s“ << endl;
cellField rho V T Aa;//定义物理量(rho-密度,V-速度,T-温度,A-截面积)
cellField drhodt dVdt dTdtrhopVpTp;//定义预估步偏导预估值
cellField drhopdt dVpdt dTpdtdrhodtavdVdtavdTdtav;//定义校正步偏导,校正值
cellField X deltaTime;//定义空间步、时间步
double i jk;//定义下标
ofstream Rfile;//定义文件类
Rfile.open(“data.dat“);//打开文件
//*********************初始化**************************//
for (i = 0; i <= cellNumber; i++)
{
X[i] = i * deltaX;
A[i] = 1.0 + 2.2 * (X[i] - 1.5)* (X[i] - 1.5);//公式7-73,p219
rho[i] = 1.0 - 0.314 * X[i];//公式7-74a,p220
T[i] = 1.0 - 0.2314 * X[i];//公式7-74b,p220
V[i] = (0.1 + 1.09 * X[i]) * sqrt(T[i]);//公式7-74c,p220
a[i] = sqrt(T[i]);//公式7-75,p222
}
//输出初始场
Rfile << “开始,t=0s“ << endl;
Rfile.precision(3);
Rfile.setf(ios::fixed);
Rfile << “No\tx\tA\trho\tV\tT\ta“ << endl;
for (i = 0; i <= cellNumber; i++)
{
Rfile << i << “\t“ << X[i]<< “\t“ << A[i]<< “\t“ << rho[i]
<< “\t“ << V[i]<< “\t“ << T[i]<< “\t“ << a[i]<< endl;
}
//******************************************************//
for (k = 0; k <= timeStep; k++)//开始计算timeStep个时间步
{
//*******************求最小时间步*****************//
cellField Va = V + a;
deltaTime.inverse(Va cfl * deltaX);//公式7-67,p217
j = 0;
for (i = 0; i <= cellNumber; i++)
{
if (deltaTime[j] > deltaTime[i])
j = i;//求最小时间间隔,将下标储存为j,即deltaTime[j]为最小时间步
//cout << deltaTime[j] << endl;
}
//*************************************************//
//********************预估步***********************//
for (i = 0; i < cellNumber; i++)
{
drhodt[i] = -V[i] * (rho[i + 1] - rho[i]) / deltaX
- rho[i] * (V[i + 1] - V[i]) / deltaX
- rho[i] * V[i] * (log(A[i + 1]) - log(A[i])) / deltaX;//7-51p215
dVdt[i] = -V[i] * (V[i + 1] - V[i]) / deltaX
- 1 / gamma * ((T[i + 1] - T[i]) / deltaX + T[i] / rho[i] * (rho[i + 1] - rho[i]) / deltaX)
相关资源
- C++中头文件与源文件的作用详解
- C++多线程网络编程Socket
- VC++ 多线程文件读写操作
- 利用C++哈希表的方法实现电话号码查
- 移木块游戏,可以自编自玩,vc6.0编写
- C++纯文字DOS超小RPG游戏
- VC++MFC小游戏实例教程(实例)+MFC类库
- 连铸温度场计算程序(C++)
- 6自由度机器人运动学正反解C++程序
- Em算法(使用C++编写)
- libstdc++-4.4.7-4.el6.i686.rpm
- VC++实现CMD命令执行与获得返回信息
- 白话C++(全)
- C++标准库第1、2
- 大数类c++大数类
- C++语言编写串口调试助手
- c++素数筛选法
- C++ mqtt 用法
- 商品库存管理系统 C++ MFC
- c++ 多功能计算器
- C++17 In Detail
- 嵌入式QtC++编程课件
- 颜色识别形状识别STM103嵌入式代码
- c++ 邮件多附件群发
- c++ 透明代理(hookproxy)
- mfc 调用redis
- FTP客户端源码(c++)
- c++ 画图(14Qt-XPS)
- c++多边形交并差运算
- VC++基于OpenGL模拟的一个3维空间模型
评论
共有 条评论