abaqus自帶算例詳解
混凝土壩地震響應分析-4:vdload用戶子程序
在該算例中,大壩震動之前在自重和水壓力作用下的應力狀態(靜力狀態)由standard模塊計算(因為standard求解靜力準靜力的效率很高),然後利用上一文介紹的方法將結果導入到新的explicit分析中,進行地震響應分析。在導入分析中,所有的荷載需要重新定義。Explict中定義重力荷載的方法和standard中一樣,但壓力定義中沒有hydrostatic靜水壓力選項。這裡使用的是vdload用戶子程序(對於簡單的荷載,也可以採用fx分布的形式)。該程序可以定義隨位置、時間、速度等因素有關的分布荷載。原始代碼圖1
圖1
這裡面需要定義的變量只有value(block),即分布荷載的大小。
輸入變量含義如下:
nBlock:某次調用需處理的點的數量。
Ndim:維數,二維為2,三維為3
stepTime:分析步起算時間
totalTime:總時間
amplitude:幅值函數的數值,未指定默認為1
curCoords (nBlock, ndim)某點的某方向坐標
velocity (nBlock, ndim):某點的某方向速度
dirCos (nBlock, ndim, ndim):面、邊的朝向,依次為某點,某方向的向量(局部),該方向的ndim坐標系下的分量
jltyp:分布荷載類型的標識符,如果是分布面荷載,其值為0,其它可參考幫助文檔。
Sname:當JLTYP=0 時,該參數為面的名稱;當荷載為體力或基於單元的荷載時,傳入的是空值。
該混凝土壩算例自帶的vdload子程序如下:
subroutine vdload (
* nblock, ndim, stepTime, totalTime,
* amplitude, curCoords, velocity, dircos,
* jltyp, sname,
* value )
C
include 'vaba_param.inc'
parameter ( ywater_level = 91.75d0,
* water_density = 1000.0d0,
* gravity = 9.81d0)
預設了水表面高程,水密度,重度,d表示雙精度
C
dimension curCoords(nblock,ndim),
* velocity(nblock,ndim),
* dircos(nblock,ndim,ndim),
* value(nblock)
character*80 sname
do k = 1, nblock
depth = ywater_level - curCoords(k,2)
根據預設的水位高程減去當前y坐標,得到水深
value(k) = amplitude *
* depth * gravity * water_density
某點的壓力強度為密度乘以重力加速度*水深*幅值
end do
*
return
end
極其簡單。根據傳入的變量,理論上可以確定隨位置,時間,速度等變化的壓力。
定義好vdload之後,在load模塊壓力選項中(圖2)選擇自定義,在job模塊的general選項卡中選定用戶子程序位置,即可使用vdload子程序。
圖3是一個沿深度正弦分布的壓力荷載,示例起見,在step模塊中將壓力荷載P作為輸出變量進行驗證。
圖2
圖3