Tuesday, October 18, 2022

冲击与爆炸分析中的状态方程EOS

 冲击与爆炸是现代工程仿真中常见的课题。从简单的手机跌落分析,到汽车碰撞,再到复杂的水下爆破都已经有许多成功的应用。相比较传统的结构或流体仿真,由于工况的巨大差异,使得冲击爆炸的计算方法略有不同。冲击与爆炸的主要特点是高速、高能。在这个工况下,即使强度很高的材料,也会在瞬间产生物理性质的巨大变化。比如物质从固态到液态,甚至气态的变化,材料由于高应变率或高温而产生失效、断裂或粉碎。这些特点使得我们需要在传统连续介质力学上增加相关理论来满足实际工程的需要。

冲击爆炸中由于动水压的特性,需要计算这些由体积快速变化而产生的压力,从而准确地得到全部应力。状态方程Equation of State(EOS)就是为了计算动水压力的模型。EOS的发展从上世纪50年代开始,已经历70多年的发展,随着有限元等仿真技术发展,EOS的应用也越发广泛。EOS的理论有的来自于实验的经验公式,有的来自原子分子层面的理论推导演化。由于冲击爆炸中有巨大的热动力学能量转换,热动力学也在EOS模型中起着重要作用。有的EOS模型也可能包含气体状态方程,用来描述爆炸产物或者空气。这些不同于传统的连续介质力学,涉及了粒子间作用和化学反应。可以说EOS涉及了多尺度与多学科,将复杂物理工况表达成计算动水压的数学模型。

常见的EOS模型

EOS的主要目的是计算动水压力,自变量常采用物体体积的变形量,如压缩量u和单位体积下的内能密度E。当然也有表达式采用其他自变量如特体积(Specific Volume)和温度等形式。本文所使用的计算方式都以压缩量u为自变量。不同自变量的表达式也可以通过热力学定理相互转化。

同时免费软件MatEditor也已经支持了大量EOS的编辑与创建,用户可以快速方便的添加EOS材料属性。

Compaction模型

水压力控制方程为

输入参数的定义如下图所示。

对于卸载状态的描述可通过参数Unloading Bulk Modulus来表达。常用于气体材料。也可以用于如土壤、泡沫等多孔介质。

Gruneisen模型

Gruneisen按照压缩和膨胀两种不同的状态,给出了各自的压力计算方法。水压力控制方程在u>=0时:

当u<0时:

输入参数的定义如下图所示。

Gruneisen常用于金属材料,如TNT炸药的金属外包装。常见应用的金属有铜,不锈钢,铝,锰,钛,镍,钡等。

Ideal Gas模型

水压力控制方程为

输入参数的定义如下图所示。

顾名思义,Ideal Gas常用于气体,如大气压力下的空气。

Linear模型

水压力控制方程为

输入参数的定义如下图所示。

Linear模型是多项式模型的一种简化形式。用途广泛。常用于气体。

LSZK 模型 (Landau-Stanyukovich-Zeldovich-Kompaneets)

水压力控制方程为

输入参数的定义如下图所示。

LSZK是一个常用于爆炸中气体的模型。

Murnaghan 模型

水压力控制方程为

输入参数的定义如下图所示。

Murnaghan模型独立于物体的能量密度,常用于气体。

NASG 模型 (Noble-Abel Stiffened Gas)

水压力控制方程为

输入参数的定义如下图所示。

NASG可用于气体,也常用于液体。

Noble-Abel 模型

水压力控制方程为

输入参数的定义如下图所示。

Noble-Abel模型可用于高压时的高密度气体。

Osborne 模型

Osborne EOS也称作二次方EOS。水压力控制方程为

输入参数的定义如下图所示。

Osborne模型应用广泛,常用于各种金属,也可以用于水,炸药,石墨,有机玻璃,塑料等材料。各种材料的参数可以从手册查到。

Polynomial 模型

水压力控制方程为

输入参数的定义如下图所示。

Polynomial 模型一种通用的经验模型。常用于金属,如钢,钨。

Puff 模型

根据不同的状态,Puff的水压力控制方程为

压缩态(u>=0)时,

