问题描述
在单向复材中,纤维的力学性能往往是横观各向同性的,于是需要规定材料方向。
通常需要新建局部坐标系用于材料方向的定义,而在实际建立坐标系中,坐标系会储存在对应的Part下:
mdb.models[‘Model-1’].parts[‘Part-1’].datums[],但是并不是从datums[0]开始,其中的数字需要根据具体情况确定,因此调用该坐标系存在读取问题
模型构建
模型建立
- 建立方形的基体与圆柱纤维两个Part
- 定义材料属性(基体使用各向同性面板,纤维使用工程常数面板),创建截面并赋予到对应Part
- 创建实例,合并选项中选择保持
此时创建的实例应该是包含材料属性的,如果在创建Part后直接构建实例,又对单独的Part赋予材料截面的话,实例依然不会包含材料属性。
当然,如果按照创建Part后直接构建实例的操作,赋予截面是对实例所生成的Part赋予即可。
- 局部坐标系建立与材料方向定义
- mesh
- EasyPBC
局部坐标系建立与材料方向定义
重点部分单独拿出来说一下。
注意此部分应对实例生成的Part操作,而不是一开始的纤维Part
如果是先赋材料再建实例,材料属性可以继承,但是材料方向好像不能继承
因此建议材料方向应在实例生成的Part中定义
# p为建立实例时生成的对应Part
p = mdb.models['Model-1'].parts['UDcomp']
# 新建坐标系point1为x轴上的点,point2为xy平面的点
p.DatumCsysByThreePoints(name='Datum csys-1', coordSysType=CARTESIAN, origin=(
0.0, 0.0, 0.0), point1=(0.0, 0.0, 1.0), point2=(0.0, 1.0, 0.0))
c = p.cells
# xy存储了纤维的中心坐标与半径,因此使用findAt获取其位置
for cir in xy:
cells = c.findAt(((cir[0], cir[1], 0.0),))
region = regionToolset.Region(cells=cells)
# 经过多次尝试,发现在UDcomp Part中建立的坐标系序号总是纤维的个数+3
orientation = mdb.models['Model-1'].parts['UDcomp'].datums[len(xy)+3]
mdb.models['Model-1'].parts['UDcomp'].MaterialOrientation(region=region,
orientationType=SYSTEM, axis=AXIS_1,
localCsys=orientation, fieldName='',
additionalRotationType=ROTATION_NONE, angle=0.0,
additionalRotationField='', stackDirection=STACK_3)
根据下图可以看到mdb.models[‘Model-1’].parts[‘UDcomp’].datums[]中只有一个元素,而在36根纤维的情况下其为39。
在手动操作实验时发现,如果多次建立/删除模型,该数字也会变动。由于脚本不会反复删除重建模型,因此比较稳定。
如果有个函数可以直接获取mdb.models[‘Model-1’].parts[‘UDcomp’].datums[]储存在哪个位置就更为方便了。希望有行业大佬指明。
横观各向同性的材料属性
有五个独立的弹性常数
文献里给了E1E2G12G23v12,1为纤维方向
E2=E3,G12=G13,v12=v13是比较好理解的
v23=E2/(2*G23)-1