一种基于多尺度模型代替流固耦合的计算方法与流程

文档序号:17161594发布日期:2019-03-20 00:48阅读:927来源:国知局
一种基于多尺度模型代替流固耦合的计算方法与流程

本发明提供了一种基于多尺度模型模拟血管壁弹性从而代替流固耦合的计算方法,属于血流动力学计算领域。



背景技术:

在计算血流动力学时,一般运用ansys软件中的cfx子程序。这种计算方法只能实现血液在刚性管中的流动模拟。但生理实际是血液在弹性管中流动,血管壁具有弹性,而且血管壁弹性对血液流动有着不可磨灭的影响。流体对弹性管施加影响后,弹性管对流体也会施加影响,二者之间的影响是往复进行的。流体可以对刚性管施加影响,但刚性管无法将获得的这种影响反馈给流体。所以在计算血流动力学时,应充分考虑血管壁弹性对血液流动施加的力,血液由于受力不同而出现不同的流动状态,从而出现不同的流场分布。目前,为将血管壁弹性纳入计算影响因素,一般采用流固耦合的计算方法。但是,这种方法对模型要求较高,设置过程十分繁琐,且计算时间长。

动脉血管是弹性的,动脉血流是随心搏而脉动的,所以血流动力学的数值计算,需要求解可变形血管内三维非定常流动的控制方程。在心搏周期血液循环过程中,动脉壁可以变形膨胀,而血液的流动区域也会随之发生改变。所以,动脉血流与血管壁组成一个瞬态流-固耦合的力学系统,需要使用连续介质力学中的任意拉格朗日-欧拉(arbitrarylagrange-eulerian,ale)方法来描述系统的运动和动力学特性。但流固耦合计算较为复杂,所以需要一种新的方法来简化计算同时达到与流固耦合相同的计算效果。

几何多尺度模型,几何多尺度建模是一种特殊的仿真血液循环系统的策略。它利用不同模型各自的特点分别仿真循环系统中的不同部分,采用三维模型仿真局部细节的血流动力学环境,而外周循环系统则用降维的一维或零维模型进行仿真。各部分之间互相耦合,从而用较少的计算开销实现大范围甚至是整个循环系统的仿真,其结构示意如图1所示。

当关注3d流场细节而同时不希望使用人工确定的固定边界条件时,常常使用0d/3d耦合模型。这种模型通常用3d模型模拟关注的局部流场,而用0d模型仿真外周的循环系统。这样当3d模型结构发生改变时,外周0d模型为3d模型提供的边界条件也会自适应的做出相应的改变,从而避免了固定边界条件带来的不良影响。

0d/3d耦合算法,0d模型计算所得3d模型入口流量和出口压力作为3d模型计算的边界条件,而3d模型计算所得入口压力和出口流量则为0d模型计算所缺项提供数值。0d模型和3d模型之间的数据交互遵循如下公式:

其中为3d模型计算所得入口平均压力,a3d,in是3d模型入口面积,γin是积分域即三维模型入口平面,p是3d模型入口压力,dγ是面积微元,p0d,in是0d模型所缺项,即与3d模型入口交界处的平均压力。q3d,out是三维模型计算所得出口流量,ρ是血液密度,γout为积分域即三维模型出口平面,u是出口平面处的节点速度,ni是出口平面法向量,q0d,out是0d模型所缺项,即与3d模型出口交界处的流量。

耦合算法中每个三维计算时间步进行一次数据交换,同时进行残差检测。通常定义3d模型出口压力和入口流量在不同心动周期间的误差作为残差检测项,当残差小于预先设定值时认为计算结果收敛,仿真结束,具体流程如图2所示。

0d/3d耦合计算实现,ansys-cfx是ansys公司所有的前后处理和流动计算都比较完善的计算流体力学(cfd)仿真软件。想要基于ansys-cfx进行0d/3d耦合模型的仿真计算,不仅仅需要掌握0d/3d耦合算法,还需要了解ansys-cfx的二次开发、内存管理及多进程计算。

ansys-cfx的二次开发系统是基于fortran语言的用户自定义子程序。用户按照cfx的规范使用fortran语言写的子程序代码能够用以下两种形式应用于cfx的3d计算之中。

(1)usercelfunctionusercelfunction是一种用户自定义的函数,有自变量和返回值,因此它具备输入输出的功能,可以用来完成0d模型和3d模型之间的数据传递。但是,这种用户自定义函数是无法指定运行时间和运行次数的。cfx会在3d计算需要调用该函数时自动调用。

(2)userjunctionboxroutineuserjunctionboxroutine是一种用户自定义的程序块,没有自变量和返回值,但是该程序块可以人为指定运行的时间节点,因此可以用来完成耦合计算的初始化设置和0d模型的计算等功能。

