精华内容
下载资源
问答
  • 首先详细讲述了PorositySettings对话框的填写方法,之后以附录形式给出了多孔介质模型中的定义、术语、方程等供参考。以下内容为本人根据CFX帮助及相关资料编写,错漏之处敬请见谅并指正。PorositySettings对话框...

    本文主要介绍

    ANSYS CFX 11.0

    中多孔介质模型的使用方法。首先详细讲述了

    Porosity Settings

    对话框的填写方法,之后以附录形式给出了多孔介质模型中的定

    义、术语、方程等供参考。以下内容为本人根据

    CFX

    帮助及相关资料编写,错漏之

    处敬请见谅并指正。

    Porosity Settings

    对话框填写说明

    Porosity Settings

    对话框包括三项:

    Area Porosity

    Volume Porosity

    Loss Models

    1. Area Porosity

    即面积孔隙率,

    是指流体可以穿过的面积占物理面积的份额,

    认为

    Isotropic

    (各向同性的),不能修改。

    2. Volume Porosity

    即体积孔隙率,是指允许流体流动的体积与物理体积之比。

    3. Loss Models

    即阻力损失模型,可选择

    Isotropic Loss

    (各向同性)或

    Directional

    Loss

    (各向异性)。此外还有多项需要选择或填写:

    3.1 Loss Velocity Type

    :即阻力损失对应的速度类型。可选择

    Superficial

    (表观

    流速,即按物理面积计算的流速)或

    True Velocity

    (真实流速)。

    3.2

    若选择了

    Isotropic Loss

    ,则需要填写

    Isotropic Loss

    对话框,其界面如图

    1

    展开全文
  • 针对多孔介质建模的复杂性,从随机动力学的朗之万方程出发,引入概率的影响,建立构造随机多孔介质的微观生长模型.通过不同的初始固相分布,该模型可以演化出各种不同性质的多孔介质微观结构.由于考虑了颗粒之间的作用力...
  • 基于分形方法的多孔介质有效应力模型研究,闫铁,李玮,泰尔扎吉(Terzaghi)的有效应力方程是描述多孔介质应力关系的经典模型,后来的学者相继开展了很多研究,建立了相关模型,但基本都�
  • 多孔介质条件 多孔介质模型可以应用于很多问题,如通过充满介质的流动、通过过滤纸、...当你使用这一模型时,你就定义了一个具有多孔介质的单元区域,而且流动的压力损失由多孔介质的动量方程中所输入的内容来决定...

    转载自:http://zhengjun0228.blog.163.com/blog/static/71377014200971895419613/

    多孔介质条件

    多孔介质模型可以应用于很多问题,如通过充满介质的流动、通过过滤纸、穿孔圆盘、流量分配器以及管道堆的流动。当你使用这一模型时,你就定义了一个具有多孔介质的单元区域,而且流动的压力损失由多孔介质的动量方程中所输入的内容来决定。通过介质的热传导问题也可以得到描述,它服从介质和流体流动之间的热平衡假设,具体内容可以参考多孔介质中能量方程的处理一节。

       

    多孔介质的一维化简模型,被称为多孔跳跃,可用于模拟具有已知速度/压降特征的薄膜。多孔跳跃模型应用于表面区域而不是单元区域,并且在尽可能的情况下被使用(而不是完全的多孔介质模型),这是因为它具有更好的鲁棒性,并具有更好的收敛性。详细内容请参阅多孔跳跃边界条件。

       

    多孔介质模型的限制

       

    如下面各节所述,多孔介质模型结合模型区域所具有的阻力的经验公式被定义为"多孔"。事实上多孔介质不过是在动量方程中具有了附加的动量损失而已。因此,下面模型的限制就可以很容易的理解了。

      流体通过介质时不会加速,因为事实上出现的体积的阻塞并没有在模型中出现。这对于过渡流是有很大的影响的,因为它意味着FLUENT不会正确的描述通过介质的过渡时间。

      多孔介质对于湍流的影响只是近似的。详细内容可以参阅湍流多孔介质的处理一节。

       

    多孔介质的动量方程

       

    多孔介质的动量方程具有附加的动量源项。源项由两部分组成,一部分是粘性损失项(Darcy),另一个是内部损失项:

    其中S_ii(x, y, or z)动量源项,DC是规定的矩阵。在多孔介质单元中,动量损失对于压力梯度有贡献,压降和流体速度(或速度方阵)成比例。

    对于简单的均匀多孔介质:

    其中a是渗透性,C_2时内部阻力因子,简单的指定DC分别为对角阵1/a C_2其它项为零。

    FLUENT还允许模拟的源项为速度的幂率:

    其中C_0C_1为自定义经验系数。

    注意:在幂律模型中,压降是各向同性的,C_0的单位为国际标准单位。

       

       

    多孔介质的Darcy定律

       

    通过多孔介质的层流流动中,压降和速度成比例,常数C_2可以考虑为零。忽略对流加速以及扩散,多孔介质模型简化为Darcy定律:

    在多孔介质区域三个坐标方向的压降为:

    其中 为多孔介质动量方程1中矩阵D的元素vj为三个方向上的分速度,D n_x D n_y、以及D n_z为三个方向上的介质厚度。

    在这里介质厚度其实就是模型区域内的多孔区域的厚度。因此如果模型的厚度和实际厚度不同,你必须调节1/a_ij的输入。.

       

    多孔介质的内部损失

    在高速流动中,多孔介质动量方程1中的常数C_2提供了多孔介质内部损失的矫正。这一常数可以看成沿着流动方向每一单位长度的损失系数,因此允许压降指定为动压头的函数。

       

    如果你模拟的是穿孔板或者管道堆,有时你可以消除渗透项而只是用内部损失项,从而得到下面的多孔介质简化方程:

    写成坐标形式为:

       

       

    多孔介质中能量方程的处理

       

    对于多孔介质流动,FLUENT仍然解标准能量输运方程,只是修改了传导流量和过度项。在多孔介质中,传导流量使用有效传导系数,过渡项包括了介质固体区域的热惯量:

    其中:

    h_f=流体的焓

    h_s=固体介质的焓

    f=介质的多孔性

    k_eff=介质的有效热传导系数

    S^h_f=流体焓的源项

    S^h_s=固体焓的源项

       

    多孔介质的有效传导率

       

    多孔区域的有效热传导率k_eff是由流体的热传导率和固体的热传导率的体积平均值计算得到:

    其中:

    f=介质的多孔性

    k_f=流体状态热传导率(包括湍流的贡献k_t

    k_s=固体介质热传导率

    如果得不到简单的体积平均,可能是因为介质几何外形的影响。有效传导率可以用自定义函数来计算。然而,在所有的算例中,有效传导率被看成介质的各向同性性质。

       

    多孔介质中的湍流处理

       

    在多孔介质中,默认的情况下FLUENT会解湍流量的标准守恒防城。因此,在这种默认的方法中,介质中的湍流被这样处理:固体介质对湍流的生成和耗散速度没有影响。如果介质的渗透性足够大,而且介质的几何尺度和湍流涡的尺度没有相互作用,这样的假设是合情合理的。但是在其它的一些例子中,你会压制了介质中湍流的影响。

    如果你使用k-e模型或者Spalart-Allmaras模型,你如果设定湍流对粘性的贡献m_t为零,你可能会压制了湍流对介质的影响。当你选择这一选项时,FLUENT会将入口湍流的性质传输到介质中,但是它对流动混合和动量的影响被忽略了。除此之外,在介质中湍流的生成也被设定为零。要实现这一解策略,请在流体面板中打开层流选项 。激活这个选项就意味着多孔介质中的m_t为零,湍流的生成也为零。如果去掉该选项(默认)则意味着多孔介质中的湍流会像大体积流体流动一样被计算。。

       

    概述

       

    模拟多孔介质流动时,对于问题设定需要的附加输入如下:

    1.         定义多孔区域

    2.         确定流过多孔区域的流体材料

    3.         设定粘性系数(多孔介质动量方程3中的1/a_ij)以及内部阻力系数(多孔介质动量方程3中的C_2_ij),并定义应用它们的方向矢量。幂率模型的系数也可以选择指定。

    4.         定义多孔介质包含的材料属性和多孔性

    5.         设定多孔区域的固体部分的体积热生成速度(或任何其它源项,如质量、动量)(此项可选)。

    6.         如果合适的话,限制多孔区域的湍流粘性。

    7.         如果相关的话,指定旋转轴和/或区域运动。

    在定义粘性和内部阻力系数中描述了决定阻力系数和/或渗透性的方法。如果你使用多孔动量源项的幂律近似,你需要输入多孔介质动量方程5中的C_0C_1来取代阻力系数和流动方向。

    在流体面板中(下图)你需要设定多孔介质的所有参数,该面板是从边界条件菜单中打开的(详细内容请参阅边界条件的设定一节)

    Figure 1:多孔区域的流体面板

       

    定义多孔区域

       

                正如定义边界条件概述中所提到的,多孔区域是作为特定类型的流体区域来模拟的。亚表明流体区域是多孔区域,请在流体面板中激活多孔区域选项。面板会自动扩展到多孔介质输入状态。

       

    定义穿越多孔介质的流体

       

                在材料名字下拉菜单中选择适当的流体就可以定义通过多孔介质的流体了。如果你模拟组分输运或者多相流,流体面板中就不会出现材料名字下拉菜单了。对于组分计算,所有流体和/或多孔区域的混合材料就是你在组分模型面板中指定的材料。对于多相流模型,所有流体和/或多孔区域的混合材料就是你在多相流模型面板中指定的材料。

       

    定义粘性和内部阻力系数

       

                粘性和内部阻力系数以相同的方式定义。使用笛卡尔坐标系定义系数的基本方法是在二维问题中定义一个方向矢量,在三维问题中定义两个方向矢量,然后在每个方向上指定粘性和/或阻力系数。在二维问题中第二个方向没有明确定义,它是垂直于指定的方向矢量和z向矢量所在的平面的。在三维问题中,第三个方向矢量是垂直于所指定的两个方向矢量所在平面的。对于三维问题,第二个方向矢量必须垂直于第一个方向矢量。如果第二个方向矢量指定失败,解算器会确保它们垂直而忽略在第一个方向上的第二个矢量的任何分量。所以你应该确保第一个方向指定正确。

       

    在三维问题中也可能会使用圆锥(或圆柱)坐标系来定义系数,具体如下:

    定义阻力系数的过程如下:

    1.         定义方向矢量。

      使用笛卡尔坐标系,简单指定方向1矢量,如果是三维问题,指定方向2矢量。每一个方向都应该是从(0,0)或者(0,0,0)到指定的(X,Y)(X,Y,Z)矢量。(如果方向不正确请按上面的方法解决)

      对于有些问题,多孔介质的主轴和区域的坐标轴不在一条直线上,你不必知道多孔介质先前的方向矢量。在这种情况下,三维中的平面工具或者二维中的线工具可以帮你确定这些方向矢量。

    1.      捕捉"Snap"平面工具(或者线工具)到多孔区域的边界。(请遵循使用面工具和线工具中的说明,它在已存在的表面上为工具初始化了位置)。

    2.      适当的旋转坐标轴直到它们和多孔介质区域成一条线。

    3.      当成一条线之后,在流体面板中点击从平面工具更新或者从线工具更新按钮。FLUENT会自动将方向1矢量指向为工具的红(三维)或绿(二维)箭头所指的方向。

      要使用圆锥坐标系(比方说环状、锥状顾虑单元),请遵循下面步骤(这一选项只用于三维问题):

    1.         打开圆锥选项

    2.         指定圆锥轴矢量和在锥轴上的点。圆锥轴矢量的方向将会是从(0,0,0)到指定的(X,Y,Z)方向的矢量。FLUENT将会使用圆锥轴上的点将阻力转换到笛卡尔坐标系。

    3.         设定锥半角(锥轴和锥表面之间的角度,如下图),使用柱坐标系,锥半角为0.

    Figure 1:锥半角

      对于有些问题,锥形过滤单元的主轴和区域的坐标轴不在一条直线上,你不必知道锥轴先前的方向矢量以及锥轴上的点。在这种情况下,三维中的平面工具或者二维中的线工具可以帮你确定这些方向矢量。一种方法如下:

    1.         在点击捕捉到区域按钮之前,你可以在下拉菜单中选择垂直于锥轴矢量的轴过滤单元的边界区域。

    2.         点击捕捉到区域按钮,FLUENT会自动将平面工具捕捉到边界。它也会设定锥轴矢量和锥轴上的点(需注意的是你还要自己设定锥半角)。

      另一种方法为:

    1.      捕捉"Snap"平面工具到多孔区域的边界。(请遵循使用面工具和线工具中的说明,它在已存在的表面上为工具初始化了位置)。

    2.      旋转和平移工具坐标轴,直到工具的红箭头指向锥的轴向。工具的起点在轴上。

    3.      当轴和工具的起点成一条线时,在流体面板中点击从平面工具更新按钮。FLUENT会自动设定轴向矢量以及在轴上的点(注意:你还是要自己设定锥的半角)。

    2.         在粘性阻力中指定每个方向的粘性阻力系数1/a,在内部阻力中指定每一个方向上的内部阻力系数C_2(你可能需要将滚动条向下滚动来查看这些输入)。如果你使用锥指定方法,方向1为锥轴方向,方向2为垂直于锥表面(对于圆柱就是径向)方向,方向3圆周(q)方向。

    在三维问题中可能有三种可能的系数,在二维问题中有两种:

      在各向同性算例中,所有方向上的阻力系数都是相等的(如海绵)。在各向同性算例中你必须将每个方向上的阻力系数设定为相等。

      在三维问题中只有两个方向上的系数相等,第三个方向上的阻力系数和前两个不等,或者在二维问题中两个方向上的系数不等,你必须准确的指定每一个方向上的系数。例如,如果你得多孔区域是由具有小洞的细管组成,细管平行于流动方向,流动会很容易的通过细管,但是流动在其它两个方向上(通过小洞)会很小。如果你有一个平的盘子垂直于流动方向,流动根本就不会穿过它而只在其它两个方向上。

      在三维问题中还有一种可能就是三个系数各不相同。例如,如果多孔区域是由不规则间隔的物体(如针脚)组成的平面,那么阻碍物之间的流动在每个方向上都不同。此时你就需要在每个方向上指定不同的系数(请注意指定各向同性系数时,多孔介质的解策略的注解)。

       

    推导粘性和内部损失系数的方法在定义粘性和内部阻力系数一节中介绍。

       

    当你使用多孔介质模型时,你必须记住FLUENT中的多孔单元是100%打开的,而且你所指定1/a_ij/C_2_ij的值必须是基于这个假设的。然而,假如你知道通过真实装置压降和速度之间的的变化,它只是部分地对流动开放。下面的练习会告诉你如何对FLUENT模型计算适当的C_2值。

       

    假定穿孔圆盘只有25%对流动开放。已知通过圆盘的压降为0.5。在圆盘内真实流体速度基础上,即通过%开放区域的的基础上,损失系数由下式定义的损失系数K_L0.5

    要计算适当的C_2值,请注意在FLUENT模型中:

    1.         通过穿孔圆盘的速度假定圆盘为100%开放的。

    2.         损失系数必须转化为多孔区域每个单位长度的动压头损失。

    对于第一条,第一步是计算并调节损失因子K_L',它应该是在100%开放区域的速度基础上的:

    或者注意对于相同的流速,v_25% open = 4 v_100% open,

    调节之后的损失系数为8。对于第二条,你必须将它转换为穿孔圆盘每个单位厚度的损失系数。假定圆盘的厚度为1.0 mm。内部损失系数为(国际标准单位):

    注意,对于各向异性介质,这些信息必须分别从每一个坐标方向上计算。

       

    第二个例子,考虑模拟充满介质的流动。在湍流流动中,充满介质的流动用渗透性和内部损失系数来模拟。推导适当常数的方法包括了Ergun方程[49]的使用,对于在很大范围雷诺数内和许多类型的充满形式,有一个半经验的关系式:

    当模拟充满介质的层流流动时,上面方程中的第二项可能是个小量,从而得到Blake-Kozeny方程[49]

    在这些方程中,m是粘性,D_p是平均粒子直径,e空间所占的分数(即空间的体积除以总体积)。比较多孔介质中Darcy定律的方程1和内部损失系数为9的方程1,则每一方向上的渗透性和内部损失系数定义为:

    第三个例子我们会考虑Van Winkle等人[146][121]的方程,并表明如何通过具有方孔圆盘的多孔介质输入来计算压力损失。

       

    作者所声明的应用在通过在等边三角形上的方洞圆盘的湍流中的表达式为:

    其中:

    m(dot)=通过圆盘的质量流速

    A_f=剩下的面积或者洞的总面积

    A_p=圆盘的面积(固体和洞)

    C=对于不同D/t的不同雷诺数范围被列成不同的表的系数

    D/t=洞的直径和圆盘厚度的比例

    对于t/D > 1.6Re > 4000,系数C近似为0.98,其中雷诺数是基于洞的直径与速度的

    使用下式整理方程17

    除以圆盘的厚度D x = t有:

    其中v是表面速度而不是洞内的速度。与多孔介质内部损失系数中的方程1比较可以看出,对于垂直于圆盘方向,常数C_2可由下式计算:

    考虑通过由随机方向的纤维或者玻璃材料组成的垫子或者过滤器的层流。对于可以二选一的方程Blake-Kozeny(方程11),我们可能会选择将实验数据列成表。很多类型的纤维都由这一类相关的数据[70]

       

    固体体积分数f  玻璃丝织品的无量纲渗透性Q

    0.262         0.25

    0.258         0.26

    0.221         0.40

    0.218         0.41

    0.172         0.80

    其中Q = a为纤维直径。使用多孔介质的Darcy定律中的方程1可以很容易从给定的纤维直径和体积分数种计算出 

       

    使用幂律模型

       

                对于多孔介质动量源项(多孔介质动量方程中的方程5),如果你使用幂律模型近似,你只要在流体面板的幂律模型中输入系数C_0C_1就可以了。如果C_0C_1为非零值,解算器会忽略面板中除了多孔介质幂律模型之外的所有输入。

       

    定义热传导

       

                如果你选择在多孔介质中模拟热传导,你必须指定多孔介质中的材料以及多孔性。要定义多孔介质的材料,向下拉流体面板中阻力输入下面的滚动条,然后在多孔热传导的固体材料下拉列表中选中适当的固体。

                然后在多孔热传导下设定多孔性。多孔性f是多孔介质中流体的体积分数(即介质的开放体积分数)。多孔性用于介质中的热传导预测,处理方法请参阅多孔介质能量方程的处理一节。它还对介质中的反应源项和体力的计算有影响。这个源项和介质中流体的体积成比例。如果你想要模拟完全开放的介质(固体介质没有影响),你应该设定多孔性为1.0。当多孔性为1.0时,介质的固体部分对于热传导和(或)热源项/反应源项没有影响。注意:多孔性永远不会影响介质中的流体速度,这已经在多孔介质的动量方程一节中介绍了。不管你将多孔性设定为何值,,FLUENT所预测的速度都是介质中的表面速度。

       

    定义源项

       

                如果你想在多孔流动的能量方程中包括热的影响,请激活源项选项并设定非零的能量源项。FLUENT会计算多孔区域所生成的能量,该能量为能量源项值乘以组成多孔区域的单元所有体积值。你也可以定义质量、动量、湍流、组分或者其它标量的源项,详细内容请参阅、质量、动量、能量和其它源项的定义。

       

    在多孔区域内压制湍流源项

       

                如多孔介质的湍流处理中所讨论的,湍流在多孔介质中的计算和大量(bulk)流体流动是一样的。如果你使用k-e模型或者Spalart-Allmaras模型,你想要压制湍流在多孔区域的影响可以打开流体区域面板中的层流区域选项(从而使得多孔区域的湍流生成为零)。

       

    指定旋转轴并定义区域运动

                 

                旋转轴和区域运动的输入和标准流体区域的输入是相同的,详细情况可以参阅流体区域的输入一节。

       

    多孔介质的解策略

                一般说来,在模拟多孔介质时,你可以使用标准的解算步骤以及解参数的设置。然而你会发现如果多孔区域在流动方向上压降相当大(比如:渗透性a很低或者内部因子C_2很大)的话,解的收敛速度就会变慢。这就表明由于动量源项中出现了多孔介质的压降(方程的矩阵不再是对角占优了),收敛性问题就出现了。解决多孔介质区域收敛性差最好的补救办法就是对于通过介质的流向压降有一个很好初始预测。猜测的办法之一就是,在介质流体单元的上游或者下游补偿一个压力值,详细内容请参阅所选单元的补偿值一节。必须记住的是,当补偿压力时,你所输入的压力可以定义为解算器所使用的gauge压力(即在操作条件面板中定义的相对于操作压力的压力)。

                另一个处理收敛性差的方法是临时取消多孔介质模型(在流体面板中关闭多孔区域)然后获取一个不受多孔区域影响的初始流场。取消多孔区域后,FLUENT会将多孔区域处理为流体区域并按相应的流体区域来计算。一旦获取了初始解,或者计算很容易收敛,你就可以激活多孔模型继续计算包含多孔区域的流场(对于大阻力多孔介质不推荐使用该方法)。

                对于高度各向异性的多孔介质,有时会造成收敛性的麻烦。对于这些问题你可以将多孔介质的各向异性系数(1/a_ijC_2_i,j)限制在二阶或者三阶的量级。即使在某一方向上介质的阻力为无穷大,你也不需要将它设定超过初始流动方向上的1000倍。

       

    多孔介质的后处理

       

                可以通过检查速度分量和压力值来确定多孔区域对于流场的影响。你可能对下列变量或函数的图形(XY图,等值线图或者矢量图)或者文档报告感兴趣:

      X,Y,Z速度(在速度类别中)

      静压(在压力类别中)

                这些变量会在后处理面板的变量选择下拉菜单制定类别中出现。

                需要注意的是多孔区域的热报告不影响固体介质的属性。所报告的多孔区域内的热容、传导率以及焓是流体的属性不包括固体介质的影响。

    转载于:https://www.cnblogs.com/liusuanyatong/p/11259785.html

    展开全文
  • 三维MHD模型在多孔介质中的整体吸引子问题,钟婷茹,,在本篇论文中,作者主要研究了三维MHD模型在多孔介质中的整体吸引子问题,详细验证了相应的半群有吸收集.通过方程组相应的半群具�
  • 文中以水为工质,对多孔介质中Forchheimer区和湍流区下阻力压降进行研究,并将其与经典Ergun型方程的计算值进行了比较和分析.结果表明,湍流区中Ergun型方程的值与实验值出现很大偏差,但二者之间有比较相似的总体...
  • 针对岩体是一种可变形的多孔介质,...在研究渗流的过程中,考虑岩体蠕变的影响,基于岩体流变力学和渗流力学理论,应用对应性原理,建立了含有蠕变参数的动态应力平衡方程,推导了蠕变作用下多孔介质渗流的固流耦合数学模型。
  • 多孔介质理论的基础上,基于非线性达西定律并假设水分迁移过程为单向、可逆及水分迁移过程中无溶质迁移,推导得出了无相变以及考虑相变的水分迁移方程;引入土体传热方程和土骨架质量密度变化方程,过程中考虑了冻土中...
  • 在本系列的第三部分中,重点是使用张量建立本构方程,然后应用传递矩阵法(TMM)计算跨由不同多孔介质层组成的结构的扩散场传输损耗(TL)。 本构方程是通过将有关微观结构组成的信息与宏观特性相关联而获得的。 ...
  • 这项工作提出了一种局部保守且限制性较小的算法来解决[1]中涉及的问题,即均质多孔介质(水和CO2)中的两相流,流体相之间的质量吸收以及CO2之间的反应相和岩石。 后者是通过两个非线性双曲方程建模的,它们代表了...
  • 在存在相关磁场的情况下,研究了在多孔介质周围流动以及粘性耗散的情况下,热和传质对混合对流铜水纳米流体流经倾斜板的影响。 适当的一组有用的相似性变换被认为是将期望的控制方程式变换为非线性的常微分方程式的...
  • 磁流体动力(MHD)质量和二维粘性粘性振荡流体的传热问题,它在存在横向磁场和化学反应的情况下在饱和多孔介质中的无限垂直可渗透运动板上导电分析地提出。 求解控制方程,动量,能量和浓度。 讨论了各种流动参数对...
  • 多孔介质的建模具有许多应用程序,其技术可用于汽车,航空航天,石油勘探和生物医学领域。 这项工作集中在汽车内饰的噪声和振动(NV)开发上,但是这些思想可以转化为上述领域。 NV开发需要将NV目标设置为不同的级别...
  • 如果涉及到汽车,运载火箭,商用飞机,建筑声学,石油勘探甚至是人体组织建模,则必须量化和预测多层多孔介质的能量吸收/传输特性。 一个合适的例子是,前面提到的前四个领域依靠有效的噪音和振动(NV)开发来取得...
  • 考虑了非达西介质的弗朗基纳效应。 该系统在强磁场下受力,霍尔电流完成。 这个问题是由描述流体速度,温度和浓度的非线性偏微分方程组进行数学调制的。 在长波长和低雷诺数的近似下重新构造了系统。 它是通过使用...
  • 该模型在Sobolev对偶分布空间H-1(Ω)上考虑一个变分问题,它的Euler-Lagrange方程是一个与多孔介质方程相关的非线性双调和椭圆扩散方程。首先,将方程归结为一个最小化问题,再利用双调和椭圆边值问题得到Euler-La...
  • 该算法是作为求解积分方程和积分微分方程的迭代过程而开发的。 从油井声发射观测数据的频谱中使用作为直接问题参数的频率。 典型结果:首次发现声发射共振频率与塑性特性之间的关系,这些频率值已用于在流体饱和非...
  • 求解 偏微分方程(PDEs)

    千次阅读 2020-12-07 09:57:32
    管道或多孔介质中的水 物质在空气或水中的传输和扩散 天气:动力耦合的大型PDE系统, 压力、湿度、热量… –振动 –固体力学: 材料、机械零件、结构的应力应变 –热流和分配 –电场和电位 –化学品在空气...

    偏微分方程是一个方程,它包含一个未知函数对两个或多个自变量的导数

    偏微分方程描述了许多工程现象的行为:

    –波传播

    –流体流动(空气或液体)

    机翼周围的空气,直升机叶片,大气

    管道或多孔介质中的水

    物质在空气或水中的传输和扩散

    天气:动力耦合的大型PDE系统,

    压力、湿度、热量…

    –振动

    –固体力学:

    材料、机械零件、结构的应力应变

    –热流和分配

    –电场和电位

    –化学品在空气或水中的扩散

    –电磁学和量子力学

    天气预报

    •热传输和冷却

    •水分平流和弥散

    •辐射和太阳能加热

    •蒸发

    •空气(运动、摩擦、动量、科里奥利力)

    •表面传热

    要预测天气,只需要解一个非常大的系统

    动量、压力、湿度、热量的耦合偏微分方程,

    等。

    学习目标

    1) 能够区分三类二阶线性

    PDE。了解每个类代表的物理问题,以及

    它们的物理/数学特性。

    2) 能够描述有限差分与

    求解偏微分方程的有限元方法。

    3) 能够用有限元法求解椭圆(拉普拉斯/泊松)偏微分方程

    差异。

    4) 能够用有限元方法求解抛物线(热/扩散)偏微分方程

    差异。

    完整资料获取

    展开全文
  • 我们利用达西定律构造了达西通量方程,该方程又将压力梯度与多孔介质的流速,孔隙率和渗透率相关。 根据底部地形不均匀的浅水流动控制方程,我们用同伦摄动法(Homopypy Perturbation Method,HPM)求解了流速。 ...
  • 展开算子在Stokes方程均化问题的应用,林薇,袁国智,本文拟研究多孔区域中,具有非滑动边界的Stokes流的渐进性态.运用周期展开算子的技巧,论证了流体在多孔介质中的运动所满足的
  • 多孔介质中传质的研究由于其在工程实践的不同领域中的各种用途而引起研究人员的兴趣。 这项工作检查了多孔圆柱管中反应性可变粘性流体的稳定流动。 无量纲变量用于对控制方程进行量纲化。 使用常规的摄动技术来获得...
  • 采用两相多孔介质的拉格朗日模型来描述一种理想流体充填的多孔弹性固体材 料, 其中孔隙度的变化满足一个附加的平衡方程。利用该模型得到的控制场方程, 研 究了多孔材料中声波的传播类型, 传播条件, 结果表明存在两种...
  • 比如多孔介质流动,里面的速度压力方程其实是个能量方程(darcy可由伯努利方程导出);系数不是常数,而是根据变量变化的。比如超临界二氧化碳换热,传热系数、比热等跟随温度变化明显;存在源项。比如蒸发...

    e2557e3ef45989fa3477ac41e21df941.png

    原文链接:

    作业部落 Cmd Markdown 编辑阅读器www.zybuluo.com

    0.0 目的

    如果不写自己的求解器,那么学这个软件将毫无意义。而写自己的求解器,常见的,无外乎几种目的:

    • 不是通用方程。比如多孔介质流动,里面的速度压力方程其实是个能量方程(darcy可由伯努利方程导出);
    • 系数不是常数,而是根据变量变化的。比如超临界二氧化碳换热,传热系数、比热等跟随温度变化明显;
    • 存在源项。比如蒸发沸腾,相函数存在源项,而且源项是温度的函数;
    • 要额外计算一些通用求解器不知道的量,比如气固流动的沉积问题,沉积量可能需要单独计算;

    这些需求里面,其实除了第一条是需要改动求解器框子的,剩下的无非是在一般计算的中间插入一些计算步骤罢了。所以下面写的时候我先从最简单的求解器(简单方程、没有源项、常系数)开始写起,然后单独处理上述若干种不同情况。

    ps 还有一种高级情况需要修改求解器,那就是不同的离散格式。这个我不太懂,感觉比较高端,以后再慢慢考虑吧。。 pps 这个笔记局限在不可压粘性流体里面。可压缩和欧拉方程我基本不懂。。。

    0.1 顺序

    所谓顺序,就是一个求解器从头到尾要干的事情。初学者对这个往往没概念导致看求解器代码的时候云山雾罩的。这里写清楚一点:

    • 第一步是创建一个网格,实际上是根据生成的网格创建一个对象。一般不需要自己搞,只要一句话:
    #include "createMesh.H"
    • 接下来是往这个网格上放变量和系数,就是指定每个cv里的变量是多少。在求解器里也只是一句话:
    #include "createFields.H"

    但实际上没那么easy,因为具体要读取什么变量和系数每个求解器不太一样,有的时候所以要自己修改一些内容。

    • 第三步就是离散方程组啦。具体怎么离散,取决于方程是怎么求解的。就我目前的了解,常见的方程无非是两种:压力速度耦合方程组,和被动标量方程。
      • 前者就是质量守恒+ns方程,一般可以写成:
        这个是用来求解p和u的,虽然是非常基础的方程,但是处理起来其实有点难。。那些最难学的部分,什么simple族算法,piso,棋盘分布,rei-chow插值还有各类乱七八糟的对流项离散格式,基本都是用在这个上边了。因为这个比较成熟一般没啥改动,这个笔记就先掠过这部分,单独到simple族算法的时候再说。至于现在,我们只需要知道这个方程组的任务就是为下面的求解提供一个速度场(或者phi场,按照of的说法)就足够了。
      • 剩下的就是我比较喜欢的被动标量方程了。很多方程都是这个类别,比如能量方程(T),vof方法的相方程,level-set方法的f方程,rans族里面的各种湍动能什么的方程,这些不影响流动的,单纯只是被速度输运的量都可以归到被动标量方程里。这类方程的特点是:只依赖于速度,所以求解前需要知道速度;不作用于速度,所以不需要和ns方程联合求解。举个例子,在多孔介质的流体输运中有如下方程:
        虽然写起来是两个方程,但是第二个方程带入1式,真正求解的就是一个关于h的方程罢了(z是高度,已知)。这里面左边是瞬态项,右边是扩散项,连个速度都没有真是太好了。我们接下来就从这个方程出发试着写一个自己的求解器。 简单起见,首先我们假定输运系数(渗透率)是常数。 对于上述第二类方程,在of中直接调用各类离散函数就能完成。离散的结果是个特定的对象,一般是 fvVectorMatrix或者fvScalarMatrix,调用的函数就是fvm::ddt等。
    • 接下来是求解。说到底只要一个solve函数就能搞定,例如:
    pEqn.solve();

    或者

    fvVectorMatrix UEqn(...);
    solve(UEqn == -fvc::grad(p));

    ,但是of毕竟是个通用计算框架,里面有大量的考虑松弛、非正交修正的语句。目前这个笔记只涉及最简单的矩形结构化网格,多余的因素尽量扣除。 + 最后就是输出了,调用语句:

    runTime.write();

    即可。

    1. 创建一个空的求解器

    当然可以从一个空文件从第一个字符开始敲,但是of提供了很多生成摸板的工具。19年初去学软件的时候就有所耳闻,但是如何创建一个空的求解器还是今天看了一个教程才知道的,那就是使用命令:

    foamNewApp mySolver

    这样就可以创建一个路径,里面有一个叫做mySolver.C的文件,文件里有写好的文件头和主函数的框子等等。这个源文件外头还有一个Make路径,Make里面也已经有了现成的files和options 文件了。 值得注意的是,这句命令最好在applications目录下运行,这样新生成的solver会和系统的求解器放在一个路径下,避免新手搞不定编译的问题。

    2. 创建网格对象

    在新建的空求解器中加入一句话:

    #include "createMesh.H"

    即可。这句话应该是将求解器路径下的/constant/polyMesh下的网格文件读入程序,编程一个对象。

    3. 读取初场和系数:creatFields.H

    接下来就是读取初场和系数。在上一句下面加一句:

    #include "createFields.H"

    当然这个要自己写,原因前面已经写过。所以我们在.C文件的同一个路径下新建一个creatFields.H文件。里面的内容,按照我们的示例方程也就是 $$frac{partial theta}{partial t}=nablacdot(kappanabla(h+z)) theta = g(h)$$ 来写。那么我们要读入的变量就是 h,要读入的系数就是 $kappa$ 变量和系数的读入(和读出,因为有些量,不只是变量是要输出来给人看的)在of里通过对象注册机来完成。新手完全没必要琢磨这是个啥,只要知道变量和系数是这样写入写出的就vans了。

    读取系数

    先读$kappa$,仿照scalarTransportFoam的写法:

    Info<< "Reading transportPropertiesn" << endl;
    
    IOdictionary transportProperties
    (
        IOobject
        (
            "transportProperties",
            runTime.constant(),
            mesh,
            IOobject::MUST_READ_IF_MODIFIED,
            IOobject::NO_WRITE
        )
    );

    这一段原封不动抄进去就行。到这里是创建了一个IOdictionary的对象,叫做TransportProperties。创建的时候就用IoObject来初始化。如何初始化呢?首先从从/constant路径下的叫做"transportProperties"的文件里读入数据,这分别是IoObject里面前两行的意思。剩下的就是把这个东西注册(也就是写到)mesh上,mesh是第二步里创建出来的东西。 ok,现在我们有一个对象叫做transportProperties,这个对象是IOdictionary类的,也就拥有了这个类下的各种函数。那么我们要用的就是查找具体系数的功能。虽然这个例子里只有一个系数,看上去多次一举。但是真正的求解器会有若干个系数,所以要分别处理。写入$kappa$的语句是:

    Info<< "Reading diffusivity DTn" << endl;
    
    dimensionedScalar kappa
    (
        transportProperties.lookup("kappa")
    );

    可以看到,我们创建了一个对象叫做kappa,是一个dimensionedScalar类的对象。这个对象初始化的时候值从哪来?使用lookup函数从文件里找来。这个函数从哪里来?从我们上一步创建的transportProperties里来。上一步我们说,transportProperties是个IOdictionary类的对象,lookup函数也是从这个类里来的。

    读取初场

    ok,接下来搞初场。我们的方程只有一个变量,也就只有一个初场。这个初场放在./0路径下面,就叫做h。读取的方式跟上面差不多。上面我们读取系数的时候创建了一个系数属于的对象,那么现在我们也要创建一个变量属于的对象。此处是h,是个标量所以我们要创建一个标量场volScalarField。在of里,写成:

    Info<< "Reading field Tn" << endl;
    
    volScalarField h
    (
        IOobject
        (
            "T",
            runTime.timeName(),
            mesh,
            IOobject::MUST_READ,
            IOobject::AUTO_WRITE
        ),
        mesh
    );

    关于为什么这里有两个mesh,以及对象注册机的写详细说明,参阅资料

    Openfoam中的注册机制是什么意思?www.cfd-china.com
    39c00dc018ff990b7f5ed9626dcbec6c.png

    OpenFOAM输入输出中的注册机制 | 大专栏www.dazhuanlan.com

    OpenFOAM 中的对象注册机制marinecfd.xyz
    54ca232c22734882faf8a36e75addb1c.png

    。从我个人的感觉来说,这部分属于软件架构和数据结构的内容,涉及的是如何把软件写的高效,并不涉及太多cfd的内容,如果仅仅是在of的框架下编写自己的求解器或许不需要太过在意。。。。

    4.方程离散

    接下来的任务是创建一个离散的方程组。方程组在of中一般以fvVectorMatrix或者fvScalarMatrix的类的对象存在。前者是用来储存速度这类矢量,压力、温度、vof相函数等标量储存在后者。此处我们创建一个fvScalarMatrix的对象hEqn:

    fvScalarMatrix hEqn
     (
        fvm::ddt(h)
        == fvm::laplacian(kappa, h)
    );

    可以看见这里的写法很类似与真实的数学写法。 常见的微分算符,其实就是瞬态微分,散度和laplace,分别写作ddt,div,laplacian。这三者又分别属于fvm和fvc两个命名空间,fvm是隐式,fvc是显式,取决与需要的离散格式。 当然还有一个要注意的地方是时间循环。在of里没有真正的稳态计算(?)所有的问题都是瞬态的,只是在稳态问题中可以放大时间步让方程迅速收敛到稳态而已(此处存疑)。所以在写稳态求解器的时候一样要写上瞬态项。 既然有瞬态项就必须有步进策略,而在of中步进一般由simple算法的框架来完成,其实这种简单求解器完全不需要simple算法,此处只是为了通用性而调用simple而已。 具体的语句是,在此前,就使用mesh生成一个叫做simple的对象,属于simpleControl类,语句是:

    simpleControl simple(mesh);

    接下来,在上述离散步骤的外面需要套一个循环:

    while (simple.loop(runTime))
    {
    
    }

    5.方程求解

    构建好方程组之后,只需要一个简单的solve就能搞定求解:

    hEqn.solve();

    6. 结果输出

    每个时间步都需要把结果输出来,所以加上一句:

    runTime.write();

    整个求解器就算初具雏形了。看一下整体的样子:

    #include "fvCFD.H"// 必备头文件
    #include "fvOptions.H"// 与源项有关,目前不涉及可以删掉
    #include "simpleControl.H"// 时间推进有关
    
    int main()// 主函数
    {
        #include "setRootCaseLists.H"//必备
        #include "createTime.H"//创建时间对象
        #include "createMesh.H"//创建mesh 后续频繁使用
        simpleControl simple(mesh);//创建simple对象,用于控制时间推进
    
        #include "createFields.H"//创建场,读取初场和系数
        Info<< "nCalculating h transportn" << endl;//提示计算开始
        #include "CourantNo.H"// 计算库朗数
    
        while (simple.loop(runTime))// 时间循环开始
        {
            Info<< "Time = " << runTime.timeName() << nl << endl;//输出当前时间
    
            while (simple.correctNonOrthogonal())//非正交修正,本求解器不涉及可以删掉
            {
                fvScalarMatrix hEqn//创建线性方程组
                (
                    fvm::ddt(h)
                  == fvm::laplacian(kappa, h)
    
                );
    
                hEqn.relax();//松弛,可以删掉
               // fvOptions.constrain(hEqn);//与源项有关,目前不涉及,可以删掉
                hEqn.solve();//求解
                //fvOptions.correct(h);//同上
            }
    
            runTime.write();//输出
        }
    
        Info<< "Endn" << endl;//提示计算结束
    
        return 0;
    }

    接下来要做的是把源代码编程一个可执行程序。所有的solver都是可执行程序。所以需要编译。编译通过wmake即可,之前的Make文件夹就是为这个准备的。

    6.5 一个插曲

    实际上示例的方程还是有点麻烦,因为

    实际上是:
    因为上述被动标量方程只能处理单个变量,所以应该写成:

    这样子有2种处理方法:

    • 一种是直接把
      除过去,这样就变成了变系数问题
    • 第二种就比较暴躁,直接扯出两个方程,一个是已知h求
      ,另一个是用求得的
      反求h。这样写起来比较简单,所以就写了一个试试:
    fvScalarMatrix thetaEqn
            (
                fvm::ddt(theta)
    
            );
            solve(thetaEqn == fvm::laplacian(kappa,h));//求解第一个方程得到theta
            h = -1*pow(-1600000+341532/(theta-0.075),0.252525);//代入求解h

    没想到竟然支持这么狂野的表达式,竟然编译通过了。。。 等后面网格画好跑一下试试。

    7. 编译

    使用wmake,这个of自带的编译系统即可。因为之前我们使用foamNewApp命令生成了Make,内容都不用修改。直接在在当前求解器目录下:

    wmake

    就vans了。 这部分有个很强的

    作业部落 Cmd Markdown 编辑阅读器www.zybuluo.com
    b093d13d7971a247c006ece36c124a59.png

    可以参考。

    8. 运行求解器

    求解的前提是准备网格+初场。我不太喜欢blockMesh,又学不太会snappyHexMesh,所以网格都用商软来画,画完转换一下。这部分的内容见另一个笔记:

    作业部落 Cmd Markdown 编辑阅读器www.zybuluo.com

    9. 变系数问题

    10. 源项的处理

    fvOptions

    展开全文
  • 当在通道和介质之间存在过渡层时,将考虑流过由多孔层界定的通道。 选择过渡层中的可变渗透率,以使支配流动的布林克曼方程简化为广义的不均匀艾里微分方程。 在这项工作中获得了所得广义艾里方程的解,并从当前解中...
  • 多孔介质的线性渗流问题为例,应用计算流体力学软件,通过对原问题及经过拆分的简单问题进行数值模拟。将简单问题的数值解叠加并与原问题的数值解进行对比,证明了叠加原理在流场数值模拟中应用的可行性。该方法在...
  • 但是,这种对毛细管多孔介质的传热和传质方程进行数值解的程序非常耗时。 因此,本文的追求是利用在图形社区中开发的一种加速方法,该方法利用了图形处理单元(GPU),并将其应用于此类传热和传质方程的数值解。 ...
  • 储油气层岩石均为多孔介质,且多数孔隙(裂隙)是相互连通的。在一定的压差作用下,流体通过连通孔隙而产生流动。因此,这种在压差作用下岩石允许流体通过的性质就称为岩石的渗透性,表示岩石渗透性好坏,用渗透率表示...
  • 一种这样的情况是模拟毛细管多孔介质中的传热和传质,这在分析工程应用中的各种场景时变得越来越重要。 分析给定环境中的这种传热传质现象需要我们对其进行仿真。 这需要模拟耦合的传热方程。 但是,这种传热和传质...
  • 多孔介质中的非Fickian 流的块中心有限差分方法,芮洪兴,李晓丽,在本文中,为解决在多孔介质非Fickian流中出现的抛物型积分微分方程,介绍并分析了一种块中心有限差分方法。这是一种向后Euler格式,在时
  • STANMOD软件

    2018-12-20 20:11:19
    用于利用对流-弥散溶质传输方程的解析解来评价溶质在多孔介质中的传输

空空如也

空空如也

1 2 3 4
收藏数 78
精华内容 31
关键字:

多孔介质方程