<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom"><channel><title>流体模拟 on Keqi的博客</title><link>https://yekq.top/tags/%E6%B5%81%E4%BD%93%E6%A8%A1%E6%8B%9F/</link><description>Recent content in 流体模拟 on Keqi的博客</description><generator>Hugo -- gohugo.io</generator><language>zh-cn</language><managingEditor>plloningye@gmail.com (Keqi Ye)</managingEditor><webMaster>plloningye@gmail.com (Keqi Ye)</webMaster><copyright>Keqi Ye</copyright><lastBuildDate>Fri, 17 Apr 2026 10:00:00 +0800</lastBuildDate><atom:link href="https://yekq.top/tags/%E6%B5%81%E4%BD%93%E6%A8%A1%E6%8B%9F/index.xml" rel="self" type="application/rss+xml"/><item><title>GASPHiA: GPU加速的光滑粒子流体动力学（SPH）代码</title><link>https://yekq.top/posts/gasphia/introduction/</link><pubDate>Tue, 17 Mar 2026 10:00:00 +0800</pubDate><author>plloningye@gmail.com (Keqi Ye)</author><guid>https://yekq.top/posts/gasphia/introduction/</guid><description>&lt;h1 id="gasphia-gpu加速的光滑粒子流体动力学代码">GASPHiA: GPU加速的光滑粒子流体动力学代码
&lt;/h1>&lt;p>GASPHiA 是一个高性能的三维 SPH（光滑粒子流体动力学）代码，由中山大学航空航天学院的叶科奇在其博士研究期间开发。该代码专为模拟复杂的流体动力学问题设计，特别是涉及材料强度、损伤和引力相互作用的问题。&lt;/p>
&lt;h2 id="特性">特性
&lt;/h2>&lt;h3 id="高性能与可扩展性">高性能与可扩展性
&lt;/h3>&lt;ul>
&lt;li>&lt;strong>全并行CUDA加速&lt;/strong>：充分利用现代NVIDIA GPU的大规模计算能力。&lt;/li>
&lt;li>&lt;strong>Barnes-Hut树算法&lt;/strong> [1-4]：实现邻居搜索（&lt;code>O(N log N)&lt;/code>）和自引力计算的加速，能够高效模拟大规模粒子系统。&lt;/li>
&lt;/ul>
&lt;h3 id="可配置与灵活性">可配置与灵活性
&lt;/h3>&lt;ul>
&lt;li>&lt;strong>可切换精度&lt;/strong>：轻松切换单精度（&lt;code>float&lt;/code>）和双精度（&lt;code>double&lt;/code>）计算。可以在消费级GPU上最大化性能（&lt;code>float&lt;/code>），或为科学应用确保高精度（&lt;code>double&lt;/code>）。&lt;/li>
&lt;li>&lt;strong>维度&lt;/strong>：原生支持2D和3D模拟域。&lt;/li>
&lt;/ul>
&lt;h3 id="高级物理建模">高级物理建模
&lt;/h3>&lt;ul>
&lt;li>&lt;strong>引力模型&lt;/strong>：可选均匀外引力场或/和天体物理场景的N体自引力。&lt;/li>
&lt;li>&lt;strong>强度与屈服模型&lt;/strong>：一套精细的本构模型来定义固体的弹性极限和后续塑性流动，包括：
&lt;ul>
&lt;li>&lt;strong>Von Mises&lt;/strong>：经典的压无关屈服准则，作为塑性流动的基本模型。&lt;/li>
&lt;li>&lt;strong>Lundborg&lt;/strong>：具有强度饱和的压相关模型，适用于脆性材料。该实现基于 Lundborg（1968）[6] 最初提出的公式，后被 Collins 等人（2004）[7] 和 Jutzi（2015）[8] 采用。&lt;/li>
&lt;/ul>
&lt;/li>
&lt;li>&lt;strong>损伤与断裂模型&lt;/strong>：基于 Melosh 等人（1992）[9] 提出的概念的可选损伤模型，模拟拉伸应力下的材料弱化和失效。这对于模拟断裂和碎片化至关重要，遵循 Benz &amp;amp; Asphaug（1995）[5] 和 Collins 等人（2004）[7] 等开创的SPH方法。&lt;/li>
&lt;li>&lt;strong>孔隙率模型&lt;/strong>：可选的 &lt;em>p-α&lt;/em> 孔隙率模型，用于模拟多孔地质材料（如浮石或风化层）的压碎，遵循 Jutzi 等人（2008）[10] 开发的经典框架。&lt;/li>
&lt;/ul>
&lt;h3 id="数值方法">数值方法
&lt;/h3>&lt;ul>
&lt;li>&lt;strong>时间积分&lt;/strong>：目前实现了预测矫正积分与自适应 Bogacki–Shampine RK23 [11]。&lt;/li>
&lt;/ul>
&lt;h3 id="用户友好工作流">用户友好工作流
&lt;/h3>&lt;ul>
&lt;li>&lt;strong>INI配置&lt;/strong>：通过可读的INI文件控制模拟参数，由轻量级 &lt;code>inih&lt;/code> 库解析。&lt;/li>
&lt;li>&lt;strong>标准化输出&lt;/strong>：结果以广泛采用的HDF5格式写入，并生成配套的XDMF文件，可直接在 ParaView 和 VisIt 等科学软件中可视化。&lt;/li>
&lt;/ul>
&lt;h2 id="代码访问与使用政策">代码访问与使用政策
&lt;/h2>&lt;p>GASPHiA 源代码仅向学术研究人员和合作者提供，仅供非商业、教育和研究目的使用。&lt;/p>
&lt;p>&lt;strong>如需获取源代码，请发送电子邮件至：&lt;/strong>&lt;/p>
&lt;ul>
&lt;li>&lt;strong>叶科奇（作者）&lt;/strong>: &lt;code>yekq6@mail2.sysu.edu.cn&lt;/code> | &lt;code>plloningye@gmail.com&lt;/code>&lt;/li>
&lt;li>&lt;strong>刘晓东教授（导师，中山大学航空航天学院）&lt;/strong>: &lt;code>liuxd36@mail.sysu.edu.cn&lt;/code>&lt;/li>
&lt;/ul>
&lt;p>请在请求中简要介绍您自己、您的机构以及您打算使用该代码的研究应用。&lt;/p>
&lt;p>使用本代码必须遵守每个源文件开头版权声明中规定的条款。未经作者事先书面许可，严禁任何形式的再分发、商业目的的修改或使用。&lt;/p>
&lt;h2 id="致谢">致谢
&lt;/h2>&lt;p>我要衷心感谢我的导师&lt;strong>刘晓东教授&lt;/strong>在我博士研究期间的支持和指导。&lt;/p>
&lt;p>GASPHiA 的开发也得益于开源社区。特别感谢以下项目的作者，他们的工作提供了重要的见解和架构灵感：&lt;/p>
&lt;ul>
&lt;li>&lt;strong>&lt;a class="link" href="https://github.com/christophmschaefer/miluphcuda" target="_blank" rel="noopener"
>miluphcuda&lt;/a>&lt;/strong>&lt;/li>
&lt;li>&lt;strong>&lt;a class="link" href="https://github.com/Patistar/Nbody-Barnes-Hut-CUDA" target="_blank" rel="noopener"
>Nbody-Barnes-Hut-CUDA&lt;/a>&lt;/strong>&lt;/li>
&lt;li>&lt;strong>&lt;a class="link" href="https://github.com/llnl/spheral" target="_blank" rel="noopener"
>Spheral++&lt;/a>&lt;/strong>&lt;/li>
&lt;/ul>
&lt;p>本项目使用以下第三方库：&lt;/p>
&lt;ul>
&lt;li>&lt;strong>HDF5&lt;/strong>：高性能数据存储（&lt;a class="link" href="https://www.hdfgroup.org/" target="_blank" rel="noopener"
>The HDF Group&lt;/a>）&lt;/li>
&lt;li>&lt;strong>inih&lt;/strong>：解析INI配置文件（&lt;a class="link" href="https://github.com/benhoyt/inih" target="_blank" rel="noopener"
>Ben Hoyt&lt;/a>）&lt;/li>
&lt;/ul>
&lt;h2 id="参考资料">参考资料
&lt;/h2>&lt;p>[1] Schäfer, C., Riecker, S., Maindl, T. I., Schaal, K., &amp;amp; Speith, R. (2016). A smooth particle hydrodynamics code to model collisions between solid, self-gravitating objects. &lt;em>Astronomy &amp;amp; Astrophysics&lt;/em>, &lt;em>590&lt;/em>, A19.&lt;/p>
&lt;p>[2] Barnes, J., &amp;amp; Hut, P. (1986). A hierarchical O(N log N) force-calculation algorithm. &lt;em>Nature&lt;/em>, &lt;em>324&lt;/em>(6096), 446–449.&lt;/p>
&lt;p>[3] Nyland, L., Harris, M., &amp;amp; Prins, J. (2007). Fast n-body simulation with CUDA. &lt;em>GPU Gems&lt;/em>, 3, 62-66.&lt;/p>
&lt;p>[4] Burtscher, M., &amp;amp; Pingali, K. (2011). An efficient CUDA implementation of the tree-based barnes hut n-body algorithm. In &lt;em>GPU Computing Gems Emerald Edition&lt;/em> (pp. 75-92). Morgan Kaufmann.&lt;/p>
&lt;p>[5] Benz, W., &amp;amp; Asphaug, E. (1995). Simulations of brittle solids using smooth particle hydrodynamics. &lt;em>Computer Physics Communications&lt;/em>, &lt;em>87&lt;/em>(1-2), 253–265.&lt;/p>
&lt;p>[6] Lundborg, N. (1968). Strength of rock-like materials. &lt;em>International Journal of Rock Mechanics and Mining Sciences &amp;amp; Geomechanics Abstracts&lt;/em>, &lt;em>5&lt;/em>(5), 427-454.&lt;/p>
&lt;p>[7] Collins, G. S., Melosh, H. J., &amp;amp; Ivanov, B. A. (2004). Modeling damage and deformation in impact simulations. &lt;em>Meteoritics &amp;amp; Planetary Science&lt;/em>, &lt;em>39&lt;/em>(2), 217-231.&lt;/p>
&lt;p>[8] Jutzi, M. (2015). SPH calculations of asteroid disruptions: The role of pressure dependent failure models. &lt;em>Icarus&lt;/em>, &lt;em>250&lt;/em>, 356-362.&lt;/p>
&lt;p>[9] Melosh, H. J., Ryan, E. V., &amp;amp; Asphaug, E. (1992). Dynamic fragmentation in impacts: Hydrocode simulation of laboratory impacts. &lt;em>Journal of Geophysical Research: Planets&lt;/em>, &lt;em>97&lt;/em>(E9), 14735-14759.&lt;/p>
&lt;p>[10] Jutzi, M., Benz, W., &amp;amp; Michel, P. (2008). Numerical simulations of impacts involving porous bodies: I. Implementing sub-resolution porosity in a 3D SPH hydrocode. &lt;em>Icarus&lt;/em>, &lt;em>198&lt;/em>(1), 242-255.&lt;/p>
&lt;p>[11] Bogacki, P., &amp;amp; Shampine, L. F. (1989). A 3(2) pair of Runge-Kutta formulas. &lt;em>Applied Mathematics Letters&lt;/em>, 2(4), 321-325.&lt;/p>
&lt;h2 id="版权">版权
&lt;/h2>&lt;p>版权所有 (c) 2025 叶科奇。保留所有权利。&lt;/p></description></item><item><title>基于CUDA加速的SPH模拟代码GASPHiA的一些应用</title><link>https://yekq.top/posts/gasphia/</link><pubDate>Tue, 17 Mar 2026 00:00:00 +0000</pubDate><author>plloningye@gmail.com (Keqi Ye)</author><guid>https://yekq.top/posts/gasphia/</guid><description>&lt;h1 id="基于cuda的sph代码算例">基于CUDA的SPH代码算例
&lt;/h1>&lt;p>本系列文章记录了我从零自研的 CUDA SPH (Smoothed Particle Hydrodynamics) 物理引擎的基准测试与验证过程。通过经典流体动力学问题的数值模拟，验证引擎的正确性与数值鲁棒性。&lt;/p>
&lt;h2 id="系列目标">系列目标
&lt;/h2>&lt;ul>
&lt;li>验证 SPH 核心算法的正确性&lt;/li>
&lt;li>测试引擎处理多物理场、复杂冲击问题的能力&lt;/li>
&lt;li>探索数值方法的改进与优化&lt;/li>
&lt;/ul>
&lt;h2 id="核心方法求和密度-vs-连续密度">核心方法：求和密度 vs 连续密度
&lt;/h2>&lt;p>在 SPH 方法中，密度计算有两种主要方式：&lt;/p>
&lt;p>&lt;strong>求和密度 (Summation Density)&lt;/strong>：
&lt;/p>
$$\rho_i = \sum_j m_j W(r_{ij}, h)$$
&lt;p>&lt;strong>连续密度 (Continuity Density)&lt;/strong>：
&lt;/p>
$$\frac{d\rho}{dt} = \sum_j m_j v_{ij} \cdot \nabla_i W_{ij}$$
&lt;p>本系列将展示求和密度法在处理强不连续问题时的显著优势。&lt;/p>
&lt;h2 id="系列目录">系列目录
&lt;/h2>&lt;ol>
&lt;li>&lt;strong>GASPHiA代码介绍&lt;/strong> - 自研CUDA SPH代码的功能与特性概述&lt;/li>
&lt;li>&lt;strong>1D Sod 激波管实验&lt;/strong> - 验证引擎对强激波不连续面的捕捉能力&lt;/li>
&lt;li>
&lt;ul>
&lt;li>(待续)&lt;/li>
&lt;/ul>
&lt;/li>
&lt;/ol>
&lt;hr>
&lt;blockquote>
&lt;p>📁 &lt;strong>资源位置&lt;/strong>：本系列使用的视频和图片资源存放于 &lt;code>/static/images/GASPHiA/1DShockTube/&lt;/code> 目录&lt;/p>
&lt;/blockquote></description></item><item><title>基于应变的孔隙度模型（ε-α 模型）</title><link>https://yekq.top/posts/gasphia/eplison-alpha-porosity-model/</link><pubDate>Fri, 17 Apr 2026 10:00:00 +0800</pubDate><author>plloningye@gmail.com (Keqi Ye)</author><guid>https://yekq.top/posts/gasphia/eplison-alpha-porosity-model/</guid><description>&lt;h2 id="一模型要解决什么问题">一、模型要解决什么问题？
&lt;/h2>&lt;p>在冲击（如陨石撞击）或爆炸加载下，多孔材料（砂土、rubble pile等）的行为与密实材料完全不同。绝大多数压力用于孔隙的压实过程，而孔隙压实又会大量放热，导致膨胀。总之冲击多孔隙度材质时，有如下特点：&lt;/p>
&lt;ul>
&lt;li>吸收大量能量&lt;/li>
&lt;li>产生局部高温&lt;/li>
&lt;li>显著削弱冲击波强度&lt;/li>
&lt;li>最终影响坑体大小和形态&lt;/li>
&lt;/ul>
&lt;p>传统 P-α 模型直接用压力 P 驱动压实，需要迭代求解 α 和 P（不过我根据论文实现了无需迭代的 P-α 模型）。&lt;/p>
&lt;p>&lt;strong>ε-α 模型的核心特点&lt;/strong>：改用体积应变 $\epsilon_V$ 直接驱动压实，α 与 P 解耦，先更新 α，再算 P。&lt;/p>
&lt;h2 id="二基本物理量">二、基本物理量
&lt;/h2>&lt;p>由于天文撞击中，压力一般都很大，体积应变也很大，所以大家一般都默认不考虑弹性压实阶段，直接进入塑形压实（不可逆），详细关于弹性压实阶段的信息可以参考论文[1][2].&lt;/p>
&lt;table>
&lt;thead>
&lt;tr>
&lt;th>符号&lt;/th>
&lt;th>含义&lt;/th>
&lt;th>公式&lt;/th>
&lt;/tr>
&lt;/thead>
&lt;tbody>
&lt;tr>
&lt;td>$\phi$&lt;/td>
&lt;td>孔隙度&lt;/td>
&lt;td>$\phi = V_{\mathrm{V}} / V$&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>$\alpha$&lt;/td>
&lt;td>膨胀系数&lt;/td>
&lt;td>$\alpha = 1/(1-\phi) = \rho_{\mathrm{S}} / \rho$&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>$\rho$&lt;/td>
&lt;td>体密度&lt;/td>
&lt;td>$\rho = \rho_{\mathrm{S}} / \alpha$&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>$\epsilon_V$&lt;/td>
&lt;td>体积应变&lt;/td>
&lt;td>$\epsilon_V = \ln(V/V_0)$&lt;/td>
&lt;/tr>
&lt;/tbody>
&lt;/table>
&lt;p>说明：&lt;/p>
&lt;ul>
&lt;li>无孔隙：$\alpha = 1$&lt;/li>
&lt;li>50% 孔隙：$\alpha = 2$&lt;/li>
&lt;li>压缩时 V 减小 → $\epsilon_V &amp;lt; 0$&lt;/li>
&lt;/ul>
&lt;h2 id="三模型的基本假设">三、模型的基本假设
&lt;/h2>&lt;ol>
&lt;li>&lt;strong>压实不可逆&lt;/strong>：卸载时 α 不变（不回弹）&lt;/li>
&lt;li>&lt;strong>压实速率由应变控制&lt;/strong>：$\mathrm{d}\alpha/\mathrm{d}\epsilon_V$ 不直接依赖压力&lt;/li>
&lt;li>&lt;strong>先压实、后压固体&lt;/strong>：孔隙完全闭合后才进入固体压缩段&lt;/li>
&lt;/ol>
&lt;h2 id="四核心公式">四、核心公式
&lt;/h2>&lt;p>因为孔隙压实是依靠体积应变驱动的，首先需要了解如何计算体积应变。在 SPH 计算中，体积应变率 $\dot{\epsilon}_V$ 可以通过速度散度来计算：&lt;/p>
&lt;p>&lt;strong>笛卡尔坐标系下&lt;/strong>：&lt;/p>
$$
\dot{\epsilon}_V = \frac{\partial u}{\partial x} + \frac{\partial v}{\partial y} + \frac{\partial w}{\partial z}
$$
&lt;p>其中 $u, v, w$ 分别是 $x, y, z$ 方向的速度分量。&lt;/p>
&lt;p>原始论文[1]给出的是轴对称柱坐标系下的格式：&lt;/p>
$$
\dot{\epsilon}_V = \frac{\partial u}{\partial r} + \frac{u}{r} + \frac{\partial v}{\partial z}
$$
&lt;p>其中 $u$ 是径向速度，$v$ 是轴向速度。&lt;/p>
&lt;p>对 $\dot{\epsilon}_V$ 逐步积分即可得到体积应变 $\epsilon_V$。&lt;/p>
&lt;p>此外，孔隙在强烈的压实过程中会做功并转化为大量内能（热量），温度的上升反过来会引起基质材料的热膨胀。文献[2]在改进 $\epsilon$-$\alpha$ 模型时，考虑了这种内能增加对体积应变造成的&amp;quot;反弹&amp;quot;效应（即热膨胀抵消了部分机械压实）。为了获取真实驱动孔隙压实的有效体积应变率，需要从总应变率中扣除热膨胀项：&lt;/p>
$$
\frac{d\epsilon_V}{dt} = \left( \frac{d\epsilon_V}{dt} \right)_{\mathrm{total}} - \frac{\Gamma_{s0}}{c_{s0}^2} \frac{dE}{dt}
$$
&lt;p>其中，$\left( \frac{d\epsilon_V}{dt} \right)&lt;em>{\mathrm{total}}$ 为由速度散度计算得到的应变率，$\Gamma&lt;/em>{s0}$ 为基质材料的初始 Grüneisen 参数，$c_{s0}$ 为基质材料的初始体声速，$E$ 为单位质量的内能。&lt;/p>
&lt;p>在每个时间步中，根据当前的 $\epsilon_V$ 判断所处的压实阶段，进而计算对应的 $\alpha$ 值。&lt;/p>
&lt;h3 id="41-指数压实段主要压实">4.1 指数压实段（主要压实）
&lt;/h3>&lt;p>当 $\epsilon_V &amp;lt; \epsilon_X$ 时：&lt;/p>
$$
\alpha = \alpha_0 \cdot e^{\kappa \epsilon_V}
$$
&lt;p>其中 $\kappa$ 是压实速率，$0 &amp;lt; \kappa \leqslant 1$。$\kappa$ 越小，压实越&amp;quot;慢&amp;quot;（需要更大应变才能闭合）。&lt;/p>
&lt;h3 id="42-幂律压实段后期硬压实">4.2 幂律压实段（后期硬压实）
&lt;/h3>&lt;p>当 $\epsilon_X &amp;lt; \epsilon_V &amp;lt; \epsilon_C$ 时：&lt;/p>
$$
\alpha = 1 + (\alpha_X - 1) \left( \frac{-\epsilon_V}{-\epsilon_X} \right)^2
$$
&lt;p>其中：&lt;/p>
$$
\alpha_X = \alpha_0 e^{\kappa \epsilon_X}
$$
&lt;h3 id="43-完全压实段">4.3 完全压实段
&lt;/h3>&lt;p>当 $\epsilon_V \leq \epsilon_C$ 时：&lt;/p>
$$
\alpha = 1
$$
&lt;h3 id="44-epsilon_c-的确定保证导数连续">4.4 $\epsilon_C$ 的确定（保证导数连续）
&lt;/h3>$$
\epsilon_C = 2 \cdot \frac{1 - \alpha_X}{\kappa \alpha_X} + \epsilon_X
$$
&lt;p>实际计算时，$\epsilon_C$ 其实只与材料参数有关，确定 $\alpha_X$、$\kappa$、$\epsilon_X$ 就可以得到 $\epsilon_C$。&lt;/p>
&lt;h3 id="45-参数汇总">4.5 参数汇总
&lt;/h3>&lt;table>
&lt;thead>
&lt;tr>
&lt;th>参数&lt;/th>
&lt;th>物理含义&lt;/th>
&lt;th>典型范围&lt;/th>
&lt;th>&lt;/th>
&lt;/tr>
&lt;/thead>
&lt;tbody>
&lt;tr>
&lt;td>$\alpha_0$&lt;/td>
&lt;td>初始膨胀系数&lt;/td>
&lt;td>1.0 ~ 2.5&lt;/td>
&lt;td>&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>$\kappa$&lt;/td>
&lt;td>压实速率&lt;/td>
&lt;td>0.7 ~ 0.98&lt;/td>
&lt;td>&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>$\epsilon_X$&lt;/td>
&lt;td>过渡应变（指数→幂律）&lt;/td>
&lt;td>-0.4 ~ -0.2&lt;/td>
&lt;td>&lt;/td>
&lt;/tr>
&lt;/tbody>
&lt;/table>
&lt;h2 id="五模型验证">五、模型验证
&lt;/h2>&lt;p>完成了前文所述的核心计算逻辑，特别是针对内能增加导致的热膨胀修正（即从总应变率中扣除热应变项：$d\epsilon/dt = (d\epsilon/dt)&lt;em>{\text{total}} - (\Gamma&lt;/em>{s0}/c_{s0}^2)(dE/dt)$）之后，我们需要一个标准的基准测试来验证程序实现的正确性。为此，我们选取了文献[2]中的案例：初始孔隙度为 75% 的多孔铁的冲击 Hugoniot 曲线计算。&lt;/p>
&lt;h3 id="1-物理背景与为什么选择此案例">1. 物理背景与为什么选择此案例？
&lt;/h3>&lt;p>对于极高孔隙率（&amp;gt;50%）的材料，在遭受强冲击压实时，孔隙空间的塌陷会转化为极高的内能（热量）。这种极端的加热效应会导致基质（固体）材料发生显著的热膨胀。&lt;/p>
&lt;p>&lt;strong>原始 $\epsilon$-$\alpha$ 模型的局限&lt;/strong>：原始模型假设基质密度永远大于初始密度（即忽略了热膨胀的贡献）。从图中可以看出，在高压区，原始模型（虚线）预测的密度持续增大，完全失效。&lt;/p>
&lt;p>&lt;strong>改进后的模型&lt;/strong>：在引入了热体积应变修正后，模型能够反映出在极高压力下，热膨胀效应甚至会超过机械压缩效应，导致宏观密度不增反降。&lt;/p>
&lt;h3 id="2-计算结果与图表分析">2. 计算结果与图表分析
&lt;/h3>&lt;p>在此次验证计算中，我们采用了与文献一致的参数（状态方程采用 Tillotson EOS，孔隙参数设为 $\kappa = 0.98, \epsilon_e = 0, \alpha_0 = 4$），并将我们的 SPH 程序计算结果与文献数据进行了对比。&lt;/p>
&lt;p>&lt;img src="https://yekq.top/posts/gasphia/eplison-alpha-porosity-model/Hugoniot_Academic_Comparison.png"
width="3000"
height="2400"
srcset="https://yekq.top/posts/gasphia/eplison-alpha-porosity-model/Hugoniot_Academic_Comparison_hu1cfaea1a7bf8b66e514cf96cc93c0ea9_298178_480x0_resize_box_3.png 480w, https://yekq.top/posts/gasphia/eplison-alpha-porosity-model/Hugoniot_Academic_Comparison_hu1cfaea1a7bf8b66e514cf96cc93c0ea9_298178_1024x0_resize_box_3.png 1024w"
loading="lazy"
alt="Hugoniot曲线对比"
class="gallery-image"
data-flex-grow="125"
data-flex-basis="300px"
>&lt;/p>
&lt;p>图：初始孔隙度为 75% 的多孔铁的 Hugoniot 曲线。横轴为密度 (g/cc)，纵轴为压力 (GPa)。&lt;/p>
&lt;p>通过观察上图，我们可以得出以下清晰的结论：&lt;/p>
&lt;ol>
&lt;li>
&lt;p>&lt;strong>捕捉到Hugoniot曲线 &amp;ldquo;倒拐&amp;rdquo; (Inversion) 现象&lt;/strong>：在压力达到约 10 GPa 之后，我们的数值计算结果完美展现了曲线向左反转的特征。在 10 ~ 100 GPa 的区间内，随着压力的升高，材料密度反而减小，这正是由于极端加热引起的基质材料热膨胀所致。&lt;/p>
&lt;/li>
&lt;li>
&lt;p>&lt;strong>与理论解析和参考 Hydrocode 吻合&lt;/strong>：我们将程序跑出的状态点与文献中改进 $\epsilon$-$\alpha$ 模型的理论解析解（实线）进行了叠加。可以看到，两者较为吻合。因为论文[2]没有给出详细的EOS信息，因此我只能推测低压力情况下的一些误差可能的原因是论文并没有使用Tillotson EOS。&lt;/p>
&lt;/li>
&lt;/ol>
&lt;h2 id="参考资料">参考资料
&lt;/h2>&lt;p>[1] Wünnemann K, Collins GS, Melosh HJ. A strain-based porosity model for use in hydrocode simulations of impacts and implications for transient crater growth in porous targets. Icarus. 2006 Feb 1;180(2):514-27.&lt;/p>
&lt;p>[2] Collins GS, Melosh HJ, Wünnemann K. Improvements to the ɛ-α porous compaction model for simulating impacts into high-porosity solar system objects. International Journal of Impact Engineering. 2011 Jun 1;38(6):434-9.&lt;/p></description></item><item><title>SPH基础(序): 概述与系列介绍</title><link>https://yekq.top/posts/sphseries/sphseries-intro/</link><pubDate>Mon, 20 May 2024 00:00:00 +0000</pubDate><author>plloningye@gmail.com (Keqi Ye)</author><guid>https://yekq.top/posts/sphseries/sphseries-intro/</guid><description>&lt;h1 id="sph-系列总览">SPH 系列总览
&lt;/h1>&lt;p>本系列文章旨在从零开始，系统介绍光滑粒子流体动力学（SPH, Smoothed Particle Hydrodynamics）方法的核心概念、数学原理以及实现技巧。通过本系列，你将能够：&lt;/p>
&lt;ul>
&lt;li>理解 SPH 方法的基本思想和应用场景。&lt;/li>
&lt;li>学会选择合适的核函数，并掌握其实现方式。&lt;/li>
&lt;li>掌握邻居搜索，常微分方程求解等关键算法。&lt;/li>
&lt;li>逐步搭建自己的 SPH 流体模拟框架。&lt;/li>
&lt;/ul>
&lt;h2 id="系列结构">系列结构
&lt;/h2>&lt;p>本系列主要包含以下内容：&lt;/p>
&lt;ol>
&lt;li>
&lt;p>&lt;strong>SPH 方法简介&lt;/strong>&lt;br>
SPH 的基本原理、流体模拟的数学模型和物理背景。&lt;/p>
&lt;/li>
&lt;li>
&lt;p>&lt;strong>核函数的选择与实现&lt;/strong>&lt;br>
常用核函数类型及其在数值模拟中的应用。&lt;/p>
&lt;/li>
&lt;li>
&lt;p>&lt;strong>状态方程&lt;/strong>&lt;br>
如何建立和应用流体的状态方程，计算压力与密度关系。&lt;/p>
&lt;/li>
&lt;li>
&lt;p>&lt;strong>邻居搜索与数据结构&lt;/strong>&lt;br>
高效邻居搜索方法、树结构和邻居列表构建技巧。&lt;/p>
&lt;/li>
&lt;li>
&lt;p>&lt;strong>高级主题与优化&lt;/strong>&lt;br>
自适应时间步长、并行计算优化等进阶内容。&lt;/p>
&lt;/li>
&lt;/ol>
&lt;hr>
&lt;p>阅读本篇文章后，你可以从各个子文章入手，逐步深入理解 SPH 模型和实现细节。本系列适合有一定编程基础和物理背景的读者，但也会从基础讲起，让新手逐步掌握方法。&lt;/p></description></item></channel></rss>