搜索
 找回密码
 立即注册
查看: 1266|回复: 44

[单相流] 入口湍流条件计算器

[复制链接]
  • TA的每日心情
    无聊
    5 天前
  • 签到天数: 394 天

    [LV.9]以坛为家II

    113

    主题

    1070

    帖子

    1万

    积分

    版主

    Rank: 7Rank: 7Rank: 7

    积分
    14302

    荣誉会员学者

    QQ
    发表于 2017-7-8 13:09:03 | 显示全部楼层 |阅读模式
    本帖最后由 bfadlzt 于 2017-7-8 13:14 编辑

    免费提供,回帖进入下载页面!

    游客,如果您要查看本帖隐藏内容请回复



    本帖子中包含更多资源

    您需要 登录 才可以下载或查看,没有帐号?立即注册

    x
    流场,温度场,低温等离子体
  • TA的每日心情
    慵懒
    昨天 10:09
  • 签到天数: 272 天

    [LV.8]以坛为家I

    8

    主题

    389

    帖子

    2168

    积分

    金牌会员

    Rank: 6Rank: 6

    积分
    2168
    发表于 2017-9-1 23:13:52 | 显示全部楼层
    根据楼主的思路,我写了个UI界面的程序。下面是源代码,Qt5.9.1编译,有需要的可以在linux或mac下编译,实现跨平台。
    main.cpp
    =====================
    [C++] 纯文本查看 复制代码
    #include "widget.h"
    #include <QApplication>
    #include <QDesktopWidget>
    
    int main(int argc, char *argv[])
    {
        QApplication a(argc, argv);
        Widget w;
        // 禁用最大化按钮
        w.setWindowFlags(Qt::WindowMinimizeButtonHint | Qt::WindowCloseButtonHint);
        //w.setFixedSize(400,300);
        // 窗口居中
        w.move((QApplication::desktop()->width() - w.width())/2,(QApplication::desktop()->height() - w.height())/2);
    
        w.show();
        return a.exec();
    }
    

    widget.h
    =====================
    [C++] 纯文本查看 复制代码
    #ifndef WIDGET_H
    #define WIDGET_H
    
    #include <QWidget>
    #include <QLabel>
    #include <QLineEdit>
    #include <QRadioButton>
    #include <QListWidget>
    #include <QPushButton>
    #include <QSpacerItem>
    #include <QGridLayout>
    #include <QFormLayout>
    
    class Widget : public QWidget
    {
        Q_OBJECT
    
    public:
        Widget(QWidget *parent = 0);
        ~Widget();
    
    private:
        QLabel *Label_L;
        QLabel *Label_L_unit;
        QLabel *Label_V_avg;
        QLabel *Label_V_avg_unit;
        QLabel *Label_Pstat;
        QLabel *Label_Pstat_unit;
        QLabel *Label_Tstat;
        QLabel *Label_Tstat_unit;
        QLabel *Label_Mgas;
        QLabel *Label_Mgas_unit;
        QLabel *Label_rho;
        QLabel *Label_rho_unit;
        QLabel *Label_mu;
        QLabel *Label_mu_unit;
        QLineEdit *LineEdit_L;
        QLineEdit *LineEdit_V_avg;
        QLineEdit *LineEdit_Pstat;
        QLineEdit *LineEdit_Tstat;
        QLineEdit *LineEdit_Mgas;
        QLineEdit *LineEdit_rho;
        QLineEdit *LineEdit_mu;
        QRadioButton *RadioButton_Mode1;
        QRadioButton *RadioButton_Mode2;
        QPushButton *PushButton;
        QListWidget *List;
        QSpacerItem *horizontalSpacer_1;
        QSpacerItem *horizontalSpacer_2;
        QSpacerItem *horizontalSpacer_3;
        QGridLayout *RightLayout;
        QFormLayout *MainLayout;
    
    private slots:
        void mode1_selected();
        void mode2_selected();
        void calculate();
    };
    
    #endif // WIDGET_H
    

    widget.cpp
    =====================
    [C++] 纯文本查看 复制代码
    #include "widget.h"
    
    Widget::Widget(QWidget *parent)
        : QWidget(parent)
    {
        setWindowTitle("入口湍流参数计算器");
    
        Label_L = new QLabel("特征长度:");
        LineEdit_L = new QLineEdit;
        Label_L_unit = new QLabel("[m]");
        Label_V_avg = new QLabel("平均速度:");
        LineEdit_V_avg = new QLineEdit;
        Label_V_avg_unit = new QLabel("[m/s]");
        RadioButton_Mode1 = new QRadioButton("已知入口流体密度");
        RadioButton_Mode1->setChecked(true);
        RadioButton_Mode2 = new QRadioButton("气体,密度未知");
        Label_Pstat = new QLabel("入口静压:");
        LineEdit_Pstat = new QLineEdit;
        LineEdit_Pstat->setEnabled(false);
        Label_Pstat_unit = new QLabel("[Pa]");
        Label_Tstat = new QLabel("入口静温:");
        LineEdit_Tstat = new QLineEdit;
        LineEdit_Tstat->setEnabled(false);
        Label_Tstat_unit = new QLabel("[K]");
        Label_Mgas = new QLabel("气体摩尔质量:");
        LineEdit_Mgas = new QLineEdit;
        LineEdit_Mgas->setEnabled(false);
        Label_Mgas_unit = new QLabel("[kg/mol]");
        Label_rho = new QLabel("入口流体密度:");
        LineEdit_rho = new QLineEdit;
        Label_rho_unit = new QLabel("[kg/m^3]");
        Label_mu = new QLabel("入口流体动力粘度:");
        LineEdit_mu = new QLineEdit;
        Label_mu_unit = new QLabel("[Pa*s]");
        List = new  QListWidget;
        PushButton = new QPushButton("计算");
        List = new QListWidget;
        horizontalSpacer_1 = new QSpacerItem(20, 0, QSizePolicy::Minimum, QSizePolicy::Expanding);
        horizontalSpacer_2 = new QSpacerItem(20, 0, QSizePolicy::Minimum, QSizePolicy::Expanding);
        horizontalSpacer_3 = new QSpacerItem(20, 0, QSizePolicy::Minimum, QSizePolicy::Expanding);
        RightLayout = new QGridLayout;
        MainLayout = new QFormLayout;
    
        // 右侧
        RightLayout->addWidget(Label_L,0,0);
        RightLayout->addWidget(LineEdit_L,0,1);
        RightLayout->addWidget(Label_L_unit,0,2);
    
        RightLayout->addWidget(Label_V_avg,1,0);
        RightLayout->addWidget(LineEdit_V_avg,1,1);
        RightLayout->addWidget(Label_V_avg_unit,1,2);
    
        RightLayout->addWidget(RadioButton_Mode1,2,0);
        RightLayout->addWidget(RadioButton_Mode2,2,1);
        RightLayout->addItem(horizontalSpacer_1,2,2);
    
        RightLayout->addWidget(Label_Pstat,3,0);
        RightLayout->addWidget(LineEdit_Pstat,3,1);
        RightLayout->addWidget(Label_Pstat_unit,3,2);
    
        RightLayout->addWidget(Label_Tstat,4,0);
        RightLayout->addWidget(LineEdit_Tstat,4,1);
        RightLayout->addWidget(Label_Tstat_unit,4,2);
    
        RightLayout->addWidget(Label_Mgas,5,0);
        RightLayout->addWidget(LineEdit_Mgas,5,1);
        RightLayout->addWidget(Label_Mgas_unit,5,2);
    
        RightLayout->addWidget(Label_rho,6,0);
        RightLayout->addWidget(LineEdit_rho,6,1);
        RightLayout->addWidget(Label_rho_unit,6,2);
    
        RightLayout->addWidget(Label_mu,7,0);
        RightLayout->addWidget(LineEdit_mu,7,1);
        RightLayout->addWidget(Label_mu_unit,7,2);
    
        RightLayout->addItem(horizontalSpacer_2,8,0);
        RightLayout->addItem(horizontalSpacer_3,8,1);
        RightLayout->addWidget(PushButton,8,2);
    
        MainLayout->addRow(List,RightLayout);
    
        setLayout(MainLayout);
        // 设置槽
        connect(PushButton,SIGNAL(clicked()),this,SLOT(calculate()));
        connect(RadioButton_Mode1,SIGNAL(clicked(bool)),this,SLOT(mode1_selected()));
        connect(RadioButton_Mode2,SIGNAL(clicked(bool)),this,SLOT(mode2_selected()));
    }
    
    Widget::~Widget()
    {
    
    }
    
    void Widget::mode1_selected()
    {
        // 模式1:流体密度已知
        LineEdit_Pstat->setEnabled(false);
        LineEdit_Tstat->setEnabled(false);
        LineEdit_Mgas->setEnabled(false);
        LineEdit_rho->setEnabled(true);
    }
    
    void Widget::mode2_selected()
    {
        // 模式2:气体密度未知
        LineEdit_Pstat->setEnabled(true);
        LineEdit_Tstat->setEnabled(true);
        LineEdit_Mgas->setEnabled(true);
        LineEdit_rho->setEnabled(false);
    }
    
    void Widget::calculate()
    {
        // 计算
        double rho,Re,It,Lt,k,mut,mut_pie,Ret,mut_mu,epsilon,omega;
        double P_standard = 101E3; // 标准大气压[Pa]
        double T_standard = 273.15; // 标准温度[K]
        double V_standard = 22.4; // 标准摩尔体积[L/mol]]
        if (RadioButton_Mode1->isChecked()) { // 模式1:流体密度已知
            rho = LineEdit_rho->text().toDouble();
        } else { // 模式2:气体密度未知
            double P_stat = LineEdit_Pstat->text().toDouble();
            double T_stat = LineEdit_Tstat->text().toDouble();
            double M = LineEdit_Mgas->text().toDouble();
            double V_stat = P_standard*V_standard*T_stat/T_standard/P_stat;
            rho = M/V_stat*1000;
            LineEdit_rho->setText(QString::number(rho,'f',3));
        }
        double mu = LineEdit_mu->text().toDouble(); // 动力粘性
        double L = LineEdit_L->text().toDouble(); // 特征长度
        double V_avg = LineEdit_V_avg->text().toDouble(); // 平均速度
        Re = rho*V_avg*L/mu; // 雷诺数
        It = 0.16*pow(Re,-1/8); // 湍流强度
        Lt = 0.07*L; // 湍流长度尺度
        k = 1.5*pow(V_avg*It,2); // 湍流动能
        mut_pie = sqrt(1.5)*V_avg*It*Lt; // 修正湍流粘度
        epsilon = pow(0.09,0.75)*pow(k,1.5)/Lt; // 湍流耗散率
        Ret = pow(k,2)/epsilon/mu; // 湍流雷诺数
        mut = rho*0.09*pow(k,2)/epsilon; // 湍流粘度
        mut_mu = mut/mu; // 湍流粘度比
        omega = sqrt(k)/(pow(0.09,0.25)*Lt); // 比耗散率
        List->clear();
        List->addItem("雷诺数:    \t"+QString::number(Re,'f',1)+"\t[1]");
        List->addItem("湍流强度:  \t"+QString::number(It*100,'f',1)+"\t[%]");
        List->addItem("湍流长度尺度:"+QString::number(Lt,'f',3)+"\t[m]");
        List->addItem("湍流动能:  \t"+QString::number(k,'f',3)+"\t[m^2/s^2]");
        List->addItem("湍流粘度:  \t"+QString::number(mut,'f',3)+"\t[1]");
        List->addItem("修正湍流粘度:"+QString::number(mut_pie,'f',3)+"\t[1]");
        List->addItem("  (Spalart-Allmaras模型修正)");
        List->addItem("湍流雷诺数:\t"+QString::number(Ret,'f',3)+"\t[1]");
        List->addItem("湍流粘度比:\t"+QString::number(mut_mu,'f',3)+"\t[1]");
        List->addItem("湍流耗散率:\t"+QString::number(epsilon,'f',3)+"\t[m^2/s^2]");
        List->addItem("比耗散率:  \t"+QString::number(omega,'f',3)+"\t[1/s]");
    }
    
  • TA的每日心情
    慵懒
    昨天 10:09
  • 签到天数: 272 天

    [LV.8]以坛为家I

    8

    主题

    389

    帖子

    2168

    积分

    金牌会员

    Rank: 6Rank: 6

    积分
    2168
    发表于 2017-9-1 23:15:54 | 显示全部楼层
    windows版程序:

    本帖子中包含更多资源

    您需要 登录 才可以下载或查看,没有帐号?立即注册

    x
  • TA的每日心情
    奋斗
    2018-4-6 17:26
  • 签到天数: 319 天

    [LV.8]以坛为家I

    100

    主题

    747

    帖子

    1万

    积分

    管理员

    Rank: 9Rank: 9Rank: 9

    积分
    16431

    灌水之王学生会员会员

    发表于 2017-7-8 18:53:46 | 显示全部楼层
    回复回复,感谢分享
  • TA的每日心情
    擦汗
    2017-11-30 11:09
  • 签到天数: 103 天

    [LV.6]常住居民II

    22

    主题

    278

    帖子

    1678

    积分

    版主

    Rank: 7Rank: 7Rank: 7

    积分
    1678
    发表于 2017-7-10 13:14:53 | 显示全部楼层
    感谢分享
    回复

    使用道具 举报

  • TA的每日心情

    2017-12-30 16:21
  • 签到天数: 223 天

    [LV.7]常住居民III

    21

    主题

    529

    帖子

    1万

    积分

    版主

    Rank: 7Rank: 7Rank: 7

    积分
    12272

    荣誉会员学者

    发表于 2017-7-12 23:01:08 | 显示全部楼层
    本帖最后由 bfadlzt 于 2017-7-12 23:33 编辑

    感谢博
    回复

    使用道具 举报

  • TA的每日心情
    无聊
    5 天前
  • 签到天数: 394 天

    [LV.9]以坛为家II

    113

    主题

    1070

    帖子

    1万

    积分

    版主

    Rank: 7Rank: 7Rank: 7

    积分
    14302

    荣誉会员学者

    QQ
     楼主 发表于 2017-7-12 23:33:21 | 显示全部楼层

    不要暴露我的名字
    流场,温度场,低温等离子体
  • TA的每日心情

    2017-12-30 16:21
  • 签到天数: 223 天

    [LV.7]常住居民III

    21

    主题

    529

    帖子

    1万

    积分

    版主

    Rank: 7Rank: 7Rank: 7

    积分
    12272

    荣誉会员学者

    发表于 2017-7-13 00:42:15 | 显示全部楼层
    bfadlzt 发表于 2017-7-12 23:33
    不要暴露我的名字

    顺口了
  • TA的每日心情
    开心
    2018-4-12 10:50
  • 签到天数: 125 天

    [LV.7]常住居民III

    2

    主题

    241

    帖子

    5107

    积分

    论坛元老

    Rank: 8Rank: 8

    积分
    5107
    发表于 2017-7-15 11:24:54 | 显示全部楼层
    感谢分享!
  • TA的每日心情

    2017-10-20 11:17
  • 签到天数: 44 天

    [LV.5]常住居民I

    6

    主题

    66

    帖子

    371

    积分

    中级会员

    Rank: 3Rank: 3

    积分
    371
    发表于 2017-7-18 12:56:52 | 显示全部楼层
    xiexie楼主的分享
  • TA的每日心情
    郁闷
    2018-1-2 18:27
  • 签到天数: 35 天

    [LV.5]常住居民I

    9

    主题

    53

    帖子

    241

    积分

    中级会员

    Rank: 3Rank: 3

    积分
    241
    发表于 2017-7-19 09:32:25 | 显示全部楼层
    谢谢楼主
    回复

    使用道具 举报

  • TA的每日心情
    开心
    2017-7-25 15:44
  • 签到天数: 2 天

    [LV.1]初来乍到

    0

    主题

    5

    帖子

    21

    积分

    新手上路

    Rank: 1

    积分
    21
    发表于 2017-7-25 15:47:01 | 显示全部楼层
    学习学习学习学习学习学习学习

    发表回复

    您需要登录后才可以回帖 登录 | 立即注册

    本版积分规则

    44