用matlab建立晶体模型,一种建立多晶体几何模型的方法与流程

a2aeae5dea50bb0762e37bd3fc8a9770.gif

本发明涉及材料结构建模技术领域,具体地说是一种基于voronoi图空间分割原理,利用ug/openapi编程构建多晶体微观结构几何建模的方法。

背景技术:

在对多晶材料进行塑性变形研究时,合适的多晶体几何模型的建立是尤为重要的。早期研究的模型是根据经典塑性理论建立的,经典塑性理论建立在均匀连续介质假设和宏观唯象实验的基础上,对于解决如大变形、织构形成和演化、塑性各向异性、变形局部化、高温和高应变等现代工程实际和高技术领域所面临的问题,有着很大局限性。因此要想解决这些问题就需要从微观层次构建更加符合实际的模型。而且随着计算机技术的迅速发展、各种实验测量技术的发展完善,为多晶材料的研究提供了更加符合实际、更加复杂理论的物质条件。

通常研究多晶变形的有限元模型多以正六边形或以每一个单元代表一个晶粒,这种类似的建模方法无法对细观结构下晶粒内部变形的不均匀性进行研究,而且不能够描述晶界对多晶材料的影响,导致无法研究晶粒演变之间的关系。

由于实际工程材料晶粒大小不一,形状各异,建立与实际组织相近的多晶几何模型是目前有限元分析的关键,其中包括建立符合实际形状的晶粒,以及适合的晶界有限元模型。

现有一些利用扫描电镜等电子设备,通过电子设备扫描样品的表面信息,经过后期处理信息合成相应的晶体模型。这种方法工作量大,最终构建出的模型与真实模型差距比较明显。而且通常由x射线测定的晶体学织构是从统计学的角度出发观察多晶体取向分布状况,因而是从宏观的角度分析问题.宏观织构往往不能确定微观结构和晶粒的单个取向。

目前多晶体建模应用较多的有voronoi图、蒙特卡罗和元胞自动机等,其中蒙特卡罗由于对基础风险因素的一些假设,使得存在模型风险,计算量大,准确性的提高速度慢,如果计算机模拟产生的是伪随机数,那么可能导致错误结果。

再结晶模拟的元胞自动机方法是hesselbarth等提出的,他们建立的模型由于结构简单,易于将复杂的物理现象用简单的转化规则表达出来,但其中也有一些问题没有解决,如再结晶分数-时间关系的定量描述、晶粒尺寸的分布规律及如何显示微观组织演化过程等。

voronoi图的方法可以与有限元方法相耦合来建立多晶有限元模型,所建立的模型能灵活地分析不同材料微结构演变的物理机制,而且存储数据少,计算速度快,因此voronoi图方法在国内外得到了广泛的应用。

因为voronoi图的独特优势,研究者基于voronoi原理发明了多种建模方式。如法国queyr团队在linux系统中利用neper软件生成voronoi多晶模型,在linux系统中安装运行neper需要运用很多命令配置系统以及编译软件,操作繁琐而且对于没有linux基础的研究者工作量较大。

国内司良英、邓关宇等使用voronoi图方法进行建模,通过对voronoi种子点的控制得到不同形态的多晶式样,进一步控制晶粒尺寸,使其满足一定的统计学规律;并通过选取随机数来赋予晶粒随机晶粒取向,最终得到多晶体的力学模型。之前研究者做出的研究大都是采用matlab或者python中的voronoi图算法生成其相关几何和拓扑信息,然后通过编程进行由点到线、由线到面以及由面到体的一系列几何/拓扑重建过程,整个几何/拓扑重建过程繁琐复杂,因此发明一种更加简单直观,易于实现的多晶体几何模型的构建方法是很有必要的。

技术实现要素:

为了提供一种更加简单直观,易于实现的多晶体几何建模方法,本发明将抽象的voronoi图算法转化为一种简单的几何切割操作过程,基于ug/openapi开发平台,在cad软件中对多晶体微观结构进行实体化几何建模。

本发明采用的技术方案如下:

