文档章节

python for CFD 第三步(Burgers方程)

fjxichao
 fjxichao
发布于 2015/02/10 11:17
字数 328
阅读 135
收藏 1


Burgers方程形式

差分离散格式(forward difference for time, 
            backward difference for space  
            2nd-order method for the second derivatives )

这里设置了周期性初始条件

#!/usr/bin/python
# -*-coding:utf-8 -*- 
import numpy as np
import sympy
from sympy import init_printing
init_printing(use_latex=True)  #在ipython中直接打印公式使用latex格式
from sympy.utilities.lambdify import lambdify
import matplotlib.pylab as plt

x,nu,t = sympy.symbols("x,nu,t")
phi = sympy.exp(-(x-4*t)**2/(4*nu*(t+1))) + sympy.exp(-(x-4*t-2*np.pi)**2/(4*nu*(t+1)))
phiprime = phi.diff(x)
u = -2*nu*(phiprime/phi)+4
ufunc = lambdify((t,x,nu),u)

nx = 101
nt=100
dx = 2*np.pi/(nx-1)
nu=0.07
dt=dx*nu

x= np.linspace(0,2*np.pi,nx)
un = np.empty(nx)
t=0
u=np.asarray([ufunc(t,x0,nu) for x0 in x]) #list 转化成 np.array

plt.figure(figsize=(4,4),dpi=100)
plt.plot(x,u,lw=2)
plt.xlim([0,2*np.pi])
plt.ylim([0,8])

for n in range(nt):
	un = u.copy()
	for i in range(nx-1):
		u[i] = un[i] - un[i] * dt/dx *(un[i] - un[i-1]) + nu*dt/dx**2*(un[i+1]-2*un[i]+un[i-1])
	u[-1] = un[-1] - un[-1] * dt/dx * (un[-1] - un[-2]) + nu*dt/dx**2*(un[0]-2*un[-1]+un[-2])
	
u_analytical = np.asarray([ufunc(nt*dt,xi,nu) for xi in x])

plt.figure(figsize=(6,6),dpi=100)
plt.plot(x,u,marker="o",color="blue",lw=2,label='Computational')		
plt.plot(x,u_analytical,color="yellow",label='analytical')
plt.xlim([0,2*np.pi])
plt.ylim([0,10])
plt.legend()
plt.show()
结果第一张图是初始图像,第二张是解析解和计算解比较图

© 著作权归作者所有

共有 人打赏支持
fjxichao
粉丝 4
博文 67
码字总数 16562
作品 0
西安
程序员
机器学习:最小二乘法实际应用的一个完整例子

整个过程分七步,为了方便喜欢直接copy代码看结果的同学,每步都放上了完整的代码。 实验数据: 第一步:准备样本数据并绘制散点图 1)代码及其说明 import numpy as npimport scipy as spim...

wangxuwei
07/15
0
0
如何使用python进行常规方程求解(Sympy or Scipy)(非线性方程组,一元二次方程,多元一次方程,因式分解等)

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/meiqi0538/article/details/82990432 前言 在科学计算中,我们经常会遇到数值计算,可能遇到高数,线性代数等...

皮乾东
10/09
0
0
9行Python代码搭建神经网络来掌握一些基本概念

这里的“用Python”指的就是不用那些现成的神经网络库比如Keras、Tensorflow等,否则连9行都不用了。 本文我会解释这个神经网络是怎样炼成的,所以你也可以搭建你自己的神经网络。也会提供一...

技术小能手
07/10
0
0
CentOS6.5安装python2.7.9

以前一直用ubantu下的python,ubantu比较卡。自己倾向于使用centos,但默认的python版本太低,所以重新装了一个python和ipython centos6.5安装python2.7.9 第一步:安装devtoolset [root@sp...

wujunqi1996
06/28
0
0
Python3算法实例 1.3:动态规划 之 背包问题

背包问题(0—1背包) 有N件物品,背包的最大承重为M,每件物品的数量均为1,价值集合为V,重量集合为W,计算该背包可以承载的物品的最大价值。 动态规划思想: 状态 当前背包还可以承受的最大...

AiFan
09/26
0
0

没有更多内容

加载失败,请刷新页面

加载更多

smart-doc特殊功能使用介绍

smart-doc从8月份底开始开源发布到目前为止已经迭代了几个版本。在这里非常感谢那些敢于用smart-doc去做尝试并积极提出建议的社区用户。因此决定在本博客中重要说明下smart-doc的功能,包括使...

上官胡闹
昨天
0
0
JavaEE——Junit

声明:本栏目所使用的素材都是凯哥学堂VIP学员所写,学员有权匿名,对文章有最终解释权;凯哥学堂旨在促进VIP学员互相学习的基础上公开笔记。 Junit Junit又名单元测试,Junit是用来测试Jav...

凯哥学堂
昨天
0
0
读《美丽新世界》

一、背景 十一国庆节从重庆回深圳的时候,做得绿皮车,路上看了两本书:李笑来的《韭菜的自我修养》和禁书《美丽新世界》。 上篇文章已经分享了 读《韭菜的自我修养》,这篇文章来记录一下《...

tiankonguse
昨天
0
0
archlinux下基于Jenkins,docker实现自动化部署(持续交互)

本文永久更新地址:https://my.oschina.net/bysu/blog/2250954 【若要到岸,请摇船:开源中国 不最醉不龟归】 -----------------------------------第一部分Jenkins的安装与使用-----------...

不最醉不龟归
昨天
0
0
Spark Parquet file split

在实际使用 spark + parquet 的时候, 遇到了两个不解的地方: 我们只有一个 parquet 文件(小于 hdfs block size), 但是 spark 在某个 stage 生成了4个 tasks 来处理. 4个 tasks 中只有一个 ta...

Aaaaaaaron
昨天
0
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部