python for CFD(前两步问题总结)

在前面的问题中,如果单方面将nx无限变大,(不妨令nx = 100)则结果画出的图形是发散的。

这是因为有限差分中有一个重要的必要条件,CFL数,具体是差分方程的依赖域必须包含相应微分方程的依赖域,最简单可以理解为时间推进求解的速度(dx/dt)必须大于物理扰动传播的速度(u),只有这样才能将物理上所有的扰动俘获到。

每一个时间间隔dt上“波”传播的距离是dx,而dx与nx相关,保持数值求解稳定的关系式为:

import numpy as npimport matplotlib.pyplot as plt
def linearconv(nx):
    dx = 2./(nx-1)
    nt = 20    #nt is the number of timesteps we want to calculate
    c = 1
    sigma = .5   
    
    dt = sigma*dx     #跟步骤2唯一的变化在这

    u = np.ones(nx) 
    u[.5/dx : 1/dx+1]=2

    un = np.ones(nx)

    for n in range(nt):  #iterate through time
        un = u.copy() ##copy the existing values of u into un
        for i in range(1,nx):
            u[i] = un[i]-c*dt/dx*(un[i]-un[i-1])
        
    plt.plot(np.linspace(0,2,nx),u)
linearconv(121)即可,此时图形和步骤2类似
时间: 2024-11-05 20:26:58

python for CFD(前两步问题总结)的相关文章

混血妆容教程 妆前两步排水肿不脱妆

混血妆容教程 妆前两步排水肿不脱 http://baozoumanhua.com/users/13998545/forum_articleshttp://baozoumanhua.com/users/13998544/forum_articleshttp://baozoumanhua.com/users/13998551/forum_articleshttp://baozoumanhua.com/users/13998554/forum_articleshttp://baozoumanhua.c

前两篇转载别人的精彩文章,自己也总结一下python split的用法吧!

前言:前两篇转载别人的精彩文章,自己也总结一下吧! 最近又开始用起py,是为什么呢? 自己要做一个文本相似度匹配程序,大致思路就是两个文档,一个是试题,一个是材料,我将试题按每题分割出来,再将每题的内容与材料中进行文本相似度匹配. 所以先首先要做的是将试题把每道题作为一个字符串切割开来,存放到字典中. 程序入下: # -*- coding:utf-8 -*- import re #正则模块 f = open('test.txt','r') s = f.read() s1 = s.split('工

深入浅出 Python 装饰器:16 步轻松搞定 Python 装饰器

Python的装饰器的英文名叫Decorator,当你看到这个英文名的时候,你可能会把其跟Design Pattern里的Decorator搞混了,其实这是完全不同的两个东西.虽然好像,他们要干的事都很相似--都是想要对一个已有的模块做一些"修饰工作",所谓修饰工作就是想给现有的模块加上一些小装饰(一些小功能,这些小功能可能好多模块都会用到),但又不让这个小装饰(小功能)侵入到原有的模块中的代码里去.但是OO的Decorator简直就是一场恶梦,不信你就去看看wikipedia上的词条

只需两步快速获取微信小程序源码

只需两步快速获取微信小程序源码 第一次在掘金这样高大上的社区写文章,忐忑地敲下我获取小程序源码过程中的经验分享. 最近在学习微信小程序开发,半个月学习下来,很想实战一下踩踩坑,于是就仿写了某个小程序的前端实现,过程一言难尽,差不多两周时间过去了,发现小程序的坑远比想象的要多的多!!在实际练手中,完全是黑盒的,纯靠推测,部分效果在各种尝试后能能做出大致的实现,但是有些细节,实在不知道如何去实现.这种时候,真的很想一窥源码,查看究竟,看看大厂的前端大神们是如何规避了小程序的一些比较奇葩的坑. 于是就

两步快速获取小程序源码

最近在学习微信小程序开发,半个月学习下来,很想实战一下踩踩坑,于是就仿写了某个小程序的前端实现,在实际练手中,完全是黑盒的,纯靠推测,部分效果在各种尝试后能能做出大致的实现,但是有些细节,实在不知道如何去实现.这种时候,真的很想一窥源码,查看究竟,看看大厂的前端大神们是如何规避了小程序的一些比较奇葩的坑. 于是就想到获取到小程序地源文件,然后尝试对其进行反编译还原为源代码,来作为学习参考.我百度了各种关于小程序地反编译教程,但是感觉都不太适合像我这样地初学小白,踩了挺多坑.在这里把我重新简化好的

挑子学习笔记:两步聚类算法(TwoStep Cluster Algorithm)——改进的BIRCH算法

转载请标明出处:http://www.cnblogs.com/tiaozistudy/p/twostep_cluster_algorithm.html 两步聚类算法是在SPSS Modeler中使用的一种聚类算法,是BIRCH层次聚类算法的改进版本.可以应用于混合属性数据集的聚类,同时加入了自动确定最佳簇数量的机制,使得方法更加实用.本文在学习文献[1]和“IBM SPSS Modeler 15 Algorithms Guide”的基础上,融入了自己的理解,更详尽地叙述两步聚类算法的流程和细节.

MongoDB 操作手册CRUD 事务 两步提交

执行两步提交 概述 这部分提供了多记录更新或者多记录事务,使用两步提交来完成多记录写入的模板.另外,可以扩展此方法来提供rollback-like功能. 背景 MongoDB对于单条记录的操作是原子性的:但是涉及多条记录的操作却不是原子性的.由于记录可能是相当复杂,并且有内嵌记录,单记录原子性操作提供了实际中常用的必要支持. 除了单记录的原子性操作,还有许多情况需要多记录操作事务,当执行一个包含一些列操作的事务时,就有以下要求: 原子性:如果一个操作失败,事务中之前的操作需要回滚到之前的状态 一

阅读《大型网站技术架构》前两章心得体会及总结

最近阅读了<大型网站技术架构>这一本书,对于这一行业刚入门的菜鸟来说,虽然只读了前两章,却让我感受颇深,同时也学习和见识到了很多之前不了解.不明白的东西. 通过阅读前两章,我才真正的初步明白了一个刚刚成型的小型网站是如何一步一步的成长为一个大型网站.从网站的最开始的基础架构,到一步步实现网站的性能提升,到如何处理网站的高并发数据,到使用反响代理和CDN加速网站响应,让我一步一步的真正的认识到了架构的重要性,也让我这个菜鸟学习到了很多之前不懂的知识. 第一章主要讲授了大型网站架构演化的发展历程,

用模板元实现50个台阶问题,一次走一步或者两步或者3步,用模板元实现求裴波那契额数列

 1.用模板元实现50个台阶问题,一次走一步或者两步或者3步 2.分析 由上面分析可以知道,到达N(N > 3)级台阶时的次数为:目标台阶的前3个台阶分别直接到目标台阶的次数总和. 3.模板元把在运行时消耗的时间,在编译器键优化. 4.通过模板元实现的代码如下: #include <iostream> /*这里是int 类型的,N表示台阶数量*/ template<int N> struct data { enum { res = data<N - 1>::r