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

news2024/9/21 0:38:16

🎯要点

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

📜偏微分方程用例: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)+4

from 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.coloradmin.cn/o/1870249.html

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

相关文章

MMCV【mmclassification】 从0到1 之 Docker 容器环境搭建步骤总结

🥇 版权: 本文由【墨理学AI】原创首发、各位读者大大、敬请查阅、感谢三连 🎉 声明: 作为全网 AI 领域 干货最多的博主之一,❤️ 不负光阴不负卿 ❤️ 文章目录 📙 Linux 下 Docker 安装环境检查Docker 安装 [ root 或者 sudo 权限用户可安装 ]给 普通用户 加入 Docker …

非最大值抑制(NMS)函数

非最大值抑制(NMS)函数 flyfish 非最大值抑制(Non-Maximum Suppression, NMS)是计算机视觉中常用的一种后处理技术,主要用于目标检测任务。其作用是从一组可能存在大量重叠的候选边界框中,筛选出最具代表…

软件必须要进行跨浏览器测试吗?包括哪些内容和注意事项?

随着互联网的普及和发展,用户对软件的要求越来越高。无论是在台式机、笔记本还是移动设备上,用户都希望能够以最好的体验来使用软件。然而,不同的浏览器在解析网页的方式、支持的技术标准等方面存在差异,这就导致了同一个网页在不…

LeetCode 585, 438, 98

目录 585. 2016年的投资题目链接表要求知识点思路代码 438. 找到字符串中所有字母异位词题目链接标签思路代码 98. 验证二叉搜索树题目链接标签合法区间思路代码 中序遍历思路代码 585. 2016年的投资 题目链接 585. 2016年的投资 表 表Insurance的字段为pid、tiv_2015、tiv…

RabbitMQ WEB管理端介绍

页面功能概览 Overview(概述)Connections(连接)Channels(通道)Exchanges(交换器)Queues(队列)Admin(用户管理)。 1. Overview(概述) 主要分为三部分 1.1 Queued messages(所有队列的消息情况) Ready:待消费的消息总数Unacked:待应…

抖音集成:通过MessageBox引领数字化营销新潮流

抖音集成:通过MessageBox引领数字化营销新潮流 在数字化营销的大潮中,企业需要不断探索新的方式来优化其营销策略,以抓住更多的市场机会。抖音作为一款全球知名的短视频社交平台,凭借其庞大的用户群体和高度互动的特性&#xff0…

[leetcode]24-game

. - 力扣&#xff08;LeetCode&#xff09; class Solution { public:static constexpr int TARGET 24;static constexpr double EPSILON 1e-6;static constexpr int ADD 0, MULTIPLY 1, SUBTRACT 2, DIVIDE 3;bool judgePoint24(vector<int> &nums) {vector&l…

A股跌懵了,股民一片茫然!

今天的A股跌懵了&#xff0c;股民一片茫然&#xff01;让人脸色苍白&#xff0c;盘面上出现了非常奇怪的一幕&#xff0c;不废话&#xff0c;直接说重点&#xff1a; 1、今天两市低开低走&#xff0c;跌懵了&#xff0c;昨晚人民币汇率大幅贬值&#xff0c;创下7.3的记录&#…

转转游戏MQ重构:思考与心得之旅

文章目录 1 背景1.1 起始之由1.2 重构前现状1.3 问题分析 2 重构2.1 目标2.2 制定方案2.2.1 架构设计2.2.2 实施计划2.2.3 测试计划 2.3 部分细节设计 3. 总结 1 背景 游戏业务自 2017 年启航&#xff0c;至今已近乎走过七个春秋&#xff0c;历经漫长岁月的发展&#xff0c;不…

SpringSecutrity原理

一、基于RBAC实现的权限管理通常需要涉及以下几张表&#xff1a; 1. 用户表&#xff08;user&#xff09;&#xff1a;记录系统中的所有用户&#xff0c;包括用户ID、用户名、密码等信息。 2. 角色表&#xff08;role&#xff09;&#xff1a;记录系统中的所有角色&#xff0…

【MySQL】(基础篇十七) —— 存储过程

