abaqus批量建立弹簧脚本

#!/usr/bin/python
# -*- coding: utf-8 -*-

import time
from math import *
from abaqus import *
from abaqusConstants import *
from caeModules import *
from driverUtils import executeOnCaeStartup
executeOnCaeStartup()

viewportName = session.currentViewportName
modelNameDE=session.viewports[viewportName].displayedObject.modelName

field = (	('model名称:',modelNameDE),
			('set1名:','railSpring'),
			('set2名:','banSpring'),
			('两点间的距离:','7'),
			('弹簧x方向刚度:','179.39'),('弹簧x方向阻尼:','0.0393'),
			('弹簧y方向刚度:','831.2244'),('弹簧y方向阻尼:','0.2020'),
			('弹簧z方向刚度:','179.39'),('弹簧z方向阻尼:','0.0393')
        )
modelname,\
SetName1,\
SetName2,\
LENGTH,\
SpringstiffnessX,DashpotCoefficientX,\
SpringstiffnessY,DashpotCoefficientY,\
SpringstiffnessZ,DashpotCoefficientZ = \
getInputs(field,dialogTitle='创建点对点弹簧')

LENGTH = float(LENGTH)
SpringstiffnessX = float(SpringstiffnessX)
DashpotCoefficientX = float(DashpotCoefficientX)
SpringstiffnessY = float(SpringstiffnessY)
DashpotCoefficientY = float(DashpotCoefficientY)
SpringstiffnessZ = float(SpringstiffnessZ)
DashpotCoefficientZ = float(DashpotCoefficientZ)

a = mdb.models[modelname].rootAssembly

def partNodes(SetName):
	n = a.sets[SetName].nodes
	list1 = []
	for i in range(int(len(n))):
		list1.append((n[i].coordinates[0],n[i].coordinates[1],n[i].coordinates[2]))
	return list1

def coonectNodes(list1,list2):
	coonectNodes = []
	len1 = int(len(list1))
	len2 = int(len(list2))
	for i in range(len1):
		for j in range(len2):
			if pow(((list1[i][0]-list2[j][0])**2+(list1[i][1]-list2[j][1])**2+(list1[i][2]-list2[j][2])**2),0.5)<float(LENGTH):
				coonectNodes.append((i,j))
				break
			else:
				continue
	return coonectNodes

def switchNodes(coonectNodes,SetName1,SetName2):
	regionpair = []
	for i in range(int(len(coonectNodes))):
		nodes1 = a.sets[SetName1].nodes
		nodes2 = a.sets[SetName2].nodes
		node1 = nodes1[coonectNodes[i][0]:coonectNodes[i][0]+1]
		node2 = nodes2[coonectNodes[i][1]:coonectNodes[i][1]+1]
		regionpair0 = regionToolset.Region(nodes=node1)
		regionpair1 = regionToolset.Region(nodes=node2)
		regionpair.append((regionpair0,regionpair1))
	return regionpair

def creatSpring(regionpair, SetName1,SetName2):
	mdb.models[modelname].rootAssembly.engineeringFeatures.TwoPointSpringDashpot(
		name = SetName1+'-to-'+SetName2+'-x', regionPairs = regionpair, axis=FIXED_DOF, dof1=1, 
        dof2=1, orientation=None, springBehavior=ON, springStiffness=SpringstiffnessX,
        dashpotBehavior=ON, dashpotCoefficient=DashpotCoefficientX)
	mdb.models[modelname].rootAssembly.engineeringFeatures.TwoPointSpringDashpot(
		name = SetName1+'-to-'+SetName2+'-y', regionPairs = regionpair, axis=FIXED_DOF, dof1=2, 
        dof2=2, orientation=None, springBehavior=ON, springStiffness=SpringstiffnessY,
        dashpotBehavior=ON, dashpotCoefficient=DashpotCoefficientY)
	mdb.models[modelname].rootAssembly.engineeringFeatures.TwoPointSpringDashpot(
		name = SetName1+'-to-'+SetName2+'-z', regionPairs = regionpair, axis=FIXED_DOF, dof1=3, 
        dof2=3, orientation=None, springBehavior=ON, springStiffness=SpringstiffnessZ,
        dashpotBehavior=ON, dashpotCoefficient=DashpotCoefficientZ)

