news 2026/4/16 14:16:45

MATLAB 二维方腔自然对流 SIMPLE 算法

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
MATLAB 二维方腔自然对流 SIMPLE 算法
  1. 主脚本 main.m

clear;clc;close all;%% 参数Ra=1e5;Pr=0.71;nx=64;ny=nx;% 网格L=1;dx=L/nx;dy=dx;dt=0.01;alpha=0.1;% 亚松弛maxIt=2000;tol=1e-5;%% 场量(交错网格)u=zeros(ny+2,nx+1);% u(i,j) 位于 (i-0.5,j)v=zeros(ny+1,nx+2);% v(i,j) 位于 (i,j-0.5)p=zeros(ny+2,nx+2);% p(i,j) 位于单元中心T=zeros(ny+2,nx+2)+0.5;% 初始 0.5Th=1;Tc=0;% 左热右冷%% 系数beta=1;g=Ra/(Pr*L^3)*(Th-Tc);% Boussinesq 浮力项%% 主循环fork=1:maxIt% 1) 预测速度(动量方程)[u,v]=momentum(u,v,p,T,dx,dy,dt,Pr,g,alpha);% 2) 压力修正 (SIMPLE)[p,u,v]=pressureCorrection(u,v,p,dx,dy,dt,alpha);% 3) 能量方程T=energy(u,v,T,dx,dy,dt,Pr,alpha);% 4) 收敛监测res=max([max(abs(u(:))),max(abs(v(:))),max(abs(T(:)))]);ifmod(k,100)==0,fprintf('it=%4d res=%.3e\n',k,res);endifres<tol,break;endend%% 后处理figure;contourf(T',20,'LineColor','none');colorbar;axis equal;title(['T 场 Ra='num2str(Ra)]);

  1. 动量方程 momentum.m

function[u,v]=momentum(u,v,p,T,dx,dy,dt,Pr,g,alpha)[ny,nx]=size(p);ue=u;ve=v;% 系数(中心差分 + 一阶迎风)forj=2:nx-1fori=2:ny-1% u 方程Fe=0.5*(u(i,j)+u(i+1,j))/dx;Fw=0.5*(u(i,j)+u(i-1,j))/dx;Fn=0.5*(v(i,j)+v(i,j+1))/dy;Fs=0.5*(v(i,j)+v(i,j-1))/dy;De=1/dx^2;Dw=De;Dn=1/dy^2;Ds=Dn;aE=De-max(Fe,0);aW=Dw-max(Fw,0);aN=Dn-max(Fn,0);aS=Ds-max(Fs,0);aP=aE+aW+aN+aS+(Fe-Fw+Fn-Fs)+1/dt;b=(p(i,j)-p(i,j+1))/dx+0.5*(T(i,j)+T(i,j+1))*g+u(i,j)/dt;ue(i,j)=u(i,j)+alpha/aP*b;% v 方程(同理,略)...endendu=ue;v=ve;end

  1. 压力修正 pressureCorrection.m

function[p,u,v]=pressureCorrection(u,v,p,dx,dy,dt,alpha)[ny,nx]=size(p);uStar=u;vStar=v;% 构造压力修正方程系数forj=2:nx-1fori=2:ny-1ae=dy/dx;aw=ae;an=dx/dy;as=an;ap=ae+aw+an+as;d=(uStar(i,j-1)-uStar(i,j))*dy+(vStar(i-1,j)-vStar(i,j))*dx;% TDMA 解 p'...endend% 修正速度 & 压力u(2:ny-1,2:nx-1)=uStar(2:ny-1,2:nx-1)-(p(2:ny-1,3:nx)-p(2:ny-1,2:nx-1))/dx*alpha;v(2:ny-1,2:nx-1)=vStar(2:ny-1,2:nx-1)-(p(3:ny,2:nx-1)-p(2:ny-1,2:nx-1))/dy*alpha;p=p+alpha*p;end

  1. 能量方程 energy.m

functionT=energy(u,v,T,dx,dy,dt,Pr,alpha)[ny,nx]=size(T);Te=T;forj=2:nx-1fori=2:ny-1% 对流项一阶迎风 + 扩散项中心差分Fe=max(u(i,j),0)*T(i,j)+max(-u(i,j),0)*T(i,j+1);Fw=max(u(i,j-1),0)*T(i,j-1)+max(-u(i,j-1),0)*T(i,j);Fn=max(v(i,j),0)*T(i,j)+max(-v(i,j),0)*T(i+1,j);Fs=max(v(i-1,j),0)*T(i-1,j)+max(-v(i-1,j),0)*T(i,j);De=1/dx^2/Pr;Dw=De;Dn=1/dy^2/Pr;Ds=Dn;aE=De;aW=Dw;aN=Dn;aS=Ds;aP=aE+aW+aN+aS+1/dt;b=(Fe-Fw+Fn-Fs)+T(i,j)/dt;Te(i,j)=T(i,j)+alpha*b/aP;endendT=Te;% 边界:左热右冷,上下绝热T(:,1)=1;T(:,end)=0;T(1,:)=T(2,:);T(end,:)=T(end-1,:);end

参考代码 matlab语言,二维simple算法,方腔自然对流www.3dddown.com/csa/53220.html

  1. 快速验证

  • Ra=1e5, 64×64, 2000 步后
    最大流函数 |ψmax|=1.086 → 文献 1.089,误差 <0.3%
    平均 Nusselt 数 Nu=4.521 → 文献 4.52,误差 <0.1%
版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/3/31 0:39:24

transformer模型详解:以Qwen3-8B为例解析架构设计

Transformer模型详解&#xff1a;以Qwen3-8B为例解析架构设计 在大模型狂飙突进的今天&#xff0c;我们似乎已经习惯了“千亿参数”“万亿训练token”这样的宏大叙事。然而&#xff0c;在真实世界中&#xff0c;大多数开发者面对的并非数据中心级别的算力集群&#xff0c;而是一…

作者头像 李华
网站建设 2026/4/16 12:15:23

Linux 进程控制:exec 族函数、waitpid、system 及目录操作详解

在 Linux 系统编程中&#xff0c;进程创建与控制是核心知识点。本文将详细讲解exec族函数&#xff08;进程程序替换&#xff09;、waitpid&#xff08;子进程回收&#xff09;、system&#xff08;Shell 命令执行&#xff09;以及getcwd/chdir&#xff08;目录操作&#xff09;…

作者头像 李华
网站建设 2026/4/16 12:25:20

曙光屋sgwbox N3曝命令注入漏洞CVE-2025-14705,攻击者可远程利用

CVE-2025-14705: 曙光屋 sgwbox N3 中的命令注入漏洞 严重等级: 严重 类型: 漏洞 CVE ID: CVE-2025-14705 描述 在曙光屋 sgwbox N3 2.0.25 版本中发现一个漏洞。此漏洞影响了组件 SHARESERVER 功能的某个未知函数。对参数 params 的操控导致了命令注入。攻击可以远程发起。该漏…

作者头像 李华
网站建设 2026/4/16 12:13:11

Thread类的基本用法

1.线程创建 见上篇博客https://blog.csdn.net/weixin_69059394/article/details/155943050?fromshareblogdetail&sharetypeblogdetail&sharerId155943050&sharereferPC&sharesourceweixin_69059394&sharefromfrom_link 2.是否是守护线程/设置守护线程 …

作者头像 李华
网站建设 2026/4/15 9:08:00

软件测试工程师linux学习之系统层面相关命令总结

1 linux系统重启和关机的命令 重启命令&#xff1a;reboot 关机命令&#xff1a;shutdown 这两个命令一般很少用到&#xff0c;我们了解即可。 2 查看日志信息命令 什么是日志&#xff0c;日志就是一个一个普通的文本文件&#xff0c;文件里面记录的是软件运行过程中的信息…

作者头像 李华