Logo 折叠
全网首发仿真工程师项目实训
下载app
返回旧版
首页 成长助手 小邻学院 社区 发现
职业认证 企业服务 行业会议

登录解锁更多功能

还没有账号?立即注册

技术邻
技术引领职场价值
电话
0571-86682823
商务合作
service@jishulink.com
  • 全部  > 
  • CAE仿真

初学者,编了一个用simple算法解couette程序,为什么收敛不了?

浏览: 1666 回答: 1
#include<stdio.h>
#include<stdlib.h>

#define UE 1
#define rou 0.002377
#define miu 3.737e-7
#define dx 0.025
#define dy 0.001
#define dt 0.001
#define sor 0.1

int i, j, k, steps=0, steps_sum;
double p[22][12] = { 0 }, u[23][12] = { 0 }, v[24][13] = { 0 };
double mass_u[23][12] = { 0 }, mass_v[24][13] = { 0 };

void show()
{
    printf("\n************************************%d************************************\n",steps);
    printf("\nu\n");
    for (j = 11; j >=1; j--)
    {
        for (i = 1; i <= 22; i++)
            printf("%.3lf ", u[i][j]);
        printf("\n");
    }        
    printf("\nv\n");
    for (j = 12; j >= 1; j--)
    {
        for (i = 1; i <= 23; i++)
            printf("%.3lf ", v[i][j]);
        printf("\n");
    }
    printf("\np\n");
    for (j = 11; j >= 1; j--)
    {
        for (i = 1; i <= 21; i++)
            printf("%.3lf ", v[i][j]);
        printf("\n");
    }
/*    printf("\nmass_u\n");
    for (j = 11; j >= 1; j--)
    {
        for (i = 1; i <= 22; i++)
            printf("%.3lf ", mass_u[i][j]);
        printf("\n");
    }
    printf("\nmass_v\n");
    for (j = 11; j >= 1; j--)
    {
        for (i = 1; i <= 22; i++)
            printf("%.3lf ", mass_v[i][j]);
        printf("\n");
    }*/
}

void initialize()
{
    for (i = 1; i <= 22; i++)
        u[i][11] = UE;
    v[15][5] = 0; //disturbancr
    for (i = 1; i <= 22; i++)
        mass_u[i][11] = rou*UE;
    mass_v[15][5] = rou*v[15][5];
}

void compute_mass()
{
    double A, B, v_1, v_2, u_1, u_2;
        for (i = 2; i <= 21; i++)
            for (j = 2; j <= 10; j++)
            {
                v_1 = 0.5*(v[i][j + 1] + v[i + 1][j + 1]);
                v_2 = 0.5*(v[i][j] + v[i + 1][j]);
                A = -((rou*u[i + 1][j] * u[i + 1][j] - rou*u[i - 1][j] * u[i - 1][j]) / (2 * dx) + (rou*u[i][j + 1] * v_1 - rou*u[i][j - 1] * v_2) / (2 * dy))
                    + miu*((u[i + 1][j] - 2 * u[i][j] + u[i - 1][j]) / (dx*dx) + (u[i][j + 1] - 2 * u[i][j] + u[i][j - 1]) / (dy*dy));
                mass_u[i][j] = rou*u[i][j] + A*dt - (dt / dx)*(p[i][j] - p[i - 1][j]);
            }
        for (i = 2; i <= 22; i++)
            for (j = 2; j <= 11; j++)
            {
                u_1 = 0.5*(u[i][j - 1] + u[i][j]);
                u_2 = 0.5*(u[i - 1][j - 1] + u[i - 1][j]);
                B = -((rou*v[i + 1][j] * u_1 - rou*v[i - 1][j] * u_2) / (2 * dx) + (rou*v[i][j + 1] * v[i][j + 1] - rou*v[i][j - 1] * v[i][j - 1]) / (2 * dy))
                    + miu*((v[i + 1][j] - 2 * v[i][j] + v[i - 1][j]) / (dx*dx) + (v[i][j + 1] - 2 * v[i][j] + v[i][j - 1]) / (dy*dy));
                mass_v[i][j] = rou*v[i][j] + B*dt - (dt / dy)*(p[i - 1][j] - p[i - 1][j - 1]);
            }
}

void pressure_correct()
{
    double a, b, c;
    double d[22][12] = { 0 };
    double _p[22][12] = { 0 };//pressure correct
    double _p_;//mid
    a = 2 * (dt / (dx*dx) + dt / (dy*dy));
    b = -dt / (dx*dx);
    c = -dt / (dy*dy);
    for (i = 2; i <= 20; i++)
        for (j = 2; j <= 10; j++)
            d[i][j] = (mass_u[i + 1][j] - mass_u[i][j]) / dx + (mass_v[i + 1][i + 1] - mass_v[i + 1][j]) / dy;    
    for (k = 1; k <= 100; k++)
    {
        for (i = 2; i <= 20; i++)
            for (j = 2; j <= 10; j++)
            {
                _p_ = -(b*_p[i + 1][j] + b*_p[i - 1][j] + c*_p[i][j + 1] + c*_p[i][j - 1] + d[i][j]) / a;
                _p[i][j] = _p[i][j] + 0.1*(_p_ - _p[i][j]);
            }

        
    }
    for (i = 2; i <= 20; i++)
        for (j = 2; j <= 20; j++)
            p[i][j] = p[i][j]+(sor*_p[i][j]);
}