list1 = partNodes(SetName1)
list2 = partNodes(SetName2)
cNodes = coonectNodes(list1, list2)
regionpair = switchNodes(cNodes,SetName1,SetName2)
creatSpring(regionpair,SetName1,SetName2)

print('done')

abaqus用装配体节点集批量添加弹簧脚本

如果有以下错误

... #匹配节点
... def coonectNodes(list1,list2):
def coonectNodes(list1,list2):
^
SyntaxError: invalid syntax

中间可能有没有显示出来的符号或者格式、缩进之类的有问题

把这两三行删掉重写手打一遍,并把附近的注释以及空行删掉试一试能不能行,重新改动之后注意正确缩进

 注释:

#!/usr/bin/python
# -*- coding: utf-8 -*-

import time
from math import *
from abaqus import *
from abaqusConstants import *
from caeModules import *
from driverUtils import executeOnCaeStartup
executeOnCaeStartup()

#自动找到当前model名称
viewportName = session.currentViewportName
modelNameDE=session.viewports[viewportName].displayedObject.modelName

#输入函数
#前半为提示,后半为默认参数
field = (	('model名称:',modelNameDE),
			('set1名:',''),
			('set2名:',''),
			('两点间的距离:','5'),
			('弹簧x方向刚度:','179.39'),('弹簧x方向阻尼:','0.0393'),
			('弹簧y方向刚度:','831.2244'),('弹簧y方向阻尼:','0.2020'),
			('弹簧z方向刚度:','179.39'),('弹簧z方向阻尼:','0.0393')
        )
#getInputs函数接受的参数与上面一一对应
modelname,\
SetName1,\
SetName2,\
LENGTH,\
SpringstiffnessX,DashpotCoefficientX,\
SpringstiffnessY,DashpotCoefficientY,\
SpringstiffnessZ,DashpotCoefficientZ = \
getInputs(field,dialogTitle='创建点对点弹簧')

#转换数据类型
LENGTH = float(LENGTH)
SpringstiffnessX = float(SpringstiffnessX)
DashpotCoefficientX = float(DashpotCoefficientX)
SpringstiffnessY = float(SpringstiffnessY)
DashpotCoefficientY = float(DashpotCoefficientY)
SpringstiffnessZ = float(SpringstiffnessZ)
DashpotCoefficientZ = float(DashpotCoefficientZ)

#找到装配体
a = mdb.models[modelname].rootAssembly

#提取节点,加快节点匹配速度
def partNodes(SetName):
	n = a.sets[SetName].nodes
	list1 = []
	#提取set所有点的坐标0—X,1—Y,2—Z,放入list1
	for i in range(int(len(n))):
		list1.append((n[i].coordinates[0],n[i].coordinates[1],n[i].coordinates[2]))
	return list1

#匹配节点
def coonectNodes(list1,list2):
	#利用循环寻找符合条件的节点对,将坐标的序号成对存入coonectNodes
	coonectNodes = []
	len1 = int(len(list1))
	len2 = int(len(list2))
	for i in range(len1):
		#较小的集位于循环内部
		for j in range(len2):
			if pow(((list1[i][0]-list2[j][0])**2+(list1[i][1]-list2[j][1])**2+(list1[i][2]-list2[j][2])**2),0.5)<float(LENGTH):
				coonectNodes.append((i,j))
				break
			else:
				continue
	return coonectNodes

