Python湍流隐式模型耗散粘性方程和大涡流模拟

🎯要点

🎯达朗贝尔一维波动通解,二维变速模拟 | 🎯达朗贝尔算子解双曲波形微分方程 | 🎯耗散系统粘性伯格斯方程快速傅里叶变换算法 | 🎯二维线性和非线性对流扩散解和湍流隐式建模

📜偏微分方程用例:Python自动造波器椭圆曲线波孤子解

📜有限差分用例:Python微磁学磁倾斜和西塔规则算法
在这里插入图片描述
在这里插入图片描述

🍇Python一维粘性伯格斯方程

一维空间中粘性伯格斯方程的一般形式是耗散系统:
∂ u ∂ t + u ∂ u ∂ x = ν ∂ 2 u ∂ x 2 \frac{\partial u}{\partial t}+u \frac{\partial u}{\partial x}=\nu \frac{\partial^2 u}{\partial x^2} tu+uxu=νx22u
此项 u ∂ u / ∂ x u \partial u / \partial x uu/x 也可以重写为 ∂ ( u 2 / 2 ) / ∂ x \partial\left(u^2 / 2\right) / \partial x (u2/2)/x。当扩散项不存在时(即 ν = 0 \nu=0 ν=0​ ),粘性伯格斯程变为无粘伯格斯方程:
∂ u ∂ t + u ∂ u ∂ x = 0 \frac{\partial u}{\partial t}+u \frac{\partial u}{\partial x}=0 tu+uxu=0
这是可以产生不连续性(冲击波)的守恒方程的原型。

当人们检查等式的左侧时, ν \nu ν 的小值形成锐梯度的原因就变得直观清楚了。此项 ∂ / ∂ t + u ∂ / ∂ x \partial / \partial t+u \partial / \partial x /t+u/x 显然是一个波算子,描述以 u u u 速度沿正 x x x 方向传播的波。由于波速为 u u u,表现出较大 u u u值的区域将比表现出较小 u u u值的区域更快地向右传播;换句话说,如果 u u u 最初沿 x x x 方向减小,则位于背面的较大 u u u 将赶上位于正面的较小 u u u 。右侧扩散项的作用本质上是阻止梯度变得无穷大。

在此,我们将使用非线性对流和扩散,仅创建一维伯格方程。
∂ u ∂ t + u ∂ u ∂ x = ν ∂ 2 u ∂ x 2 \frac{\partial u}{\partial t}+u \frac{\partial u}{\partial x}=\nu \frac{\partial^2 u}{\partial x^2} tu+uxu=νx22u
我们可以离散化这个微分,采用以下形式:
u i n + 1 − u i n Δ t + u i n u i n − u i − 1 n Δ x = v u i + 1 n − 2 u i n + u i − 1 n Δ x 2 \frac{u_i^{n+1}-u_i^n}{\Delta t}+u_i^n \frac{u_i^n-u_{i-1}^n}{\Delta x}=v \frac{u_{i+1}^n-2 u_i^n+u_{i-1}^n}{\Delta x^2} Δtuin+1uin+uinΔxuinui1n=vΔx2ui+1n2uin+ui1n
在解决了未知数之后,我们得到了用 Python 编码的算法。
u i n + 1 = u i n − u i n Δ t Δ x ( u i n − u i − 1 n ) + v Δ t Δ x 2 ( u i + 1 n − 2 u i n + u i − 1 n ) u_i^{n+1}=u_i^n-u_i^n \frac{\Delta t}{\Delta x}\left(u_i^n-u_{i-1}^n\right)+v \frac{\Delta t}{\Delta x^2}\left(u_{i+1}^n-2 u_i^n+u_{i-1}^n\right) uin+1=uinuinΔxΔt(uinui1n)+vΔx2Δt(ui+1n2uin+ui1n)
速度的初始条件是使用以下函数创建的:
u = − 2 v ϕ ∂ ϕ ∂ x + 4 ϕ = exp ⁡ ( − x 2 4 v ) + exp ⁡ ( − ( x − 2 π ) 2 4 v ) \begin{aligned} u & =-\frac{2 v}{\phi} \frac{\partial \phi}{\partial x }+4 \\ \phi & =\exp \left(\frac{- x ^2}{4 v}\right)+\exp \left(\frac{-( x -2 \pi)^2}{4 v}\right) \end{aligned} uϕ=ϕ2vxϕ+4=exp(4vx2)+exp(4v(x2π)2)
边界条件意味着周期性,由下式给出:
u ( 0 ) = u ( 2 π ) u(0)=u(2 \pi) u(0)=u(2π)
有一个解析解:
u = − 2 v ϕ ∂ ϕ ∂ x + 4 ϕ = exp ⁡ ( − ( x − 4 t ) 2 4 v ( t + 1 ) ) + exp ⁡ ( − ( x − 4 t − 2 π ) 2 4 v ( t + 1 ) ) \begin{aligned} & u =-\frac{2 v}{\phi} \frac{\partial \phi}{\partial x }+4 \\ & \phi=\exp \left(\frac{-( x -4 t )^2}{4 v( t +1)}\right)+\exp \left(\frac{-( x -4 t -2 \pi)^2}{4 v( t +1)}\right) \end{aligned} u=ϕ2vxϕ+4ϕ=exp(4v(t+1)(x4t)2)+exp(4v(t+1)(x4t2π)2)
解该问题的Python代码如下:

