DeepSeek助力CAE有限元建模全過程分享

本文講述采用DeepSeek來做OpenSees柱子擬靜力試驗的有限元模擬,分為建立模型和模型檢查及調整模型收斂性兩部分內容。

1、建立OpenSees柱子有限元分析模型

給DeepSeek輸入一個建立OpenSees柱子模型的指令,應盡可能的詳細描述建模的要求,DeepSeek的思考過程及建模結果如下:

DeepSeek助力CAE有限元建模全過程分享的圖1

DeepSeek給出的OpenSees柱子建模tcl代碼:

# 清除之前模型wipe;
# 創建模型構造器,二維模型,每個節點3個自由度(x, y, rotation)model BasicBuilder -ndm 2 -ndf 3;
# 定義節點node 1 0.0 0.0;       # 柱底節點,坐標(0,0)node 2 0.0 2000.0;    # 柱頂節點,坐標(0,2000)
# 約束柱底節點所有自由度fix 1 1 1 1;
# 定義材料# 混凝土材料(Concrete02模型,非約束混凝土)uniaxialMaterial Concrete02 1 -30.0 -0.002 -0.006 0.1 30000.0 0.1;# 參數:matTag, fpc(MPa), epsc0, fpcu, epsU, lambda, ft, Ets
# 鋼筋材料(Steel02模型,HRB400)uniaxialMaterial Steel02 2 400.0 2.0e5 0.01 18.0 0.925 0.15;# 參數:matTag, fy(MPa), E(MPa), b, R0, cR1, cR2
# 定義纖維截面section Fiber 1 {    # 混凝土部分(400x400mm,劃分為40x40網格)    patch rect 1 40 40 -200 -200 200 200;    # 參數:matTag, ny, nz, yI, zI, yJ, zJ
    # 縱向鋼筋(8根直徑18mm,分布在四角)    layer straight 2 2 254.5 161 161 161 161;   # 角點1,兩根鋼筋    layer straight 2 2 254.5 161 -161 161 -161; # 角點2    layer straight 2 2 254.5 -161 161 -161 161; # 角點3    layer straight 2 2 254.5 -161 -161 -161 -161; # 角點4}
# 定義幾何變換(線性)geomTransf Linear 1;
# 創建梁柱單元(5個積分點)element dispBeamColumn 1 1 2 5 1 1;# 參數:eleTag, iNode, jNode, numIntgrPts, secTag, transfTag
# 記錄柱頂位移和反力recorder Node -file disp.out -time -node 2 -dof 1 disp;     # 位移記錄recorder Node -file reaction.out -time -node 2 -dof 1 reaction; # 反力記錄
# 施加軸力(100kN)timeSeries Linear 1;       # 時間序列pattern Plain 1 1 {        # 荷載模式    load 2 0.0 -1e5 0.0;   # 節點2施加豎向力-1e5N}
# 分析設置(靜力分析)system BandGeneral;        # 求解器constraints Plain;         # 約束處理numberer RCM;             # 自由度編號test EnergyIncr 1.0e-6 10;  # 收斂測試algorithm Newton;         # 牛頓算法integrator LoadControl 0.1; # 荷載控制步長0.1analysis Static;          # 靜力分析
# 執行分析(分10步施加軸力)analyze 10;
# 保持荷載恒定loadConst -time 0.0;
# 位移循環加載參數初始化set peakLoad 0.0;         # 峰值荷載set cycle 0;              # 循環計數set maxCycle 20;          # 最大循環次數set ok 1;                 # 分析狀態標志
# 開始位移控制循環加載while {$cycle < $maxCycle && $ok == 1} {    incr cycle;    set dispAmp [expr $cycle * 10.0]; # 當前幅值
    # 正向加載    set currentDisp [nodeDisp 2 1];    set deltaDisp [expr $dispAmp - $currentDisp];    if {abs($deltaDisp) < 1e-6} { continue; }
    wipeAnalysis;    constraints Plain;    numberer RCM;    system BandGeneral;    test EnergyIncr 1.0e-6 10;    algorithm Newton;    integrator DisplacementControl 2 1 $deltaDisp;    analysis Static;
    set ok [analyze 1];    if {$ok != 0} { break; }
    # 更新峰值荷載    set reaction [nodeReaction 2 1];    if {abs($reaction) > $peakLoad} { set peakLoad [expr abs($reaction)]; }
    # 檢查終止條件    if {$peakLoad > 0 && [expr abs($reaction)] < 0.85*$peakLoad} {        set ok 0;        break;    }
    # 反向加載    set currentDisp [nodeDisp 2 1];    set deltaDisp [expr -$dispAmp - $currentDisp];    if {abs($deltaDisp) < 1e-6} { continue; }
    wipeAnalysis;    constraints Plain;    numberer RCM;    system BandGeneral;    test EnergyIncr 1.0e-6 10;    algorithm Newton;    integrator DisplacementControl 2 1 $deltaDisp;    analysis Static;
    set ok [analyze 1];    if {$ok != 0} { break; }
    set reaction [nodeReaction 2 1];    if {abs($reaction) > $peakLoad} { set peakLoad [expr abs($reaction)]; }
    if {$peakLoad > 0 && [expr abs($reaction)] < 0.85*$peakLoad} {        set ok 0;        break;    }}
# 輸出結束信息puts "分析完成";

總結:

DeepSeek基本可以較好的理解指令,并給出了OpenSees建立柱子擬靜力模擬的代碼,代碼雖然有些問題,不過可以在此基礎上優化,可大大提高有限元模擬的學習與使用效率。

2、模型檢查與收斂性調整

再次使用,讓DeepSeek檢查自己生成的OpenSees的柱子tcl代碼問題并調整收斂性,如下:

DeepSeek助力CAE有限元建模全過程分享的圖2

總結:

1,本人未指定混凝土等級,DeepSeek考慮到了這一點。它也考慮了混凝土截面是否設置約束與非約束區域。

2,tcl代碼存在的問題:

a,非線性單元的選擇上選了dispBeamColumn,但未細分,這會導致結果承載力偏高。

b,uniaxialMaterial Concrete02中遺漏了一個極限強度參數。

c,截面定義中,鋼筋坐標有問題。

3,總的來說,DeepSeek基本可以較好的理解指令,并給出了OpenSees軟件做鋼筋混凝土柱子的擬靜力試驗數值模擬的tcl建模代碼。tcl代碼有詳細注釋,利于初學者快速學習入門。代碼雖然有些問題,不過可以在此基礎上讓DeepSeek再次優化,大大提高了有限元模擬的學習及使用效率。

4,DeepSeek可以檢查模型代碼問題,并調整收斂性,可大大提高科研效率。

公眾號:結構工程師

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

TOP

2
1
4