對於建立過大型的ABAQUS分析模型的同學們,肯定會面對繁瑣的重複性建模過程。比如對上百個點施加集中力,比如建立幾百個耦合約束。這些重複性操作,如果使用cae操作的話,不僅費時,而且極其容易出錯。

利用Python程序來處理這些問題吧,把繁瑣的工作留給程序吧,我們留下的只有創造力!!!

如下圖所示的一塊板,我想要在圖示的節點處加上水平向和垂向的集中力。每個集中力是時間的函數,所以利用Amplitude中的Tabular來導入荷載時程。

你準備怎麼做呢?是直接在cae裡面來建立嗎,幅值通過複製粘貼來建立??

對於這個只有9個點的情況,當然可以這樣,但是假如是有九百個呢?

所以我們需要使用Python。

下面直接給出相關Python程序。

  1. #一般在ABAQUS中使用Python必須加上這三行
  2. from abaqus import *
  3. from abaqusConstants import *
  4. from caeModules import *
  5. session.journalOptions.setValues(replayGeometry=COORDINATE,recoverGeometry= COORDINATE)
  6. blist = []
  7. myAssembly = mdb.models[Model-1].rootAssembly
  8. #將力的時程存在txt文件裏。存儲格式是第一列為時間,其餘每列是荷載時程。每列之間逗號分隔
  9. with open(G:/zhanfang/Faster_focce.txt, r) as bf:
  10. bRVlist = [b.strip().split(,) for b in bf]
  11. with open(G:/zhanfang/Faster_focce.txt, r) as bf:
  12. bRHlist = [b.strip().split(,) for b in bf]
  13. #建立要加集中力的節點集合。因為節點排列沒有順利,所以按順序依次建立。在我的模型裏節點號為2,1,15,24,21。。。即為[x:x+1]裡面的後一個值。
  14. n1 = myAssembly.instances[GD-slab-1].nodes
  15. nodes1=n1[1:2]+n1[0:1]+n1[14:15]+n1[23:24]+n1[20:21]+n1[31:32]+n1[28:29]+n1[39:40]+n1[36:37]
  16. jiedianshu=9
  17. for i in range(1,jiedianshu+1):
  18. nodesi = nodes1[i-1:i]
  19. F1nodelist = .join([line7load,str(i)])
  20. myAssembly.Set(nodes=nodesi, name=F1nodelist)
  21. nodes2i = nodes2[i-1:i]
  22. F2nodelist = .join([line8load,str(i)])
  23. myAssembly.Set(nodes=nodes2i, name=F2nodelist)
  24. LoadnamelistV = .join([Load8V-,str(i)])
  25. LoadnamelistH = .join([Load8H-,str(i)])
  26. #下面這個程序塊是建立垂向力的幅值
  27. train250V = ()
  28. strlist = [AmpRV-,str(i)]
  29. cstrlistV = .join(strlist)
  30. #這個for循環是將荷載數據轉換成ABAQUS建立幅值的形式
  31. for bl in bRVlist:
  32. train250V = train250V+((float(bl[0]),float(bl[i])),)
  33. mdb.models[Model-1].TabularAmplitude(name=cstrlistV, timeSpan=STEP, smooth=SOLVER_DEFAULT, data=train250V)
  34. #下面這個程序塊是建立橫向力的幅值
  35. train250H = ()
  36. strlist = [AmpRH-,str(i)]
  37. cstrlistH = .join(strlist)
  38. for bl in bRHlist:
  39. train250H = train250H+((float(bl[0]),float(bl[i])),)
  40. mdb.models[Model-1].TabularAmplitude(name=cstrlistH, timeSpan=STEP,smooth=SOLVER_DEFAULT, data=train250H)
  41. #建立集中力
  42. region1 = myAssembly.sets[F2nodelist]
  43. mdb.models[Model-1].ConcentratedForce(name=LoadnamelistV, createStepName=Step-2,
  44. region=region1, cf3=1.0, amplitude=cstrlistV, distributionType=UNIFORM,
  45. field=, localCsys=None)
  46. region2 = myAssembly.sets[F2nodelist]
  47. mdb.models[Model-1].ConcentratedForce(name=LoadnamelistH, createStepName=Step-2,
  48. region=region1, cf1=1.0, amplitude=cstrlistH, distributionType=UNIFORM,
  49. field=, localCsys=None)

添加荷載後的板

tips:

1.對於完成某個操作的程序命令具體是怎樣的,可以從打開每個模型就會自動生成的abaqus.py文件查看。這個文件記錄了每步cae操作對應的命令流。

2.由於Python自身的強制縮進的機制,上面給出的程序在縮進方面需要修改。建立熟悉基本的python語言規則,在來學習將Python和abaqus結合使用。


因為上一篇的關於abaqus的專欄文章多了好多關注呢,謝謝各位的關注啊。本小碩會持續把學習過程中的點滴收穫和大家分享哦。

推薦閱讀:

相關文章