膨胀态(u<0),且应变能密度E>=Es时,

膨胀态(u<0),且应变能密度E<Es时,

输入参数的定义如下图所示。

Puff常用于金属材料。

Stiffened Gas 模型

水压力控制方程为

输入参数的定义如下图所示。

Stiffened Gas可用于水下爆炸中的水。

Tillotson 模型

根据不同的状态,Tillotson的水压力控制方程为

压缩态(u>=0)时,

膨胀态(u<0),且体积V/V0<Vs,应变能密度E<Es时,

膨胀态(u<0),且体积V/V0>=Vs时,或者体积V/V0<Vs同时应变能密度E>=Es时,

输入参数的定义如下图所示。

Tillotson常用于金属材料。参数可以从相关手册中获得。

总结

MatEditor提供了简单好用的人机界面用于创建常见的EOS材料属性,且支持不同单位的转化。可以导出数据,目前已经支持了OpenRadioss格式的材料数据文本。

EOS模型较多,且还在不断发展中。需要对每种EOS的适用范围有较好了解。同时,每种EOS的材料参数,需要查阅相关手册来确定。以达到精确的计算或仿真结果。

Monday, October 3, 2022

ParaView数据文件(pvd)的格式与读写

ParaView是一款功能丰富且开源的三维数据可视化工具。用户可以快速构建可视化信息来分析数据,支持 3D 交互、和批处理等功能。同时支持各种类型电脑与集群的数据可视化分析。在科学计算领域尤其是后处理方面,有大量实际的应用。

ParaView支持了大量不同格式的输入文件,有我们常见的CGNS,UNV,NetCDF,VTK,TecPlot等格式,也有分子动力学软件LAMMPS结果等格式。对于有限元、有限体积这类工程仿真计算结果数据,笔者认为通用性和效率最好的是其自家的ParaView Data (pvd)格式,所以也在最近的WelSim版本中支持了pvd格式的结果数据导出。pvd文件本质是多个数据子文件的入口文件,在工程仿真领域常用的附属子文件是pvtu和vtu文件。

vtu文件是存储网格与结果数据的主要文件,支持ASCII和二进制的方式。这里的u表示是unstructured的非结构网格。WelSim几年前就已经支持了vtu格式的结果导出功能。在vtu文件格式基础上,VTK提供了基于并行机制pvtu格式,对于并行状态下的文件读写,利用多核机制提高文件处理效率。这个功能对于大型仿真项目是非常有意义的。所以,笔者认为目前通用性与效率最好的结果文件解决方案是pvd+pvtu+vtu的方式。WelSim也在最新的版本中支持了pvd结果数据的导出,对于复杂的瞬态分析结果,用户可以方便快捷地将结果导出到ParaView进行后续的分析与报告生成。数据格式pvd, pvtu, vtu三者之间的关系如图所示:

ParaView数据文件格式

ParaView数据文件(pvd)是建立在VTK体系之上的一个xml文件。其中,最主要是定义了每个子文件的时间,可用于在后处理中正确显示一个结果的时间。这点对于瞬态分析结果是非常有必要的。

每个属性的定义如下:

Type: 类型为Collection, 表示此文件还含有一组数据文件。

Version:版本,目前默认0.1。

Byte_order: 对于二进制存储形式,需要设置“BigEndian”或“LittleEndian”。具体取决于写入此文件的平台的字节顺序。大多数商品笔记本电脑和台式机使用小端字节序;旧的集群和超级计算机可能使用大端。

Compressor: 可选项。设置压缩方式,如“vtkZLibDataCompressor”。

Timestep: 浮点值。用于瞬态数据集的时间点。

Group: 可选。列出了创建此数据集的源、阅读器或过滤器的唯一分配标识符。

Part: 当前数据集这部分的标识号。是一个大于或等于 0 的整数值。

File: 此数据集中的子文件名。相对路径。

如图所示,下图是由WELSIM生成的pvd文件。包含了一个瞬态分析结果中的9个时间步。

