「CivilFEM案例」用Python進行線性和非線性結構分析

2020-09-24 圖傑信息科技

01


案例介紹


這個案例中主要介紹CivilFEM2018高級功能——Python腳步在結構建模、加載、分析與結構後處理各個過程中的應用。


案例分析了由杆件和彈簧組成的簡單結構,杆件一端固定,另一端與一線性彈簧連接,這端可以在垂直方向上移動,並受到30磅的集中荷載P,方向如下圖,加載隨時間變化而變化,最後達到30磅。

02


結構基本參數


  • 杆件截面:實心圓柱
  • 杆件彈性模量:1e7
  • 杆件泊松比:0.3
  • 線性彈簧彈性係數:6lb/in

03


使用Python構建結構模型


使用Python建模、定義截面屬性、材質、結構元素和劃分網格。

newDocument(&34;,&34;,&34;)

ConfigUnits.System = &34;


import matplotlib.pyplot as pl

import matplotlib.animation as animation


34;1&34;2&34;Truss&34;1&34;2& Materials and sections

createGenericMat(&34;,Double(1e+07),Double(0.3),Double(0),Double(0))

createGenericSection(&34;,&34;,Double(1),Double(1e-10),Double(1e-10),Double(0))


34;Truss&34;Truss_sect&34;Truss_sect&34;Truss&34;Truss&34;Spring&34;ToGround&34;Truss&34;Fit& Mesh

mesh()

04


施加荷載、定義邊界條件和荷載工況


施加時序荷載:

1s: 5lb; 4s: 8lb; 4.8s: 12 lb; 6.6s: 30lb

定義杆件兩端約束;

創建4個荷載工況。

34;Load_1&34;Load_1&34;Load&34;Truss&34;Load_4&34;Load_4&34;Load&34;Truss&34;Load_4_8&34;Load_4_8&34;Load&34;Truss&34;Load_6_6&34;Load_6_6&34;Load&34;Truss&34;BC&34;BC&34;1&34;Truss&34;2&34;Truss& LCs

createLoadCase(&34;)

loadCase1 = LoadCasesContainer.Find(&34;)

addLoadGroupToLoadCase([loadCase1],&34;,Double(1))

addBCGroupToLoadCase([loadCase1],&34;)


createLoadCase(&34;)

loadCase1 = LoadCasesContainer.Find(&34;)

addLoadGroupToLoadCase([loadCase1],&34;,Double(1))

addBCGroupToLoadCase([loadCase1],&34;)

loadCase1.LoadCaseCalculationTime = Double(4.0)


createLoadCase(&34;)

loadCase1 = LoadCasesContainer.Find(&34;)

addLoadGroupToLoadCase([loadCase1],&34;,Double(1))

addBCGroupToLoadCase([loadCase1],&34;)

loadCase1.LoadCaseCalculationTime = Double(4.8)


createLoadCase(&34;)

loadCase1 = LoadCasesContainer.Find(&34;)

addLoadGroupToLoadCase([loadCase1],&34;,Double(1))

addBCGroupToLoadCase([loadCase1],&34;)

loadCase1.LoadCaseCalculationTime = Double(6.6)

05


線性求解分析


solve()


34;LC_1_0s.rcf&34;UTy&34;LC_4_0s.rcf&34;UTy&34;LC_4_8s.rcf&34;UTy&34;LC_6_6s.rcf&34;UTy& Add individual solution controls to the LCs for the non linear case

loadCase1 = LoadCasesContainer.Find(&34;)

loadCase1.SolutionControl.IsParticularControl = True

loadCase1.SolutionControl.InitialTimeStep = Formula(&34;)

loadCase1.SolutionControl.MinimumTimeStep = Formula(&34;)

loadCase1.SolutionControl.MaximumTimeStep = Formula(&34;)


loadCase1 = LoadCasesContainer.Find(&34;)

loadCase1.SolutionControl.IsParticularControl = True

loadCase1.SolutionControl.InitialTimeStep = Formula(&34;)

loadCase1.SolutionControl.MinimumTimeStep = Formula(&34;)