1.一种建立多晶体几何模型的方法,该方法包括以下步骤:

1)利用ug/openapi编程在ug中建立一个原始立方体(1),边长为a,用c语言编程随机生成n组的三维坐标值(x[i],y[i],z[i])(2),利用上述n组坐标值在原始立方体(1)中生成n个种子点;

2)利用ug/openapi编程以任一种子点(3)为中心建立一个种子立方体(4),种子立方体(4)的边长是原始立方体(1)边长的2倍,为2a;

3)利用ug/openapi编程,在ug中创建切割平面(5),切割平面(5)为过种子点(3)与其余一种子点(6)之间连线(7)的中点(8)并且垂直于连线(7)的平面,根据上述方法,创建种子点(3)与其余种子点的切割平面,得到n-1个切割平面,并用这n-1个切割平面切割种子立方体(4),得到的多面体几何模型就是该种子点(3)对应的晶粒模型(9);

4)根据步骤2)3)所述的方法,按照步骤1)中n组三维坐标值(2)产生的n个种子点,依次以其余种子点为中心建立种子立方体,构建与每个种子立方体对应的切割平面,并用每个种子立方体对应的切割平面对种子立方体进行几何切割,得到n个种子点对应的n个晶粒的多面体几何模型,将每个晶粒的几何模型与原始立方体(1)求交,得到最终的多晶体微观结构几何模型(10)。

2.根据权利要求1所述的一种建立多晶体几何模型的方法,所述步骤1)中,a为大于零的实数,n组三维坐标值中,n为大于2的正整数,n组三维坐标值(2)为0到a的实数。

3.根据权利要求1所述的一种建立多晶体几何模型的方法,所述步骤3)中,每个种子立方体对应的切割平面为n-1个。

进一步,所述步骤1)中,根据指定的生成种子点个数n和原始立方体(1)的边长a,在原始立方体(1)内随机生成种子点的三维坐标值,利用坐标值生成种子点,其具体步骤如下:

1a)根据事先指定的种子点个数n和原始立方体的边长a,通过c语言的随机数生成器,生成三组浮点型随机数,且随机数为零到a之间的实数,每组浮点随机数个数为n,这三组浮点随机数分别对应种子点三维坐标值;

1b)根据种子点的三维坐标值,利用ug/openapi编程生成对应种子点。

进一步,所述步骤2)中,确定种子立方体(4)的边长,建立种子立方体(4),其具体步骤如下:

2a)确定种子立方体(4)的边长为原始立方体(1)边长的2倍,为2a,保证种子立方体覆盖步骤1)中生成的n个种子点;

2b)种子立方体(4)的原点坐标值是根据其所对应的种子点坐标值(x[i],y[i],z[i])和种子立方体边长2a来确定的,为(x[i]-a,y[i]-a,z[i]-a);

2c)根据种子立方体(4)的原点坐标值(x[i]-a,y[i]-a,z[i]-a)和边长a这两个参数,利用ug/openapi编程建立该种子立方体(4)。

进一步,所述步骤3)中,建立切割平面(5),并用切割平面(5)对种子立方体(4)进行几何切割,其具体步骤如下:

3a)切割平面(5)是由该种子立方体(4)所对应的种子点(3)得坐标值(x[i],y[i],z[i])与其它种子点的坐标值(x[j],y[j],z[j])确定的,切割平面(5)为该种子立方体(4)所对应的种子点(3)与其它种子点之间的中心对称面,中心对称面的法向量为两个种子点之间的方向向量,为(x[j]-x[i],y[j]-y[i],z[j]-z[i]),且该中心对称面过上述两个种子点之间的中点,中点坐标值为((x[j]+x[i])/2,(y[j]+y[i])/2,(z[j]+z[i])/2);

3b)根据ug/openapi中判断两个对象是否相交的封装函数,判断种子立方体和切割平面是否相交,确定平面是否为有效的切割平面,将不相交的无效切割平面舍去;

3c)每个种子立方体被有效切割平面切割后得到每个晶粒的多面体几何模型;