#转化节点
def switchNodes(coonectNodes,SetName1,SetName2):
	regionpair = []
	for i in range(int(len(coonectNodes))):
		nodes1 = a.sets[SetName1].nodes
		nodes2 = a.sets[SetName2].nodes
		#通过坐标序号在集当中找到坐标并放入node,由于转换节点类型参数需要序列,故截取列表,列表截取后任为序列类型
		node1 = nodes1[coonectNodes[i][0]:coonectNodes[i][0]+1]
		node2 = nodes2[coonectNodes[i][1]:coonectNodes[i][1]+1]
		#转换网格节点类型转换为建立弹簧所需要的point节点类型,nodes=的参数为序列sequence类型
		regionpair0 = regionToolset.Region(nodes=node1)
		regionpair1 = regionToolset.Region(nodes=node2)
		#将转化后的坐标成对放入regionpair
		regionpair.append((regionpair0,regionpair1))
	return regionpair

#建立弹簧,regionpair为坐标对,name1,name2为弹簧命名参数
def creatSpring(regionpair, SetName1,SetName2):
	#建立TwoPointSpringDashpot弹簧
	#x方向弹簧
	mdb.models[modelname].rootAssembly.engineeringFeatures.TwoPointSpringDashpot(
		name = SetName1+'-to-'+SetName2+'-x', regionPairs = regionpair, axis=FIXED_DOF, dof1=1, 
        dof2=1, orientation=None, springBehavior=ON, springStiffness=SpringstiffnessX,
        dashpotBehavior=ON, dashpotCoefficient=DashpotCoefficientX)
	#y方向弹簧
	mdb.models[modelname].rootAssembly.engineeringFeatures.TwoPointSpringDashpot(
		name = SetName1+'-to-'+SetName2+'-y', regionPairs = regionpair, axis=FIXED_DOF, dof1=2, 
        dof2=2, orientation=None, springBehavior=ON, springStiffness=SpringstiffnessY,
        dashpotBehavior=ON, dashpotCoefficient=DashpotCoefficientY)
	#z方向弹簧
	mdb.models[modelname].rootAssembly.engineeringFeatures.TwoPointSpringDashpot(
		name = SetName1+'-to-'+SetName2+'-z', regionPairs = regionpair, axis=FIXED_DOF, dof1=3, 
        dof2=3, orientation=None, springBehavior=ON, springStiffness=SpringstiffnessZ,
        dashpotBehavior=ON, dashpotCoefficient=DashpotCoefficientZ)

#主函数
#提取节点
list1 = partNodes(SetName1)
list2 = partNodes(SetName2)
#匹配节点
cNodes = coonectNodes(list1, list2)
#转化节点
regionpair = switchNodes(cNodes,SetName1,SetName2)
#建立弹簧
creatSpring(regionpair,SetName1,SetName2)

print('done')

Abaqus混合纤生成脚本是一种用于生成混合纤维材料的脚本工具。在Abaqus有限元软件中,混合纤维材料是一种由不同类型的纤维组成的复合材料,其力学性能可以根据纤维比例、纤维的方向性以及不同类型纤维的力学性质来调控。 混合纤生成脚本可以通过以下步骤来实现: 1. 定义纤维材料的力学性质:首先,我们需要定义每一种纤维的材料属性,包括弹性模量、泊松比以及屈服强度等。这些属性可以通过实验数据或者已有的材料模型来确定。 2. 定义纤维的方向性:在定义纤维时,需要指定每根纤维的方向。通常情况下,纤维的方向可以通过坐标轴或者基准面来描述。通过调整纤维的方向,我们可以模拟不同类型的纤维材料。 3. 确定纤维比例:纤维比例指的是每种纤维在混合纤维材料中的占比。可以通过设定纤维体积分数或质量分数来调节不同种类纤维的含量。 4. 生成混合纤维材料模型:在定义完纤维的力学性质、方向性和比例后,可以使用脚本来生成混合纤维材料模型。脚本可以自动创建节点、单元和材料信息,并将其组装成一个完整的混合纤维材料模型。 使用Abaqus混合纤生成脚本,我们可以快速、便捷地生成复杂的混合纤维材料模型,实现对其力学性能的仿真和分析。这对于研究混合纤维材料的力学行为以及优化材料设计具有重要意义。
评论 6
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值