分享

软件推介|爆炸模拟程序blastFoam

 析模界 2023-10-23 发布于四川

blastFoam是一个基于OpenFOAM开发的,可用于单相和多相可压缩流动的库,其适用于高爆爆震、爆炸安全和空气爆炸,以及一般的可压缩流动。blastFoam是由Synthetik公司开发的,目前最新版本V5.0,处于开源状态。

Synthetick公司网址:https://www./

blastFoam的github仓库地址:https://github.com/synthetik-technologies/blastfoam

基于OpenFOAM针对特殊场景开发的专用求解器其实挺多的,这也是个不错的思路,开源是当前软件发展的一种大趋势。

用CFD来算爆炸难度非常大,这让我想起了十多年前利用商业CFD软件做天然气爆炸的那段不堪回首的日子,计算不稳定、发散、程序算到中途崩溃的事儿时不时的冒出来。爆炸压力波波速极快,导致计算求解所需的时间步长必须非常非常小,然后计算时间就遥遥无期。投机取巧想着把网格尺寸增大来增大时间步长,然而网格粗了事儿更多,严重的时候甚至连化学反应都无法维持。

下面的视频是官方发布的利用blastFoam模拟贝鲁特爆炸后的冲击波扩散情况。

1 blastFoam的安装

目前blastFoam是建立在org版的OpenFOAM v9版本上的,尚不明确com版是否支持。

  • 首先安装OpenFOAM v9,安装方法参见官网www.openfoam.org,确保OpenFOAM可用
  • 创建文件路径
mkdir -p $HOME/OpenFOAM
cd$HOME/OpenFOAM
  • 下载文件
git clone https://github.com/synthetik-technologies/blastfoam.git
  • 配置编译环境
cd$HOME/OpenFOAM/blastfoam
echo"source $HOME/OpenFOAM/blastfoam/etc/bashrc" >> $HOME/.bashrc
source$HOME/.bashrc
  • 编译blastFoam
./Allwmake -j

编译需要大概10分钟左右,这个要看计算机的配置。

编译完成后运行blastFoam -help若出现下图所示信息则表示安装成功。

2 求解器简介

blastFoam一共包含7个求解器,用于应对不同场景下的爆炸模拟。下面的内容来自blastFoam的UserGuide。

1. blastFoam

blastFoam求解器是标准求解器,其具有多种用途,包括单相、两相和多相流动的模拟。该模型中的流体相及热力学模型在phaseProperties字典中指定,当提供了一个相的列表(且该列表有一个以上的条目)时,就会自动选择两相或多相求解器。如果没有指定关键词phase,则自动选择单相求解器。所有的相都使用blastFoam特定的状态方程。此求解器是专门为模拟爆炸性材料而设计的。

2. blastEulerFoam

blastEulerFoam求解器是blastFoam的欧拉-欧拉(双流体/多流体)模型的变体。目前只能进行流体-固体模拟,增加流体-流体模拟的功能正在开发中。此求解器基于Houim和Oran(2016)和Lai等人(2018)的工作,与标准multiphaseEulerFoam求解器相比,其主要优势是可以使用任何数量的颗粒相。目前可以使用三种相模型:单流体、多流体相和颗粒相。单流体相模型用于描述单一成分的流体(如空气)。多相模型用于描述由多相组成的流体相,每个相由一个单独的状态方程描述,这允许模拟添加了颗粒的标准引爆问题。颗粒相模型用于描述一个固体相。单流体和多相模型都可以使用任何流体热力学模型,而颗粒模型可以使用任何固体热力学模型。

3. blastFSIFoam

blastFSIFoam求解器使用标准的blastFoam求解器来求解流体相,并使用OpenFOAM标准的solidDisplacementFoam求解器来求解固体变形(只能考虑线弹性)。流体相使用移动的网格,而固体相则在静止的网格上进行求解。为了正确传递patch之间的信息,需要使用映射的MovingWall的边界类型,可以通过修改每个区域的constant/region*/polyMesh/boundary内的类型来实现此功能。如果为每个单独的区域创建网格,可以像往常一样指定patch类型;但如果使用splitMeshRegions工具将一个区域网格分离成多个区域网格,此时可以使用foamDictionary工具来改变条目名称。注意:这个求解器仍在开发中,还不稳定。请慎重使用。

4. blastXiFoam

除了标准的blastFoam求解器之外,还增加了一个额外的求解器来解决燃烧问题,作为标准OpenFOAM XiFoam求解器的扩展。唯一的区别是,此模型可以更准确地描述燃烧、高度可压缩的流动(即爆燃到爆轰的过渡)。建议使用adibaticFlameT工具来计算热物理属性字典中所使用的模型系数。

5. blastReactingFoam

blastReactingFoam使用标准的OpenFOAM热力学类,可用于求解包括化学反应的多组分系统,同时也可以使用燃烧模型。热物理属性(thermalophysicalProperties)字典必须与相关字典(combustionProperties或chemistyProperties)和初始初值文件(质量分数)一起包含在constant字典下。守恒量(质量、动量和能量)以及质量分数都是使用本文介绍的通量格式来计算的。

6. blastMultiRegionFoam

blastMultiRegionFoam求解器源自OpenFOAM中的chtMultiRegionFoam。主要区别在于使用了ODE时间积分和Riemann通量。固体中的传热仍然通过矩阵求解隐式处理。

7. blastParcelFoam

blastParcelFoam利用标准的OpenFOAM拉格朗日类来求解耦合的欧拉流体和拉格朗日包的集合,包括像阻力、传热及颗粒碰撞这样的交互。由于使用了不同的热力学模型,并非所有的OpenFOAM标准拉格朗日选项都可用。

3 软件应用

blastFoam的使用和普通的OpenFOAM应用程序并无不同。软件仓库中提供了UserGuide及tutorials,可以参阅里面的案例。

下面是官方发布的demo。

1、blastFoam模拟RECONASS 400kg TNT NEQ爆炸试验
2、blastFoam模拟城市爆炸
3、blastFoam模拟贝鲁特爆炸

(本文结束)

    转藏 分享 献花(0

    0条评论

    发表

    请遵守用户 评论公约

    类似文章 更多