方法步骤
本文通过对每个单元赋不同的弹性模量,以达到非均质材料生成的目的。在abaqus平台创建模型,然后对模型创建集合Set-all,然后运行如下python脚本文件。如图1,其中弹性模量可以用不同的分布函数生成,如正态分布、韦伯分布等。图2的python脚本文件提供了详细注释,以供查阅,
图1 网格模型和对全局区域赋非均质属性
图2 python脚本
此外,视需求可以划分多个Set,对不同的Set分别赋材料参数,如图3。注意如果分别对多个Set分别赋材料参数,建议修改setname、matname、secname,如将代码中的setname中的‘Set-’修改为'Set1-',防止多次生成时材料信息不知道属于哪一个集合。
图3 对部分区域赋非均质属性
(3)方法拓展
#!/usr/bin/python
# -*- coding: UTF-8 -*-
# Do not delete the following import lines
import numpy as np
import math
from abaqus import *
from abaqusConstants import *
import __main__
mymodel = mdb.models['Model-1']
mypart = mdb.models['Model-1'].parts['Part-1']
#
session.journalOptions.setValues(replayGeometry=COORDINATE,recoverGeometry= COORDINATE)
myset_all = mypart.sets['Set-all']
np.random.seed(1)
for ele_index in myset_all.elements:
ele = ele_index.label
Matname = 'Mat-'+ str(ele)
myMaterial = mymodel.Material(name=Matname)
EE = (2000*math.pow(-math.log(np.random.rand()),1.0/3)+15000)*1e6
vv = 0.25
elasticProperties = (EE, vv)
myMaterial.Elastic(table=(elasticProperties, ))
myMaterial.Permeability(specificWeight = 9800.0, inertialDragCoefficient=0.142887,table=((1e-07,0.2), ))
sectionname = 'Sec-'+ str(ele)
mySection = mymodel.HomogeneousSolidSection(name=sectionname, material=Matname, thickness=None)
setname = 'Set-' + str(ele)
mypart.Set(elements=mypart.elements[ele-1:ele], name=setname)
region = mypart.sets[setname]
mypart.SectionAssignment(region=region, sectionName=sectionname)
免责声明:本文系网络转载或改编,未找到原创作者,版权归原作者所有。如涉及版权,请联系删