12步解N-S方程之第三步
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方程之第三步相关推荐
- 搞定面试算法系列 | 分治算法三步走
戳蓝字"CSDN云计算"关注我们哦! 作者 | 江子抑 转自 | 编程拯救世界 主要思想 分治算法,即分而治之:把一个复杂问题分成两个或更多的相同或相似子问题,直到最后子问题可以简 ...
- 什么是DevOps的三步工作法?
作者介绍 张乐 DevOps时代联合创始人,高效运维社区合伙人,DevOpsDays大会.GOPS全球运维大会金牌讲师.国内首批DevOps Master,前百度资深敏捷教练.架构师.超过十四年敏捷转 ...
- 三步掩模行业调研报告 - 市场现状分析与发展前景预测
三步掩模市场的企业竞争态势 该报告涉及的主要国际市场参与者有JAYJUN.JMSOLUTION.DOCTOR LI.WONJIN EFFECT.The history of whoo.SU:M37°. ...
- 台阶的意思_正屋大门前几步台阶好 二步台阶进屋的含义 三步台阶进屋的含义...
在古时候,人们在建的房子门口都会设立台阶,不仅能够防止外面的尘土吹进屋内,而且也有步步高升的美好寓意,但是台阶的步数也是很有讲究的,那么正屋大门前几步台阶好?下面为大家介绍二步台阶进屋的含义,以及三步 ...
- 解决问题黄金三步:定义问题—分解问题—归
转载,原文 张建飞(Frank)解决问题黄金三步:定义问题-分解问题-归 我们经常说软件开发中,没有银弹.的确,单看软件领域,很少有什么方法论是普适的.然而再拔高一些,跳出软件的范畴,是有一些东西是普 ...
- 解决问题黄金三步:定义问题—分解问题—归类分组
我们经常说软件开发中,没有银弹.的确,单看软件领域,很少有什么方法论是普适的.然而再拔高一些,跳出软件的范畴,是有一些东西是普世的,比如老子说的"道". 好吧,"道&qu ...
- 12步解N-S方程之第二步
2019独角兽企业重金招聘Python工程师标准>>> 12步解N-S方程之第二步 # -*- coding: utf-8 -*- #This is step 2 of python ...
- 12步解N-S方程之第五步(2)
2019独角兽企业重金招聘Python工程师标准>>> 12步解N-S方程之第5步(2) 在5(1)中我们知道了Burger方程的离散形式及其初始条件应该如何给定.在数学理解上这没有 ...
- 十二步解N-S方程之第四步
2019独角兽企业重金招聘Python工程师标准>>> 十二步解N-S方程之第四步 通过前面的学习,我们已经知道如何去解线性和非线性的一维对流方程,而且也知道CFL是如何影响数值求解 ...
最新文章
- .NET Core 使用 nlog 进行日志记录
- c++中delete对象后 调用成员函数_C++类的特殊成员函数及default/delete特性
- QFileDialog::getOpenFileName
- JavaScript——对象合并解决方案
- redhat mysql tar_mysql5.7版本tar包手动安装---redhat7.0
- java四则运算器算法_java写的四则运算器
- FTP开启被动连接模式
- 基于 XGBoost 对 Santander 银行用户购买行为进行预测
- window7梦幻桌面
- 网络协议 22 - RPC 协议(下)- 二进制类 RPC 协议
- redis 实战系列(一)
- 【艾特淘】淘宝保证金催缴单在哪里,要怎么交?
- 多线程服务器的常用编程模型
- 漫画:鉴权与安全访问控制的技术血脉
- Qt示例解析 【Callout】
- html5妇女节游戏,html5开发三八女王节表白神器
- Teamspeak3集成要注意的问题
- 学习笔记-零基础学习人工智能(0)
- sqlplus set linesize/pagesize等命令详解
- 与你相关|《个人信息保护法》发布后我们能做什么?