pvtu文件是基于vtu文件的一个并行读写的拓展。当只有一个节点进行文件读写时,pvtu只会含有一个vtu文件。当有多个节点进行写入文件时,会有多个vtu文件生成,每个vtu文件中的节点与单元信息都不相同。将所有vtu文件的网格信息整合起来就是完整的分析场域。pvtu会定义一些头文件信息,比如节点,单元,结果信息。而详细的数据还是会存储在vtu中。

如图所示,下图是由WELSIM生成的pvtu文件。

vtu是数据存储的核心文件,包含节点,单元,结果数值的全部信息。可以是以二进制存储,以节省读写资源。也可以是ASCII存储,便于使用者阅读数据内容。下图是由WELSIM生成的二进制vtu文件。

WELSIM导出结果文件

在WELSIM导出pvd文件是很容易的。只需要在计算完成后。选择 Answer节点,点击右键,会显示“导出全部结果选项“。

选择Export All Results后,会提示输入文件名,同时可以选择导出格式为ASCII还是二进制格式。

之后就能看到所生成的结果文件了。

总结

ParaView数据格式pvd是一个通用性很好的网格与结果文件格式。在VTK和ParaView开源社区的支持下,也逐渐地被科学计算与工程仿真人员接受并大量使用。WelSim会保持对pvd结果文件导出功能的维护与增强。

WelSim不隶属于ParaView,VTK。和ParaView,VTK的开发者没有直接关系。这里引用ParaView,VTK仅用作技术博客文章与软件使用的参考。

Thursday, September 8, 2022

使用WelSim生成FrontISTR网格与输入文件

 FrontISTR是一款知名的免费且开源的有限元分析计算软件。从2005年日本文部省资助此项目开始,至今已经有17年的开发维护历史。

FrontISTR有着丰富的结构与热分析求解功能,如常见的结构接触问题,壳梁等结构单元,非线性材料本构如超弹,塑性,粘弹等都已经很好的支持。对于热分析也支持非线性的求解。相比较其他以结构计算为主的开源有限元软件,FrontISTR最大的优点对大型计算机集群计算支持。开发者在提供了源代码的同时,也提供了编译好的Linux和Windows版本,方便用户使用。软件遵循MIT开源协议,对于商业二次开发也是非常的友好。

笔者多年前在朋友的推荐下就开始关注FrontISTR,发现其功能强劲且计算结果可靠。对于工程计算人员友好,不需要软件开发工作。虽然近几年的开发相对缓慢,但是程序的维护工作一直没有停止,是值得使用和学习的一套结构有限元程序。

尽管FrontISTR有着很好的实用性,但对于复杂几何模型,和其他许多开源求解器一样,需要前处理器来生成网格和输入文件。由于FrontISTR特有的网格与命令格式,复杂模型的输入文件则需要用专门的软件来实现。FrontISTR官方提供了自带的免费前处理工具REVOCAP PrePost,知名的开源CAD软件FreeCAD也提供了对FrontISTR的插件支持。此外,WELSIM对FrontISTR也有很好的支持,利用WELSIM高效的前处理GUI,使用者可以很快地生成计算所需要的复杂输入文件,并直接用于FrontISTR的计算。

在WELSIM的实际使用中,只需要在网格划分完毕,施加材料,边界条件后。从工具栏选择导出FrontISTR输入文件命令,即可得到需要的网格与输入文件。

此时,在指定的文件夹内,会生成三个输入文件。这和FrontISTR的常规输入格式一致,可以直接用于FrontISTR程序的求解计算。同时,使用者也可以在这套文件基础上做修改,进行其他的分析计算。

其中hecmw_ctrl.dat文件给出的控制文件和输入输出文件定义。

用户也可以只使用生成的网格文件,配合自定义控制文件,进行自定义程度更高的仿真计算。网格文件中不仅有节点和单元信息,同时定义了单元组,方便用户赋予几何体不同的材料属性。支持节点组和表面组功能,方便用户施加边界条件和接触对。

由于WELSIM的易用性,生成用于FrontISTR计算的复杂模型变得简单快捷。

WELSIM不隶属于FrontISTR, REVOCAP, FreeCAD。和FrontISTR, REVOCAP, FreeCAD 的开发者没有直接关系。这里引用FrontISTR, REVOCAP, FreeCAD 仅用作技术博客文章与软件使用的参考。