现代 Trixi.jl 计算流体力学

Trixi.jl 是一个用于守恒律自适应高阶数值模拟的 Julia 包。它旨在易于学生和研究人员使用,可扩展以用于研究和教学,以及高效且适用于高性能计算。

基于编译器的自动微分,使用 Enzyme.jl

难度:中等(取决于所选子任务,最高可达困难)

项目规模:175 小时或 350 小时,取决于所选子任务

Enzyme.jl 是 Enzyme 的 Julia 前端,Enzyme 是一个现代的自动微分 (AD) 框架,在 LLVM 代码级别工作。它可以提供快速的前向和反向模式 AD,并且与一些其他 AD 包不同,它支持突变操作。由于 Trixi.jl 依赖于突变操作和缓存以提高性能,因此此功能对于获得有效运行模拟和 AD 的实现至关重要。

该项目的总体目标是创建一个使用 Enzyme.jl 进行 AD 的 Trixi.jl(或其子集)的工作原型,并尽可能支持 Trixi 的许多高级功能,例如自适应网格细化、冲击捕捉等。

该项目中可能包含的子任务包括

该项目中与 Enzyme.jl 无直接关系但使用其他包的相关子任务包括

该项目适合对数值分析和科学机器学习领域感兴趣的软件工程师,以及对在该领域进行研究生研究感兴趣的学生。

推荐技能:至少熟悉一种数值离散化方案(例如,有限体积、间断伽辽金、有限差分);自动微分方面的初步知识;最好具备(或渴望学习)编写快速代码的能力

预期成果:为 Trixi.jl 贡献最先进的、生产质量的自动微分工具

导师Hendrik RanochaMichael Schlottke-Lakemper

使用 ParaView 进行高级可视化和原位可视化

难度:中等

项目规模:175 小时或 350 小时,取决于所选子任务

可视化和记录结果是科学过程的关键部分。在 Trixi.jl 中,我们依赖于纯 Julia 包(例如 Plots.jlMakie.jl)和开源科学可视化套件 ParaView 的组合进行可视化。虽然 Julia 解决方案非常适合可视化一维和二维数据,但 ParaView 是从三维数据创建出版质量图形的首选。

目前,使用 ParaView 进行可视化只能在模拟完成后进行,并且需要额外的后处理步骤,在该步骤中,使用 Trixi2Vtk.jl 将 Trixi.jl 的本机输出文件转换为 VTK 文件。此额外步骤使其使用起来有些不便,尤其是在需要在长时间的、多小时的模拟运行过程中检查数值解的当前状态时。

因此,该项目的目的是通过引入两个重大改进,使此类可视化变得更加容易

这两项任务都与学生需要熟悉 Trixi.jl 内部使用的数据格式以及 VTK/ParaView 的可视化管道相关。但是,它们可以独立执行,因此该项目适合 175 小时或 350 小时的承诺,具体取决于要处理的任务数量。

该项目适合对可视化和科学数据分析领域感兴趣的软件工程师,以及对数值分析和高性能计算领域进行研究生研究感兴趣的学生。

推荐技能:至少熟悉一种数值离散化方案(例如,有限体积、间断伽辽金、有限差分)会有所帮助;可视化或并行处理方面的初步知识;最好具备(或渴望学习)编写快速代码的能力。

预期成果:为 Trixi.jl 提供可扩展的、生产质量的科学结果可视化。

导师Michael Schlottke-LakemperBenedict GeiheJohannes Markert