黃彪, 張中杰, 李明廣, 陳加核, 陳錦劍
(1.上海交通大學(xué) 船舶海洋與建筑工程學(xué)院, 上海 200240;2.上海市城市建設(shè)設(shè)計研究總院(集團)有限公司, 上海 200215)
我國是世界上最大的大陸淺源強震活動區(qū),隨著城市地下空間的快速開發(fā),越來越多的軌道交通工程被規(guī)劃于高地震烈度區(qū)。因此,作為國家生命線工程的主體結(jié)構(gòu)之一,軌道交通的抗震驗算是工程設(shè)計環(huán)節(jié)不可或缺的一部分[1-2]。
我國各行業(yè)參照的軌道交通抗震規(guī)范主要有《城市軌道交通結(jié)構(gòu)抗震設(shè)計規(guī)范》(GB50909—2014)與《地下鐵道建筑結(jié)構(gòu)抗震設(shè)計規(guī)范》(DG/TJ08-2064—2009),兩本規(guī)范包含的抗震驗算方法主要有反應(yīng)位移法、反應(yīng)加速度法、時程分析法及慣性力法[3-9]。值得注意的是,目前市場上尚無軌道交通地下結(jié)構(gòu)抗震分析軟件,設(shè)計人員多需手動建模分析,效率低下、水平也參差不齊;此外,規(guī)范僅給出各方法的計算簡圖與公式,設(shè)計人員在遇到地質(zhì)情況復(fù)雜的工程時,若完全按照勘察資料進行參數(shù)取值,易造成計算結(jié)果與實際不符[10-11]。因此,研發(fā)一款軌道交通地下結(jié)構(gòu)抗震設(shè)計的專用軟件,實現(xiàn)計算分析的輸入?yún)?shù)化與輸出自動化,提高計算效率的同時,又規(guī)范化設(shè)計人員的抗震驗算流程,可為軌道交通設(shè)計的進步做貢獻。
對現(xiàn)有設(shè)計規(guī)范中地下結(jié)構(gòu)抗震計算方法進行梳理與研究,得到該抗震軟件開發(fā)所需的技術(shù)路線,如圖1所示。
圖1 軟件開發(fā)技術(shù)路線圖
該抗震軟件集成了常用3種地下結(jié)構(gòu)形式(矩形框架、圓形盾構(gòu)隧道、礦山法隧道)與4種計算方法(慣性力法、反應(yīng)位移法、反應(yīng)加速度法、時程分析法)。軟件分為前處理、計算與后處理開發(fā)三部分。前處理模塊采用C#語言進行開發(fā),為計算模型的參數(shù)輸入界面,該界面主要用于讀取用戶輸入的計算參數(shù),主要包括抗震算法參數(shù)和結(jié)構(gòu)參數(shù),共計12種組合形式;計算模塊采用ANSYS自帶的APDL命令流進行抗震算法的編寫,根據(jù)用戶輸入的參數(shù)自動完成有限元建模與計算,并輸出所需計算結(jié)果文件[12-13];后處理模塊采用C#語言開發(fā),基于已有的抗震報告模板,將ANSYS計算結(jié)果一鍵式導(dǎo)入報告模板生成抗震驗算報告。
上述可知,軟件整體分為三個大模塊:前處理模塊、計算模塊、后處理模塊。前處理模塊需要設(shè)計用戶交互界面,供用戶輸入計算參數(shù);計算模塊是整個軟件的核心,根據(jù)用戶輸入的參數(shù),調(diào)用ANSYS自動化建模,計算,并進行結(jié)果的提??;后處理模塊需要將前面提取出來的結(jié)果素材編制為計算報告。
前處理模塊和計算模塊之間利用“*.sdmp”文件進行銜接,用戶界面中輸入的參數(shù)會被寫入一個臨時的“*.sdmp”文檔,供APDL命令文件“*.sdinp”讀入。當程序調(diào)用ANSYS計算時,APDL文件通過“*vread/*sread”命令對“*.sdmp”文檔中的數(shù)據(jù)進行讀取并完成建模。計算模塊與后處理模塊利用“*.sdr”文件進行銜接,APDL命令文件“*.sdinp”通過“*vwrite”命令對ANSYS的計算結(jié)果進行整理并輸出,寫入臨時的“*.sdr”文檔,并采用“/show”命令截取結(jié)構(gòu)受力變形圖,供后處理模塊讀入。最后,后處理模塊通過word二次開發(fā)將計算結(jié)果導(dǎo)入抗震報告模板中。各模塊間的相關(guān)聯(lián)與工作流程,如圖2所示。
圖2 各模塊關(guān)聯(lián)圖
由圖2可知整個軟件操作便捷,極大簡化了用戶有限元建模過程,用戶僅需輸入合理參數(shù)即可完成相關(guān)計算。其中,前處理模塊主要提供結(jié)構(gòu)類型、計算方法及相關(guān)計算參數(shù)的選取與輸入;計算模塊用于自動調(diào)用ANSYS進行建模與計算,并輸出結(jié)果文件;后處理模塊用于將計算結(jié)果導(dǎo)入抗震驗算報告。
抗震設(shè)計軟件的操作流程圖,如圖3所示。
GDI+圖形界面用于顯示用戶設(shè)定的框架結(jié)構(gòu)與土層之間的幾何關(guān)系。結(jié)構(gòu)參數(shù)與土層參數(shù)界面,會根據(jù)用于選取的地下結(jié)構(gòu)(框架車站、圓形隧道、礦山隧道)與計算方法(慣性力法、反應(yīng)位移法、反應(yīng)加速度法、時程分析法)進行改變,共計12種組合。
前處理模塊包含用戶主界面與12個差異化參數(shù)模塊開發(fā)。在用戶主界面中,主要提供計算模型(框架車站、圓形隧道、礦山隧道)和計算方法(慣性力法、反應(yīng)位移法、反應(yīng)加速度法、時程分析法)的選取,如圖3所示。同時,用戶需提供地下結(jié)構(gòu)抗震計算時的一些基本參數(shù),如設(shè)防烈度、場地分類、抗震等級、地震作用等,并選擇臨時計算結(jié)果存儲的工作文件夾路徑。
根據(jù)用戶選擇的計算模型和計算方法,調(diào)用相應(yīng)的建模界面,所以會有12個不同的建模界面。建模界面主要有三部分組成,一部分是采用GDI+的圖形處理手段,在界面左邊的PictureBox里面繪制模型示意圖,使用戶對模型有一個直觀感受;一部分是根據(jù)結(jié)構(gòu)形式制定的參數(shù)輸入界面;一部分是根據(jù)不同算法制定的參數(shù)輸入界面。
完成參數(shù)輸入后,生成“*.sdmp”參數(shù)文件,便進入計算模塊開發(fā)。計算模塊開發(fā),首先需獲取電腦中的系統(tǒng)環(huán)境變量,然后根據(jù)ANSYS的環(huán)境變量特征進行匹配,從而獲取電腦中ANSYS的安裝位置,為后續(xù)的調(diào)用奠定基礎(chǔ)。檢索電腦中的ANSYS程序的代碼如下。
foreach (DictionaryEntry v in machineVars){
string vName = v.Key.ToString();
// 判斷 1:
if (vName.Equals("ANSYS_SYSDIR",StringComparison.OrdinalIgnoreCase)){
ansysSysDir = v.Value.ToString();
continue;}
//判斷 2:
圖3 軟件流程圖
var mat = reg.Match(vName);
if (mat.Success){
versionNum = mat.Groups[1].Value;
ansysDir = v.Value.ToString();}}
確定ANSYS安裝路徑后,采用Batch批處理調(diào)用ANSYS 的APDL命令流文件“*.sdinp”,用于自動建模計算與結(jié)果導(dǎo)出。ANSYS的批處理是區(qū)別于GUI界面執(zhí)行有限元分析的方式,批處理執(zhí)行分析不用顯式模型相關(guān)情況,僅在后臺運行,避免了用于可視化顯式的相關(guān)資源的應(yīng)用,速度較GUI界面更快。而且批處理更大的好處是可以通過第三方軟件或者編寫的程序自動執(zhí)行批處理過程,在二次開發(fā)中用的比較多,批處理執(zhí)行關(guān)鍵代碼如下。
string cmd = @"@echo offcd /d " + WorkingDir.WorkingDirectory + " ";
cmd += $"”{ansysExe}” -p ane3flds -dir ”{wkDir}” -j ”{jobName}” -s read -l en-us -b " +$"-i ”{inputFile}” -o ”{outputFile}”";
sw.WriteLine(cmd);
Ansys計算完成后,會在指定目錄下依據(jù)APDL命令流生成對應(yīng)的圖片與計算結(jié)果,以反應(yīng)位移法為例,計算后會生成結(jié)構(gòu)軸力圖、彎矩圖與剪力圖,同時還會根據(jù)不同報告需求,將相關(guān)荷載、位移數(shù)據(jù)保存至“*.sdr”文件,便于word二次開發(fā)時讀取所需數(shù)據(jù)。
進一步利用word書簽對報告模板進行數(shù)據(jù)讀取,主要分為3部分內(nèi)容:(1)先對所需模板及相關(guān)計算數(shù)據(jù)進行導(dǎo)入;(2)將設(shè)定路徑下的圖片插入word報告;(3)將最終計算所得的數(shù)據(jù)插入word報告對應(yīng)書簽位置。Word報告二次開發(fā)的關(guān)鍵代碼如下。
//數(shù)據(jù)導(dǎo)入
var document = application.Documents.Add(@"D:/SDSS/MidFiles/車站慣性力法1.docx");
string std_file_name1 = Path.Combine(WorkingDir.WorkingDirectory, "Result.sdr");
string[] line1 = File.ReadAllLines(std_file_name1);
//圖片寫入
string picFileName = model.ModelName + "-" + split[0] + "-" + split[1] + ".jpg";
Selection s = application.Selection;
s.InlineShapes.AddPicture(workdinDirName + "" + picFileName);
//計算結(jié)果寫入
Dictionary〈string, string〉 map = new Dictionary〈string, string〉(){
{"SheFangLieDuADD1WD",SheFangLieDu.ToString(CultureInfo.CurrentCulture)},};
為了驗證抗震設(shè)計軟件的可行性,選取某框架結(jié)構(gòu)的反應(yīng)位移法算例進行計算分析,結(jié)構(gòu)采用混凝土材料,彈性模量為30 000 MPa;頂板截面為0.8 m×1.0 m,中板截面為0.4 m×1.0 m,底板截面為0.9 m×1.0 m,側(cè)墻截面為0. 7 m×1.0 m,中柱截面為0.12 m×0.7 m,土體重度為20 kN/m3,土體動剪切模量為30 000 kPa,土層厚度為50 m,泊松比為0.3,設(shè)防地震加速度取0.2 g,切向土彈簧剛度kx為1 667 kN/m3,法向土彈簧剛度ky為5 000 kN/m3。輸入?yún)?shù)后進行求解,如圖4所示。
分析圖(a)可知,中柱的軸力一般大于側(cè)墻的軸力,中板與底板的軸力大于上頂板。反應(yīng)位移法中,底板與左側(cè)墻體交點處彎矩顯著增大,彎矩水平遠高于其余結(jié)構(gòu);同時,底板與右側(cè)墻連接處的剪力水平也有所增大,但其水平同其余各處結(jié)構(gòu)差別較小。分析圖(d)可知,由于框架結(jié)構(gòu)被強制施加了位移差,且頂板受到向右的剪切力作用,底板受到向左的剪切力,框架結(jié)構(gòu)的變形表現(xiàn)為平行四邊形狀,上下之間的樓板發(fā)生錯動,圖中頂板與底板的位移差約為24 mm。該示例所得的計算結(jié)果與人工建模的結(jié)果相同,計算結(jié)果與反應(yīng)位移法的結(jié)構(gòu)受力變形特性吻合,進一步說明了該抗震軟件計算結(jié)果的合理性[14-15]。
設(shè)計人員在軌道交通地下結(jié)構(gòu)抗震設(shè)計中多采用手動建模分析,存在效率低下、水平參差不齊、建模不規(guī)范等問題,本文針對該問題,開發(fā)了一款基于ANSYS的軌道交通地下結(jié)構(gòu)抗震設(shè)計軟件。該軟件主要分前處理、計算與后處理三個模塊:前處理采用C#語言完成用戶主界面與12種計算模型參數(shù)輸入界面的開發(fā),并生成對應(yīng)的參數(shù)文件;計算模塊調(diào)用ANSYS的批處理功能,讀取預(yù)編譯的APDL命令流,完成建模、計算與結(jié)果導(dǎo)出,并生成結(jié)果文件;后處理模塊采用C#完成word二次開發(fā),生成最終的抗震計算報告。
本文開發(fā)的軟件具有以下特點:操作簡單,輸入便捷,只需完成參數(shù)設(shè)定即可;易于推廣應(yīng)用,采用C#語言進行開發(fā),可直接解壓至安裝window系統(tǒng)的計算機平臺;計算效率高,自動調(diào)用ANSYS完成建模,并一鍵式得到所需的抗震驗算報告。最后,結(jié)合某地鐵車站框架結(jié)構(gòu)的反應(yīng)位移法進行示例分析,驗證軟件的可行性與合理性。
(a) 軸力圖(反應(yīng)位移法)
(b) 彎矩圖(反應(yīng)位移法)
(c) 剪力圖(反應(yīng)位移法)
(d) 結(jié)構(gòu)變形圖(反應(yīng)位移法)