2017-08-16 338 views
1

我正在使用Abaqus/Python進行有限元分析。我遇到了以下問題:我有一個3D域,它由一個包含邊緣以及圓弧段的2D域組成,並在第三維中擴展。現在我想用這樣的約束來對該域進行網格劃分,即沿厚度方向只有一個元素必須被使用。繼Python代碼擠出四分之一圓的小例子:Abaqus/Python固定播種約束條件

from abaqus import * 
from abaqusConstants import * 
import __main__ 

# Sketch quarter circle 
s = mdb.models['Model-1'].ConstrainedSketch(name='__profile__', 
    sheetSize=50.0) 
g, v, d, c = s.geometry, s.vertices, s.dimensions, s.constraints 
s.setPrimaryObject(option=STANDALONE) 

s.ArcByCenterEnds(center=(0.0, 0.0), point1=(0.0, 5.0), point2=(5.0, 0.0), 
    direction=CLOCKWISE) 
s.Line(point1=(0.0, 5.0), point2=(0.0, 0.0)) 
s.Line(point1=(0.0, 0.0), point2=(5.0, 0.0)) 


# Create part from sketch and extrusion in the depth 
p = mdb.models['Model-1'].Part(name='Part-1', dimensionality=THREE_D, 
    type=DEFORMABLE_BODY) 
p.BaseSolidExtrude(sketch=s, depth=0.1) 
s.unsetPrimaryObject() 
session.viewports['Viewport: 1'].setValues(displayedObject=p) 
del mdb.models['Model-1'].sketches['__profile__'] 

# Mesh 
# Global seeds 
p.seedPart(size=0.35, deviationFactor=0.1, minSizeFactor=0.1) 
# 'fixed' seeding constraint: only one element in thickness direction 
e = p.edges 
pickedEdges = e.findAt(((5.0, 0.0, 0.025),), ((0.0, 5.0, 0.025),), 
    ((0.0, 0.0, 0.025),)) 
p.seedEdgeByNumber(edges=pickedEdges, number=1, constraint=FIXED) 

# Generate mesh 
p.generateMesh() 

在最後一行,當我要生成網格,該域名不可以被齧合,因爲「固定」播種約束無法兌現。如果我使用

p.generateMesh(seedConstraintOverride=ON) 

來生成網格,結構域可連接的,但只在厚度方向上的兩個元件。有沒有辦法在厚度方向只用一個元素對域進行網格劃分?如果不是,爲什麼?

回答

0

有幾種方法可以做到這一點。一種選擇是簡單地將網格技術更改爲掃描。例如,假設您的部分由一個單一的幾何細胞(如在你的示例代碼),您可以使用以下命令:

part_cells = p.cells() 
p.setMeshControls(regions=(part_cells[0],), technique=SWEEP) 
p.generateMesh() 

你必須把region關鍵字參數作爲地區或一組對象的序列。請注意,如果掃描方向的長度小於全局種子大小,則不需要指定任何邊緣種子約束,並且只會生成一個元素。

+0

謝謝你的回答! – SoB