loadCase1.SolutionControl.MaximumTimeStep = Formula(&34;)


loadCase1 = LoadCasesContainer.Find(&34;)

loadCase1.SolutionControl.IsParticularControl = True

loadCase1.SolutionControl.InitialTimeStep = Formula(&34;)

loadCase1.SolutionControl.MinimumTimeStep = Formula(&34;)

loadCase1.SolutionControl.MaximumTimeStep = Formula(&34;)


loadCase1 = LoadCasesContainer.Find(&34;)

loadCase1.SolutionControl.IsParticularControl = True

loadCase1.SolutionControl.InitialTimeStep = Formula(&34;)

loadCase1.SolutionControl.MinimumTimeStep = Formula(&34;)

loadCase1.SolutionControl.MaximumTimeStep = Formula(&34;)


ConfigSolver.CreateIntermediateNonLinearResults = True

ConfigSolver.LargeDeflections = True


solve()


34;LC_1_0s_&34;.rcf&34;UTy&34;LC_4_0s_&34;.rcf&34;UTy&34;LC_4_8s_&34;.rcf&34;UTy&34;LC_6_6s_&34;.rcf&34;UTy& Plot results

fig=pl.figure(figsize=(30, 10), dpi=72)

ax1 = pl.subplot(1, 3, 1)

F_lin=[0, 5, 8, 12, 30]

ax1.plot(D_lin, F_lin, marker=&39;, color=&34;, linewidth=1.0, linestyle=&34;, label=&39;)

F_n_lin=[]

for x in range (0,11):

F_n_lin.append(5.0/10.0*x)

for x in range (1,31):

F_n_lin.append(3.0/30.0*x+5.0)

for x in range (1,9):

F_n_lin.append(4.0/8.0*x+8.0)

for x in range (1,19):

F_n_lin.append(18.0/18.0*x+12.0)

39;.&34;red&34;-&39;Non-linear&39;upper left&39;Force(lbf)&39;Abs displacement (in)&39;Linear VS Non-linear& Animation of second subplot.

ax2 = pl.subplot(1, 3, 2)

ax2.plot([0,100], [0,1], marker=&39;, color=&34;, linewidth=1.0, linestyle=&34;, label=&39;)

line, =ax2.plot([0,100], [0,1-D_n_lin[i]], marker=&39;, color=&34;, linewidth=1.0, linestyle=&34;, label=&39;)

def animate(i):

line.set_data([0,100], [0,1-D_n_lin[i]])

return line,

ax2.set_title(&39;)

ax2.set_ylim(-1.8, 1.1)

ax2.set_xlim(0.0, 101)

ax2.set_ylabel(&39;)

ax2.set_xlabel(&39;)

ax2.grid(True)

line_ani = animation.FuncAnimation(fig, animate, frames=67, interval=5, blit=True)

CivilFEM2018整個分析過程都可以使用Python腳本,對於熟悉Python的用戶,這個功能可以大幅提升工作效率。


CivilFEM 2018 powered by Marc (簡稱CivilFEM)是一款高級非線性土木工程專用有限元商業軟體,由西班牙INGECIBER公司開發,該公司同時開發ANSYS/CIVILFEM土木模塊。獨立的CivilFEM商業軟體採用了Marc非線性求解器,方便易用的建模環境,快速高效的求解過程,豐富的後處理功能,CivilFEM2018正在成為土木工程師必備的卓越軟體工具。上海圖傑信息科技公司是CivilFEM2018在中國地區的銷售和技術支持機構。

