文档章节

python for CFD 第三步(Burgers方程)

fjxichao
 fjxichao
发布于 2015/02/10 11:17
字数 328
阅读 137
收藏 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
2018/07/15
0
0
如何使用python进行常规方程求解(Sympy or Scipy)(非线性方程组,一元二次方程,多元一次方程,因式分解等)

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

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

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

技术小能手
2018/07/10
0
0
Python3算法实例 1.3:动态规划 之 背包问题

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

AiFan
2018/09/26
0
0
CentOS6.5安装python2.7.9

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

wujunqi1996
2018/06/28
0
0

没有更多内容

加载失败,请刷新页面

加载更多

Nextjs+React非页面组件SSR渲染

@随风溜达的向日葵 Nextjs Nextjs是React生态中非常受欢迎的SSR(server side render——服务端渲染)框架,只需要几个步骤就可以搭建一个支持SSR的工程(_Nextjs_的快速搭建见Next.js入门)...

随风溜达的向日葵
48分钟前
0
0
如何在 Linux 系统查询机器最近重启时间

在你的 Linux 或类 UNIX 系统中,你是如何查询系统上次重新启动的日期和时间?怎样显示系统关机的日期和时间? last 命令不仅可以按照时间从近到远的顺序列出该会话的特定用户、终端和主机名...

来来来来来
今天
3
0
Redis协议是什么样的

前言 我们用过很多redis的客户端,有没有相过自己撸一个redis客户端? 其实很简单,基于socket,监听6379端口,解析数据就可以了。 redis协议 解析数据的过程主要依赖于redis的协议了。 我们...

春哥大魔王的博客
今天
6
0
乱入Linux界的我是如何学习的

欢迎来到建哥学Linux,咳!咳!咳!开个玩笑哈,我是一个IT男,IT界的入门选手,正在学习Linux。 在之前,一直想进军IT界,学习IT技术,但是苦于没有人指导,也不知道学什么,最开始我自己在...

linuxCool
今天
4
0
携程Apollo统一配置中心的搭建和使用(java)

一.Apollo配置中心介绍 1、What is Apollo 1.1 Apollo简介 Apollo(阿波罗)是携程框架部门研发的开源配置管理中心,能够集中化管理应用不同环境、不同集群的配置,配置修改后能够实时推送到...

morpheusWB
今天
3
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部