利用usercelfunction将3d模型计算结果传递给0d模型,同时将0d模型计算所得结果传递给3d模型。而userjunctionboxroutine则用于0d模型的计算。但这两种子程序之间的配合利用cfx的内存管理系统。

因为userjunctionboxroutine没有自变量和返回值,却又必须用其进行0d模型的计算,那么0d模型计算所需的3d计算结果(所缺项)只能从内存中取得,同时0d模型的计算结果也只能存储在内存之中。另一方面,想要将0d模型计算结果传递给3d模型作为边界条件则必须使用有自变量和返回值的usercelfunction,因此usercelfunction就必须从内存中读取0d模型的计算结果返回给3d模型,同时将3d模型的计算结果存储到内存中以供0d模型计算时读取。这些内存的存储和读取的操作都必须依托于cfx的内存管理系统来完成。该系统提供了一系列有关内存管理的方法,可以在用户自定义fortran子程序中调用。

3d模型仿真常常使用多进程计算,在多进程计算时用户自定义程序会在每个进程中独立运行,各进程也会有各自独立的内存空间。3d模型进行多进程计算时,会将3d模型网格切割成若干块,每个进程计算一块,因此无法保证每一个进程都会包括出口或者入口边界。如之前所说,进行数据传递的usercelfunction是在需要的时候被自动调用的。具体到0d/3d耦合,可用usercelfunction提供边界条件,那么该子程就会在需要边界条件的时候调用。而对于不包括出入口边界的进程则不会调用该子程序,也就无法完成模型间的信息交互。因此进行多进程计算时,需要自定义一个变量,该变量必须在整个3d模型中每个节点都有值,然后利用usercelfunction给该变量赋值的同时进行模型间的数据传递。如此则能保证多进程计算时不会出现问题。



技术实现要素:

本发明提出的一种基于多尺度模型代替流固耦合的计算方法,应用于计算机计算血管壁弹性或血流信息中,相对于其他计算方法拥有更快的计算速度。该方法能够应用于血流动力学计算,可弥补将血管作为刚性管计算的误差,且能实现较快的计算速度。

技术方案如下,一种基于多尺度模型代替流固耦合的计算方法,其特征在于,包括如下步骤:

(1)血液流动三维模型的构建,并确定几何参数及血流动力学参数;

(2)在所建立的血液流动三维模型的后端串联一电容,电容的一极板连接模型的血管,另一极板接地,根据公式计算出与血管壁弹性等效的电容值,建立基于多尺度模型模拟血管壁弹性的模型,实现0d/3d耦合;

(3)运用有限元仿真的计算方法计算上述模型公式;

进一步优选:从步骤(1)建立的血液流动三维模型中,测量如下几何条件:血管半径r、血管长度l;查阅文献,确定符合特定部分的血管壁厚h;查阅文献,确定血管弹性模量e;

步骤(3)包括:利用有限元仿真的方法计算步骤(2)中的模型,计算后提取血管的血流动力学参数,血流动力学参数包括壁面切应力(wss)、振荡剪切指数(osi)、粒子滞留时间(rrt);以及血液流速等参数。

该方法可以代替设置复杂且计算时间较长的流固耦合算法,提高血流动力学的计算速度。

附图说明:

图1几何多尺度模型示意图;

图20d/3d耦合算法流程图

图3:构建的多尺度模型;

图4:与本发明等效的实际血管模型。

具体实施方式

下面结合具体实施方式解释本发明,但本发明并不限于以下实施例。

实施例1

多尺度方法

本发明利用solidworks创建了理想冠脉血管模型,查阅文献知冠脉血管直径一般为2-4mm,血管壁厚度为1.5mm,弹性模量为1.0mpa。因此本发明建立的模型是血管直径为3mm,血管长度为100mm,存为.x-t格式。然后用ansys14.5中的子模块fluidflow(cfx)为理想模型划分网格,网格文件的格式为.cmdb。

利用公式计算本发明中模型的电容值。编写cfx计算所需的子程序。运行软件cfx14.5,将网格文件及子程序输入软件,模型入口的边界条件设置为随时间变化的压力,出口的边界条件由子程序提供。设置时间步长为0.0025s,计算时长为2.4s。

提取计算结果中的流量随时间变化曲线。

流固耦合方法

运行软件ansys14.5,将带有血管壁厚度为1.5mm的血管模型输入软件,入口边界条件与cfx中计算相同,出口边界条件设置为零压。时间步长与计算时长和上述一致。

提取计算结果中的流量随时间变化曲线。

对比两次计算所提取的结果,可以看到其结果可以拟合。

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1