import numpy as np
import sympy as sp
import pylab as pl
pl.ion()x, nu, t = sp.symbols('x nu t')
phi = sp.exp(-(x-4*t)**2/(4*nu*(t+1))) + sp.exp(-(x-4*t-2*np.pi)**2/(4*nu*(t+1)))phiprime = phi.diff(x)
u = -2*nu*(phiprime/phi)+4from sympy.utilities.lambdify import lambdify
ufunc = lambdify ((t, x, nu), u)nx = 101 
nt = 100 
dx = 2*np.pi/(nx-1) 
nu = 0.07 
dt = dx*nu 
T = nt*dt grid = np.linspace(0, 2*np.pi, nx) 
un = np.empty(nx) 
t = 0
u = np.asarray([ufunc(t, x, nu) for x in grid])pl.figure(figsize=(11,7), dpi=100)
pl.plot(grid,u, marker='o', lw=2)
pl.xlim([0,2*np.pi])
pl.ylim([0,10])
pl.xlabel('X')
pl.ylabel('Velocity') 
pl.title('1D Burgers Equation - Initial condition')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(T, xi, nu) for xi in grid])pl.figure(figsize=(11,7), dpi=100)
pl.plot(grid, u, marker='o', lw=2, label='Computational')
pl.plot(grid, u_analytical, label='Analytical')
pl.xlim([0, 2*np.pi])
pl.ylim([0,10])
pl.legend()
pl.xlabel('X')
pl.ylabel('Velocity') 
pl.title('1D Burgers Equation - Solutions')

👉参阅:计算思维 | 亚图跨际

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/pingmian/36452.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

[行业原型] Web端原型案例:康欣医疗后台管理系统

​医疗管理系统是一个业务复杂,功能庞大的系统,以下为HIS医院管理系统的常见模块,供大家参考。 本周为大家带来Web端原型案例:康欣医疗后台管理系统,先上原型: 完整文档加班主任微信号 添加班主任回复 “1…

8个Unity开发高手都在用的秘密技巧!

1. 不要重新发明轮子,使用内置的引擎工具 在使用任何引擎时,比如Unity或Unreal Engine,一些开发者,主要是来自计算机科学领域的开发者,可能会倾向于从头开始开发大型算法或结构,而不去了解引擎中是否已经存…

我给我的学校写了个校园墙小程序

目录 前言 正文 事先声明 项目介绍 关于Github的一些点 ①贡献值的记录 ②Github中的Project是什么 ③Release和Package有什么区别 ④开源许可证之间的区别 尾声 🔭 Hi,I’m Pleasure1234🌱 I’m currently learning Vue.js,SpringBoot,Computer Securit…

vector的自实现(迭代器失效问题)与继承续讲

引子:在生活中,我们使用vector很频繁,我们是不是可以自己来实现一个呢?,其实也不难,我们在学过数据结构,就很easy啦! As we all kowmn,vector基础有以下函数! from my …

git 初基本使用-----------笔记(结合idea)

Git命令 下载git 打开Git官网(git-scm.com),根据自己电脑的操作系统选择相应的Git版本,点击“Download”。 基本的git命令使用 可以在项目文件下右击“Git Bash Here” ,也可以命令终端下cd到指定目录执行初始化命令…

YOLOv1 中的一些计算