存储过程 本文将介绍什么是存储过程&#xff0c;为什么要使用存储过程以及如何使用存储过程&#xff0c;并且介绍创建和使用存储过程的基本语法。 MySQL的存储过程是预编译的SQL语句集合&#xff0c;它们作为一个可执行单元存储在数据库中。存储过程能够封装复杂的业务逻辑&a…

分享一款永久免费内网穿透工具——巴比达内网穿透

最近在做web项目&#xff0c;想办法将web项目映射到公网进行访问&#xff0c;由于没有固定IP&#xff0c;只能使用内网穿透的方法&#xff0c;于是在网上搜索了一番&#xff0c;只有神卓互联旗下的这款巴比达内网穿透是真正免费的&#xff0c; 其它的要么用不了、要么限制没有流…

文件进行周期性备份后权限更改的解决方案--使用脚本和定时任务

这里写目录标题 背景现象解决方案原因分析面临的问题解决思路操作步骤每个文件夹权限分配表测试chmod和chown两个命令是否可行写脚本实现定时同步同时修改权限 异地同步改权限在NAS上生成SSH密钥对将NAS的公钥复制到Linux服务器在NAS上编写同步脚本在NAS上执行脚本&#xff0c;…

记录一次OPDS trunc()函数使用错误

说明&#xff1a;本文介绍 场景 在一次SQL查询时&#xff0c;需要对结果值保留两位小数&#xff0c;不四舍五入&#xff0c;直接截取到小数点后两位。如 59.156到59.15&#xff0c;23.2134到23.21&#xff0c;查看官方帮助文档&#xff08;https://help.aliyun.com/zh/maxcom…

【分享】30秒在线自助制作电子证件照

近期由于自己需要制作电子证件照&#xff0c;所以在网上找在线制作电子证件照的网站&#xff0c;找了很多网站都是收费的&#xff0c;也下载了很多app制作&#xff0c;都是要收费的。最后&#xff0c;所以索性自己开发一个网站制作电子证件照。这里分享给需要的朋友。&#xff…

探索Android架构设计

Android 应用架构设计探索&#xff1a;MVC、MVP、MVVM和组件化 MVC、MVP和MVVM是常见的三种架构设计模式&#xff0c;当前MVP和MVVM的使用相对比较广泛&#xff0c;当然MVC也并没有过时之说。而所谓的组件化就是指将应用根据业务需求划分成各个模块来进行开发&#xff0c;每个…

14、电科院FTU检测标准学习笔记-录波功能2

作者简介&#xff1a; 本人从事电力系统多年&#xff0c;岗位包含研发&#xff0c;测试&#xff0c;工程等&#xff0c;具有丰富的经验 在配电自动化验收测试以及电科院测试中&#xff0c;本人全程参与&#xff0c;积累了不少现场的经验 ———————————————————…

力扣:203. 移除链表元素(Java)

目录 题目描述&#xff1a;示例 1&#xff1a;示例 2&#xff1a;代码实现&#xff1a; 题目描述&#xff1a; 给你一个链表的头节点 head 和一个整数 val &#xff0c;请你删除链表中所有满足 Node.val val 的节点&#xff0c;并返回 新的头节点 。 示例 1&#xff1a; 输入…

C++学习笔记---POCO库

在Windows系统中安装POCO 1&#xff09;安装OpenSSL POCO编译安装依赖OpenSSL&#xff0c;如果未安装OpenSSL则应该先安装OpenSSL。 假设将OpenSSL安装在C:\OpenSSL-Win64&#xff0c;将C:\OpenSSL-Win64、C:\OpenSSL-Win64\lib添加到PATH环境变量中2&#xff09;安装POCO 将p…

这不是危言耸听!时序Transformer颠覆传统,历史级突破!

【时间序列Transformer】在近年来的深度学习领域中备受关注&#xff0c;它通过将Transformer架构应用于时间序列数据&#xff0c;显著提升了模型在长时间依赖建模和复杂模式识别任务中的表现。时间序列Transformer技术已经在金融预测、气象预报和健康监测等多个领域取得了显著成…