#physics #numeric #hydrodynamics #science

corries

使用黎曼求解器的1D水动力学模拟库

3个版本

0.6.2 2023年2月19日
0.6.1 2023年2月18日
0.6.0 2023年2月18日

#1437 in 数学

MIT许可证

260KB
3.5K SLoC

corries

CORrosive RIEmann Solver (名称中的“腐蚀性”是因为它是用Rust编写的...),专门用于解决1D水动力学问题,计划专门用于非相对论天体物理学。

文档:https://docs.rs/corries/

这个是什么东西?

这个库允许用户编写水动力学模拟的设置,然后让这些模拟运行。由于这个库打算用于长时间运行的模拟,运行时间可能长达几天或几周,因此许多优化发生在编译时。这意味着您的参数研究也应该设置成从一个可执行文件运行,无论是通过命令行传递参数,还是将研究的参数空间放入主函数。

目前,科里奥斯可以模拟的事物相当有限,因为它只支持笛卡尔网格,没有源项。您可以在TODO部分查看即将到来的功能,如果您了解这些术语的含义。

关于这个库的计划是

  • 添加至少两个更多的数值通量求解器(一个Kurganov-Tadmor求解器,以及一个简单的有限差分求解器)
  • 添加具有额外动量组件的方程组(至少2D)
    • 请注意,即使在那些2D系统中,科里奥斯仍然保持1D,因为它们假设沿其轴的对称性;例如,在一个圆盘中,我们会解决半径,但假设旋转对称性
  • 添加非笛卡尔对称性,最显著的是圆柱和对数圆柱网格
  • 添加源项的能力,如重力和粘度
  • 添加更多的时间积分方案

测试

除了单元测试之外,Corries还有一些集成测试,这些是标准的水动力学问题,用于测试求解器是否按预期运行。

可以使用 cargo test 运行整个测试套件。

以下所有图表的注意事项

以下是可以看到的一些集成测试的图。注意,单个空间坐标称为ξ,不同图的单位是任意/无量纲的。大多数图显示了初始初始条件(n = 0),然后一个或多个状态,尽管大多数只会显示测试的最终状态。

许多测试都是使用等温和绝热系统进行的。这意味着在前者中,我们不显式求解内能/压力的变化。在那里,我们假设整个模拟过程中温度和声速是恒定的。

所绘制的值通常是质量密度ρ、压力P和速度v_ξ和v_η。等温模拟将不包括压力,而只具有单个非零速度分量的模拟将省略第二个速度v_η。

Noh

Noh测试是一个经典的冲击管模型测试,其初始条件如下

  • 质量密度(绝热情况下的压力)在管中是相同的
  • 速度场指向管的水平中心,在该中心有尖锐的跳跃

这里我们看到的是绝热情况

A plot showing the results of the adiabatic Noh test using 1d Euler equations

这是等温情况

A plot showing the results of the isothermal Noh test using 1d Euler equations

请注意,在初始状态,速度有一个尖锐的跳跃。随着模拟的进行,我们看到流体在中间聚集,因为越来越多的材料从两侧的边界流入。

Sod

Sod测试是另一个标准的冲击管模型测试。在这种情况下,初始条件如下

  • 流体在整个管中是静止的
  • 在管的水平中心有一个密度和压力冲击

这个测试将被用来测试不同的数值通量方案。这是使用HLL方案和0阶重构运行的测试图

A plot showing the results of the Sod test using 1d Euler equations and the HLL numerical flux scheme

这是使用KT(Kurganov-Tadmor)数值通量方案和线性重构运行的模拟

A plot showing the results of the Sod test using 1d Euler equations and the KT numerical flux scheme

许可

版权所有 © 2022-2023Tommy Breslein

保留所有权利。

在满足以下条件的情况下,允许重新分发和使用源代码和二进制形式,无论是否修改

  1. 源代码的重新分发必须保留上述版权声明、本条件列表和以下免责声明。
  2. 二进制形式的重新分发必须以文档和/或其他与分发一起提供的材料中的上述版权声明、本条件列表和以下免责声明进行复制。
  3. 未经版权所有者或其贡献者的事先书面许可,不得使用其名称或其贡献者的名称来认可或推广源自本软件的产品。

本软件由版权所有者和贡献者提供“现状”且不承担任何明确或暗示的保证,包括但不限于适销性和适用于特定目的的暗示保证。在任何情况下,版权所有者均不对任何直接、间接、偶然、特殊、示范性或后果性损害(包括但不限于替代商品或服务的采购;使用、数据或利润的损失;或业务中断)承担责任,无论此类损害是否由于本软件的使用或此类损害的可能性而引起,即使已通知此类损害的可能性。

依赖性

~6–10MB
~183K SLoC