相關焦點

  • 「CivilFEM案例」玻璃幕牆連接受力分析圖集
    使用CivilFEM powered by Marc分析辦公樓玻璃幕牆與建築連接處的受力情況,校核連接處各個鋼結構組件的強度是否超限。分析結果整個鋼連接結構的Von Mises 等效應力(MPa)雲圖使用彈簧模擬焊接,計算彈簧內力根據計算的螺栓軸力與剪力,對螺栓進行校核
  • 介紹下CivilFEM這款軟體,不是ANSYS的CivilFEM土木分析模塊
    CivilFEM全稱是CivilFEM powered by Marc,是由西班牙INGECIBER公司開發的專業的土木工程商業軟體,因為採用了專業的MSC Marc非線性求解器,所以具有卓越的非線性分析功能,上圖是該軟體的Logo。
  • CivilFEM powered by Marc應用賞析-鋼結構篇(II)
    這次介紹CivilFEM分析的法國巴黎歐利機場通訊塔的案例。項目背景:設計規範: Eurocode3鋼材: E36和E24,彈性模量E=210GPa, 密度,7.8X10^3kg/m^3,泊松比0.3結構中有天線裝置除常規結構分析外,還需要進行非線性屈曲分析約束與網格劃分荷載工況定義:Dead Load 1: 主結構自重Wind Load 1 操作風荷載
  • CivilFEM的本構模型
    材料的應力-應變關係是很複雜的,具有非線性,粘彈塑性,剪脹性,各向異性等。(摘自百度百科)在CivilFEM powered by Marc中,提供了鋼、混凝土、巖石、土和用戶自定義等材質的多種本構模型,用戶根據實際的工程情況,選擇不同的本構模型,從而更好地模擬與分析工程問題。
  • ANSYS大變形典例:線性與非線性分析差別巨大,如何選擇?
    【要點:在幾何非線性影響較大時,應該進行非線性分析。大轉動問題同樣如此,其亦屬於大變形的範疇,但往往更容易忽視。】結構線性分析的假設主要是小變形假設和材料滿足虎克定律。幾何非線性通常分為大應變、大位移(或大轉動、大撓度等)和應力剛化,一般不加區分的成為「大變形」問題。二者根本區別是結構平衡方程在何位置建立?
  • 用 Python 進行多元線性回歸分析
    但現實問題中,我們往往會碰到多個變量間的線性關係的問題,這時就要用到多元線性回歸,多元線性回歸是一元回歸的一種推廣,其在實際應用中非常廣泛,本文就用python代碼來展示一下如何用多元線性回歸來解決實際問題。
  • Java數據結構的線性結構和非線性結構,這篇足夠了
    如果不想永遠是代碼工人,那讓我們來一起研究數據結構與算法吧,這篇主要講數據結構,算法後續更新。線性結構與非線性結構首先理解概念:1,線性結構是我們作為一個常見的數據結構,它有什麼特點呢?主要是數據元素之間存在一對一的線性關係。
  • 線性還是非線性,用 GRaMM 便知一二
    maximum information coefficient (MIC) 可以捕獲線性和非線性相關性。partial least squares (PLS) 和 canonical correlation analysis (CCA) 被應用於微生物組和代謝組的相關性分析。代謝組和微生物組數由於獲取方式的不同,數據特徵不同。代謝組數據是連續譜數據,微生物組是基於序列的「計數」方法。
  • 詳解:線性/非線性/線性化
    這個過程的操作既可以是線性的也可以是非線性的。一個線性系統,它的輸入和輸出信號是一個成比例的線性關係。例如,雙倍的輸入會有數倍的輸出。把輸入和輸出信號畫圖,在一個函數中,線性系統的結果是一條直線。通過一個函數描述了輸入和輸出信號之間的關係也就相應的給出了系統的線性度。
  • 運用sklearn進行線性判別分析(LDA)代碼實現
    基於sklearn的線性判別分析(LDA)代碼實現一、前言及回顧本文記錄使用sklearn庫實現有監督的數據降維技術——線性判別分析(LDA)。在上一篇LDA線性判別分析原理及python應用(葡萄酒案例分析),我們通過詳細的步驟理解LDA內部邏輯實現原理,能夠更好地掌握線性判別分析的內部機制。
  • 非線性電路的分析方法_非線性電路分析舉例
    打開APP 非線性電路的分析方法_非線性電路分析舉例 發表於 2018-03-13 15:30:41 電子電路中的元器件,很多是非線性元件
  • 新的量子算法破解了非線性方程,計算機能否代替人類成為先知?
    在 11 月發表的獨立研究中,Childs 領導的團隊和 MIT 的團隊都描述了一個強大的工具,可以使量子計算機更好地對非線性動力學進行建模。與傳統計算機相比,量子計算機能夠利用量子現象更有效地執行某些特定的計算。正是由於具有這些功能,量子計算機得以使複雜的線性微分方程式被快速地推翻。長期以來,研究人員一直希望他們可以通過巧妙的量子算法來解決非線性問題。
  • CivilFEM定義薄殼與實體結構網格細分的全局控制
    對於薄殼和實體結構,CivilFEM在劃分有限元網格時,全局控制定義網格細分的基本方法。主要設置的參數如下:邊長Edge Length: 設置最小網格邊長;網格數Number division:設置在不同方向上的網格細分數;自動設置Automatic: CivilFEM自動設置網格細分邊長Parasolid: 使用Parasolid實體對結構進行網格細分,並考慮曲率檢查。
  • 一元線性回歸分析python - CSDN
    python多重線性回歸分析多重線性回歸分析定義多重線性回歸模型:Mulitiple Linear Regression多元線性回歸模型:MultivariateLinear Regression數據準備#多重線性回歸#數據準備import pandas as pddf=pd.read_csv('e:/python/out/corr.csv',encoding='utf8')df根據預測目標,確定自變量和因變量#多重線性回歸
  • Python視頻教程網課編程零基礎入門數據分析網絡爬蟲全套Python...
    20爬蟲scrapy框架及案例 21數據分析 22機器學習 23深度學習 24數據結構和算法 25python網絡爬蟲 26機器學習入門篇 27機器學習入門篇2 28機器學習提升篇 29數據挖掘篇 30深度學習必備原理與實戰 31深度學習必備原理與實戰
  • 新的量子算法破解了非線性方程,計算機能否代替人類成為「先知」?
    在 11 月發表的獨立研究中,Childs 領導的團隊和 MIT 的團隊都描述了一個強大的工具,可以使量子計算機更好地對非線性動力學進行建模。與傳統計算機相比,量子計算機能夠利用量子現象更有效地執行某些特定的計算。正是由於具有這些功能,量子計算機得以使複雜的線性微分方程式被快速地推翻。長期以來,研究人員一直希望他們可以通過巧妙的量子算法來解決非線性問題。
  • 圖解:數據結構中的6種「樹」,你心中有數嗎?
    樹形結構相比數組、鍊表、堆棧這些數據結構來說,稍微複雜一點點,但樹形結構可以用於解決很多實際問題,因為現實世界事物之間的關係往往不是線性關聯的,而「樹」恰好適合描述這種非線性關係。在數據結構中樹是非線性數據結構,那我們先來了解下,什麼是線性與非線性數據結構?
  • 「乾貨」CivilFEM中梁的網格劃分功能
    在CivilFEM powered by Marc中,對梁構件劃分有限元網格,是沿杆件軸線方向選擇不同的長度定義方法進行,主要有均分和按比例劃分:Uniform: 均分桁架梁的網格劃分功能和上述普通梁相同
  • 圖解:計算機數據結構中的 6 種「樹」,你心中有數了嗎?
    樹形結構相比數組、鍊表、堆棧這些數據結構來說,稍微複雜一點點,但樹形結構可以用於解決很多實際問題,因為現實世界事物之間的關係往往不是線性關聯的,而「樹」恰好適合描述這種非線性關係。在數據結構中樹是非線性數據結構,那我們先來了解下,什麼是線性與非線性數據結構?
  • 圖解:計算機數據結構中的 6 種「樹」,你心中有數了嗎?
    樹形結構相比數組、鍊表、堆棧這些數據結構來說,稍微複雜一點點,但樹形結構可以用於解決很多實際問題,因為現實世界事物之間的關係往往不是線性關聯的,而「樹」恰好適合描述這種非線性關係。樹是非線性的數據結構,用來模擬具有樹狀結構性質的數據集合,它是由n個有限節點組成的具有層次關係的集合。在數據結構中樹是非線性數據結構,那我們先來了解下,什麼是線性與非線性數據結構?線性結構線性結構是一個有序數據元素的集合。