YOLOv1 中的一些计算 位置参数计算 在训练过程中,需要分别计算真实框的位置参数 t x t_x tx​、 t y t_y ty​、 w w w、 h h h。 已知真实框的左上角点和右下角点坐标: g t [ x 1 , y 1 , x 2 , y 2 ] gt [x_1, y_1, x_2, y_2] gt[x1​,y1​,x2​…

vue elementui简易侧拉栏的使用

目的&#xff1a; 增加了侧拉栏&#xff0c;目的是可以选择多条数据展示数据 组件&#xff1a; celadon.vue <template><div class"LayoutMain"><el-aside :width"sidebarIsCollapse ? 180px : 0px" class"aside-wrap"><…

【机器学习】深度概率模型(DPM)原理和文本分类实践

1.引言 1.1.DPM模型简介 深度概率模型&#xff08;Deep Probabilistic Models&#xff09; 是结合了深度学习和概率论的一类模型。这类模型通过使用深度学习架构&#xff08;如神经网络&#xff09;来构建复杂的概率分布&#xff0c;从而能够处理不确定性并进行预测。深度概率…

Linux通过expect实现免交互

免交互 Here Document 用于将多行字符串直接传递给命令的方式&#xff0c;不需要人为交互命令界面&#xff0c;实现免交互 当使用Here Document操作文件时&#xff0c;需要借助一个文件结束符 EOF&#xff1a;文件结束符 示例 在脚本文件中写入以下内容 <<&#x…

AFLNet入门教学——测试RTSP协议实现Live555(Ubuntu)

1、简介 本文旨在使用AFLNet对RTSP协议实现Live555进行模糊测试。实验环境为&#xff1a;Ubuntu22.04.4AFLNet安装参考&#xff1a;AFLNet入门教学——安装&#xff08;Ubuntu22.04.4&#xff09;-CSDN博客 2、安装Live555 本次实验采取的是live555在2018年8月28日上传的版本…

nacos漏洞汇总

1 nacos介绍 1.1 nacos是啥 Alibaba Nacos是阿里巴巴推出来的一个新开源项目&#xff0c;是一个更易于构建云原生应用的动态服务发现、配置管理和服务管理平台。致力于帮助发现、配置和管理微服务。Nacos提供了一组简单易用的特性集&#xff0c;可以快速实现动态服务发现、服…

【Knowledge Graph Context-Enhanced Diversified Recommendation(MSDM2024)】

Knowledge Graph Context-Enhanced Diversified Recommendation 摘要 推荐系统&#xff08;RecSys&#xff09;领域已被广泛研究&#xff0c;以通过利用用户的历史交互来提高准确性。 尽管如此&#xff0c;这种对准确性的持续追求常常导致多样性的减少&#xff0c;最终导致众所…

全网最强MyBatisPlus教程 | 万字长文爆肝MyBatisPlus

MyBatisPlus 今日目标 基于MyBatisPlus完成标准Dao的增删改查功能 掌握MyBatisPlus中的分页及条件查询构建 掌握主键ID的生成策略 了解MyBatisPlus的代码生成器 1&#xff0c;MyBatisPlus入门案例与简介 这一节我们来学习下MyBatisPlus的入门案例与简介&#xff0c;这个和其他…

在线AI聊天对话机器人,答你所问!

随着AI人工智能技术的不断进步&#xff0c;AI聊天对话机器人已经成为我们日常生活中常用的工具。这些智能助手不仅能够提供信息查询、生活娱乐、学习辅导等服务&#xff0c;还能通过自然语言处理和机器学习技术理解用户的需求&#xff0c;提供个性化的回答和建议。下面小编就和…

选择第三方软件测试机构做验收测试的好处简析

企事业单位在自行开发完软件系统或委托软件开发公司生产软件之后&#xff0c;有一个必经流程就是验收测试&#xff0c;以验证该产品是否符合用户需求、是否可以上线。为了客观评估所委托生产的软件质量&#xff0c;第三方软件测试机构往往成为企事业单位做验收测试的首选&#…

如何有效降低云消息使用成本?涂鸦Pulsar云消息史诗级大更新来了!超级干货攻略快收藏

月末了&#xff0c;相信大家都会有信用卡额度超支的担忧&#xff0c;生怕一不留神就会超出预算&#xff0c;并且事后还需要仔细核对消费情况。类似的焦虑&#xff0c;也会出现在使用涂鸦 Pulsar 云消息服务时。虽然涂鸦 Pulsar 云消息能满足开发者对设备各类事件实时性和持久化…

ADI-DSP|在指定内存写入数据

一、LDF文件设置内存空间 user_data_test { TYPE(BW RAM) START(0x00380010) END(0x0039bfff) WIDTH(8) }//usr data dxe_user_data_bw BW{INPUT_SECTION_ALIGN(4)INPUT_SECTIONS( $OBJS_LIBS(user_data) )} > user_data_test 二、在C文件中设置数据 /************…

使用LabVIEW和示波器测试IGBT参数

使用LabVIEW和示波器测试绝缘栅双极型晶体管&#xff08;IGBT&#xff09;参数的综合解决方案。过程包括硬件设置、示波器和其他必要设备的配置&#xff0c;以及开发LabVIEW程序以自动化数据采集、过滤、关键参数计算和结果显示。该方法确保了IGBT测试的准确性、可靠性和高效性…

巡检机器人智能联网,促进工厂自动化

随着工业4.0和智能制造的快速发展&#xff0c;企业引入自动化设备和智能机器人以提高生产效率和降低人工成本已成为大势所趋。其中&#xff0c;巡检机器人作为一种能够在复杂和危险环境中进行自动巡检的设备&#xff0c;受到了广泛关注。如何实现巡检机器人稳定、安全的联网是每…

【光伏开发】工商业光伏的优势

随着全球对可再生能源的日益重视和环保意识的增强&#xff0c;工商业光伏作为一种清洁、高效的能源利用方式&#xff0c;正在得到广泛的推广和应用。工商业光伏系统通过安装在工厂、仓库、办公楼等工商业场所的太阳能电池板&#xff0c;将太阳能转化为电能&#xff0c;以满足工…