DuMux是一个专注于多孔介质中的流体输运过程模拟的模拟工具箱。基于Dune分布式统一数值环境,DuMux旨在与提供众多数值计算模型和离散化方法用于求解复杂的非线性现象,比如CO2封存、土壤整治、癌症治疗中的药物输运等。

德国的Stuttgart大学的流体力学与流体力学建模工作组(LH2)在2007年1月正式启动了DuMux的开发工作。DuMux的诞生源于研究人员想要实现一个持续一致性的多孔介质模型框架。

在对当时的偏微分软件方程(PDE)软件框架进行评估后,LH2工作组决定在Dune工具箱之上构建DuMux。也就是在2007年的1月,一个新的Subversion仓库被投入使用来管理DuMux的开发工作。从那开始,LH2的每个博士研究生和博士后都通过使用或者改良DuMux仓库中的代码来完成他们的模拟任务。

直到今天,大多数的DuMux开发人员均与LH2工作组有关。到了2009年,DuMux1.0基于GPLv2协议正式就进行发布。

2.X 系列版本 DuMux 1.0版本代码仓库中有许多没有达到发布要求的私人代码,因此每次发布一个版本都需要进行繁琐的代码整理而降低效率。因此开发组对项目代码进行了重构并在2011年的2月发布了DuMux 2.0版本,并在2015年将代码仓库转用GitLab进行管理(git.iws.uni-stuttgart.de)。

3.X 系列版本 在2.X系列版本的发展中,许多的新特性被加入到了代码中。其中大部分的代码都与最初的设想一致,但是仍然有部分代码违背了开发意图并且效率低下,因此3.X系列的发展之初就移除了那些无用并且难以管理的代码,并在2018年12月发布了DuMux 3.0版本。目前DuMux保持着每半年于春季或者秋季发布一个版本的节奏。同时目前DuMux项目还是OPM(Open Porous Media)计划的联合伙伴。

Dune和DuMux均是使用现代C++进行编写,并应用了模板元编程技术来实现高运行效率以及提供更加方便的通用接口。Dune核心模块为DuMux提供了网格系统管理器以及线性代数抽象系统和后端迭代求解器。同时DuMux的并行计算能力也是基于Dune提供的抽象来进行实现。

除了主体基于Dune外,DuMux还可以选择性地依赖于其它基于Dune的扩展模块来进行研究。而DuMux的核心特性就是它提供了一个用于多相、多组元流体输运模型求解的综合库,以及灵活的模块化流体材料构造框架,并能够使用多种有限体积离散化方案。

在DuMux环境中,术语“模型(model)”被用于描述一个耦合的偏微分方程系统,包含用于满足闭合要求的本构方程。许多用于描述多孔介质中的非等温多组元和多相流输运过程的偏微分方程系统已经在DuMux中进行了实现。此外,用户还可以选择不同的本构定律来描述闭合关系,以及多流体和固体组元系统。更重要的是,DuMux的代码设计允许用户使用自定义的实现替代默认的实现。

作为一款多孔介质流体输运模拟软件,DuMux已经被成功应用于许多的问题的研究,包括气体(CO2,H2,CH4)存储、环境整治、生物组织中药物输运等。

植物根部与土壤交互作用模拟

上图为一个鲁冰花根部系统的吸水过程的模拟。环绕着土壤的水流有箭头进行表示。鲁冰花根部系统模型由MRI数据进行重构获得。在模拟中,根部系统的结合结构有一个线段网络结构近似。同时根部系统被嵌入到了三维的土壤区域中,这个得益于DuMux的多尺度混合模拟能力。其他的数学模型和数值方法在Koch等人的论文(Koch et al. 2018)中进行了描述。

自由流/孔网络耦合模型(单相流)

底部的一个随机产生的孔网络能够向上注入示踪流体。它上升后进行对流与扩散,并最终到达临近的自由流体通道,这时Navier-Stokes方程被求解。由于没有在通道中施加外部流体,示踪流体几乎对称地在左右进行传播。更多细节以及完整的耦合模型和模拟方法参见Weishaupt等人2019年的工作,源代码在dumux-pub/weishaupt2019a中可以自由获取。

DuMux作为Dune分布式统一数值环境中的一个模块,使用了现代C++编写,并应用了模板元编程技术来实现高运行效率以及提供更加方便的通用接口。其在CO2封存、土壤整治、癌症治疗中的药物输运等领域已经有了不少成功的应用案例。同时DuMux活跃的社区和丰富的文档也保证了其可用性,相信未来DuMux能够继续在多孔流体输运领域大放光彩。

Dia:一款灵巧的流程图软件

Calligra:永久免费的轻量级Office办公套件

在Linux下使用Sigil创建和编辑EPUB文件

KiCad: 一款跨平台开源电子设计自动化套件

LabPlot替代Origin用于科研绘图

使用pandoc将Markdown文件转换为字处理器文档

3个用于数据科学的顶级Python库

Blitz++高性能科学计算库