没有合适的资源?快使用搜索试试~ 我知道了~
OpenFOAM二维和三维自适应网格加密方法及其在计算流体力学中的应用
软件X 10(2019)100317原始软件出版物OpenFOAM中负载平衡的2D和3D自适应网格细化Daniel Rettenmaiera,c,Bennett,Daniel Deisingd,f,Yun Ouedraogoe,Erion Gjonaje,Herbert De Gerseme,b,Dieter Bothed,Cameron Tropeac,Holger Marschalld,b,Bennetta计算工程研究生院,Darmstadt技术大学,Dolivostr。德国达姆施塔特b计算工程中心,Darmstadt技术大学,Dolivostr。德国达姆施塔特c达姆施塔特技术大学流体力学和空气动力学研究所,Alarich-Weiss-Str. 德国达姆施塔特d达姆施塔特工业大学数学建模与分析研究所,Alarich-Weiss-Str. 10,64287 Darmstadt,Germanye达姆施塔特技术大学电磁场理论研究所,Schloßgartenstr. 8,64289 Darmstadt,GermanyfENGYS UK,Studio 20,Royal Victoria Patriotic Building,John Archer Way,London SW18 3SX,United Kingdom of Great Britain and Northern Irelandar t i cl e i nf o文章历史记录:2018年8月13日收到收到修订版,2019年7月29日接受,2019年保留字:动态负载平衡自适应网格细化2D3DOpenFOAMa b st ra ct针对计算流体力学的成熟C++库OpenFOAM,提出了一种面向对象的二维和三维网格自适应加密方法。这种高性能计算技术对于其中应用域分解的分布式存储器并行计算机架构的移动感兴趣区域的情况下的计算效率是强制性的。感兴趣的移动区域动态地变形和迁移通过在模拟期间的域,并要求解决方案的功能的高空间分辨率。我们提出的软件设计和代码结构,并详细介绍了我们的成就方面的软件可用性的工程应用程序,以及对众多的发展和必要的高稳定性和运行时性能的改进。©2019作者由爱思唯尔公司出版这是CC BY许可下的开放获取文章(http://creativecommons.org/licenses/by/4.0/)中找到。代码元数据当前代码版本v1.0用于此代码版本的代码/存储库的永久链接https://github.com/ElsevierSoftwareX/SOFTX_2018_143法律代码许可证GNU通用公共许可证(GPL)使用git的代码版本控制系统使用的软件代码语言、工具和服务OpenFOAM-devhttps://github.com/OpenFOAM/OpenFOAM-dev编译要求、操作环境依赖性Linux上 OpenFOAM-dev中的编译如果可用,链接到开发人员文档/手册可计算文档问题支持电子邮件rettenmaier@gsc.tu-darmstadt.de,ouedraogo@temf.tu-darmstadt.de,marschall@mma.tu-darmstadt.de1. 介绍在科学和工程中,瞬态输运过程的并行计算模拟经常提出一个主要的挑战,即有效地使用计算资源,同时在整个计算过程中保持高精度的数值解。- ten的传输过程涉及感兴趣的移动区域,这些区域通过*通讯作者。电子邮件地址:danielrettenmaier@gmail.com(D.Rettenmaier),marschall@tu-darmstadt.de(H.Marschall)。https://doi.org/10.1016/j.softx.2019.100317域并随时间动态变形。为了减少数值误差,需要充分解决这些区域内的精细瞬态解特征工程应用中的例子有火焰前锋、爆炸冲击或流体界面[1]。如今,计算流体动力学(CFD)软件典型地依赖于分布式存储器并行计算机架构用于所有中型和大型计算。在现代CFD仿真软件中,通常需要底层的有限体积法(FVM)来支持一般拓扑结构的动态非结构计算网格,以处理2352-7110/©2019作者。 由Elsevier B.V.出版。这是一篇开放获取的文章,使用CC BY许可证(http://creativecommons.org/licenses/by/4.0/)。可在ScienceDirect上获得目录列表SoftwareX期刊主页:www.elsevier.com/locate/softx2D. Rettenmaier,D.Deising,Y.Ouedraogo等人粤公网安备44010802000017号形状各异的复杂解域。在这些要求下,在计算网格上利用同位(伪交错)变量排列已成为惯例,其中传输变量的值存储在单元中心(体积场)中,而单元面中心保存有关通量和内插单元值(表面场)的信息。网格化几乎完全在域分解模式中完成,即,网格的单元面上的大循环被分割并由许多处理器核处理,这些处理器核在下文中被称为处理器。一些商业和学术CFD求解器库已经具有自适应网格细化(AMR)[2-对于提到的DLB实现列表,这项工作非常重要,因为它是OpenFOAM的第一个稳定实现使用这里提供的AMR和DLB框架的模拟已经在[10]和[11]中使用。AMR和DLB的实现依赖于底层的数据结构和并行化策略.OpenFOAM(Open Field Operation and Manipulation)是一个用于计算连续介质力学(包括CFD)的全面开源C++库[2,12它展示了一个严格的和有效的面向对象的方法域分解并行。它与其他开源CFD软件的区别在于模块化代码结构,其中模块(线性求解器,插值方案,物理模型等)遵循策略设计模式。可维护性是通过泛型编程实现的:大量使用模板可以使用相同的方法对不同的数据类型进行操作,而无需重复代码。与操作符重载一起,这允许设计定制的顶级CFD代码,其紧密地模仿连续体建模中的数学语言,即偏微分方程使用OpenFOAM类型选择(RTS)机制实现了更大的灵活性:遵循工厂设计模式,OpenFOAM允许在用户端软件运行时通过更改配置文件(字典)中的条目来实例化类层次结构中的对象在整个库中,接口和库使用之间的这种严格区分是为了隐藏实现细节,以保证顶层的可用性和可读性至于并行性,通信细节与由软件接口层在顶层使用的库,该软件接口层用作具有标准接口的并行通信包装器,以便允许在没有任何特定并行化要求的情况下编写每个顶层代码这样,在串行和并行执行中操作相同的代码行。处理器间通信被建立为边界条件,这意味着每个单元在零晕层方法中被唯一地分配给单独的处理器,而不复制处理器边界旁边的单元数据。OpenFOAM的许多开发都是由社区驱动的,这极大地促进了框架的成功。这项工作通过修改和建立社区对二维和轴对称情况[15]和DLB [16]的贡献来证明这种努力。AMR和DLB的增强功能在这里被整合到一个统一的框架中,可供社区使用。其好处是有效地减少了中小型工程问题的计算工作量,可在现代台式计算机上解决,其中AMR和DLB也是必不可少的。由于这里提出的AMR和DLB框架受益于许多OpenFOAM库,AMR和DLB算法的并行性能不能独立于OpenFOAM进行测试。因此,详尽的并行效率和扩展测试超出了这项工作的范围,特别是在更大规模的众核架构上。然而,最近,Jenic等人在静态细化网格上使用数十亿个单元显示了有希望的结果[17]。为 了 有 效 地 应 对 上 述 挑 战 , 我 们 使 用 并 显 著 增 强 了OpenFOAM C++库。这一贡献基于以下目标:在OpenFOAM软件的面向对象结构中列出AMR和DLB的主要成分,为社区提供一个可用于最近Open-FOAM版本(版本4.x和更高版本)中的各种可用求解器的实现。2. 自适应网格加密为了仅在必要时动态地获得高精度,在AMR中使用h-自适应方法到目前为止,OpenFOAM仅支持3D六面体单元的AMR最近在[18,19]中介绍了扩展AMR用于任意多面体单元的工作,仅在foam-extend-4.1中实现,尚未找到进入OpenFOAM的方式,并且在[20]中,其代码目前不可免费获得。多面体单元细化将单元分解成四面体,这在2D和2.5D情况的不变模式中引入寄生电流。因此,真正的2D和2.5D细化在许多用例中仍然有用2.1. 八叉树单元细化在3D情况下,六面体单元使用八叉树结构来分割一个单元通过将其切割成具有36个面的8个子单元来细化,其中12个面在父单元的内部(参见图1(a))。细化单元的邻域将从六面体变为具有六个以上面的多面体单元。OpenFOAM中的伪交错方法依赖于两个位置来定义网格相关字段:体积字段表示单元中心上的值,表面字段表示面中心上的值。在当前的OpenFOAM版本中,结合AMR处理表面场存在三个主要问题:在细化和未细化单元的值之间缺乏一致的插值,在细化期间新创建的面的错误面寻址,以及非通量表面场的符号翻转。下面概述了这些问题的解决方案映射是父单元格和细化的子单元格之间的字段插值。以单元为中心的体积场的映射以简单和保守的方式实现。在单元格细化步骤中,子单元格接收父单元格的以单元格为中心的值;在单元格取消细化步骤中,子单元格的以单元格为中心的值的体积平均值然而,在细化步骤中的表面场的映射是更苛刻和关键的,因为OpenFOAM中的大多数求解器是基于通量的,通量被表示为表面场。细化面的值由其对应父面(称为主面)的值设置,主面是父单元的面,被分割为四个新面。但是,父单元内部的新面与任何主面都不相关 在这项工作中,通过对四个相邻主面的值进行算术平均,实现了对这些面的更好的值插值,如图1中的一个内面所示。1(a).在dynamicRefineFvMesh类中已经实现了将表面场映射到新的内部面上(参见图1)。 2)的情况。在初始化新面时,网格刀具类hexRef 8中的一个可追溯到1.xOpenFOAM版本的实现错误已得到纠正,该错误使新创建的内部面的寻址无效,导致整个模拟域中的新面上的通量的符号取决于最多两个相邻单元共享的面法线方向。这个方向可能会因为细化或非细化期间的拓扑变化而改变,具体取决于正式的所有权。因此通量的符号翻转··D. Rettenmaier,D.Deising,Y.Ouedraogo等人粤公网安备44010802000017号3Fig. 1. (a)六面体单元的八叉树细化创建12个内面。表面场(舍入符号)的值是从相邻主面(方形符号),其示例性地示出为一个内面。 (b)六面体单元和棱柱体单元的四叉树精化。 不变方向页面正常。图二. UML图显示了新实现的动态负载平衡和2D以及2.5D网格细化的类(黄色)和已经存在的类(红色)。(关于此图例中颜色的参考解释,请读者参考本文的网络版本价值观是必要的。对所有类型的表面场进行符号翻转,即使它们可能不表示通量。错误的符号翻转已经在OpenFOAM库中的许多地方得到了纠正。OpenFOAM中的不可压缩流求解器依赖于对应于无发散速度场的守恒通量场。由于表面场的非保守映射,通量场需要在每个AMR步骤之后进行校正(参见Ap-附录A)。使用所提到的面寻址校正,增强的表面场映射和符号翻转中的校正(参见提交1cef6f9)显著减少了确保无发散场的必要校正,并且提高了运行时性能、准确性和稳定性[10]。子单元格和父单元格之间的关系以refinementHistory的形式维护,它也存储了细化每个细胞的水平。只有在所有兄弟单元格中匹配了未细化的条件时,单元格才未细化,这在dynamicRefineFvMesh类中进行处理。否则,在细化体积的边界处的单元的级别可以在每个细化和非细化步骤处在两个级别之间来回切换,从而不必要地消耗计算资源。2.2. 四叉树细化对于2D情况,OpenFOAM使用3D网格,在不变方向上具有单个细胞层的附加约束。在运行时,边界类型空被自动检测为2D情况的指示,以减少数量在其中解决的维度。八叉树细化打破了不变性条件,因为它在不变量4D. Rettenmaier,D.Deising,Y.Ouedraogo等人粤公网安备44010802000017号图三. 网格细化后的负载平衡重分布。见图4。自 适应网格细化,动态负载平衡和通量校正, 如果当前模拟时间与细化间隔匹配。方向对于二维情况,标准八叉树细化因此必须由四叉树细化代替。四叉树细化的实现基于八叉树细化,不同之处在于内部单元不被分裂以在不变方向上引入新单元。空边界上的两个面在其中心处被分割为四个新面。此步骤将在所有边界边的中间引入新点,用于沿可接受的方向分割面。因此,单元格细化产生四个子单元格,并在父单元格中引入四个内部面(见图1)。1(b))。对于轴对称的情况,实现使用另一种类型的边界,楔形类型。网格仍然具有一个单元的厚度四叉树细化可以如上所述应用于六面体单元。然而,在轴处的棱柱单元的细化中在细化时检测这些单元的三角形面以将其分割成三角形面和四边形面,使得棱柱单元被细化成两个棱柱和两个六面体(参见图2)。1(b))。将三维网格切割器扩展到二维和轴对称情况是基于[15]的工作,在这项工作中进一步抽象和细化 为了限制代码重复,hexRef8类被替换为具有三个派生类的基本hexRef类,hexRef 8,hexRef 4和hexRef 4Axi,它们分别实现八叉树细化,四叉树细化和四叉树细化,包括轴上的棱柱(见图1)。 2)的情况。hexRef类利用运行时选择机制, dynamicRefineFvMesh基于网格的维数和解的维数选择适当的n在运行时也使用dimen- sions的数量来确定是否允许棱镜单元细化。2.3. 组合多个细化标准为了获得更大的灵活性,OpenFOAM标准包括唯一可选择的字段、它们的渐变和卷曲、接口,D. Rettenmaier,D.Deising,Y.Ouedraogo等人粤公网安备44010802000017号5几何特征,例如框或域边界,以及每个单独标准上的最大和最小细化级别。所有的设置在运行时都是可修改的,并且在存储库的教 程 中 示 例 性 地 演 示 了 使 用图2 显 示 了 作 为dynamicRefineFvMesh的模块化插件的多准则细化类。2.4. 缓冲层缓冲层是两个细化级别之间的单元层数在具有两个以上细化级别的网格中,重要的是确保不同级别之间的平滑过渡,以便充分减 少 由于 细 化 过 渡处 的 网 格 偏斜 而 导 致 的离 散 化 误 差 one-irregularity约束将相邻单元的细化级别差限制为1,因此缓冲层的最小数量为1。但是,建议使用更多的缓冲层。附录B中描述了此功能的实现。3. 动态负载平衡在OpenFOAM中,并行性基于域分解。仿真域被分解为子域,每个子域被分配给不同的处理器。当AMR被用于并行瞬态问题时,处理器上不断变化的负载可能会显著降低计算资源的有效利用。当其他等待的处理器需要处理的数据时,具有最大负载的处理器成为可以想到几种估计负载平衡的方法。这里,负载平衡被计算为子域上的小区数量与所有子域的小区的平均数量之间的最大差。这个差值除以这个平均值。这种方法假设每个单元的计算成本相同,这通常不是真的。图中给出了负载不平衡的一个例子。3 .第三章。在对一个集合进行细化之后,的细胞,域分布是不平衡的56%,显然是一个显着的量。在重新分配之后,仅实现了4%的负载不平衡文中还介绍了几种基于OpenFOAM库的DLB算法。准备好使用,如[21]中的版本2.1.x或[22]中的另一个基于Voskuilen [16]针对版本2.3.x的解决方案,这也是这项工作的基础。所有这些作者的算法都依赖于OpenFOAM的重新分配功能,该功能在给定新旧域分解的处理器之间交换单元格及其字段该算法仅需要Voskuilen概述的微小更改,以实现具有物理尺寸的场的重新分布,并且我们进一步添加到该列表中,其中具有关于表面场翻转的更改,并且我们实现了额外的功能以允许与2D细化相结合除了VoskuilenfvMeshDistribution与第2.1节中解释的通量翻转问题有关,其中非通量表面场在不同处理器上重新分布单元时被翻转。错误翻转字段会导致求解器崩溃。此外,AMR网格更新期间边界上的值的默认映射与DLB结合是不够的。附录C中描述了面向应用的解决方案。图五. 溃坝的模拟结果,在界面处具有两个级别的细化, 显示t = 0。24 s和初始状态。3.1. 区域分解策略结构化和非结构化域分解策略都可以在OpenFOAM中使用。代表性示例是简单结构化分解方法,其将网格细分为每个方向上的用户定义数量的子域,以及非结构化苏格兰(ptscotchinparallel)分解, 其旨在最小化处理器间边界的大小( 参见OpenFOAM用户指南[23]和[24])。Scotch(ptscotch)分解往往在重新分配时从头开始产生新的域,导致处理器之间大量的单元数据交换和大量的内存消耗。无论选择的分解策略,细化的同胞细胞不应该被分配到不同的子域,以保持未细化的能力。在[21]中,通过引入新的聚类分解方法克服了这一限制。然而,自OpenFOAM 4.x版本以来,分解约束允许在用户指定的 字典decomposeParDict 中选择refinementHistory类,以强制细胞家族保持在同一子域上,允许使用任何分解策略,同时保持非细化功能。AMR、DLB和通量校正的过程总结在图中。 四、存储库中的单元测试用例比较了AMR和DLB期间通量翻转变化和不变化的结果,以及在最多16个单元的简单设置中表面场的增强映射算法4. 结果两个典型的情况下,突出的性能增益和减少必要的计算资源,由于AMR和DLB在2D和3D。3D情况是具有障碍物的溃坝,2D情况是毛细上升。这两种情况都是使用2.5 GHz所介绍的方法的主要优点是减少了细胞的数量,同时通过重新平衡处理器之间的计算负载来保持并行效率。溃坝水流模拟是了解溃坝事故、提高大坝安全性的重要手段,6D. Rettenmaier,D.Deising,Y.Ouedraogo等人粤公网安备44010802000017号·××××Ff,IF(−1f,I|SF|见图6。3D溃坝案例,显示了运行时将未细化的均匀网格作为参考,并在两个级别(有动态负载平衡和无动态负载平衡)中进行自适应网格细化。静态网格与最精细单元格的分辨率相匹配。使用八叉树AMR提供了与单元减少相关的加速,并且DLB有助于保持越来越多的处理器的加速。作为许多CFD求解器的验证案例[5,28,29]。该域由一个边长为1米的立方体组成,中心障碍物的尺寸为0。四米零。四米零。25米。水被初始化为一个测量为0的矩形。6 m0的情况。19米0的情况。75米,如图所示。五、两个网格进行了比较,一个是空间分辨率为3的均匀静态网格。06 10−3 m,产生3360万个单元,第二个在界面周围具有两级AMR,匹配静态网格分辨率,导致总单元数仅为260万个单元。模拟是在有和没有DLB的情况下完成的允许的最大不平衡设置为20%。在有AMR和没有AMR的结果之间,没有可见的差异,因为同样分辨的界面主导流场。三个不同运行的模拟加速如图所示。 六、对于8、16和125处理器,使用AMR和DLB实现了一个数量级的加速由于越来越多的处理器的通信开销,只有子线性加速实现。注意,对于使用AMR的小区较少的设置,处理器的最佳数量为了概述使用AMR时DLB的必要性,在有和没有DLB的情况下进行了仿真与非平衡模拟相比,使用DLB时,125个处理器的模拟时间可以认为,对于高度动态的情况下,感兴趣的区域迁移通过整个域,来自负载不平衡的瓶颈甚至可能导致比静态细化的情况下更低的并行性能。附录D中给出了模拟板间毛细上升的二维情况。正如在溃坝的情况下,它显示了显着的速度,并证明了重要性,在2D情况下,四叉树优于八叉树细化。附录E中比较了使用AMR和AMR与LB的汽车空气动力学工业展示案例的模拟结果。这两种情况下,以及一个轴对称的毛细管上升管附加到存储库。这些教程测试用例仅限于使用interDyMFoam,而AMR和DLB功能可以应用于使用FVM的OpenFOAM中的大多数流求解器。目前的软件设计,代码结构和开发方面的软件可用性的工程应用。我们报告了几个必要的稳定性和运行时性能的库改进详细地说,2D自适应网格加密设计的网格OpenFOAM 4.x和5.x中的六面体拓扑,到目前为止只支持3D细化。我们的2D网格细化包括经典的2D和轴对称网格的细化规则,使用OpenFOAM的网格切割器 类 , 这 已 被 进 一 步 抽 象 。开 发 基 于 [15] 中 使 用 的Baniabedalruhman代码,该代码已进一步增强并用于抽象为网格切割器类以避免代码重复。我们已经开发了一个模块化的框架,以支持多种细化标准。Voskuilen [16]的动态负载平衡代码已得到增强,并与我们的自适应网格细化开发相结合。 已经实现并证明了显著的加速。它表明,性能增益时,减少整体细胞数通过自适应网格细化,仅在与动态负载平衡相结合时才保留。 所提出的发展是直接相关的OpenFOAM在短期到中期,开发将致力于进一步抽象,将动态负载平衡功能与自适应网格细化的特定用例分离,即在模拟期间启用负载平衡域分解以及OpenFOAM中可用的任何所需动态网格类。致谢所有作者感谢Tyler Voskulien和Ahmad Baniabedal- ruhman提供对他们代码的开放访问,感谢 Andrea Montorfano 和 StephanBatzdorf进行富有成效的讨论,以及感谢Engys Ltd.允许展示工业测试案例。这项工作得到了德国联邦和州政府以及达姆施塔特工业大学计算工程研究生院的“卓越计划”的支持。作者还感谢合作研究中心的支持,运输和润湿过程之间的相互作用SFB 1194(D.R.,陛下,D.B.C. T.)和合作研究中心Transregio,极端环境条件下的液滴动力学SFB-TRR 75(Y.O.,例如:H.D.G.)。这项研究的计算是在达姆施塔特工业大学的Lichtenberg高性能计算机上进行的。附录A. OpenFOAM中的通量校正interFoam求解器系列特别依赖于对应于无发散速度场的无发散体积通量场。由于表面场的非保守映射,在每个AMR步骤之后需要校正通量场。该校正适用于整个通量场,即使在AMR网格更新未改变的单元中。良好的初始通量确保收敛并使校正最小化。首先,通量估计FfFf=uf·Sf,(A.1)外推最后一个时间步长F(−1)的通量计算5. 总结和展望单元面插值速度场u(−1)一个 面向对象 方法 到 负载平衡 2D 和3DOpenFOAM中的自适应网格细化已经被提出。我们uf=(I−nf<$nf)(u(−1))+fnf.(A.2)D. Rettenmaier,D.Deising,Y.Ouedraogo等人粤公网安备44010802000017号7=||∇---AFCorrFFF图A.7. 两个 缓冲层的 示 例 ,在两个不同的单元层之间实施最少两个 (左)和六个 (右)缓冲单元。图A.8. (a)毛细管上升设置。(b)界面处的两级细化和40埃的接触角。为了更好的可视化,半宽度的分辨率被降低到R=64。体积分数α表示哪些单元充满液体。因此,Sf表示表面积矢量,并且脸正常。面心值用下标f标记。使用该通量估计Ffε,迭代地∑[1<$fp n|SF|]=∑F。(A.3)在上述方程中,Af是离散动量方程的中心系数,f是表面法向梯度。最后用气压修正项对估算通量进行更新,得到无辐散通量Fn=F1pn|.|.(A.4)f fAfcorr图A.9. 平板之间的2D毛细管上升情况显示了在有和没有DLB的两个水平中使用AMR与没有细化的均匀网格相比的加速,匹配最精细细化细胞的分辨率。使用八叉树AMR提供了与单元减少相关的加速,这甚至被四叉树AMR进一步减少。DLB有助于保持越来越多的子域的速度。如第2节所述,使用不同的改进,即寻址定位、增强表面场映射和符号翻转校正,显著减少了必要的校正迭代,以确保无发散场,同时提高了求解器性能、鲁棒性和准确性[10]。附录B. 缓冲层实现缓冲层是两个细化级别之间的单元层数。在具有多个单元细化级别的网格中,确保8D. Rettenmaier,D.Deising,Y.Ouedraogo等人粤公网安备44010802000017号==··=·=·==图A.10. 使用7细化层开始网格配置。来源:Engys Ltd.图A.11. 稳态下的最终补片配置不同的级别,以便充分减少由于网格偏斜而引起的离散化误差,并且在两个细化级别之间提供缓冲,以使物理属性适应新的网格级别。这是由于网格尺寸和额外的开销,以允许流场,以适应拓扑变化所需的计算成本之间的权衡每个像元的目标细化级别的计算执行如下。每个单元格保存其当前和目标细化级别的信息。以递归方式并从最高细化级别开始,标记具有此级别的单元以保留其细化级别。然后,找到该缓存集的所有相邻单元,频率与缓冲层的用户集数量指示的一样。因此,所选择的邻近小区被添加到小区的邻居集合,以使用更新的邻居集合重复邻居的搜索。新选择的邻居接收减一的已删除集合的当前细化级别作为目标细化级别。通过将邻居集合并到搜索新邻居小区的已搜索集并将其目标级别设置为最高细化级别减去所执行的递归的数量来重复整个过程,所执行的递归从1开始计数。相邻单元是共享单元角点而不是面的单元。与脸相比,传播点的选择是由基于脸的传播所表现出的更大的方向偏好所激励的。图A.7显示了分别使用两个和六个缓冲层的细化网格的示例。有效缓冲层的数量可能会超过指定的数量一,因为细化单元格会在每个细化方向上创建两个单元格。尽管细化引擎强制了一个缓冲层(1:1),但是最小缓冲层(1:1)是由一个缓冲层(1:1)来实现的。建议采用两层(2:1)的结构,以确保磁场平稳过渡。附录C. 边界条件初始化在DLB期间,使用保持值的边界出现稳定性问题,与2.1节中解释的映射问题类似,需要将值从父单元格映射到子单元在边界处,在基本边界条件(例如Neumann边界条件(fixedAngleFvPatchField))中默认不提供该映射,其中接触角边界类(alphaContactAngleFvPatchScalar域)派生。该接触角边界条件对于第4节中的毛细上升测试用例是必要的。在细化和DLB期间,边界场大小被更新,但是新的面缺乏适当的初始化。此问题导致不正确的梯度值或异常。为了防止在我们的特定应用中出现中断,新的面被分配了零法向梯度边界条件。这对应于90埃的接触角。使用适当的细化标准,我们建议确保包含三相接触线的一部分的单元永远不会细化或未细化,以确保边界条件按预期发挥作用。没有实现任何保护来帮助检测或防止这种(不)细化。然而,用最高水平的细化处理两相界面足以避免这个问题。附录D.两块板之间毛细上升的案例描述板之间的毛细上升是文献中使用的二维情况,作为接触角模型[ 30,31 ]的曲率计算和验证的基准,因为已知规定的恒定接触角的解析解[32]。液-气界面在板之间水平初始化,并随时间上升或下降,这空气和液体的材料参数如[30]中所示设置,其中表面张力σ72. 75 mN/m和运动粘度η 1。5 10−5m2/s 而η1010−5m2/s以及密度1 .一、19立方米/千克 和998m3/kg。为了掩盖两相界面,整个域被精细静态网格覆盖。因为只有界面演化需要高精度(见图1)。A.8(b)),该测试用例是应用AMR和DLB的良好候选。域的静态离散化(见图1)。A.8(a))使用均匀六面体网格解析R 0的半宽。625 mm,两个平板之间有128个细胞,17 R的高度有2176个细胞,总共5个。6 105细胞。动态细化网格在界面周围设置有两个细化级别,与界面处的静态网格的分辨率相匹配。得到的单元格数为4。3 104细胞。对于第4节中的溃坝情况,毛细管上升情况下的2D-AMR加速约为一个数量级 这直接对应于D. Rettenmaier,D.Deising,Y.Ouedraogo等人粤公网安备44010802000017号9=图D.12. AMR与具有LB的 AM R 的 仿 真 时 间 (LB开始于t)300 s)。来源:Engys Ltd.细胞计数(见图A.9)。与简单AMR相比,具有DLB的AMR仍然产生两倍的性能提高。为了指出在二维情况下具有真正的二维细化的益处,使用八叉树细化而不是四叉树细化来执行附加的模拟。在这种情况下,八叉树细化比四叉树细化慢大约五倍,因为每个父节点的子单元数量更多 以及在不变方向上引入寄生流。附录E.多准则自适应网格加密和动态负载平衡在工业应用中的应用由Engys有限公司提供,我们展示了AMR的能力,它可以用于一个更复杂和更现实的应用,一个典型的汽车空气动力学模拟(在48个处理器上进行稳态雷诺平均纳维尔-斯托克斯方程的模拟)是针对在纽博格林的ERA电动车模拟的是具有7个细化水平和8 mm的最小壁 法 向 单元 高 度 的 对 称 半 模型 ( 参 见 图 11 中 的 起 始配 置 ) 。A.10)。在这种情况下,改进是基于来自工程猜测的压力和速度梯度值。使用压力梯度的标准是:• 精细化水平4为 30 m/ s2• 精细化水平5为 150 m/ s2• 600 m/ s2(精细化级别6)。使用速度梯度的附加a标准应用于• 细化级别4为 10 1/• 精细化级别5为50 1/• 炼功六级,100 1/由此产生的稳态网格配置如图所示。A.11.在所提出的设置中,使用AMR方法的最终网格大小(2.6 Mio单元)小于汽车空气动力学模拟的标准最佳实践静态网格细化(5.7 Mio单元)的50%,从而显著加快了求解时间。进一步示出,使用额外的动态负载平衡导致解决时间进一步减少50%(参见图1)。图D.12),因此对于获得最大加速性能至关重要。引用[1] 张文,张文,等.冲击波数值模拟中的局部自适应网格加密. J Comput Phys1989;82(1):64-84. http://dx.doi.org/10.1016/0021-9991(89)90035-1.[2]贾萨克·H有限体积法的误差分析与估计及其在流体流动中 的 应 用 [Ph.D. [1996年],帝国理工学院[3]放大图片创作者:Wuong A,Boschert S,Simeon B.界面流动的自适应有限体积法。2008年,见http://www-m2.ma.tum.de/homepages/simeon/publica.html。[Last 2018年6月访问[4]Schwing AM,Nompelis I,Candler GV.隐式非结构有限体积流解算器中自适应网格细化的实现。在:21st AIAA计算流体力学。会议San Diego,CA : AmericanInstituteofAeronauticsandAstronautics;2013 ,http://dx.doi.org/10.2514/6.2013-2446.[5] Fondelli T,Andreini A,Facchini B.溃坝问题的自适应网格法数值模拟。能 源 程 序 2015;82 : 309-15. http://dx.doi.org/10.1016/j.egypro.2015.12.038网站。[6]Adams M,Schwartz PO,Johansen H,Colella P,Ligocki TJ,Martin D,etal. Chombo AMR应用软件包-设计文件。技术报告LBNL-6616 E,伯克利国家实验室; 2015年,URLhttps://escholarship.org/uc/item/5cs5d1sq。[7][10]张文辉,张文辉.三维守恒律并行解的八叉树负载平衡自适应局部加密。JParallelDistribComput1997;47(2):139-52.http://dx.doi.org/10.1006/jpdc.1997.1412网站。[8]负载平衡计算流体动力学。在非结构化网格上进行计算。In:VandriesscheR,and Roose D,editors. AGARD,特别课程在并行计算机上。在CFD;1995年。(see N96-16247 04-60)。网址http://adsabs.harvard.edu/abs/1995scpc.agar的网站。V.[9]作者:Jiangsu T,Jiangsu D,Jiangsu S.基于多级块结构笛卡尔网格的自适应网 格 加 密 和 负 载 平 衡 。 IntJComputFluidDyn2017;1-12.http://dx.doi.org/10.1080/10618562.2017.1390085网站。[10] 放大图片作者:Deising D,Bothe D,Marschall H.泡状流传质的直接数值模拟。ComputFluids2018.http://dx.doi.org/10.1016/j.compfluid.2018.03.041.[11][10]李国雄,李国雄.垂直正方形毛细管角部细流自发上升的计算。ColloidsSurfA2018;544:118-26.http://dx.doi.org/10的网站。1016/j.colsurfa.2018.02.003.[12]吴伟杰,王晓刚,王晓刚.使用面向对象技术的计算连续介质力学的张量方法。Comput Phys 1998;12 ( 6 ) : 620-31. http://dx.doi.org/10.1063/1.168744 网站。[13]贾萨克·H OpenFOAM:研究和工业中的开源CFD。 Int J Nav Archit OceanEng 2009;1(2):89-94. http://dx.doi.org/10.2478/IJNAOE-2013-0011。[14][10] 杨 文 ,李 文 .计 算 流体 力 学 中的 有 限 体 积法 , 第 113 卷 。 Springer Int.Publishing; 2016,http://dx.doi. org/10.1007/978-3-319-16874-6。[15]巴尼亚贝达鲁曼围绕流体-流体界面的动态网格化及其在收缩几何形状中的液滴 跟 踪 应 用 [ 博 士 学 位 ] 。 论 文 ] , 密 歇 根 理 工 大 学 ; 2015 年 , URLhttps://digitalcommons.mtu。edu/etds/1005。[16]沃斯奎伦湖网格平衡。GitHub Repository,GitHub; 2014,[LastAccessedJuly2018].[17]Van Gandic P , Chiba S , Minami K. 在 世 界 顶 级 超 级 计 算 机 上 使 用OpenFOAM对建筑物进行大规模瞬态CFD模拟。In:4th OpenFOAM userconference,Cologne,Germany; 2016.[18]周X,王燕.用VOF模拟法求解理想喷头的雾化过程In:ILASS Europe.第28届欧洲液体雾化和喷雾系统会议。Editorial Universitat Politècnica de València;2017,p. 257-64. http://dx.doi.org/10的网站。4995/ilass2017.2017.5014。[19]Meredith K,Vukčević V.用VOF建模和自适应网格细化解决理想化消防喷头的近场流型。参加:2018年在中国上海举办的第13届OpenFOAM研讨会[20]Joshi SV Openfoam中的自适应网格细化,具有量化的误差范围和对任意细胞类 型 的 支 持 [Ph.D. 论 文 ] , Institut fürInformatik , Technische UniversitätMünchen;2016.[21]巴茨多夫湾
下载后可阅读完整内容,剩余1页未读,立即下载
cpongm
- 粉丝: 5
- 资源: 2万+
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
最新资源
- 高清艺术文字图标资源,PNG和ICO格式免费下载
- mui框架HTML5应用界面组件使用示例教程
- Vue.js开发利器:chrome-vue-devtools插件解析
- 掌握ElectronBrowserJS:打造跨平台电子应用
- 前端导师教程:构建与部署社交证明页面
- Java多线程与线程安全在断点续传中的实现
- 免Root一键卸载安卓预装应用教程
- 易语言实现高级表格滚动条完美控制技巧
- 超声波测距尺的源码实现
- 数据可视化与交互:构建易用的数据界面
- 实现Discourse外聘回复自动标记的简易插件
- 链表的头插法与尾插法实现及长度计算
- Playwright与Typescript及Mocha集成:自动化UI测试实践指南
- 128x128像素线性工具图标下载集合
- 易语言安装包程序增强版:智能导入与重复库过滤
- 利用AJAX与Spotify API在Google地图中探索世界音乐排行榜
资源上传下载、课程学习等过程中有任何疑问或建议,欢迎提出宝贵意见哦~我们会及时处理!
点击此处反馈
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功