没有合适的资源?快使用搜索试试~ 我知道了~
≥软件X 14(2021)100669原始软件出版物CristalX:促进对实验获得的基于晶粒的微观结构的模拟Zoltan CsatiZi,Jean-François Witz,Vincent Magnier,Ahmed El Bartali,NathalieLimodin,Denis NajjarUniv. Lille,CNRS,Centrale Lille,UMR 9013-LaMcube-Approachatoire de Mécanique,Multiphysique,Multi-échelle,Lille,F-59000,Francear t i cl e i nf o文章历史记录:2020年12月10日收到2021年1月31日收到修订版,2021年关键词:网格化微结构分割a b st ra ct多晶微结构存在于自然界中,也出现在工业过程中。在这样的微结构上执行有限元计算在多个工程领域中是相关的。本文介绍了一种高度自动化,可能是人工辅助,方法来创建高质量的有限元网格的多晶微结构。输入是一个图像,显示颗粒,被识别。首先,通过执行几种图像分割技术获得单个颗粒。该程序允许分析颗粒的相关特性,例如其直径。然后将分割的图像转换为CAD几何形状。这种几何形状的不同参数化导致不同的晶粒光滑度。我们的方法的优点是,现有的,强大的网格软件可以用来创建一个高质量的网格上的粮食大会在一个完全自动的方式。所开发的方法说明了一个现实世界的例子。版权所有©2021作者。由爱思唯尔公司出版这是CC BY-NC-ND下的开放获取文章许可证(http://creativecommons.org/licenses/by-nc-nd/4.0/)。代码元数据当前代码版本1.0.1用于此代码版本的代码/存储库的永久链接https://github.com/ElsevierSoftwareX/SOFTX-D-20-00095法律代码许可证LGPL-3.0使用git的代码版本控制系统使用的软件代码语言、工具和服务Python 3.6; Binder; Read the Python; Better Code Hub编译要求、操作环境依赖性Linux/Windows;存储库链接到开发人员文档https://cristalx.readthedocs.io/问题支持电子邮件zoltan-c@keemail.me1. 介绍基于颗粒的微观结构存在于自然界中(例如结晶岩石),并且在工业过程中也发挥作用,例如锻造[1]或开发金属陶瓷[2]。晶粒尺寸和形状的影响,以及微观尺度上成分的分布决定了宏观尺度上材料的行为1[3]。 因此,表征微观结构是有意义一*通讯作者。电子邮件地址:zoltan-c@keemail.me(Zoltan Csati).1为了简洁起见,本文不区分微观尺度和中尺度。 术语微观尺度和宏观尺度用于强调研究现象的尺度的差异。 微尺度的概念将用于颗粒形状可以被识别。https://doi.org/10.1016/j.softx.2021.100669一种方法是综合生成许多具有统计分布中某些相关特征的响应,并使用统计方法计算平均响应在给定的负载条件下[4]。计算微结构生成的优点是可以通过改变参数来进行当一种新材料正在开发中时,对微观结构进行虚拟实验是非常有用的,而不必制作样品并对其进行真实实验。这也是一种更快,更便宜的方法,而不是必须执行耗时且通常昂贵的测量。关于颗粒生成,参见最近的论文[5]。开源工具Neper[6]也有一个用于生成多晶微观结构的模块。当微观结构可以被统计参数正确地捕获时,这种方法工作得很好。然而,如果不是这种情况,或者如果感兴趣的是特定的真实微观结构,则需要进行测量。2352-7110/©2021作者。由爱思唯尔公司出版。这是一篇开放获取的文章,使用CC BY-NC-ND许可证(http://creativecommons.org/licenses/by-nc-nd/4.0/)。可在ScienceDirect上获得目录列表SoftwareX期刊主页:www.elsevier.com/locate/softxZoltan Csati,Jean-François Witz,Vincent Magnier等.软件X 14(2021)1006692测量的结果是要识别颗粒的图像。这是一个图像分割的任务为了定位对象和边界,图像分割方法将图像划分为区域,使得不同的标签与每个区域(像素组)相关联超像素是基于颜色、空间距离、或其他属性[7]。超像素分割将图像细分为其他图像处理算法可以有效操作的超像素。有关超像素分割方法的比较,请参见[8]。由于超像素过度分割图像,因此需要其他分割技术来获得适当分割的图像,其中可以区分各个颗粒一种这样的方法是分水岭分割。分水岭分割是分水岭变换的一个常见用例,也简称为分水岭。在[9]中引入的术语分水岭是在地质定义之后创造的,即分隔地形表面的集水盆地的障碍集。灰度图像可以被看作是一个地形表面,其中像素强度对应于山丘和山谷。直观地说,表面从山谷(局部最小值)开始被不同颜色的水淹没。当两种不同的颜色合并时,将插入一个屏障。这个过程一直持续到整个表面都被水淹没。自[9]以来,人们提出了许多分水岭的其他定义,并提出了几种算法来计算它们。当直接应用于灰度图像时,由于充当局部最小值的噪声,分水岭分割的结果是过分割图像。分水岭分割的成功取决于如何识别集水盆地,这是洪水开始的位置。所谓的基于标记的流域分割方法依赖于标记(自动计算或由用户给出),即集水盆地的位置,作为输入。均匀化方法提供了从微观尺度到宏观尺度过渡的理论在存在复杂的微观结构特征或复杂的物理特性,则通常采用所谓的计算均匀化[10]。在计算均匀化中,通常用有限元法(FEM)求解控制方程,这需要在区域上进行网格划分基于图像的方法直接在图像上创建网格,而不需要中间的几何构造步骤。大多数方法在已经分割的图像上工作。最简单的方法是为每个像素(或3D中的体素)分配一个网格单元。这不仅导致过大的网格,而且由于锯齿状表面近似而导致随后的模拟不准确。因此,非结构化网格通常是优选的,其中在生成网格时考虑图像特征。软件OOF2[11]有几个内置的局部网格修改算法,用于在分割图像上创建网格该方法在OOF3D[12]中扩展为三维四面体网格。另一方面,[13]提出了一种惩罚方法,甚至不需要分割图像。此外,网格图像可以被感知为原始图像的较低分辨率表示因此,他们的方法不仅适用于网格化图像,而且还可以作为初始分割,类似于超像素分割算法。在这一类别中,我们提到了Neper[6],一种用于生成和网格化多晶体的工具,建模为Voronoi镶嵌。由于非结构化网格必须同时满足两个准则,因此上述策略通常是复杂的它必须由高质量的细胞组成,并且细胞应该尽可能均匀,即细胞应该理想地属于单个标记区域。结合水平集方法的X-FEM规避了这一要求[14]。这里独立于分割图像的边界。这样,边界会切割网格单元,并且水平集值会投影到网格上通过将X-FEM与水平集方法耦合,函数近似的质量(由网格密度确定)与几何结构的分辨率(由像素/体素的数量确定)解耦。网格的质量影响插值误差和离散化问题的条件[15]。如果对于非线性问题(如接触、大变形弹性、塑性),高质量的网格对于获得精确解,甚至在给定载荷增量下获得收敛解至关重要。虽然直接基于图像生成自适应网格是一个正在进行的研究工作,基于图像的方法通常集中在创建网格上的颗粒。然而,在许多情况下,有趣的现象,如应变局部化,发生沿晶界(界面)。因此,能够提取界面并控制网格生成是有用的,例如,通过在界面附近构建渐变网格。网格细化也是进行收敛研究所必需的。我们面临的另一个问题是补片修复。由于OOF2获得的网格质量不够好,我们考虑使用第三方工具改进网格然而,通过这些工具获得的新网格不尊重原始微观结构,这对于仅由几个细胞组成的小晶粒可能是有害的更重要的是,新的网格没有关于哪个单元属于哪个颗粒的信息,如果不同的材料属性与不同的颗粒相关联,则该信息是必要的。上述挑战使我们将颗粒表示为精确的几何形状,而不是细胞的组装,这是一种固有的离散方法。我们注意到,在提取界面后,可以使用非协调(可能是块结构)网格,如X-FEM中。这种选择简化了网格生成,但同时需要专门的求解器和自定义预处理器。因此,在本文中,传统的协调网格生成,其优点是强大的开源或专有软件可以用于此目的。本文件的结构如下。第二部分是文章的主体部分第2.1节描述了设计选择背后的理念。这些是我们从一开始就瞄准的最相关的需求,随着项目的发展,我们坚持这些需求。第2.2这两个步骤构成了我们软件的核心。程序的其他功能在第2.4节中描述。第2节结束时介绍了为该项目做出贡献的方法(第2.5节)。在第2节讨论了程序的基本原理之后,在第3节中通过我们小组的一个实际例子演示了它的该部分展示了如何使用可用的构建块,并提供了额外的Python模块来扩展核心以满足需求。我们的软件对材料科学界的影响在第4节中突出显示。第5节给出了未来扩展的一些前景。2. 软件描述我们的项目名为CristalX,是用纯Python编写的,Python是一种广泛使用的免费开源通用语言,具有丰富的科学生态系统[16]。 该软件的源代码可在https://github.com/CsatiZoltan/CristalX上获得,许可 证 为 LGPL-3.0 其 文 档 托 管 在 https : //cristalx 上 。readthedocs.io/,包括详细的API参考以及在高分辨率图像上构造水平集然而,在这方面,可以创建一个简单的结构化或块结构化的网格2每当我们编写Python时,我们指的是CPython实现。Zoltan Csati,Jean-François Witz,Vincent Magnier等.软件X 14(2021)1006693例子. 该软件经过测试,可在Ubuntu 18.04和Windows 8.1下使用Python 3.6所有必需的依赖项都由conda包管理器安装,以便自动安装到单独的环境中。此外,代码可以通过Binder访问,在这种情况下根本不需要安装。2.1. 设计选择该软件不是像BLAS这样的黑盒库,也不是面向最终用户的基于GUI的应用程序。它是一组易于使用和可扩展的Python代码,提供了科学家可以根据需要扩展的基本功能。该软件是通过遵循以下规则构建的1. 以实际需求为仅实现当前使用的功能。添加额外的功能需要更多的测试,可能需要更多的依赖性,因此代码膨胀,并增加了用户的认知负荷。相反,重点是创建一个稳定的最小核心库,可以根据用户的需求容易地扩展。因此,应用程序代码与核心模块分离2. 构建对完善的我们依赖于科学Python堆栈:NumPy[17]用于数组操作,SciPy[18]用于插值和其他一些计算,Matplotlib[19]用于可视化,scikit- image[20]用于图像处理。这确保了与其他科学代码的互操作性,并且我们的软件有望没有错误。3. 最小化依赖关系快速原型在科学代码开发中至关重要,Python是满足这一要求的绝佳选择。同时,依靠快速库可以确保计算速度相当快。前面提到的库很容易安装,通常已经预先安装在某些Python发行版中。4. 高质量的文件未来的贡献者将受益于丰富的文档。Python文档测试被广泛使用,既可以作为测试用例,也可以作为使用示例。文档字符串符合numpydoc样式指南。2.2. 分割对显微结构的图像执行图像分割。分割产生所谓的标记图像,即具有与输入图像相同大小的图像。不同的正整数,称为标签,与标记图像中的像素组相关联,并且每个像素属于一个且仅一个这样的组。如果像素组与原始图像中的颗粒相对应,则图像分割成功。根据微观结构和图像质量(噪声等),图像分割可能非常具有挑战性,并且通常不能完全自动化。我们的方法是创建一个工作流程,我们发现它可以提供令人满意的结果,但也可以向用户公开相关参数,以便可以针对自定义图像对过程进行微调。下面详细介绍此工作流程。对于本文的其余部分,术语颗粒不仅在物理意义上使用,而且还指颗粒的各种表示(图像的一些连接像素,多边形的顶点,由样条线限定的平面)。它的用法从上下文中显而易见。分割模块提供的工作流程如下(函数或类方法以等宽字体键入)。1. 过滤(segmentation.Segmentation.filter_image)为了去除图像上不需要的伪影,必须将噪声去除作为预处理步骤。由于接口对我们很重要,我们使用中值滤波进行平滑,因为它保留了轮廓。2. 超像素分割(segmentation.Segmentation.初始分段)在许多实际情况下,界面看起来并不与图像上的颗粒清楚地分离。因此,简单的阈值方法在这些情况下是不成功的。相反,使用快速移位[21]方法,这是一种超像素分割算法。3. 减少超像素的数量(分割。Segmentation.merge_clusters)由于前一步骤中的超像素分割导致过分割图像,因此构建区域邻接图并用于基于它们相对于平均颜色的相似性合并一些相邻超像素[22]。4. 找到晶界(分割。分割。find_grain_boundaries)返回一个二进制图像,该图像具有指示标记区域之间的边界的真值。5. 构建骨架(segmentation.Segmentation.create_skeleton)在晶界上使用细化来获得单像素宽的骨架。如果到目前为止执行的自动分割不够好,用户可以在ImagePy[23]中手动编辑晶界作为图形。自动分割与人工监督的结合是在相对较短的时间内实现良好结果的有力方法。6. 分水岭分割(分割。分割。分水岭分割)给定可能手动修改的骨架,我们希望获得它们定义的区域(颗粒)。我们使用分水岭分割法来达到这个目的。在骨架上计算欧几里得距离变换以确定汇水盆地。它给出了一个点距离最近的骨架像素有多远。该距离函数负值的局部极小值可作为分水岭分割的标记。然而,这会导致图像过度分割,因为每个最小值都充当了集水盆地。因此,标记被设置为负距离函数的扩展最小值,其中扩展最小值是h-最小值变换的区域最小值(参见[24]中的第6因此,扩展的最小值定义了基于标记的分水岭分割所需的上述步骤将在第3节中举例说明。备注1.我 们 软 件 的图像分割部分本身就很有用;对于只处理图像的科学家来说,不需要后续的网格化。2.3. 几何重建如第1节所述,为了生成高质量的网格,我们将颗粒表示为几何对象。为了正确表示几何形状,颗粒必须形成域的镶嵌。也就是说,它们之间不应有间隙或重叠。这意味着界面(两个晶粒之间的共同边界)对应于同一个物体,无论我们将其视为第一个或第二个相邻晶粒的一部分。因此,首先需要识别界面,然后必须将晶粒构造为由界面限定的表面现在详细描述获得标记图像的几何描述的步骤Zoltan Csati,Jean-François Witz,Vincent Magnier等.软件X 14(2021)1006694表1邻域定义的范围n = 1和他们的 评估的配置中描绘的图。1 .一、连接冯诺依曼摩尔冯诺依曼,空心摩尔,空心面具遮罩内的颗粒像素出现0 1 0 14 6 3 50 0 0 01 2 1 2邻居-纠正不表2邻域定义的范围n = 2和他们的 评估的配置中描绘的图。1 .一、连接冯诺依曼摩尔冯诺依曼,空心摩尔,空心面具遮罩内的颗粒像素3 8 3 77 8 3 20 2 0 23 7 2 5邻居- /-纠正否/否是1. 构建分割图像的骨架(cad.build_ skeleton)界面形成分割(标记)图像的骨架,并具有单像素宽度。scikit-image的内置函数用于获得分割图像的骨架首先,标记图像被人工像素区域包围创建这个额外的区域定义了边界晶粒的边界界面,使得无论晶粒位于区域的边界还是内部,都可以应用相同的算法。连接图给出了骨架像素是如何连接的。为此,使用Python包skan[25]。Skan将像素连通性存储在稀疏矩阵中,并为每个骨架像素提供相邻骨架像素的数量(度)。度允许将骨架像素分类成各种类别。如果度为1,则特定骨架像素仅连接到另一个骨架像素,因此称为端点。通常大多数骨架像素是内部的,具有二阶。度在三以上的,称为结。正如skan正确指出的那样,分支可以出现在两个结点之间,一个端点和一个结点,两个端点之间,甚至可以表示一个孤立的循环,它只由二次骨架像素组成。然而,在我们的例子中,很容易认识到,只有具有结到结连接的分支才能形成晶界。因此,我们将在这个限制意义上使用术语分支2. 确定由分支集(cad.cadon2regions)限定的晶粒这个问题可以通过图论方法来解决。考虑一个图,其中顶点是分支端点,边是分支。在这个图中,适当地选择循环将给出束缚颗粒的分支。虽然这种方法是优雅和抽象的,因此可以使用高效和健壮的第三方图形库,但它有几个缺点。首先,枚举图中的所有基本循环具有令人望而却步的时间复杂度[26]。其次,大多数基本循环不包含单个颗粒(例如,一个循环可能对应于两个颗粒的并集),因此选择必须是来过滤掉非物理周期。另一种技术可以是确定图的最小周期基础。不幸的是,最小周期基础不是唯一的[27]。因此,不能保证这样的周期将对应于一个晶粒。当一个小颗粒位于两个较大颗粒之间时,会出现额外的困难,从而导致相应图形中的双边。许多图算法都是在图中不包含环和多条边的前提下工作的。为了缓解这一问题,提出了一种替代解决方案,在该方案中,我们使用分割图像中的信息。具体来说,我们将二值化后的二值图像映射到标记图像上,并检测其周围的标记给定的骨架像素。在分支的骨架像素上执行这种相邻搜索,并选择两个最常见的标签,为分支提供相邻的颗粒剩下要指定的是什么被认为是骨架像素的邻域 图图1以黑体示出了其上具有所选骨架像素P的分支,以及当叠加在对应的标记图像上时的周围环境。标记的区域由不同的颜色区分。该配置取自我们正在使用的实际微结构,并将用作示例来演示选择各种邻域定义的效果。skan并没有创建两个分支将黄色区域和绿色区域以及绿色区域和蓝色区域分开,而是只创建了一个分支。 从完整的标记图像,其中一部分显示在图。1,人类观察者可以很容易地决定黄色和蓝色区域必须是分支的两个邻居。然而,仅依靠本地信息来自动识别“正确"邻居并不简单。表1 该算法基于P邻域中最常见的两个像素来识别相邻区域(颗粒)。 这些表报告标识是否正确。一个自然的选择是考虑P的直接邻居,让它是4-连通性(冯诺依曼)或8-连通性(摩尔),见表1的前两列。然而,在这方面,Zoltan Csati,Jean-François Witz,Vincent Magnier等.软件X 14(2021)1006695===有一些情况,如图所示。1,当另一个颗粒的细长部分(绿色像素)插入到实际相邻界面的两个颗粒之间时。为了缓解这个问题,可以考虑广义冯诺依曼和摩尔邻域,其中邻域搜索扩展到更大的范围n,从而减少直接邻居的影响。在本例中,n2不足以获得所需的邻居(参见表2的前两列)。虽然n=3解决了这个例子中的问题,但将n设置得太大会带来另一个问题:小颗粒仍然无法识别。另一个策略是使面具中空。这种选择丢弃了近邻,从而防止了细晶粒插入(参见。表1 - 2中的第3从该示例可以因此,在软件中提供了可参数化的启发式算法,而不是构造复杂和昂贵的方法来检测邻居。我们承认,完美的结果几乎是不可能实现任意标记的图像,因此我们允许用户选择最适合给定图像的算法。空邻域策略2被证明是获胜的选择,第3节中研究的微观结构,导致拓扑上可接受的几何形状,只留下一个未识别的微小颗粒为 了 找 到 约 束 颗 粒 的 树 枝 , 将 上 面 确 定 的cad.tagon2regions函数可以被视为骨架网络和颗粒的完全几何表示也就是说,它保留了创建完全几何描述所需的关键拓扑信息,但它也包含晶界的坐标。该函数的输出可用于构建不同的纹理表示(例如多边形或样条曲面)。3. 找到定向晶界(cad.branches2boundary)重建算法的前一部分确定哪些分支约束晶粒。为了获得作为晶粒的表面表示,边界必须定向,因此分支必须以适当的顺序连接。cad.branches2boundary函数使用一种简单的强力方法,根据分支的公共连接点交错分支。支持顺时针和逆时针方向。在这一步结束时,我们得到了一个完整的几何描述,因为每个晶粒现在都是由一系列沿着其边界的点给出的。4. 将每个晶粒表示为平面该软件提供两种表示简单的方法是把晶粒边界上的点看作多边形的顶点。这种直接的方法在cad.region_as_polygon中实现,其缺点是在多边形上生成的网格不具有自适应性,即无法控制网格。根据标记图像的分辨率,多边形可以由数百个顶点组成。网格生成器考虑多边形的微小边缘,因此网格将基于晶粒的边界顶点而不是其他更适当的标准进行细化或粗化。此外,所得到的网格是不必要的密集。作为部分解决方案,然而,我们想要实现的简化顺序更好的解决方案是使用CAD工具来控制几何形状。Fig. 1. 骨架像素P及其邻域。(a) 创建通过点的B样条曲线(cad.fit_ spline)PIBS-Python是一个易于使用的纯Python软件包,用于样条操作,不依赖于标准库[28]。它的逼近能力足以满足我们的任务,但据我们所知,创建一个由样条曲线包围的表面是不可能的。此外,在撰写本文时,它不能将样条曲面导出为无损CAD格式,如STEP。因此,我们依赖PythonOCC[29],它是一个围绕成熟和免费的开放级联技术(OCCT)的Python包装器。用户可以设置不同的参数来控制近似。这些参数分别是样条函数的最小阶和最大阶、连续性和公差.公差指示OCCT构造样条,使得从任何数据点到样条的距离小于规定的公差。 当公差趋于零时,得到样条插值。(b) 用B样条近似每个分支(cad. branches2splines)由cad.fit_spline对每个分支执行(c) 将每个晶粒表示为样条曲面(cad.region_as_splinegon)对于每一个晶粒,形成其边界的样条被组合成一个封闭的轮廓。然后创建一个平面曲面,由该轮廓限定边界。5. 导出几何体(cad.regions2step)重要的是,每个颗粒的表面以无损格式给出,例如。 在STEP(产品的ST标准化E交换)中,而不是作为网格表示。cad.regions2step函数从单个晶粒曲面构建复合曲面,然后通过cad.write_step_file将其写入STEP文件。导 出 的 STEP 文 件 用 作 网 格 生 成 器 的 输 入 , 例 如Salome[30]、Netgen[31]或Gmsh[32]。2.4. 附加特征该软件包含方便的功能和类。目前,以下Python模块是最相关的模块:几何实现计算几何算法,重点是极简主义,而不是功能丰富性TriMesh类是具有三角形单元的非结构化网格的表示。可以有效地处理数十万个单元,这通常足以解决2D问题。Polygon类是对简单多边形(可能是凹多边形)的抽象。因为它有计算多边形面积、质心和直径的成员函数,所以这个类在分析近似为多边形的颗粒时被证明是有用的。当颗粒被离散为细胞集合时,也会自然地产生多晶。·Zoltan Csati,Jean-François Witz,Vincent Magnier等.软件X 14(2021)1006696medSalome使用MED数据模型作为交换格式,以在框架中包含各种模拟代码[30]。它是HDF5的扩展版本,支持并行网格和场。Salome虽然MEDCoupling功能强大,但其Python API 只能在Salome内核中使用。此外,它可能缺乏用户可能需要的某些网格处理功能。由于由相同类型的单元(例如三角形)组成的网格可以表示为均匀和连续的阵列,因此将网格从MED转换为NumPy阵列似乎是合理的选择。这就是我们的MED模块所做的:它提供了一个围绕MEDCoupling的薄包装器,用于从MED文件中提取网格和定义的组(单元和顶点组),并将它们转换为NumPy阵列。通过这种方式,处理数值建模的用户可以基于NumPy数组实现他们的网格处理算法,这是快速和直接的。此外,执行CAD操作并安装Salome的人员可以使用我们的med模块将网格导出到NumPy阵列,以便数值分析师可以直接对其进行操作,而无需安装Salome,也无需了解MEDCoupling API。 utils仅依赖于标准库和NumPy,并包含不适合其他类别的实用程序函数有关其他帮助函数,例如启用代码分析的帮助函数,请参阅源代码及其文档。2.5. 协作欢迎对代码和文档的新想法,错误报告和批评,并在项目的GitHub问题跟踪器上解决contributing.md文件包含如何提交提案的详细信息。3. 说明性示例CristalX是围绕以下应用程序构建的我们感兴趣的是晶粒的尺寸梯度,以及它们的组成材料如何影响火车车轮和车轴对疲劳载荷的抵抗力与[1]相比,我们考虑了微观结构中每个单独晶粒的影响下文起草了一份解决这一问题的高级别概述代码可以在存储库中的一个笔记本上找到,而物理问题和数值解决方案将在另一篇文章中详细介绍。1. 输入:微观结构作为照片我们将考虑图中的微观结构。2(a)见论文[33]。为了使分割更容易,中央部分被裁剪。2. 识别单个颗粒(segmentation.py)在执行第2.2节中描述的步骤之后,我们得到图2(b)中所示的 分 割 图 像 。 为 了 获 得 更 好 的 结 果 , 我 们 本 可 以 使 用ImagePy,但为了我们仍然使用自动工作流程。然而,Fig.3比较了自动获得的骨架(图3(a))和手动编辑(图3(b))。因此,图2(b)中的分割图像基于图3(a)中的骨架。乍一看,图2(b)中识别出的颗粒与我们在图2(a)中看到的实际颗粒并不对应。事实上,在现实中分割的区域比颗粒更多。然而,“真实”颗粒的轮廓被很好地识别。 这一点从以下观点来看是相关的:这是因为之后可以容易且快速地合并无关区域,而手动晶界检测将花费大量时间。3. 获得颗粒的平面B样条曲面(cad.py)使用第2.3节中的算法,除了非常小的颗粒(仅由几个像素组成)之外,所有颗粒都可以识别。缺失的晶粒在磁畴中充当空穴4. 在Salome中手动修复CAD几何形状以填充孔5. 网格生成得益于CAD几何结构,Netgen网格生成器[31]无需任何用户干预即可实现出色的网格质量。图 4比较了OOF2获得的网格(图2)。4(a))与一个是基于中间的几何表示(图。4(b))。OOF2生成的低质量单元阻碍了Abaqus求解器在几个加载步骤中的收敛。 注意图中晶界附近的细网格。4(b).这种网格自适应性在计算中将是重要的,因为预计会沿着晶界发生大的变形。我们注意到,颜色与颗粒随机相关,这就是为什么它们在图2(b)和图。4(a),尽管它们描绘了相同的微观结构。6. 从.med文件加载网格(med.py)网格从Salome导出为MED文件。使用CristalX的med模块,每个晶粒的三角形网格单元和边界节点被提取为NumPy阵列。7. 网格操作实用程序(geometry.py)网格被缩放以基于物理单位而不是像素单位来定义计算域。8. Abaqus输入文件(abaqus.py)材料参数、边界条件和网格被写入有限元程序Abaqus可以解释的文本文件。9. 笛卡尔网格和非结构化网格之间的投影(dic.py)实验获得的位移场,获得的数字图像相关(DIC)技术,是已知的笛卡尔网格。为了将场值与数值数据(在网格的节点处可用)进行比较,实施了散射插值。4. 影响我们的工具是灵活的,因为它包括松散耦合的模块的典型步骤的微观结构识别和处理。因此,这些组件可以由研究人员根据他们的需求独立开发。详细的文档、贡献指南以及我们完全依赖开源工具的事实促进了协作。事实上,我们有兴趣将外部贡献者的研究想法纳入CristalX。我们的几何重构算法不假设多边形颗粒。如图5所示,凸、凹、非单连通域都可以被直观地识别出来。虽然微结构生成器工具可以自由地将注意力限制在相对简单的晶粒形状上,但实际的微结构通常由非常复杂的晶粒组成(如图1所示)。 5)。因此,对于实验获得的微结构,我们的算法是至关重要的。 我们预计CristalX将有助于那些想要表征基于颗粒的微观结构或打算在高质量网格上执行有限元计算的材料科学家。最后,我们提到,尽管CristalX是为微结构分析而开发的,但需要镶嵌的几何表示的其他应用可以从这里描述的方法中受益。··Zoltan Csati,Jean-François Witz,Vincent Magnier等.软件X 14(2021)1006697图二、 拉伸试样的 特 写 及其图像分割。图三. 初始快速移位分割后的图像骨架。5. 结论和今后的工作见图4。 在分割图像上生成网格。分割工作流程被定制以用于识别球状微结构。其次,将分割的图像转向我们讨论了如何直接的几何表示的晶粒结果在一个更好的网格质量,必要的应用程序在volving非线性。我们的贡献是双重的。首先,一个图像具有可自定义平滑度的CAD几何格式。这两个核心模块被用作开发其他模块的基础,使我们能够解决相关的工业问题。Zoltan Csati,Jean-François Witz,Vincent Magnier等.软件X 14(2021)1006698图五. 左边的图像显示了分割的微观结构的一部分,其中颜色对应于晶粒。每个分割的区域,然后变换到一个明确给定的几何体,其边界由B样条(中心)参数化。这种几何体的描述使得生成高质量的网格成为可能(右)。(关于此图例中颜色的参考解释,请读者参考本文的网络版本我们软件的构建块足够通用,因此它们可以作为其他领域的出发点,在这些领域中,类似颗粒的形状镶嵌一个域。可以建立一个算法集合来在识别枝晶连通性时搜索邻近像素(参见图1)。第2.3节)。不断增长的这种知识收集通常是应用程序驱动的。当一个现有的策略失败时,人们会寻找另一个策略,并保存那个流行的策略以供将来使用。通过允许用户在不同的初始分割方法(而不仅仅是快速移位分割)中进行选择,支持不太严格的图像分割工作流程是合理的。软件的当前版本是1.0.1。竞合利益作者声明,他们没有已知的竞争性财务利益或个人关系,可能会影响本文报告的工作致谢ImagePy的创建者之一Xiaolong Yan的支持得到了认可,他在图像分割方面提供了建议,特别是他对ImagePy的帮助。我们还要感谢Pierre Baudoin为我们提供了用于说明本文工作流程的微观结构这项工作是在CNRS SWIT实验室联合实验室(LaMcube CNRS9013,LAMIH CNRS 8201,MG Valdunes公司和CNRS)内进行的,并得到了ELSAT 2020研究项目的支持。SWIT引用[1] Baudoin P,Magnier V,Bartali AE,Witz J-F,Dufrenoy P,Demilly F,Charkaluk.非均匀应力状态下晶粒梯度材料缺口试样疲劳强度的数值研究。IntJ Fatigue 2016;87 : 132-42. http://dx.doi.org/10.1016/j.ijfatigue.2016.01.022 网站。[2] 熊华,朱S,雷萍,李志,周凯。含均匀分散超细无棱晶的Ti(C,N)基金属陶瓷:VC添加剂对显微组织和力学性能的影响。Ceram Int 2020;46(12):19904-11。http://dx.doi.org/10.1016/j.ceramint.2020.05.055网站。[3] Sabbarese C,Ambrosino F,D'Onofrio A.不同类型住宅中氡迁移模型的发展,以评估室内放射性浓度。J Environ Radioact 2021;227:106501.http://dx.doi.org/10.1016/j的网站。jenvrad.2020.106501。[4]傅军,崔世,岑世,李春. 使用深度神经网络统计表征和重建异质微结构。计算方法应用机械工程2021;373:113516。http://dx.doi.org/10.1016/j的网站。cma.2020.113516。[5]Hart KA,Rimoli JJ.通过直接晶粒几何形状控制生成具有统计学代表性的微观结构。第370章:你是我的女人http://dx.doi.org/10.1016/j.cma.2020.113242网站。[6]放大图片Quey R,Dawson PR,Barbe F. 大规模三维随机多晶体有限元法:生成,网格化和重新网格化。计算方法应用机械工程2011;200(17-20):1729-45. http://dx.doi.org/10的网站。1016/j.cma.2011.01.002。[7] 伦马利克学习用于分割的分类模型。第九届IEEE计算机视觉国际会议IEEE;2003,http://dx.doi.org/10.1109/iccv.2003.1238308。[8]Stutz D,Hermans A,Leibe B. Superpixels:An evaluation of the state-of-art.ComputVisImageUnderst2018;166:1-27.http://dx.doi.org/10.1016/j.cviu.2017.03.007.[9]博彻在轮廓检测中使用分水岭。图像处理国际研讨会:实时边缘和运动检测/估计。法国雷恩。1979.网址paristech.fr/~beucher/publi/watershed.pdfhttp://www.cmm.mines-[10] Geers MGD,Kouznetsova VG,Brekelmans WAM.多尺度计算均匀化:趋 势 和 挑 战 。 J Comput Appl Math 2010;234 ( 7 ) : 2175-82.http://dx.doi.org/10.1016/j.cam.2009.08.077网站。[11]Reid ACE,Langer SA,Lua RC,Coffman VR,Haan S-I,Garcia RE.基于图像的材料微结构有限元网格构建。Comput Mater Sci 2008;43(4):989-99.http://dx.doi.org/10.1016/j.commatsci.2008的网站。两点零六分[12]Coffman VR,Reid ACE,Langer SA,Dogan G. OOF3D:一个基于图像的材 料 科 学 有 限 元 求 解 器 。 数 学 计 算 模 拟 2012;82 ( 12 ) : 2951-61.http://dx.doi.org/10.1016/j.matcom.2012.03.003网站。[13]Goksel O,Salcudean SE.基于图像的变分网格。IEEE Trans Med Imaging2011;30(1):11-21。http://dx.doi.org/10.1109/tmi.2010.2055884网站。[14]Legrain G,Cartraud P,Perreard I,Moës N.基于图像建模的X-FEM和水平集计算方法:均匀化应用。Internat J Numer Methods Engrg 2010;86(7):915网址://dx.doi.org/10.1002/nme.3085网站。[15]小休丘克什么是好的线性元件?- 插值、条件和质量测量。2002年,网址https://people.eecs.berkeley.edu/~jrs/papers/elemj.pdf。[16] 奥 列 芬 特 Python 用 于 科 学 计 算 Comput Sci Eng 2007;9 ( 3 ) : 10-20.http://dx.doi.org/10.1109/mcse.2007.58网站。[17]van der Walt S,Colbert SC,Varoquaux G. NumPy数组:用于高效数值计算
下载后可阅读完整内容,剩余1页未读,立即下载
cpongm
- 粉丝: 4
- 资源: 2万+
上传资源 快速赚钱
- 我的内容管理 收起
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
会员权益专享
最新资源
- zigbee-cluster-library-specification
- JSBSim Reference Manual
- c++校园超市商品信息管理系统课程设计说明书(含源代码) (2).pdf
- 建筑供配电系统相关课件.pptx
- 企业管理规章制度及管理模式.doc
- vb打开摄像头.doc
- 云计算-可信计算中认证协议改进方案.pdf
- [详细完整版]单片机编程4.ppt
- c语言常用算法.pdf
- c++经典程序代码大全.pdf
- 单片机数字时钟资料.doc
- 11项目管理前沿1.0.pptx
- 基于ssm的“魅力”繁峙宣传网站的设计与实现论文.doc
- 智慧交通综合解决方案.pptx
- 建筑防潮设计-PowerPointPresentati.pptx
- SPC统计过程控制程序.pptx
资源上传下载、课程学习等过程中有任何疑问或建议,欢迎提出宝贵意见哦~我们会及时处理!
点击此处反馈
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功