使用伺服控制(Servo Control)函数进行数值试验

使用伺服控制(Servo Control)函数进行数值试验的图1

1 引言

数值模拟的其中一个用途是做仿真试验(岩石力学---从物理试验到数值试验),通过数值地改变岩石试件的几何形状,材料性质和加载条件,来观察岩石的应力应变行为。例如,在《应变软化模型(Strain-Softening and IMASS)》中,猜想单元尺寸可能影响了剪切带的生成(左图),为了验证这种想法,把单元最大边长设置为原来的一半(max-edge 0.125), 运行了200万时步,其结果如下图(右图)所示。

使用伺服控制(Servo Control)函数进行数值试验的图2

应力-位移图显示在应力达到峰值以后,出现了短暂的震荡,随后逐渐平稳。这个现象在前面的试验中没有观察到,这充分说明了单元尺寸对材料应变软化行为的影响。样的应力-应变响应表明,在达到峰值强度后,材料会发生软化。

使用伺服控制(Servo Control)函数进行数值试验的图3

在数值模拟中,加载速率(rate of loading)引入了惯性效应(inertial effects),如果突然施加速度,惯性效应在初始阶段将占主导地位,使得系统难以达到稳态。为了消除这种惯性效应,可以通过监测不平衡力并相应地降低加载速率来得到控制。使用FISH函数可以自动控制加载速率,即所谓的伺服控制(Servo Control),伺服控制能够用来进行数值试验。


2 伺服控制函数

伺服控制函数(SERVO.FIS)的作用是过施加速度的伺服控制尽量减少惯性效应对模型响应的影响,在循环过程中,通过计算的最大不平衡力(maximum unbalanced force)动态地调节施加的载荷速度,防止不平衡力过高,控制其惯性效应,从而使得。


为了调节施加的载荷速度,使用FISH SET命令设置不平衡力的上限(high_unbal)和下限(low_unbal)以及最大加载速度的上限(high_vel)来控制。加载速度也是通过指定一个上限(high_vel)来控制的。当使用WHILE_STEPPING语句时,在每个计算循环中比较计算值和设定值,然后根据判断条件进行调节。具体地,如果计算的不平衡力(unbalanced.force)大于不平衡力的上限high_unbal,给它乘以一个小于1的系数(0.975);如果不平衡力(unbalanced.force)小于不平衡力的下限low_unbal, 给它乘以一个大于1的系数(1.025)。

fish set @high_unbal = 5e4fish set @low_unbal  = 2e4fish set @high_vel   = 2

伺服控制函数在UDEC和FLAC中写起来比较繁琐,主要原因是这些2D程序还没有完全转换到新的FISH格式(FISH: Loop语句的进化FLAC3D 7.0 新特性简介(P2)---FISH的显著改进); FLAC3D和3DEC的伺服控制函数写起来很简单,示例如下:

fish def _servo  while_stepping  if block.unbal > unbal_limit then    vel_ = 0.98*vel_    loop foreach local gp points      block.gp.vel.app.z(gp) = vel_    end_loop  endif  if block.unbal < 0.8*unbal_limit then    vel_ = 1.02*vel_    loop foreach gp points      block.gp.vel.app.z(gp) = vel_    end_loop  endifend


应变软化材料的三轴压缩试验

下图所示的是一个应变软化材料的三轴压缩试验结果。其中左图显示的是计算的平均垂直应力sigmav和平均垂直应变ev之间的关系,右图显示的是最大不平衡力与时步之间的关系。比较引言中的单轴应力应变曲线,可以发现在三轴条件下应变软化的行为更加复杂。

使用伺服控制(Servo Control)函数进行数值试验的图4


默认 最新
当前暂无评论,小编等你评论哦!
点赞 评论 收藏 1
关注