2019独角兽企业重金招聘Python工程师标准>>>

12步解N-S方程之第三步

在前2步中我们已经学会如何使用python编写程序解决简单的一维线性/非线性对流问题。也通过调节参数,观察到了一些有意思的现象。在这些参数中,有一个组合形成的参数非常重要,它就是CFL数。之所以重要,是因为CFL数的取值会影响数值求解。

在第一步中,如果我们将程序稍作改动,使之变为参数输入的形式。代码如下:

# -*- coding: utf-8 -*-
#This is step 3 of python cfd courses.
#Text and code provided under a Creative Commons Attribution license, CC-BY
#. (c) Lorena A. Barba, 2013. Thanks: Gilbert Forsyth for help writing the
#notebooks. NSF for support via CAREER award #1149784.
#
# date author description
# 2014/08/31 wubin 1-d linear convection
#
# pu/pt+c*pu/px=0
# a little equation can teach us so much!!!!
#
import numpy as np
import matplotlib.pyplot as plt
import time,sys #load some system utilities
from IPython.core.display import clear_output #used for inline animation
#
def linearconv(nx):
dx=2.0/(nx-1)
nt=20
dt=0.025
c=1.0
#
u=np.ones(nx)
u[0.5/dx:1+1.0/dx]=2.0
un=np.ones(nx)
u0=np.empty_like(u)
u0=u.copy()
#
for n in range(nt):
un=u.copy()
for i in range(1,nx):
u[i]=un[i]-c*dt/dx*(un[i]-un[i-1])
plt.figure()
xc=np.linspace(0,2,nx)
plt.plot(xc,u,linewidth=2.0,label="converged")
plt.plot(xc,u0,linewidth=2.0,label="initial")
plt.legend(loc='upper right')
plt.savefig("F:\PYTHON\python_cfd\step3.png",dpi=150)
plt.show()

在ipython交互中运行linearconv(nx)函数,nx分别取41、61、81和85。得到如下结果:

nx=41

nx=61

nx=81

nx=85

从图可以看出,随着网格点间距逐渐减小,数值求解的精度在降低,最终发散掉(最后一图)。

这是为什么呢?

我们求解的过程如下:从初始的一个预估值开始,通过上一步的值来估计下一步的结果,循环下去直至收敛。每一个时间间隔dt上“波”传播的距离是dx,而dx与nx相关,保持数值求解稳定的关系式为:

    CFL=0.5
dt=CFL*dx

再次运行程序,得到如下结果:

CFL=0.5,nx=41

CFL=0.5,nx=61

CFL=0.5,nx=81

CFL=0.5,nx=101

CFL=0.5,nx=121

改进后,不管nx怎么增大,都能保证数值求解不发散。

转载于:https://my.oschina.net/cfdvalidation/blog/308861

12步解N-S方程之第三步相关推荐

  1. 搞定面试算法系列 | 分治算法三步走

    戳蓝字"CSDN云计算"关注我们哦! 作者 | 江子抑 转自 | 编程拯救世界 主要思想 分治算法,即分而治之:把一个复杂问题分成两个或更多的相同或相似子问题,直到最后子问题可以简 ...

  2. 什么是DevOps的三步工作法?

    作者介绍 张乐 DevOps时代联合创始人,高效运维社区合伙人,DevOpsDays大会.GOPS全球运维大会金牌讲师.国内首批DevOps Master,前百度资深敏捷教练.架构师.超过十四年敏捷转 ...

  3. 三步掩模行业调研报告 - 市场现状分析与发展前景预测

    三步掩模市场的企业竞争态势 该报告涉及的主要国际市场参与者有JAYJUN.JMSOLUTION.DOCTOR LI.WONJIN EFFECT.The history of whoo.SU:M37°. ...

  4. 台阶的意思_正屋大门前几步台阶好 二步台阶进屋的含义 三步台阶进屋的含义...

    在古时候,人们在建的房子门口都会设立台阶,不仅能够防止外面的尘土吹进屋内,而且也有步步高升的美好寓意,但是台阶的步数也是很有讲究的,那么正屋大门前几步台阶好?下面为大家介绍二步台阶进屋的含义,以及三步 ...

  5. 解决问题黄金三步:定义问题—分解问题—归

    转载,原文 张建飞(Frank)解决问题黄金三步:定义问题-分解问题-归 我们经常说软件开发中,没有银弹.的确,单看软件领域,很少有什么方法论是普适的.然而再拔高一些,跳出软件的范畴,是有一些东西是普 ...

  6. 解决问题黄金三步:定义问题—分解问题—归类分组

    我们经常说软件开发中,没有银弹.的确,单看软件领域,很少有什么方法论是普适的.然而再拔高一些,跳出软件的范畴,是有一些东西是普世的,比如老子说的"道". 好吧,"道&qu ...

  7. 12步解N-S方程之第二步

    2019独角兽企业重金招聘Python工程师标准>>> 12步解N-S方程之第二步 # -*- coding: utf-8 -*- #This is step 2 of python ...

  8. 12步解N-S方程之第五步(2)

    2019独角兽企业重金招聘Python工程师标准>>> 12步解N-S方程之第5步(2) 在5(1)中我们知道了Burger方程的离散形式及其初始条件应该如何给定.在数学理解上这没有 ...

  9. 十二步解N-S方程之第四步

    2019独角兽企业重金招聘Python工程师标准>>> 十二步解N-S方程之第四步 通过前面的学习,我们已经知道如何去解线性和非线性的一维对流方程,而且也知道CFL是如何影响数值求解 ...

最新文章

  1. .NET Core 使用 nlog 进行日志记录
  2. c++中delete对象后 调用成员函数_C++类的特殊成员函数及default/delete特性
  3. QFileDialog::getOpenFileName
  4. JavaScript——对象合并解决方案
  5. redhat mysql tar_mysql5.7版本tar包手动安装---redhat7.0
  6. java四则运算器算法_java写的四则运算器
  7. FTP开启被动连接模式
  8. 基于 XGBoost 对 Santander 银行用户购买行为进行预测
  9. window7梦幻桌面
  10. 网络协议 22 - RPC 协议(下)- 二进制类 RPC 协议
  11. redis 实战系列(一)
  12. 【艾特淘】淘宝保证金催缴单在哪里,要怎么交?
  13. 多线程服务器的常用编程模型
  14. 漫画:鉴权与安全访问控制的技术血脉
  15. Qt示例解析 【Callout】
  16. html5妇女节游戏,html5开发三八女王节表白神器
  17. Teamspeak3集成要注意的问题
  18. 学习笔记-零基础学习人工智能(0)
  19. sqlplus set linesize/pagesize等命令详解
  20. 与你相关|《个人信息保护法》发布后我们能做什么?

热门文章

  1. 暴笑笑话集(全是最新经典!)
  2. word标尺工具应用:如何快速调整版面距离参数
  3. 8500万台安卓手机感染病毒,幕后黑手是一家中国公司
  4. ethereum-etl学习
  5. Dilworth定理
  6. php微信公众号向指定客服发信息,微信公众号给用户发送一条消息 客服消息
  7. 国内外php商城系统 开源、php商城比较。
  8. BugkuCTF之web题之细心
  9. 赛联区块链培训课程介绍
  10. 铂德发布换弹型电子烟新琥珀,3.5ml超大容量创行业纪录