第三章 DRAIN-2DX/CALREL 偶合程式之驗算及測試
第三節 DRAIN-2DX/CALREL 銜接程式之改進
由前知,本計畫第一年度已排除萬難完成上述兩程式之初步偶合,
但偶合並非十分完善,因此針對兩程式間之銜接程式仍需加以架構化改 寫,以增進其使用便利性。本節以下將敘述兩程式之偶合概念及主要銜 接程式之改進。
3.3.1 DRAIN-2DX/CALREL 程式之偶合概念
由前知,本計畫中 DRAIN-2DX 用來模擬整體 RC 建築物之受震行 為,並提供評估其破壞程度 (可由狀態函數 (3-1) 式來表示) 所需之輸入 值;而 CALREL 程式於給定之破壞事件 (亦由狀態函數表示) 及輸入各相 關變數之變異性資料下,可計算出其對應之破壞機率。因此,顯然銜接 兩程式的窗口為 CALREL 程式中撰寫狀態函數之使用者所定義副程式組 (USER.FOR),其範例檔可參照圖 3-3。其中某狀態函數 gi 之值由相關變數
x ~
而定,若其為~ x
之顯式,則可直接撰寫成~ ) }
~ , (
{ g
ix t = 0
型式;但若為
x ~
之隱式,則另需 CALL 副程式計算 (此即為 DRAIN2DX 之例)。圖 3-4 顯示了兩程式原始之偶合架構示意圖,其中偶合的最大工作乃在使兩程 式之變數能正確地傳值,細節包括兩程式相關變數之名稱辨識及輸入檔 之類同化、部份副程式之改寫等。所有物理參數之輸入 (含 DRAIN2DX 者) 原始構想為皆由 CALREL 程式控制。第一年度因時間有限,所以上述所 需加 CALL 之副程式並非撰寫得十分完善,因此有下一小節之修正。Subroutine ugfun(g,x,tp,ig) Implicit real*8 (a-h,o-z) Dimension x(1),tp(1)
ccccc user-defined limit-state function(s) ~) }
~, (
{gi x t =0
ccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccc return
MOIS 891016-4 Final Report 3-10
end
subroutine udgx(dgx,x,tp,ig) implicit real*8 (a-h,o-z) dimension x(1),dgx(1),tp(1)
ccccc gradient(s) of user-defined limit-state function(s) ccccccccccccccc ~)/ ~}
~, (
{∂gi x t ∂x
ccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccc return
end
subroutine udd(x,par,sg,ids,cdf,pdf,bnd,ib) implicit real*8 (a-h,o-z)
dimension x(3),par(4),bnd(2)
ccccc user-defined distribution density function(s) {fX~(~x)}
ccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccc return
end
subroutine usize
common /blkrel/ mtot,np,ia(50000) ccccc define array dimension mtot=50000
return end
圖 3-3. CALREL 程式中 USER.FOR 之範例檔
Program control
CALREL
Analysis routines FORM SORM DIRS MONT
SENS BOUN PNET Problem definition
User-defined routines
UGFUN UDGX
UDD Interface
Program control
GRAV STAT ACCN FORN MODE Problem definition DRAIN-2DX
Data input Data input
Analysis routines
SPEC 2D element
routines Truss, Beam-Column, Panel, etc.
Similarization
圖 3-4. CALREL 程式與 DRAIN-2DX 程式之偶合架構示意圖
MOIS 891016-4 Final Report 3-11
3.3.2 主要銜接程式之改進
圖 3-5 顯示了修正之 USER.FOR,其中已加上了副程式 CD2DX,其 主要目的為連結 DRAIN2DX 程式及提供其所需輸入值 (
x ~ t
~ ,
),並傳值回真 正 所 需 定 義 整 體 RC 結 構 體 損 壞 程 度 ( 即 新 定 義 之 狀 態 函 數
}
~ )
~ ,
~ , (
{ g
iy x t = 0
) 之參數值 (~ y
,如節點位移或構件降伏數等)。考慮此 情形及兩程式不同之輸入格式,兩程式偶合架構之現況圖如圖 3-6 所 示,並說明如下:1) DRAIN2DX 程式運算所需之控制指令、構件座標資料及相關參數編號 仍依其使用手冊規定格式寫成輸入檔 ;
2) 而其他構件材特性及載重資料屬於隨機變數
x ~
,其機率分佈資料(類別及其對應之機率參數) 由CALREL 程式控制其輸入;
3) 增寫副程式 TIN,其功能為將上述 DRAIN2DX 程式固定之輸入檔加上 CALREL 程式一次計算產生之
x ~
值合成 DRAIN2DX 程式運算所需之 輸入檔 DRAIN.INP。副程式 TIN 現大致可處理塑性鉸梁柱 (Type 02) 及 簡單連接 (Type 04) 元素,以及靜力、動力及地表加速度加載。至於 第二章所建立之有效考量土壤動力效應地表運動模式所產生之地 表加速度歷時曲線亦可於此副程式加以改寫完成;4) 增寫副程式 TOUT,其功能為將 DRAIN2DX 程式計算所得之結果輸出 檔,尤其是以 *GENDISP 指令所計算得之節點位移組合或其他相關 者,製造成上CALREL 程式中 USER.FOR 定義該結構的狀態函數 gi 所 需之
~ y
值,再傳回USER.FOR 以計算 gi 值。Subroutine ugfun(g,x,tp,ig) Implicit real*8 (a-h,o-z) Dimension x(1),tp(1), y(1) Ccccc call DRAIN2DX to get ~y
Call Cd2dx (x,tp,y)
Ccccc user-defined limit-state function(s)
MOIS 891016-4 Final Report 3-12
ccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccc return
end
subroutine udgx(dgx,x,tp,ig) implicit real*8 (a-h,o-z) dimension x(1),dgx(1),tp(1)
ccccc gradient(s) of user-defined limit-state function(s) ccccccccccccccc ~)/ ~}
~, (
{∂gi x t ∂x
ccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccc return
end
subroutine udd(x,par,sg,ids,cdf,pdf,bnd,ib) implicit real*8 (a-h,o-z)
dimension x(3),par(4),bnd(2)
ccccc user-defined distribution density function(s) {fX~(~x)}
ccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccc return
end
subroutine usize
common /blkrel/ mtot,np,ia(50000) ccccc define array dimension mtot=50000 Data input
Data input
Analysis routines
SPEC 2D element
routines Truss, Beam-Column, Panel, etc.
TIN TOUT
DRAIN.INP OUTPUT like Gendisp DRAIN.INP
MOIS 891016-4 Final Report 3-13