进一步,所述步骤4)中,对每一个种子点按照上述步骤2)3)的方法建立晶粒的几何模型,最终得到n个晶粒几何模型;因为晶粒几何模型建立的原理,位于原始立方体最外层的种子点所对应的晶粒的几何模型,在完成有效平面的切割后会超出原始立方体的范围,因此,将各个晶粒几何模型与原始立方体进一步进行布尔相交运算,最终得到多晶体几何模型(10)。

本发明与现有技术相比具有以下几个优点:

1.本发明将抽象的voronoi图算法转化为通俗易懂的几何切割过程,方法原理简单直观。

2.不需要借助于第三方voronoi图算法生成几何和拓扑数据,然后反向地由点到线、由线到面以及由面到体进行一系列几何/拓扑重建过程,易于程序实现,研究者比较容易接受,不需要掌握过于复杂的背景知识。

附图说明

图1为多晶体几何模型在ug中实体化建模流程图。

图2为种子点个数为100时,原始立方体中的种子点分布图。

图3为在原始立方体中的100个种子点中取种子点(3)为中心,建立种子立方体的示意图。

图4为种子点(3)与种子点(6)间的切割平面示意图。

图5(a)多晶体中某晶粒的第一次被切割平面切割示意图;图5(b)该晶粒被所有有效切割平面切割完成后的晶粒模型示意图。

图6为种子点个数为100时的多晶体几何模型。

具体实施方式

下面结合附图与具体实施例对本发明作进一步详细描述。

如图1所示,具体技术方案如下:

1)利用ug/openapi编程建立原始立方体(1),将其边长设置为100,即a=100,原点坐标为(0,0,0);

2)确定在原始立方体(1)中生成种子点个数为100,运用c语言中随机数生成器生成三组浮点型随机数,每组100个数,分别赋予到三个数组x[100]、y[100]、z[100]中;

3)利用种子点坐标(x[i],y[i],z[i])生成对应种子点,如图2所示;

4)利用ug/openapi编程建立种子点(3)对应的种子立方体(4),边长为2a=200,种子立方体(4)原点坐标为(x[i]-100,y[i]-100,z[i]-100),如图3所示;

5)利用ug/openapi编程建立切割平面(5),切割平面(5)是由该种子立方体(4)所对应的种子点(3)的坐标值(x[i],y[i],z[i])与其它一种子点(6)的坐标值(x[j],y[j],z[j])确定的,切割平面(5)为该种子立方体(4)所对应的种子点(3)与其它种子点之间的中心对称面,中心对称面的法向量为两个种子点之间的方向向量,为(x[j]-x[i],y[j]-y[i],z[j]-z[i]),且该中心对称面过上述两个种子点之间的中点,中点坐标值为((x[j]+x[i])/2,(y[j]+y[i])/2,(z[j]+z[i])/2);如图4所示,每个种子立方体要建立与其周围种子点对应的所有切割平面;

6)利用ug/openapi中判断几何对象相交的函数,判断上一步中建立的切割平面能否切割到与其对应的种子立方体,能够切割到的为有效平面,反之为无效平面,通过ug/openapi编程,用所有有效平面切割该种子立方体(4)就得到该种子点(3)所对应的晶粒的多面体几何模型(9),如图5所示;

7)对每一个种子点依次进行上述步骤3)4)5)6)操作,得到n个晶粒模型,利用ug/openapi编程将每个晶粒的多面体几何模型与原始立方体进行布尔求交运算,得到最终的多晶体几何模型,如图6所示。

本发明并不局限于上述实施例,在本发明公开的技术方案的基础上,本领域的技术人员根据所公开的技术内容,不需要创造性的劳动就可以对其中的一些技术特征做出一些替换和变形,这些替换和变形均在本发明的保护范围内。

相关资源:晶体学查看软件_晶体结构查询-软件测试其他资源-CSDN文库

声明:本站部分文章及图片源自用户投稿,如本站任何资料有侵权请您尽早请联系jinwei@zod.com.cn进行处理,非常感谢!

上一篇 2021年3月7日
下一篇 2021年3月7日

相关推荐