当前位置: 首页 > news >正文

Gemini PT-2D

using Metal using KernelAbstractions using ParallelStencil using ParallelStencil.FiniteDifferences2D @init_parallel_stencil(Metal, Float32, 2) using GLMakie # 1. 计算通量 qx 和 qy (带阻尼项的 PT 格式) @parallel function compute_flux!(qx, qy, T, kx, ky, θ, Δx, Δy) # 使用 θ (阻尼) 来限制通量的变化量 @all(qx) = (@all(qx) * θ + (-@all(kx) * @d_xi(T) / Δx)) / (1.0f0 + θ) @all(qy) = (@all(qy) * θ + (-@all(ky) * @d_yi(T) / Δy)) / (1.0f0 + θ) return nothing end # 2. 更新温度 T (基于通量散度) @parallel function compute_T!(T, qx, qy, dτ_T, Δx, Δy) @inn(T) = @inn(T) - dτ_T * (@d_xa(qx)/Δx + @d_ya(qy)/Δy) return nothing end # 3. 设置边界条件 @parallel_indices (ix, iy) function set_BCs!(T) nx, ny = size(T) if ix <= nx && iy == ny; T[ix, ny] = 0.0f0; end # Top = 0 if ix <= nx && iy == 1; T[ix, 1] = 1000.0f0; end # Bottom = 1000 # 左右边界默认绝热 (ParallelStencil 的 @inn 只更新内部,边界不变) return end function PT_solver_2D() # --- 物理与网格参数 --- L, H = 10000.0f0, 10000.0f0 nx, ny = 128, 128 x = range(0.0f0, L, length=nx) y = range(-H, 0.0f0, length=ny) Δx, Δy = L/(nx-1), H/(ny-1) # --- PT 算法核心参数 --- Vp = 1.0f0 # 数值波速 re_pt = 0.7f0 * Float32(π) # 数值雷诺数 (2D 建议在 0.5π 到 π 之间) CFL = 0.4f0 # 2D 安全库朗数 dτ_T = CFL * min(Δx, Δy) / Vp # 温度伪时间步长 θ = (re_pt * min(Δx, Δy)) / L # 阻尼系数 # ---------------------- # 数组初始化 T = @zeros(nx, ny) qx = @zeros(nx-1, ny) qy = @zeros(nx, ny-1) kx = @fill(3.0f0, nx-1, ny) ky = @fill(3.0f0, nx, ny-1) # 初始猜测值:线性初始化 (Bottom 1000 -> Top 0) 极大提高稳定性 T_cpu = [1000.0f0 * (1.0f0 + iy/ny) for ix in 1:nx, iy in 1:ny] # 简易斜坡 copyto!(T, Float32.(T_cpu)) @parallel set_BCs!(T) # 可视化设置 T_obs = Observable(Array(T)) fig = Figure(resolution=(800, 700)) ax = Axis(fig[1, 1], title="PT Steady State Diffusion", xlabel="x [km]", ylabel="y [km]") hm = heatmap!(ax, x/1e3, y/1e3, T_obs, colormap=:inferno) Colorbar(fig[1, 2], hm) display(fig) # 迭代循环 max_iter = 20000 n_check = 500 println("2D PT 求解器启动 (网格: $nx x $ny)") for iter = 1:max_iter @parallel compute_flux!(qx, qy, T, kx, ky, θ, Δx, Δy) @parallel compute_T!(T, qx, qy, dτ_T, Δx, Δy) @parallel set_BCs!(T) if iter % n_check == 0 T_host = Array(T) if any(isnan, T_host) error("发散了!请减小 CFL 或 re_pt") end T_obs[] = T_host yield() println("迭代次数: $iter / $max_iter") end end return Array(T) end T_final = PT_solver_2D()
http://www.jsqmd.com/news/477404/

相关文章:

  • 库早报|OPPO:无感折痕屏背后有两项3D打印技术;威拉里三期项目开工;五轴3D打印机TOP.E R1将亮相TCT亚洲展
  • 性价比高的铝方通哪个靠谱
  • 基于电压电流双闭环和模糊PID双环的VIENNA整流器仿真研究
  • 2026年,宁夏装修公司推荐哪家?业主实测top3家正规机构,装修小白不踩坑,附避坑指南! - 宁夏壹山网络
  • 电力弹簧主动配电网规划及优化运行调度策略探讨
  • 2026养发加盟项目怎么选?新手创业实用指南 - 品牌排行榜
  • 2026年七大闷声赚钱的AI技能
  • Deep Seek总结的APSW 和 SQLite 的关系
  • 部分视图 PartialView的详细介绍与经典用法
  • 一次性说清楚restTemplate如何使用1
  • 基于Zynq UltraScale+的FLASH固化问题记录
  • VSAR 软件 XCP/CCP 在线与离线测量操作指南
  • 矿用本安型全景雷达物位扫描仪的应用
  • AI重构小家电:恒享花有限公司与海尔在AWE以标准引领服务展示先行者的“新逻辑”与“慢功夫” - 博客湾
  • 基于 Anthropic SDK 实现 Token 统计与模型分流:原理、实践与代码示例
  • LangChain与LangGraph:让大模型开发更简单,小白也能轻松掌握(收藏必备)
  • IACheck助力食品接触材料检测报告审核:AI报告审核确保纸制品迁移量数据精准可靠
  • 马行为检测数据集470张VOC+YOLO格式
  • UniApp+Vue3集成DeepSeek AI聊天实战
  • 2026比表面积仪厂家推荐及核心技术解析 - 品牌排行榜
  • 收藏!985硕士斩获百度大模型岗,30k×16年薪近50万,小白/程序员必看
  • 求职招工招聘找活名片信息分类同城工地招工网站源码tp框架多端适配自定义样式模版切换.
  • 2026比表面积仪厂商技术实力盘点:聚焦精准分析解决方案 - 品牌排行榜
  • Openclaw小龙虾调研报告与实战
  • 建筑蓝色天棚检测数据集1184张
  • CY0256换电柜电源为您报价护航
  • 2026年多球面组合防腐防锈,优质厂家推荐,国内多球面组合排行技术实力与市场典范解析 - 品牌推荐师
  • 收藏!小白也能看懂的大模型入门:RAG让AI更强大!
  • [I.2]个人作业:软件案例分析
  • LNMP 网站架构与部署实战手册