python编程作业--盐度对流方程的差分格式设计与讨论

简介: python编程作业--盐度对流方程的差分格式设计与讨论

使用python对于盐度对流差分格式设计与讨论



题目要求如下:



7a6c331576b54921a783d1770e1a9044.png


差分格式设计如下:



方案1、蛙跳格式(时间和距离都用中央差)


d1e667266a9e478792a8cd6305767eb3.pngdd5ffd4ec6fd41a1aa18de35643afd9d.png

be73800eb1284353a2a7aaa1774c7557.png


python代码如下:


"""
Created on %(date)s
@author: %(jixianpu)s
Email : 211311040008@hhu.edu.cn
introduction : keep learning althongh walk slowly
"""
"""
分析说明:μ<1时,蛙跃格式是稳定的,但是会有频散现象发生,耗散比较小,盐度场峰值基本保持不变;μ>1时,明显看到格式不稳定。
"""
import numpy as np
import matplotlib.pyplot as plt
ss=np.zeros((2002,1002))   
dx=10
u=1
dt=5
#mu=u*dt/dx;
mu=1.1 #1.01,0.01,0.05
ss[0,300:401]=10
for n  in range(2001):
    for  j in range(1001):
        if (n==1)&(j==1):
            s1=ss[n,j]
            s2=ss[n,j]
            ss[n+1,j]=s1+mu*(-ss[n,j+1]+s2)
        elif n==1 & j!=1:
            s1=ss[n,j]
            ss[n+1,j]=s1+mu*(-ss[n,j+1]+ss[n,j-1])
        elif j==1 &n!=1:
            s2=ss[n,j]
            ss[n+1,j]=ss[n-1,j]+mu*(-ss[n,j+1]+s2)
        else :
            ss[n+1,j]=ss[n-1,j]+mu*(-ss[n,j+1]+ss[n,j-1])
plt.rcParams['axes.unicode_minus'] = False
fig=plt.figure(figsize=(15,15))   
ax=fig.add_subplot(1,1,1)
ax.plot(ss[1000])
# ax.set_xlim(0,1000)
# ax.set_ylim(-3,14)
ax.set_xlabel('area range',fontsize=30)
ax.set_ylabel('salinity',fontsize=30)
ax.tick_params(which='major',direction='out', pad=8,labelsize=25,length=10,\
                axis='both',bottom=True, left=True, right=False, top=False)
ax.set_title('t=1000s',fontsize=30)


图片如下:


8ed4f34af6914eca9407805b32b58acb.png

a9c64bfa169f4e1198dc37d2a0d80a46.png

b43537db14834d2ca42cbc6d14e75cdb.png


分析结论:


μ<1时,蛙跃格式是稳定的,但是会有频散现象发生,耗散比较小,盐度场峰值基本保持不变;μ>1时,明显看到格式不稳定。


方案2、迎风格式(时间用前差,距离用后差)


0cefcd504d9347b4bd0c289c39f1bae4.png

5ca47c7aac8b41c28e24c22a2ddc4711.png

8105fa7431424e2f914a5fad84e0fdc5.png


python 核心代码如下:


for n  in range(2001):
    for  j in range(1001):
        if (j==1):
            s1=ss[n,j]
            ss[n+1,j]=ss[n,j]-mu*(ss[n,j]-s1)
        else :
            ss[n+1,j]=ss[n,j]-mu*(ss[n,j]-ss[n,j-1])


图片如下:


7624164008864d57bc8889d88cdbdaee.png69b819e3eece4a439f5b3132fd545595.png62aae5bdefd643abb6517eb870909856.png


分析结论:

在μ<1时,迎风格式是稳定的,没有发生频散,但是发生耗散,盐柱的棱角变得圆滑。μ>1时,格式变得不稳定。。


方案3、欧拉格式(时间用前差,距离用中央差)


fe19fbe6583345e9becb278752505770.pnga86a249f8e184609ac2013dd95e0ac6d.png

8d3b8520b0a2484d84a5accbe417bc93.png


python 核心代码:


for n  in range(2001):
    for  j in range(1001):
        if (j==1):
            s1=ss[n,j]
            ss[n+1,j]=ss[n,j]-0.5*mu*(ss[n,j+1]-s1)
        else :
            ss[n+1,j]=ss[n,j]-0.5*mu*(ss[n,j+1]-ss[n,j-1])


图片如下:

3379184348a84d97985cbc36812930db.png532de27fa3ea437cb0dc21c165a8224a.png


8dcbfba440a94dec8e1bbcd64f2ca6b7.png


分析结论:

欧拉法是一种绝对不稳定的格式,无论mu取多小,都是不稳定的


方案4、lax格式(在欧拉格式右边增加一个耗散项)


49b8591924764240a2f2d99a4890d4f9.png

271f202cd3b74666a5b068aada177afa.png

7ddc105084064e169910bdaa4a861d26.png


python 核心代码:


mu=1.1
miu2=u*u*dt/(dx*dx)
for n  in range(2001):
    for  j in range(1001):
        if (j==1):
            s1=ss[n,j]
            ss[n+1,j]=ss[n,j]-0.5*mu*(ss[n,j+1])+0.5*mu*s1+miu2*ss[n,j+1]-2*miu2*ss[n,j]+miu2*s1
        else :
            ss[n+1,j]=ss[n,j]-0.5*mu*(ss[n,j+1])+0.5*mu*ss[n,j-1]+miu2*ss[n,j+1]-2*miu2*ss[n,j]+miu2*ss[n,j-1]


图片如下:


92e157be57914d649a4d355715d66154.png65753b3c30aa4c8c9915ce3231ca611a.png64483afa4e704cdc822a0d30337de6a8.png


分析结论:

在μ<1时,此格式是稳定的,有少许频散,耗散也比较少,盐度值是比较稳定的。
在μ>1时,格式不稳定。

ps:代码可能有点粗糙,只是简单记录一下,欢迎评论讨论。


            一个努力学习python的海洋人
            水平有限,欢迎指正!!!
            欢迎评论、收藏、点赞、转发、关注。
            关注我不后悔,记录学习进步的过程~~


相关文章
|
2月前
|
设计模式 SQL 人工智能
Python设计模式:从代码复用到系统架构的实践指南
本文以Python为实现语言,深入解析23种经典设计模式的核心思想与实战技巧。通过真实项目案例,展示设计模式在软件开发中的结构化思维价值,涵盖创建型、结构型、行为型三大类别,并结合Python动态语言特性,探讨模式的最佳应用场景与实现方式,帮助开发者写出更清晰、易维护的高质量代码。
71 1
|
2月前
|
设计模式 人工智能 算法
Python设计模式:从代码复用到系统架构的实践指南
本文探讨了电商系统中因支付方式扩展导致代码臃肿的问题,引出设计模式作为解决方案。通过工厂模式、策略模式、单例模式等经典设计,实现代码解耦与系统扩展性提升。结合Python语言特性,展示了模块化、装饰器、适配器等模式的实战应用,并延伸至AI时代的设计创新,帮助开发者构建高内聚、低耦合、易维护的软件系统。
246 0
|
6月前
|
SQL 自然语言处理 数据库
【Azure Developer】分享两段Python代码处理表格(CSV格式)数据 : 根据每列的内容生成SQL语句
本文介绍了使用Python Pandas处理数据收集任务中格式不统一的问题。针对两种情况:服务名对应多人拥有状态(1/0表示),以及服务名与人名重复列的情况,分别采用双层for循环和字典数据结构实现数据转换,最终生成Name对应的Services列表(逗号分隔)。此方法高效解决大量数据的人工处理难题,减少错误并提升效率。文中附带代码示例及执行结果截图,便于理解和实践。
147 4
|
2月前
|
设计模式 人工智能 算法
python 设计模式
工厂模式是一种创建型设计模式,通过定义创建对象的接口,将实例化延迟到子类,实现对象创建与使用的分离。它包括简单工厂模式、工厂方法模式和抽象工厂模式,适用于不同复杂度的对象创建场景,提高系统灵活性和可扩展性。
|
3月前
|
Python
Python编程基石:整型、浮点、字符串与布尔值完全解读
本文介绍了Python中的四种基本数据类型:整型(int)、浮点型(float)、字符串(str)和布尔型(bool)。整型表示无大小限制的整数,支持各类运算;浮点型遵循IEEE 754标准,需注意精度问题;字符串是不可变序列,支持多种操作与方法;布尔型仅有True和False两个值,可与其他类型转换。掌握这些类型及其转换规则是Python编程的基础。
196 33
|
2月前
|
数据采集 分布式计算 大数据
不会Python,还敢说搞大数据?一文带你入门大数据编程的“硬核”真相
不会Python,还敢说搞大数据?一文带你入门大数据编程的“硬核”真相
71 1
|
3月前
|
设计模式 安全 Python
Python编程精进:正则表达式
正则表达式是一种强大的文本处理工具,用于搜索、匹配和提取模式。本文介绍了正则表达式的语法基础,如`\d`、`\w`等符号,并通过实例展示其在匹配电子邮件、验证电话号码、处理日期格式等场景中的应用。同时,文章提醒用户注意性能、编码、安全性等问题,避免常见错误,如特殊字符转义不当、量词使用错误等。掌握正则表达式能显著提升文本处理效率,但需结合实际需求谨慎设计模式。
129 2
|
4月前
|
数据采集 安全 BI
用Python编程基础提升工作效率
一、文件处理整明白了,少加两小时班 (敲暖气管子)领导让整理100个Excel表?手都干抽筋儿了?Python就跟铲雪车似的,哗哗给你整利索!
112 11
|
6月前
|
人工智能 Java 数据安全/隐私保护
[oeasy]python081_ai编程最佳实践_ai辅助编程_提出要求_解决问题
本文介绍了如何利用AI辅助编程解决实际问题,以猫屎咖啡的购买为例,逐步实现将购买斤数换算成人民币金额的功能。文章强调了与AI协作时的三个要点:1) 去除无关信息,聚焦目标;2) 将复杂任务拆解为小步骤,逐步完成;3) 巩固已有成果后再推进。最终代码实现了输入验证、单位转换和价格计算,并保留两位小数。总结指出,在AI时代,人类负责明确目标、拆分任务和确认结果,AI则负责生成代码、解释含义和提供优化建议,编程不会被取代,而是会更广泛地融入各领域。
178 28
|
6月前
|
Python
[oeasy]python074_ai辅助编程_水果程序_fruits_apple_banana_加法_python之禅
本文回顾了从模块导入变量和函数的方法,并通过一个求和程序实例,讲解了Python中输入处理、类型转换及异常处理的应用。重点分析了“明了胜于晦涩”(Explicit is better than implicit)的Python之禅理念,强调代码应清晰明确。最后总结了加法运算程序的实现过程,并预告后续内容将深入探讨变量类型的隐式与显式问题。附有相关资源链接供进一步学习。
81 4

推荐镜像

更多