课题设计相关
老师发的相关文件已经存入本地,随时查看。
老师推荐网站: www.openphase.de https://dev.icams.rub.de/OpenPhase/stable/OpenPhase.2175.Apr2015
老师原话:前两篇是综述,最后这篇是和那个枝晶生长问题对应的文章
11月1日内容学习
我们先看 Home 页面。
openPhase是一个开源软件项目,致力于一级相变(first order phase transformation)系统中涉及到微观结构(microstructure formation)形成的复杂科学问题的相场模拟(phase field simulations)。
一级相变: 在发生相变时,有体积的变化的同时有热量的吸收或释放,这类相变称为“一级相变”。比如,在1个大气压0°C的情况下,1kg的冰转变成同温度的水,要吸收79.6千卡的热量,同时体积也发生了收缩,所以: 冰和水之间的转换就是一级相变。一级相变的特点是两相的化学势相等,但有体积改变并产生相变热。也就是说,在相变点,两相的化学势的一级偏微商不相等。因此根据热力学关系式,相变时体积改变ΔV=,相变熵,而相变热。
一级相变:化学势相等,化学势的一次导数不相等,二次导数也不相等;
二级相变:化学势相等,化学势的一次导数相等,二次导数不想等
相场模拟:是一种模拟方法,它仅针对组织相变过程而来的一种模拟方法,主要思想是采用连续变量来模拟不连续现象。像场模拟最初是为了绕开凝固组织模拟中追踪凝固界面的困难提出的,本质上是一种弥散界面模型,它将系统看做一个整体,热力学变量控制方程在不同的相区域具有相同的形式,不必追踪界面。 使用相场方法对晶粒长大进行仿真时,多晶粒的显微结构由一系列连续的场变量η1(r), η2(r), η3(r), η4(r),……ηp(r)表示,其中p为取向数,ηi(i=1……p),称为取向场变量,它在空间上是连续的,代表各个不同的晶粒取向。r是点阵格点的位置
所以,openPhase就是一个软件,它具有库的形式,并且使用面向对象的C++来写的,因为该项目具有模块化的结构,所以便于扩展和简化。 之所以是开源项目,是因为这个项目的是为了让感兴趣的科学家快速发展阶段模拟程序,以解决固-固、固-液的一级相变的各种问题以及其他的各种结构变换。
问题: 这个项目还处在早期的测试阶段,并且只有通过了他们测试的模块才能下载,所以可以下载的基本上是没有什么问题的。
如果你要下载,可以访问 download 页面; 更多信息可以查看pdf文件。
接着,我们看看 download 页面:
这说的很清楚: 目前的OpenPhase版本可以通过下面的链接获得(就是老师发送的链接):
https://dev.icams.rub.de/OpenPhase/stable/OpenPhase.2175.Apr2015 (通过svn就可以把这个源代码下载到本地了。)
为了编译OpenPhase(编译之后才能作为软件使用!),FFTW(www.fftw.org)这个库是需要的(是一个用于做傅里叶变换的工具)。
FFTW( the Faster Fourier Transform in the West,英文意思就是西方世界中最快的傅里叶变换工具
)是一个快速计算离散傅里叶变换的标准C语言程序集,通常他比其他任何的开源Fourier变换程序都要快,最新版本为 fftw-3.3.5。
接下来比较重要的就是Examples页面了:
目前,OpenPhase库提供了三个示例。他们的详细描述可以在分发包的/示例目录中找到。用户可以通过示例目录中的README文件中的说明来编译和运行这些示例。下面是这些例子的简要描述。
第一个: 单粒模拟例子。在本例中,单个球形颗粒位于模拟箱的中间。当模拟开始时,谷物开始收缩以减少界面能量(interface energy)。在这种情况下,晶界运动完全由界面曲率、界面能量和晶粒边界移动值决定。结果表明,晶界的速度与晶粒半径成反比,即界面能随时间线性减小。实例仿真结果如图1所示。gif动画。
第二个:正常晶颗粒生长模拟例子。 在这个示例中,使用Voro ++,在模拟框中随机分配20个谷物。当模拟开始时,较大的颗粒开始以较小的颗粒开始增长,因为在多个交叉点上,由于曲率导致的驱动力差异。图2给出了实例仿真的结果。gif动画。
第三个: 用相场和扩散模块(DendrDiff)耦合模拟的例子。 在这个例子中,模拟了一个单晶的定向凝固。仿真的输入是在分发包的//examples/DendrDiff目录中提供的。本实例对相场演化和扩散过程进行了研究。在仿真域离散化的基础上,采用AlCu基准测试方法,建立了仿真结果的收敛性。在达到收敛性后,研究了denrite间距的选取。这里给出了基准问题描述和输入数据(pdf)。图3显示了我们的基准测试的结果为系统大小Lx Ly = 100,Lz = 350和网格间距Δx = 1μm。gif动画。
一个较小的示例模拟的结果可以在一天中使用基准测试示例中给出的材料数据(使用OpenPhase源代码提供)。这些结果如图4所示。gif动画。
第四个: 使用相场和弹性模块(EshelbyTest)耦合模拟的例子。
系统尺寸为129x129x129网格点,接口宽度为5个网格点。边界条件是由谱弹性求解器施加的周期。夹杂物周围的应力分布呈现在图5中,在(a)的2 d地图σ11应力分量在XZ平面切断的包容和(b)的线扫描正常,σ11,切线,σ33、压力中心的组件包含X正方向。
示例仿真1、2和4应该在一个核心3 GHz工作站上花费少于1小时的时间。如果使用内置的OpenMP并行执行,它们应该会更快地完成。第三个例子将花费更长的时间,因为在这个例子中,最大的时间间隔是受扩散限制的。
ok! 至此,我们就基本完成了这个内容的查看,剩下的Authors部分和License部分是没有必要查看的。
重要文章:10.1007_s11837-013-0681-5
why solidification? why phase-field?
INTRODUCTION
如果我们读“固化”一词,我们可能会想到地球物理学中土壤的紧实作用。或者是乳化液中的凝血。冶金学家认为熔融的结晶。理论物理学家想到了一个自相似的传输解决方案及其变化,它决定了凝固物体的大小。当然,它们指的是“树突”。具有类似于石油钻探粘性指法的理论解决方案。 一个枝晶是固体晶体在凝固过程中生长的结构,在典型的合金凝固条件下(如参考文献19所述),它在形态上不稳定。这种晶体形成了一种“树状”结构,由此我们得到了它的名字。(见图1)
为什么是凝固? 从实践的角度来说, 对于理解金属铸件的技术过程,对树突状生长的理解是至关重要的。1995年,Rappaz和Kurz在《自然》杂志上发表了《自然》杂志上的“新闻和观点”文章,“世界范围内,每一秒都有多达100亿的金属树枝被制造出来”。今天,利率甚至会更高。“固化”的理论问题在其原则中得到了解决,我将报告。良好的理论模型和数值工具可用于技术材料的固化。这些工具已经找到了实用的工程解决方案,在世界各地每天都在铸造厂的常规基础上应用。
为什么相场? 答案很简单,因为没有其他的数值工具来定量地处理三维中一个树突的问题。在过去,有一些其他的数字技术被研究过,将来可能会有新的技术出现。正是从它的数值效率,相场赢得了比赛。在这篇评论中,我将从文献中,从我自己的经历和叙述中总结出历史的发展,对于那些比我年轻的人来说,没有机会见到先锋让拓荒者微笑的过去。
PEARLITE AND THE PROBLEM OF SCALE(珠光体和规模的问题)
珠光体是模式形成之母(在最近的一次重新访问中,参见Refs . 4和5;经典的图片,参见参考文献6 - 8。在现代冶金研究的早期,人们发现,如果从奥氏体中更快地冷却,珠光体钢变得更加坚硬。这种行为长期以来一直是一个谜,因为珍珠岩被认为是一个“相位”,因为在1微米以下的晶相铁素体和渗碳体之间的精细层状结构无法用光学显微镜来解决。在光学显微镜下,只有一个闪亮的外表,我们才能得到“像珍珠一样闪亮”的名字。只有在1932年电子显微镜发明后,物理学家才能揭示出珠光体的层状结构。Clarence Zener在1947年发表了一篇关于从奥氏体到铁氧体和渗碳体的转变过程的第一个解释,即所谓的合作增长模式。垫子Hillert找到了1957年解析解。合作增长的zener - hillert模型指出,由于对不断增长的铁氧体的排斥,奥氏体的过饱和速度减慢了生长速度。为了去除这个过饱和,需要一个细的层状宽度,这样碳就会有一个短的扩散路径到渗碳体的尖端,在那里它需要生长出渗碳体。细薄层间距有利于生长。第二个因素是界面能量。对于细微的间距,转换的驱动力很大一部分是通过接口的创建而消耗的。这减缓了增长。根据Hillert的解决方案,有一个“最佳”间隔。
基本上还有两个悬而未决的问题:这与现实相符吗?如果是这样,珠光体结构如何找到最佳间距?让我先回答第二个问题:它没有(一般来说)。关于“最大增长”或“最低降温”的原则存在着长期的争论,这将指导自然形成一个独特的状态。虽然它可能是工程类型模型的一个工作解决方案,但毫无疑问,这一原则是不存在的。在最佳间距周围有一个完整的稳定空间,没有一个比其他的更受欢迎。这是对共晶系统的深入研究。为什么不为共析系统珍珠岩呢?这个问题的答案是:模型无法对珍珠岩进行定量预测。Hillert已经讨论了这个问题的原因:因为在那里
在奥氏体、铁氧体和渗碳体中存在较大的晶格,导致机械载荷较强。在Ref . 7的解析解中包含这些负载是不可能的,必须等待合适的数值工具。想象的吗?让我们先来看看历史。1957年,蒂勒将齐纳的模型应用于定向共晶凝固。他制定了合作增长的图景,这是由于对溶质-共晶固化的横向再分配。1957年10月,在芝加哥举行的ASM周末研讨会上,他获得了长时间的起立鼓掌。杰克逊和亨特在1966年12月13日表示,最初为珍珠岩开发的Hillert溶液完全符合他们对低共晶合金定向生长的严格控制实验。从那个时候开始,希尔特的解决方案被称为“杰克逊-亨特”的解决方案,尽管这些作者清楚地引用了齐纳和希尔特的原创作品。他们的发现引起了冶金方面的“地震”。许多研究钢铁和珍珠岩的研究人员开始研究共晶生长,其中包括Wilfried Kurz和Rohit Trivedi。这是一个新学科的诞生:“固化”。
珠光体是由奥氏体发生共析转变同时析出的(其形态为铁素体薄层和渗碳体薄层交替叠压的层状复相物,也称片状珠光体),铁素体与渗碳体片层相间的组织,[1] 是铁碳合金中最基本的五种组织之一。[2] 代号为P。是由发现者名字命名。其形态为铁素体薄层和渗碳体薄层交替重叠的层状复相物,也称片状珠光体。用符号P表示。
奥氏体:碳溶解在γ铁中形成的一种间隙固溶体,呈面心立方结构,无磁性。
DENDRITIC SOLIDIFICATION AND THE PROBLEM OF ANISOTROPY(树突状凝固和各向异性问题)
固化成为了对基础物理学感兴趣的材料科学家和对材料感兴趣的物理学家的玩具问题。控制良好的实验开始成为数学模型的基准,数学模型很快就变成了数字工具。在凝固过程中,一种主要是液体的扩散:固体中的扩散比液体中所有替代元素的液体的扩散要低1000倍,并且可以安全地忽略。温度高,可以在局部平衡中处理,以达到中等凝固速度。在大多数金属中,固体和液体之间的界面能各向异性是很低的。因此,晶体学可以被忽略。唯一剩下的问题是液体熔化的对流,但有一些技术措施可以解决这个问题(见下文)。固化问题可以以一种与理论相关联的方式来提出,而在固体状态下,甚至连数量级的数量级都不存在:在Hillert的珍珠岩溶液中,著名的“十因子”。
由于共晶凝固很好,那么树突状凝固呢?在这里我们有“Ivantsov解决方案”(Ivantsov solution)个树突状体,它近似于一种抛物面的旋转。这个解决方案描述了一个移动的坐标系统的增长问题规模不变,或自相似解thePeclet P数量测量系统与枝晶尖端的生长速度v,尖端半径R,和液体扩散系数d .这是什么意思?一个缓慢的树突可以在一个大半径的范围内生长,也可以有一个半径小的树突。运输解决方案没有选择规模。正如前面所描述的那样,引入界面能量(或曲率)来固定比例是很自然的,就像在euectic凝固过程中做得非常有效一样。一种方法是通过由扩散引起的耗散产生界面来减少能量消耗。这个想法是在1960年由Temkin 15提出的,并由Trivedi进一步开发。等温树枝状生长实验(IDGEs)
由Martin Glicksman和同事17,18显示,树突的生长速度比最大生长假说和曲率修正的Ivantsov解决方案所预测的要大得多(和更低的速度)。为了解释这一现象,20多年来一直难以解释。在这场斗争中,所有这些都代表了重大的科学成就,包括图1的mullins - sekerka稳定性分析。在大约20%的凝固过程中,金属合金的典型等轴状树突。这张照片是从一个孔隙中提取的,在那里,树枝状的熔体被吸出,以保存树突。该接口的分支为一个立方晶体形成6个臂,它又一次形成了具有相当规则结构的次级武器,这取决于合金和凝固条件。
为什么凝固?为什么相场?1097转换方面,19边际稳定假设μ¨ller-Krumbhaar和兰格-以及空间微重力下实验抑制对流和g-jitter融化。*
今天的公认理论是所谓的微观可解性理论。简单地说,它指出,界面能量各向异性(在大多数应用中是小的,因此在大多数应用中被忽略)对于在一阶摄动(曲率)变得活跃之前的树状体生长的类似问题变得至关重要。与完美的抛物线形状相比,树突尖端有一个小突起。这个突起会根据晶体最弱的界面朝向触发生长方向。它的突出物必须与界面的热或溶质的微观通量相匹配。这决定了规模。这个变得清晰了吗?Ben Amar和Brener 的原始论文给出了复杂的数学推导,只给出了一个渐近解。我们希望有一个完整的解决方案。因此我们需要数值解!
PHASE-FIELD AND THE PROBLEM OF ACCURACY (相位场和精度问题)
凝固的数值模拟是新计算机时代的成功案例之一。它从一种一维的模拟开始,在一个铸造中,包括潜热。潜热使问题具有内在的非线性,潜热几乎占到金属熔化的总热量的50%。不久之后,早期凝固处理成核和动力学控制的非平衡模型。学术软件应用发展成为商业上成功的产品。有很多尝试用不同的技术模拟三维树突。第一个有希望的是Ryo Kobayashi,26个模拟的树突形态在超级计算机的能量比今天的智能手机更少的时候惊人地接近真实的树突。将模拟的树突与实验图像进行比较,我们注意到缺少了什么:刻度条!事实上,树突状生长的早期阶段模型显示了对界面宽度选择的明显依赖性,与原子尺度相比,界面宽度要大得多。
有很好的替代方法,特别是在2D:前端跟踪,27个边界积分方法,28个甚至是细胞自动机。没有任何理由说明为什么这些方法不能在三维中量化。自适应有限元素也被应用到一个很好的精确度。在过去的几年里,大多数的尝试都是出于实际的原因。相位场模型有一个细界面渐近31,32赢了比赛。图2 showsaconvergencestudyusingthekarma modelwithadouble-obstaclepotentialfordirectional行业合金的凝固条件下给出了Ref。33。该收敛性研究的代码和条件在参考文献35。它清楚地显示了数值的范围内适当的数值discretizationbytheindependenceofthepredictedtipradius参数。* *也有类似的研究。它们在未来一定是很好的科学标准。只有在此之后,才能得出有关材料问题的结论。我想要强调的是Jon Dantzig和同事的工作,他们使用了另外一个自适应网格细化来提高数值效率(见图3)。为了结束这部分,今天的相场模拟能够以定量的方式处理树突状凝固的规模问题。
在参考文献31中,有一个“普遍”形状的等轴树突。在定向凝固过程中,有一组可能的空间,具有较低的间距的临界极限,如参考文献33所示。不用说,共晶凝固可以通过相场来解决(如参考文献37)。剩下的是什么?
BEYOND DIFFUSION CONTROL(外扩散控制)
剩下的问题涉及实际材料和过程。前面的例子是通用的,这意味着它们展示了一个基本原则。在理论物理学家看来,“原则证明”是唯一的任务。然而,材料科学家认为,这是模型发展的关键一步。了解了原理的普遍性,我们就想把我们的知识应用到材料和工艺设计问题上。我们想用数字工具来处理实际材料和过程的问题。在相场方法(以及其他与科学相关的数值方法)中,有大量的新进展。最近的评论中引用了一种可能不完整的largenumber。请接受我的道歉,因为我只报告了三个与我自己的研究有关的例子,并超越了在阶段转换中的扩散控制。
Rapid Solidification(快速凝固)
凝固通常被认为是一个扩散控制的转变。这是由于在金属熔化温度升高时,溶质在凝固前沿的快速再分配。
然后,凝固前沿可以很好地应用于固体与熔体之间的局部热力学平衡,通过曲率的冷却来修正。运动过冷可以忽略。在凝固的早期阶段,这幅图被扩展为在所谓的“快速凝固”条件下的动力学效应。在强低温熔体中观察到快速凝固现象,凝固速度可达100毫秒。1在熔体纺丝或在焊点中进行熔融纺丝,或在熔体冷却或凝固制备的薄膜中达到45或。在界面上没有建立局部平衡条件。界面附着动力学成为重要的46和溶质捕获物:固体与熔体之间的溶质分块随着凝固速度的增加而减小。这种效应在任何相场模型中都是固有的。1993年,惠勒、博廷格和麦克法丁已经给出了一份详细的研究报告。从那时起,很明显,溶质捕获的程度在很大程度上取决于模拟中使用的接口宽度。这意味着,只有在界面宽度离散的情况下,才有可能在标准的相位场模型中进行定量预测,因为界面宽度是在一个纳米量级的金属凝固过程中进行的。
在一维的模拟中,Galenko和同事们最近发现,一个所谓的双曲线相场模型,在界面中考虑惯性效应,能够预测一个急剧的过渡到与实验一致的陷阱。在这里,界面已被离散化在其物理纳米尺度上。同样,三个维度是挑战。(如自适应方法。,Ref . 49)可以适用。另一种方法是新开发的带有限界面耗散的相位场模型。50、51这一模型是通过对界面区域进行粗糙的gr着色,并引入一种由界面渗透性控制的相位之间的再分配流,作为一个可调节的参数,依赖于介观尺度上的分辨率。通过与微观模型48的比较,在一个维度上调节这种渗透性,可以进行定量模拟,并且分辨率大大降低。该方法的细节发表在参考文献52。
Solidification and Melt Convection(凝固和熔体对流)
凝固过程中有一个严重的问题:熔体对流。一些实验可能在扩散控制的体制中很好,但大多数不是。我们可能会引入“传输控制”的措辞,这意味着在大阶段的传输控制着凝固,而附件动力学(如前一节所述)将可以忽略不计。其次,除了扩散外,它只是一个技术问题。已经详细阐述了浮力驱动对流的模型,或由搅拌驱动的平流,可从各自的社区得到。在1999年,在漫射相场界面中“无滑”的情况得到了解决。已经证明了融化对流是如何改变一个成熟的mush ,以及在三维的强迫对流中树突是如何生长的。已经表明,柱状树突的主间距可以根据相对于重力方向的生长方向变化。沉积的树突在很长一段时间内都是一个挑战。有了今天的计算机设施,这就成了一个可行的任务。图4显示了在剪切流中mg - al树突的几个阶段。它在生长过程中绕着所有的轴旋转,它将根据其他树突附近的位置调整位置和方向:一个熔体中一个成核的等轴颗粒既不会保持它的位置,也不会保持它的朝向。这对未来构成了挑战。
Pearlite: Back to the Roots (珠光体:回到根源)
2006年,我在布拉格的Euromat会议上遇到Rohit Trivedi,这是eutectic凝固的先驱之一。我告诉他最近的发现,是关于珍珠岩形成的相场模拟。这些模拟研究了铁素体阶段的扩散(在分析希尔特溶液中省略了)。阶段(省略在分析Hillert解决方案)。模拟结果表明,这一贡献增加了珠光体的转化动力学系数为4,而费雪在1950年的一项分析研究中已经预测了这一因子,但仍与实验存在显著的差距。他给了我一个暗示,在固态变换中寻找应变效应。同年他75岁生日的时候,邀请我参加在埃姆斯举行的一次研讨会。因此,我听从了他的建议,研究应变效应,以便有一个好的故事来讲述。其结果是惊人的:在铁氧体(从奥氏体转换过程中)和渗碳体(膨胀)之间有一个应力偶极子。这种应力偶极子在奥氏体中产生了巨大的流体静力压力梯度,从而推动了碳对化学梯度的强通量。该模型如文献4所载,有许多不足之处,即二维近似值,是渗碳体与奥氏体之间界面的超简化各向异性模型,且忽略了界面扩散。计算域很小,且没有考虑间距的变化。此外,asoundnumericalstudyofthe决议是失踪。这些不足导致了对2006年《Trivedi研讨会》(Trivedi研讨会)总结的Asta等人的陈述,模型预测应该通过进一步的实验和理论研究来巩固。这些都在进步中。尽管完整的量化dencemaybeunderdebate一theprincipalmechanism是肯定的:奥氏体中流体静应力的梯度,expansion-contraction偶极子造成的铁素体和渗碳体,推动碳从过饱和区前的铁素体(压缩)到区前的渗碳体(紧张)。在那里需要形成碳化物相,而渗碳体则从高度过饱和膨胀的奥氏体中生长。这一机制在图5中得到了解释(与最近对Ref . 5中问题的重新考虑相比),这种主动机制已经被假设了很长时间。相场能够把它们结合在一起,从而结束这个故事的循环。
CONCLUTION(结论)
固化和相场结合在一起。珠光体构成挑战。通过实验验证了该问题对共晶凝固的复杂性,允许对早期变形模型进行定量验证。相场作为求解凝固模型的数值技术,无论是共晶、树突状或其他,在三维空间中都出现。它将数值效率与严格的理论推导相结合,得到了一个微观热力学一致的原理。今天,我们可以攻击新的挑战:一般来说,固态转换和转换有不止一个的耗散机制。现代相场模型与先进的散装运输模型相结合:多组分扩散与交叉效应、对流运输、应变驱动扩散和塑性活动。61、62这样先进的模型将能够应付真实材料的挑战,将是图5。珠光体转变前沿的浓度(左)和应力分布(右)。碳在渗碳针的尖端形成一个光晕。压应力和拉应力形成应力偶极子,使扩散沿浓度梯度上升。由于压缩之间的再分配的碳和扩大区域,压力水平仍低于±100 MPa,所以没有塑料活动预计(计算通过使用OpenPhase亚当Giessmann,35未发表)。为什么凝固?为什么相场?1101用作材料和工艺优化的预测工具。
重要文章:界面各向异性在约束枝晶生长中的间距选择效应
摘要
用两维和三维相场法对定向树突状凝固的间距进行了数值模拟(关键字: 相场法、 定向树突、 间距、数值模拟)。根据对单个尖形的分析,推导出了不稳定阵列生长的临界间距的标准。在阵列中,受约束的溶质扩散导致了与表面张力各向异性相竞争的树突尖形状的变形。在关键的间距,影响平衡和稳定的增长解决方案被摧毁。这一机制被确定为确定树突状阵列的临界间距(我猜测是一个最小值,因为如果之间的间距再小的话,那么这些树突可能就会被破坏了。),从而使固体-液体界面能量的各向异性的距离与树枝尖半径相似
介绍:
与毕设相关的实验
实验七: 温度场数值模拟
什么是温度场?
首先我们要知道什么是温度场,温度场即各个点温度的集合,这就是温度场。 它是时间和空间坐标的函数,反映了时间和空间在坐标上的分布。温度T这个变量通常是空间坐标 (x,y,z) 和时间变量 t 的函数,即 T=T(x,y,z,t)。该公式描述的是三维非稳态(瞬态)温度场,在此温度场中发生的导热为三维非稳态(瞬态)导热。不随时间而变的温度场称为稳态温度场,即 T=T(x,y,z),此时为三维稳态导热。对于一维和二维温度场,稳态时可分别表示为T=f(x)和T=f(x,y),非稳态时则分别表示为T=f(x,t)和T=f(x,y,t)。 而当我们说在1min、3min、5min这样的温度场就是说稳态的温度场了。
这个实验中,我们最终需要完成二维温度场的模拟。
数值模拟(数值计算)的思想是什么?
把原来空间和时间坐标上连续的物理量的场(如温度场、速度场等)用有限个离散点上的值的集合来代替,通过一定的原则建立起这些离散点上变量值之间关系的代数方程(称为离散方程),求解所建立起来的代数方程以获得所求解变量的近似值。
为什么要用温度场数值模拟,好处是什么?
之前计算材料科学还没有发展起来的时候,我们使用的主要有两种方法:
第一: 理论计算。
这种方法往往比较繁琐,计算量大。
第二:实验。
实验方法耗时长、成本高,不合算。
现在计算科学发展起来,我们就可以使用简单的程序来完成温度场的数值模拟了。只需要一个人,一台电脑就可以完成任务。
往往这种方法要辅以实验进行验证。
怎么做?
对于数值模拟,无论是温度场还是速度场,我们采取的方式都是类似的下面几个步骤。
1、找出控制方程。 一般的,我们都可以根据一个场景,找出其控制方程,这个控制方程往往是微分方程(偏微分方程),但是呢,如果我们要进行数值模拟,不可能在程序里使用偏微分方程,所以得想办法。
2、网格剖分。 基于偏微分方程,计算机无法求解,我们就得想办法把这个偏微分方程进行转化,这里我们划分网络,用网格中的每个点代表这个店所在的区域的数值。
3、微分方程离散化。有了网格,我们就可以微分变差分,当然会有一定的误差,但是如果Δx足够小,那么这个误差也就会变得非常小了。
4、确定初始条件和边界条件。已经进行了离散化,说明计算机是可以进行计算了,那么初始条件和边界条件的作用是什么呢? 首先,初始条件是为了最开始进行计算,一般初始条件是说时间的;边界条件是同样也是为了计算啦,并且确定程序的终止,一般边界条件是空间上的,而不是时间上的。 边界条件分为三类。第一类边界条件:如给出确定的边界温度; 第二类边界条件: 如给出确定的温度梯度; 第三类边界条件: 如给出确定的扩散系数。 对于本实验,我们使用的是第一类边界条件。
5、求解。 已经有了种种步骤,我们就可以直接进行求解了。
如何进行微分方程离散化?
实际上这个过程并不难,一般我们采用的思路是把控制方程中的各阶导数用相应的差分表达式来代替而形成离散方程的方法,这种方法也叫做泰勒展开,通过泰勒展开之后,我们再使用O(Δx)来代替二阶以及更高阶的导数项之和,这一部分称为截断误差。
而微分方程在差分的过程中有三种方法:向前差分、向后差分、中心差分。通过比较,可以发现中心差分可能有时候会更加精确一些(但不总是这样的)。
对于多元函数的偏导数也是可以通过这种方法进行求解的。
一般模型是什么样?
我们讨论的是二维温度场的数值计算,往往可以用一个L1 * L2 矩形截面的无限长杆物体,横截面为二维传热,初始温度为T0,当突然放入温度为Tw(T0 > Tw)的熔池内时(设杆外表面温度保持为Tw),试计算杆内部温度响应。 这样,我们研究的二维温度场就是这个横截面了,x,y,t不同对应的温度值也是不同的。
书中参数为:
L1/cm: 8
L2/cm: 8 (即横截面是一个正方形)
T0/摄氏度: 500
Tw/摄氏度: 100
α/(cm2 * s-1): 0.05
而最终的温度计算格式为
这样,根据上一时刻周围的中心点和周围的4个点,我们就可以计算出下一时刻的中心店的温度。
注意: 根据稳定性得出的不等式可以看出,如果Δx和Δy越小,那么对应的时间就要越小。
程序思路:
定义两个数组T(9, 9)用于存储不同位置的温度,用Tl(9, 9)来存储上一时刻(last time)的各个位置的温度。使用Tl是因为比如两个时刻t1和t2,有三个点的温度a1、b1、c1,我们根据t1时刻的数据得到了t2时刻的第一代的温度a2并将a1覆盖,但是这样的后果就是如果我们想要得到第二个点的t2时刻温度b2还是需要a1的,一旦之前的被覆盖,我们就无法得到准确的b2了,所以需要Tl来存储t1时刻的所有准确温度,当T的温度都得到最新的温度之后(即两次循环结束之后),我们就可以替换掉Tl为最新的数据,然后进行下一次计算了。
实验报告要求:
(1)简述程序设计思路,并提供程序。
(2)画出物体中心点的冷却曲线。
(3)计算出 1min、 5min、10min时物体内部温度场。
(1)程序设计思路之前已经讲述了,后面把程序编写出来即可。
(2)物体中心点的冷却曲线其实也是很简单的,就是确定一个中心点,然后记录下各个时刻的温度即可,最后连接各点为冷却曲线。
(3)计算出各个时刻的物体内部温度场也是不难的,即在每个时刻,我们可以得到各个点的数据(即T数组的各个元素的值),如果可以通过matlab画出来其实就更好了,而又如果可以通过JavaScript动画动态表示出来,其实这才是更好的。
最终的程序如下所示(这里使用的是JavaScript代码):
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <title>温度场数值模拟</title> </head> <body> <script> // 定义二维数组,存储温度。 let t = [], tl = []; // 定义微分方程离散化的相关数据 const Interval = 2, // 时间步长 CoolingTime = 5, // 最长运行时间 n = 4, // 使用n倍步长统计中心点温度变化 xInterval = 1, // δx yInterval = 1; // δy const Difu = 0.05, // 扩散系数 T0 = 500, // 初始温度 Tw = 100, // 边界温度 L1 = 8, // 二维界面宽度 L2 = 8, // 二维界面高度 xLen = L1/xInterval + 1, // T矩阵的行数 yLen = L2/yInterval + 1, // T矩阵的列数 M1 = (Difu * Interval) / Math.pow(xInterval, 2), // M1常系数 M2 = (Difu * Interval) / Math.pow(yInterval, 2); // M2常系数 // 赋值初始温度 for (let i = 0; i < xLen; i++ ) { t[i] = []; tl[i] = []; for (let j = 0; j < yLen; j++) { t[i][j] = tl[i][j] = T0; } } // 输出初始温度 console.log('%c初始温度: ' , 'color: purple', t); console.log(' '); // 判断是否处于边界 function isBorder(x, y) { return (x == 0 || y == 0 || x == xLen - 1 || y == yLen - 1); } // 记录中心点数据 let mid = {}; // 当前时间初始化 let time = 0; while (time < CoolingTime * 60) { // 计算最新时刻温度 for (let i = 0; i < xLen; i++ ) { for (let j = 0; j < yLen; j++) { // 判断是否处于边界 if (isBorder(i, j)) { tl[i][j] = Tw; } else { // 使用离散化的各单元温度计算公式。 tl[i][j] = M1 * (t[i - 1][j] + t[i + 1][j]) + M2 * (t[i][j - 1] + t[i][j + 1]) + (1 - 2 * M1 - 2 * M2) * t[i][j]; tl[i][j] = Number(tl[i][j].toFixed(4)); } } } t = tl; // 记录中心点数据(使用n倍步长统计) if (time % (n * Interval) == 0) { mid[time + 's'] = t[parseInt(xLen/2)][parseInt(yLen/2)]; } time += Interval; } // 获取各个时间段的内部温度场 console.log('%c' + CoolingTime + 'min后的物体内部温度场: ', 'color: green', t); console.log(' '); // 获取中心点的各个时间段。 console.log('%c中心点的温度变化', 'color: red'); console.log(mid); </script> </body> </html>
输出结果如下所示:
下一步任务,做出一个简单的页面,可以进行输入输出,进而在浏览器中直接运行。
FD