使用伺服控制(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


登錄后免費查看全文
立即登錄
App下載
技術鄰APP
工程師必備
  • 項目客服
  • 培訓客服
  • 平臺客服

TOP

3