void compute_velocity()
{
    for (i = 2; i <= 21; i++)
        for (j = 2; j <= 10; j++)
            u[i][j] = mass_u[i][j] / rou;
    for (i = 2; i <= 22; i++)
        for (j = 2; j <= 11; j++)
            v[i][j] = mass_v[i][j] / rou;
    for (j = 1; j <= 11; j++)
    {
        u[1][j] = u[2][j]; u[22][j] = u[21][j];
    }
    for (j = 1; j <= 12; j++)
        v[23][j] = v[22][j];
}

void main()
{
    double store[6][12] = { 0 };
    int m = 1;
    initialize();
    show();
    steps_sum = 20;
    for (steps = 1; steps <= steps_sum; steps++)
    {
        compute_mass();
        compute_velocity();        
        pressure_correct(); show();
        if (steps == 4 || steps == 20 || steps == 50 || steps == 150 || steps == 300)
        {
            show();
            for (j = 1; j <= 11; j++)
                store[m][j] = u[15][j];
            m += 1;
        }
    }
    printf("\n");
    for (j = 11; j >= 1; j--)
    {
        for (m = 1; m <= 5; m++)
            printf("%.9lf  ", store[m][j]);
        printf("\n");
    }
}
流体力学及仿真

全部回答 (1)

默认 最新
技术工 2017年5月3日
@龙樱@静心图远 @江洋大盗
2017年5月3日
评论 点赞

相似问题

查看全部
  • 程序中用到了map函数,现在想把map函数得到的结果保存到文件中,应该怎么编程? 暂无回答

    程序中用到了map函数,现在想把map函数得到的结果保存到文件中,应该怎么编程(自己写的程序报错了) #include<stdio.h> #include<stdlib.h> #include<math.h> #include <map> using namespace std; map<float,float> g_mapData; FILE *fp = NULL; void insert_ma

  • 关于下面这个帖子中提到的问题,有大佬知道为什么吗? 3个回答

    Xingsheng Sun (Mechanical)(OP)18 Aug 21 21:51 Dear folks, I am trying to use C++ VUMAT in the abaqus on the university supercomputer, but it does not work. I have successfully tested the C++ VUMAT and

  • 基于Python的结构优化? 暂无回答

    abaqus二次开发,源程序由我提供,但是需要进行改变,将单材料的优化程序改为多材料的优化程序,基于Python语言,源代码写的很清楚,改动不会太大,但是会附带后处理的问题解决,详情细聊。 import math,customKernel from abaqus import getInput,getInputs from odbAccess import openOdb ## Function 

推荐阅读

钢结构S1 ABAQUS经典金属弹塑性本构及模拟应用

钢结构S1 ABAQUS经典金属弹塑性本构及模拟应用

1点 1点
¥100
0#块箱梁托架法施工结构模拟

0#块箱梁托架法施工结构模拟

yudachuan1105 yudachuan1105
¥200
ABAQUS钢管混凝土柱温度场及耐火性能分析(未完)

ABAQUS钢管混凝土柱温度场及耐火性能分析(未完)

地下结构设计
¥40
abaqus三维切削数值模拟(sph法)

abaqus三维切削数值模拟(sph法)

abaquser abaquser
¥30
前沿技术!大数据分析及人工智能在优化软件中的应用

前沿技术!大数据分析及人工智能在优化软件中的应用

IDAJ中国 IDAJ中国
¥9.99
新一代智能头灯的动态设计评估与仿真

新一代智能头灯的动态设计评估与仿真

Ansys中国 Ansys中国
免费
UG培训第九课:自由曲面构造法

UG培训第九课:自由曲面构造法

luffy8610 luffy8610
¥20
应用ANSYS瞬态动力学法模拟啮合齿轮的高速转动

应用ANSYS瞬态动力学法模拟啮合齿轮的高速转动

夏日星空 夏日星空
¥35
一线科技工作者接受仿真咨询服务的全过程经验分享

一线科技工作者接受仿真咨询服务的全过程经验分享

技术邻直播 技术邻直播
免费
混凝土材性试块拉压数值模拟(ABAQUS通法建模初级案例3)

混凝土材性试块拉压数值模拟(ABAQUS通法建模初级案例3)

大平-结构工程 大平-结构工程
¥299
汽车仪表模具模流分析的实战讲解

汽车仪表模具模流分析的实战讲解

北卡 北卡
免费
UG有限元基础教程

UG有限元基础教程

moonshine🤓 moonshine🤓
免费
ABAQUS桁架结构强度分析

ABAQUS桁架结构强度分析

wj_2704 wj_2704
¥500
ADAS功能软件基础介绍

ADAS功能软件基础介绍

Alex王 Alex王
免费
abaqus lamb波传播分析

abaqus lamb波传播分析

abaquser abaquser
¥25
abaqus模拟桩(三维)全过程

abaqus模拟桩(三维)全过程

红日当空q3120210076 红日当空q3120210076
¥62
热力学理论入门基础(上)

热力学理论入门基础(上)

引垂思汀 引垂思汀
¥30
solidworks 2016基础操作入门到精通

solidworks 2016基础操作入门到精通

新征程学院 新征程学院
免费
TurboTides 2024R2全新版本发布会--智能算法驱动的全自动优化透平机械集成设计平台

TurboTides 2024R2全新版本发布会--智能算法驱动的全自动优化透平机械集成设计平台

TurboTides TurboTides
免费
场景仿真加速智能网联开发测试进程

场景仿真加速智能网联开发测试进程

海克斯康设计与仿真 海克斯康设计与仿真
免费