基于ABAQUS和EXCEL的泡棉静态力学性能分析
- 格式:doc
- 大小:191.50 KB
- 文档页数:4
abaqus cae解析实例Abaqus CAE(Computer-Aided Engineering)是一个强大的有限元分析(FEA)软件,用于模拟复杂结构的力学行为。
以下是一个简单的Abaqus CAE分析实例,以演示如何使用该软件进行有限元分析。
假设我们要分析一个简单的悬臂梁在受到集中载荷作用下的弯曲行为。
1. 启动Abaqus CAE:打开Abaqus CAE软件,创建一个新的模型。
2. 创建几何体:在几何模块中,创建一个悬臂梁的几何体。
可以使用线、面、体等基本元素来构建。
3. 划分网格:在网格模块中,将悬臂梁划分为有限个小的元素,这些元素被称为“网格”或“有限元”。
可以选择不同的元素类型和大小来模拟悬臂梁的不同部分。
4. 应用材料属性:在材料模块中,为悬臂梁指定材料属性,如弹性模量、泊松比和密度等。
5. 定义载荷和边界条件:在载荷和边界条件模块中,定义悬臂梁受到的集中载荷以及支座的边界条件。
在这个例子中,可以在悬臂梁的末端施加一个集中力。
6. 选择分析类型:在分析类型模块中,选择静态分析类型。
因为我们要模拟的是恒定载荷下的弯曲行为,所以选择静态分析是合适的。
7. 运行分析:完成以上步骤后,运行分析。
Abaqus CAE将自动求解有限元方程,并输出结果。
8. 后处理:在后处理模块中,查看分析结果。
可以查看应力、应变、位移等结果云图和数据。
9. 优化设计:根据分析结果,优化悬臂梁的设计,例如改变梁的截面形状或材料属性等。
以上是一个简单的Abaqus CAE分析实例,通过这个实例可以了解如何使用该软件进行有限元分析。
当然,实际的分析可能会更加复杂,需要更多的步骤和考虑因素。
建议参考Abaqus CAE的官方文档和教程以获得更详细的信息和指导。
ABAQUS实验报告1.实验目的本次实验的主要目的是使用ABAQUS软件对一个具体的结构进行有限元分析,了解结构在受力情况下的变形情况,并通过分析结果评估结构的强度和稳定性。
2.实验对象本次实验选择了一个简单的悬臂梁结构作为分析对象,悬臂梁的尺寸为L=100mm,H=10mm,t=10mm,材料为钢材,杨氏模量为210GPa,泊松比为0.33.实验过程首先,使用ABAQUS软件建立了悬臂梁的有限元模型,包括结构的几何形状、材料性质和边界条件。
然后,施加一个向下的均布载荷在悬臂梁的自由端上,通过有限元分析得到了结构在受力后的应力分布、变形情况和位移等数据。
最终,对分析结果进行评估并提出改进建议。
4.实验结果通过ABAQUS软件进行有限元分析,得到了悬臂梁在受力后的应力分布、变形情况和位移等数据。
其中,悬臂梁在受力后的最大应力出现在悬臂梁的根部,并随着距离自由端的增加逐渐减小;结构的最大变形出现在梁的自由端,变形由中间向两侧逐渐减小;结构的最大位移也出现在梁的自由端。
5.结果分析通过对实验结果的分析,可以得出以下结论:(1)悬臂梁在受力后的应力、变形和位移分布符合结构力学的基本原理,最大应力、变形和位移出现在悬臂梁的根部和自由端。
(2)结构的受力情况对结构的强度和稳定性有重要影响,必须合理设计结构的几何形状和材料性质。
(3)通过有限元分析可以准确地预测结构在受力情况下的响应,为结构设计和优化提供了有效的工具和方法。
6.结论与建议根据实验结果的分析,可以得出以下结论和建议:(1)结构的几何形状、材料性质和受力情况对结构的强度和稳定性有重要影响,必须合理设计和选择结构的几何形状和材料性质。
(2)有限元分析是一种有效的工具,可以准确地预测结构在受力情况下的响应,为结构设计和优化提供了重要的参考。
(3)在进行结构设计和优化时,应该充分考虑结构的受力情况,避免结构出现应力集中和失稳现象。
综上所述,通过本次实验,我深刻认识到了结构在受力情况下的变形和破坏机制,对结构的强度和稳定性有了更深入的理解。
abaqus Python实例——操作excel文件目前处理数据离不开excel,所以pythoner必须学会用python操作excel表格。
Python 与excel交互方法也比较多,我一开始就接触的xlrd/xlwt包。
直到现在也没有发现什么bug 或者缺点,而且上次从ujs505那里知道Win32Com的方法在64bit系统下无效了,但是xlr d/xlwt方法依然好用,我欣喜万分。
这里给出我一个从材料单轴拉伸数据TRA文件中处理得到拉伸过程中各种应力应变量并记录到excel中的例子,其实这个例子比较乱,但是实在没有时间给弄个明了的版本了。
大家将就看看from math import *import sysimport reimport xlrdfrom xlwt import Workbookbook=Workbook()sheet=book.add_sheet('test_NT',cell_overwrite_ok=True)sheet1=book.add_sheet('engineer',cell_overwrite_ok=True)sheet2=book.add_sheet('True',cell_overwrite_ok=True)sheet3=book.add_sheet('Plastic',cell_overwrite_ok=True)sheet4=book.add_sheet('Plastic_modify',cell_overwrite_ok=True)total_nubmer=46nclown=0nclown_e=0nclown_t=0nclown_p=0nclown_pm=0for i in range(total_nubmer): myfile='tensile-'+str(i+1)f=open(myfile+'.TRA','r') engineer_strain=[]true_strain=[]engineer_stress=[]true_stress=[]plastic_strain=[]test_force=[]s1=f.readline()s2=f.readline()s3=f.readline()s4=f.readline()s1=re.sub('"|\t|;|\n',' ',s1)s1=re.split(' +',s1)name=s1[2]little=name[-2:]s2=re.sub('"|\t|;|\n',' ',s2)s2=re.split(' +',s2)times=s2[2]print name+'run'+str(times)bk=xlrd.open_workbook('Static report.xls') sh=bk.sheet_by_name("Stat")diameter=sh.cell_value(i+2,4) area=pi*((diameter)**2)/4E_modulus=sh.cell_value(i+2,7) state=Trues0=f.readlines()s0=s0[-2]s0=re.sub(';',' ',s0)s0=re.split(' +',s0)f.seek(0)s1=f.readline()s2=f.readline()s3=f.readline()s4=f.readline()while state:s=f.readline()s=re.sub(';',' ',s)s=re.split(' +',s)# print s# print s0if (s=="EOF")|(s==s0):state=Falseelse:force=float(s[1])eee=float(s[0])/100.0sss=force/areatest_force.append(force)engineer_strain.append(eee)engineer_stress.append(sss)true_strain.append(log(1.0+eee))true_stress.append(sss*(1.0+eee))plastic_strain.append(log(1.0+eee)-sss*(1.0+eee)/E_modulus)f.close()##########################################################3 simu_strain=[]simu_P_strain=[]simu_triax=[]simu_force=[]simu_E=204323.0simu_little=str(int(little)+3)simu_name="New_pass"+simu_little+"test.dat"print 'refer to'+simu_namesimu_f=open(simu_name,'r')simu_state=Trues0=simu_f.readlines()s0=s0[-1]s0=re.sub(';',' ',s0)s0=re.split(' +',s0)# print s0simu_f.seek(0)simu_s1=simu_f.readline()while simu_state:simu_s2=simu_f.readline()simu_s2=re.sub(';',' ',simu_s2)simu_s2=re.split(' +',simu_s2)if (simu_s2=="EOF")|(simu_s2==s0):simu_state=Falseelse:# print simu_s2s_force=float(simu_s2[5])s_eee=float(simu_s2[2])s_triax=float(simu_s2[3])s_sss=s_force/areasimu_force.append(s_force)simu_triax.append(s_triax)simu_strain.append(s_eee)simu_P_strain.append(log(1.0+s_eee)-s_sss*(1.0+s_eee)/simu_E)simu_f.close()##########################################################3 nrows=3sheet.write(0,nclown,'sample')sheet.write(0,nclown+2,name)sheet.write(1,nclown,"area")sheet.write(1,nclown+2,area)sheet.write(1,nclown+1,diameter)sheet.write(1,nclown+4,E_modulus)sheet.write(2,nclown,"E_strain")sheet.write(2,nclown+1,"E_stress")sheet.write(2,nclown+2,"T_strain")sheet.write(2,nclown+3,"T_stress")sheet.write(2,nclown+4,"PL_strain")for i in range(len(engineer_strain)):sheet.write(nrows,nclown,engineer_strain[i]) sheet.write(nrows,nclown+1,engineer_stress[i]) sheet.write(nrows,nclown+2,true_strain[i])sheet.write(nrows,nclown+3,true_stress[i])sheet.write(nrows,nclown+4,plastic_strain[i]) nrows+=1nclown+=5#output engineer strain and stressnrows=3sheet1.write(0,nclown_e,'file')sheet1.write(0,nclown_e+1,myfile)sheet1.write(0,nclown_e+2,"E_modulus")sheet1.write(0,nclown_e+3,E_modulus)sheet1.write(1,nclown_e,'sample')sheet1.write(1,nclown_e+1,name)sheet1.write(1,nclown_e+2,'run')sheet1.write(1,nclown_e+3,times)sheet1.write(2,nclown_e+1,"E_stress")for i in range(len(engineer_strain)):sheet1.write(nrows,nclown_e,engineer_strain[i]) sheet1.write(nrows,nclown_e+1,engineer_stress[i]) nrows+=1nclown_e+=4#output true strain and stressnrows=3sheet2.write(0,nclown_t,'file')sheet2.write(0,nclown_t+1,myfile)sheet2.write(0,nclown_t+2,"E_modulus")sheet2.write(0,nclown_t+3,E_modulus)sheet2.write(1,nclown_t,'sample')sheet2.write(1,nclown_t+1,name)sheet2.write(1,nclown_t+2,'run')sheet2.write(1,nclown_t+3,times)sheet2.write(2,nclown_t,"T_strain")sheet2.write(2,nclown_t+1,"T_stress")for i in range(len(engineer_strain)):sheet2.write(nrows,nclown_t,true_strain[i])sheet2.write(nrows,nclown_t+1,true_stress[i])nrows+=1nclown_t+=4#output plastic strain and stressnrows=3sheet3.write(0,nclown_p,'file')sheet3.write(0,nclown_p+1,myfile)sheet3.write(0,nclown_p+2,"E_modulus")sheet3.write(0,nclown_p+3,E_modulus)sheet3.write(1,nclown_p,'sample')sheet3.write(1,nclown_p+1,name)sheet3.write(1,nclown_p+2,'run')sheet3.write(1,nclown_p+3,times)sheet3.write(2,nclown_p,"PL_strain")sheet3.write(2,nclown_p+1,"T_stress")for i in range(len(engineer_strain)):sheet3.write(nrows,nclown_p,plastic_strain[i])sheet3.write(nrows,nclown_p+1,true_stress[i]) nrows+=1nclown_p+=4#output modified plastic strain and true stress nrows=3i_temp=1sheet4.write(0,nclown_pm,'file')sheet4.write(0,nclown_pm+1,myfile)sheet4.write(0,nclown_pm+2,"E_modulus")sheet4.write(0,nclown_pm+3,E_modulus)sheet4.write(1,nclown_pm,'sample')sheet4.write(1,nclown_pm+1,name)sheet4.write(1,nclown_pm+2,'run')sheet4.write(1,nclown_pm+3,times)sheet4.write(2,nclown_pm,"PL_strain")sheet4.write(2,nclown_pm+1,"Force")running=Truefor i in range(len(engineer_strain)):if running:mincr=150temp_e=(test_force[i]-test_force[i+mincr])/(plastic_strain[i]-plastic_strain[i+mincr])if temp_e>400000.0:i_temp=irunning=Falseelse:modifed_strain=engineer_strain[i]-engineer_strain[i_temp]modifed_plastic_strain=log(1.0+modifed_strain)-engineer_stress[i]*(1.0+modifed_strain)/E_mo dulussheet4.write(nrows,nclown_pm,modifed_plastic_strain)sheet4.write(nrows,nclown_pm+1,test_force[i])nrows+=1##output simulation resultnrows=3sheet4.write(2,nclown_pm+2,"PL_strain")sheet4.write(2,nclown_pm+3,"Force")sheet4.write(2,nclown_pm+4,"TRIAX")for j in range(len(simu_P_strain)):sheet4.write(nrows,nclown_pm+2,simu_P_strain[j])sheet4.write(nrows,nclown_pm+3,simu_force[j])sheet4.write(nrows,nclown_pm+4,simu_triax[j])nrows+=1#######################next file(Test result)nclown_pm+=5book.save('material_treat.xls')另一例子import csvfrom odbAccess import *from abaqusConstants import *filename=getInput('Please input the ODB file name')#下面这样都是我定义的字典或list,用来存保存提取数据的elementArea={}elementConn={}nodeArea ={}timeTP =[]#下面可以看做一般的从odb文件中提取结果的步骤#打开指定的odb文件odb=openOdb(path=filename)#得到assembly中所有的instanceinst=odb.rootAssembly.instances#或取第一个instance中的所有单元,因为我这个odb里面只有一个instance#.keys()方法可以获得一个list有所有的instance名字elments=inst[inst.keys()[0]].elements#下面一段对单元循环,得到每个单元的几个结点,然后记录下来for el in elments:label=belnodes=el.connectivityelementConn[label]=nodes#节点nodes=inst[inst.keys()[0]].nodesfor nd in nodes:label=belnodeArea[label]=0#打开指定的stepst=odb.steps[odb.steps.keys()[0]]#对指定step的某个特定场变量做循环for v in st.frames[-1].fieldOutputs['EVOL'].values: label=v.elementLabeldata =v.dataelementArea[label]=datafor k,v in elementArea.iteritems():nds=elementConn[k]for nd in nds:nodeArea[nd]+=0.25*v#下面是提取每个frame中每个节点的NT11值frames=st.framesfor fr in frames:nt11=fr.fieldOutputs['NT11'].valuestime=fr.frameValuesumTp=0sumAr=0for va in nt11:label=va.nodeLabeldata=va.dataif data<0:area=nodeArea[label]sumTp+=data*areasumAr+=areatry:mean=float(sumTp)/float(sumAr)timeTP.append( (time,mean))except:print fr.frameIdfilename=getInput('pleae input the csv file \n name to save')wr=csv.writer(file(filename ,'wb'))#这个把结果写进csv文件,只要一句,很简单,也可以在这一句之前写个表头wr.writerows(timeTP)。
基于ABAQUS的三通有限元分析与强度评定简介三通是一种常用的管道连接件,通常用于分支管道的连接。
在设计和制造三通时,需要对其强度进行评定,以确保其能够承受工作条件下的应力和变形。
有限元分析是一种常用的工程分析方法,可以用于预测结构的应力和变形。
本文将介绍基于ABAQUS软件进行三通有限元分析与强度评定的方法。
步骤1.几何建模首先,根据实际的三通尺寸和几何形状,使用ABAQUS的预处理器(Preprocessor)建立三通的几何模型。
可以采用参数化设计的方法,使得模型具有可调节的尺寸。
2.材料属性定义根据实际的材料性能,定义三通的材料属性。
包括弹性模量、泊松比、屈服强度等。
可以根据实验数据或材料手册提供的数据进行定义。
3.网格划分将三通几何模型进行网格划分,生成适合分析的有限元网格。
划分网格时,需要考虑到模型的几何形状和尺寸,并确保网格的密度足够细致,以获得准确的结果。
4.约束和载荷定义根据实际的工作条件和加载情况,对三通模型进行约束和载荷的定义。
约束是指对模型的一些部分施加固定约束,例如固定端或轴向约束。
载荷是指对模型施加的外部力或力矩。
这些约束和载荷可以是静态的,也可以是动态的。
5.弹性分析通过ABAQUS进行弹性分析,计算出三通在工作条件下的应力和变形分布。
弹性分析的结果可以用于进一步的强度评定。
6.强度评定根据三通的应力分布和材料的屈服强度,进行强度评定。
常见的评定方法包括最大应力法、碰撞理论法和松弛高斯分布法等。
根据评定结果,可以确定三通的安全系数,并对设计进行优化。
7.结果后处理对弹性分析和强度评定的结果进行后处理,包括应力和变形的结果可视化、结果的报表输出等。
可以通过ABAQUS的后处理器(Postprocessor)进行。
总结本文介绍了基于ABAQUS的三通有限元分析与强度评定的方法。
通过对三通进行几何建模、材料属性定义、网格划分、约束和载荷定义、弹性分析、强度评定和结果后处理,可以得到三通在工作条件下的应力和变形分布,并进行强度评定。
Abaqus求解器性能详述Abaqus求解器性能:1.比其他通用有限元软件更多的单元种类,单元种类达562种,提供了更多的选择余地,并更能深入反映细微的结构现象和现象间的差别。
除常规结构外,可以方便地模拟管道、接头以及纤维加强结构等实际结构的力学行为。
2.隐式和显式求解器无缝集成,同为ABAQUS公司的产品,单元类型和命名一致,用户可以很方面的进行两种求解方法的转化和联合运算。
3.更多的接触和连接类型,可以是硬接触或软接触,也可以是Hertz接触(小滑动接触)或有限滑动接触,还可以双面接触或自接触。
接触面还可以考虑摩擦和阻尼的情况。
上述选择提供了方便地模拟密封,挤压,铰连接等工程实际结构的手段。
4.材料非线性是ABAQUS非线性分析的一种重要类型。
它具有丰富的材料模型库,涵盖了弹性(包括超弹性和亚弹性)、金属塑性、粘塑性、蠕变,各向异性等各种材料特性。
5.在复合材料方面:ABAQUS允许多种方法定义复合材料单元,包括复合材料壳单元、复合材料实体单元以及叠层实体壳单元;提供基于平面应力的失效准则和基于断裂力学的开裂功能,包括最大应力、Tsai-Hill、Tsai-Wu Azzi-Tsai-Hill和最大应变等理论研究纤维、基体和界面失效以及纤维屈曲失效等失效模式;采用Rebar单元模拟纤维增强复合材料中的纤维,并可以把它们定义在独立的壳单元、薄膜单元和表面单元内部再嵌入到模拟基体的实体单元中,方便用户进行灵活的建模和后处理;ABAQUS提供了壳单元到实体单元的子模型功能和壳单元到实体单元的tie约束功能,可以对复合材料局部重要区域方便地进行细节建模;用户自定义材料机械性能(UMAT)子程序可以由用户定义各种复杂的机械本构模型并使用在ABAQUS分析中,UMATs 已经被广泛用于研究金属基体复合材料, 固化, 纤维抽拔, 和其他对复合材料很重要的局部效应。
6.在橡胶材料方面:橡胶本构模型种类齐全,达16种之多,可以模拟各种橡胶材料的特性;可以直接输入橡胶材料的实验参数,生成对应的橡胶模型,并对模型的稳定性进行检验,确定稳定收敛区间;ABAQUS目前独有的Mullin效应模拟可以在橡胶的超弹性本构中考虑加载和卸载中应变能的损失,以及转化为热能的效应,为精确模拟橡胶减震性能和工作中生热情况提供了途径,资料显示相比其他通用有限元软件,考虑Mullin效应的模型在处理橡胶大变形问题中与实验结果对比更为接近;橡胶模型与接触/摩擦功能能很好地结合,能处理橡胶材料的软化、老化等问题;经长期的工程应用,ABAQUS的垫片单元(*Gasket)被公认可以方便有效地模拟橡胶垫圈密封的机理和现象,广泛用于汽车发动机等复杂机械结构的密封分析中。
ABAQUS瞬态动力学分析瞬态动力学分析一、问题描述一质量块沿着长度为1500mm的等截面梁运动,梁的材料为钢(密度ρ=7.8E-9 ton/mm3,弹性模量E=2.1E5MPa,泊松比ν=0.3),宽为60mm,高为40mm。
质量块的长为50mm,宽为60mm,高为30mm。
质量块的密度ρ=1.11E-007 ton/mm3,弹性模量E=2.1E5MPa,泊松比ν=0.3,如图5.1所示。
质量块以10000mm/s 的速度匀速通过悬臂梁(从固定端运动到自由端),计算梁自由端沿y方向的位移、速度和加速度。
图1 质量块沿梁运动的示意图二、目的和要求掌握结构的动力学分析方法,会定义历史输出步。
1)用六面体单元划分网格,厚度方向有4排网格。
2)采用隐式算法进行计算。
三、操作步骤1、启动ABAOUS/CAE[开始][程序][ABAQUS 6.7-1][ABAQUS CAE]。
启动ABAQUS/CAE后,在出现的Start Session(开始任务)对话框中选择Create Model Database(创建新模型数据库)。
2、创建部件在ABAQUS/CAE窗口顶部的环境栏中,可以看到模块列表Module:Part,这表示当前处在Part(部件)功能模块,可按照以下步骤来创建梁的几何模型。
创建两个零件分别命名为mass(质量块)和beam(梁),均为三维实体弹性体。
3、创建材料和截面属性在窗口左上角的Module(模块)列表中选择Property(特性)功能模块。
(1)创建梁材料Name:Steel,Density:7.8E-9,Young’s Modulus(弹性模量):210000,Poisson’s Ratio(泊松比):0.3。
(2)创建截面属性点击左侧工具箱中的(Create Section),弹出Create Sectio n对话框,Category:Solid,Type:Homogeneous,保持默认参数不变(Material:Steel;Plane stress/strain thickness:1 ),点击OK。
基于ABAQUS仿真的薄膜纳米力学性能研究薄膜纳米力学性能研究是目前材料科学与工程领域的热点之一、通过对薄膜纳米力学性能的研究,可以揭示薄膜材料的力学行为,并为材料的设计与制备提供指导。
ABAQUS是一种常用的有限元分析软件,可以对复杂结构进行力学性能分析,能够有效地模拟和研究薄膜纳米力学性能。
首先,薄膜纳米力学性能研究中的一个关键问题是薄膜材料的力学行为。
通过使用ABAQUS软件,可以对薄膜材料的应力-应变关系、弹性模量、屈服应变等力学特性进行分析和建模。
在建模过程中,可以根据实验数据和理论模型,设计一个适当的材料模型来描述薄膜的力学行为。
然后,通过在ABAQUS中输入材料参数和几何参数,可以对薄膜的力学性能进行仿真分析,获得力学行为曲线和关键性能参数。
其次,ABAQUS具有强大的多尺度模拟能力,可以将纳米尺度的力学问题与宏观尺度的力学行为相耦合。
对于纳米薄膜而言,其特征尺寸在几十纳米到几百纳米之间,常常存在微观缺陷和界面应力效应等问题。
通过使用ABAQUS进行多尺度分析,可以模拟和研究这些微观效应对薄膜力学性能的影响。
例如,可以通过引入子模型和等效材料来处理界面效应,在纳米尺度上模拟薄膜的力学行为,同时在宏观上分析薄膜的整体性能。
这种多尺度模拟方法可以更准确地预测薄膜的力学性能,并为材料设计和应用提供更可靠的依据。
最后,基于ABAQUS仿真的薄膜纳米力学性能研究还可以开展各种不同的分析,进一步揭示薄膜的力学特性。
例如,可以进行拉伸实验、压缩实验、剪切实验等不同的加载条件下的仿真分析,研究薄膜的应力分布、界面位移及力学响应。
此外,还可以对薄膜材料进行疲劳寿命分析、断裂模拟等研究,探究薄膜材料在不同应变加载下的破坏机理和失效行为。
综上所述,基于ABAQUS仿真的薄膜纳米力学性能研究是一种有效的手段,可以深入理解和预测薄膜材料的力学行为。
这种研究方法不仅可以为薄膜材料的设计和制备提供指导,还可以为纳米材料的力学行为和力学性能的研究提供重要的参考和支持。
abaqus Python实例——操作excel文件目前处理数据离不开excel,所以pythoner必须学会用python操作excel表格。
Python与excel交互方法也比较多,我一开始就接触的xlrd/xlwt包。
直到现在也没有发现什么bug或者缺点,而且上次从uj s505那里知道Win32Com的方法在64bit系统下无效了,但是xlrd/xlwt方法依然好用,我欣喜万分。
这里给出我一个从材料单轴拉伸数据TRA文件中处理得到拉伸过程中各种应力应变量并记录到excel中的例子,其实这个例子比较乱,但是实在没有时间给弄个明了的版本了。
大家将就看看from math import *import sysimport reimport xlrdfrom xlwt import Workbookbook=Workbook()sheet=book.add_sheet('test_NT',cell_overwrite_ok=True)sheet1=book.add_sheet('engineer',cell_overwrite_ok=True)sheet2=book.add_sheet('True',cell_overwrite_ok=True)sheet3=book.add_sheet('Plastic',cell_overwrite_ok=True)sheet4=book.add_sheet('Plastic_modify',cell_overwrite_ok=True)total_nubmer=46nclown=0nclown_e=0nclown_t=0nclown_p=0nclown_pm=0for i in range(total_nubmer):myfile='tensile-'+str(i+1)f=open(myfile+'.TRA','r')engineer_strain=[]true_strain=[]engineer_stress=[]true_stress=[]plastic_strain=[]test_force=[]s1=f.readline()s2=f.readline()s3=f.readline()s4=f.readline()s1=re.sub('"|\t|;|\n',' ',s1)s1=re.split(' +',s1)name=s1[2]little=name[-2:]s2=re.sub('"|\t|;|\n',' ',s2)s2=re.split(' +',s2)times=s2[2]print name+'run'+str(times)bk=xlrd.open_workbook('Static report.xls') sh=bk.sheet_by_name("Stat")diameter=sh.cell_value(i+2,4)area=pi*((diameter)**2)/4E_modulus=sh.cell_value(i+2,7)state=Trues0=f.readlines()s0=s0[-2]s0=re.sub(';',' ',s0)s0=re.split(' +',s0)f.seek(0)s1=f.readline()s2=f.readline()s3=f.readline()s4=f.readline()while state:s=f.readline()s=re.sub(';',' ',s)s=re.split(' +',s)# print s# print s0if (s=="EOF")|(s==s0):state=Falseelse:force=float(s[1])eee=float(s[0])/100.0sss=force/areatest_force.append(force)engineer_strain.append(eee)engineer_stress.append(sss)true_strain.append(log(1.0+eee)) true_stress.append(sss*(1.0+eee))plastic_strain.append(log(1.0+eee)-sss*(1.0+eee)/E_modulus)f.close()##########################################################3 simu_strain=[]simu_P_strain=[]simu_triax=[]simu_force=[]simu_E=204323.0simu_little=str(int(little)+3)simu_name="New_pass"+simu_little+"test.dat"print 'refer to'+simu_namesimu_f=open(simu_name,'r')simu_state=Trues0=simu_f.readlines()s0=s0[-1]s0=re.sub(';',' ',s0)s0=re.split(' +',s0)# print s0simu_f.seek(0)simu_s1=simu_f.readline()while simu_state:simu_s2=simu_f.readline()simu_s2=re.sub(';',' ',simu_s2)simu_s2=re.split(' +',simu_s2)if (simu_s2=="EOF")|(simu_s2==s0):simu_state=Falseelse:# print simu_s2s_force=float(simu_s2[5])s_eee=float(simu_s2[2])s_triax=float(simu_s2[3])s_sss=s_force/areasimu_force.append(s_force)simu_triax.append(s_triax)simu_strain.append(s_eee)simu_P_strain.append(log(1.0+s_eee)-s_sss*(1.0+s_eee)/simu_E)simu_f.close()##########################################################3 nrows=3sheet.write(0,nclown,'sample')sheet.write(0,nclown+2,name)sheet.write(1,nclown,"area")sheet.write(1,nclown+2,area)sheet.write(1,nclown+1,diameter)sheet.write(1,nclown+3,"E_modulus")sheet.write(1,nclown+4,E_modulus)sheet.write(2,nclown,"E_strain")sheet.write(2,nclown+1,"E_stress")sheet.write(2,nclown+2,"T_strain")sheet.write(2,nclown+3,"T_stress")sheet.write(2,nclown+4,"PL_strain")for i in range(len(engineer_strain)):sheet.write(nrows,nclown,engineer_strain[i])sheet.write(nrows,nclown+1,engineer_stress[i])sheet.write(nrows,nclown+2,true_strain[i])sheet.write(nrows,nclown+3,true_stress[i])sheet.write(nrows,nclown+4,plastic_strain[i])nrows+=1nclown+=5#output engineer strain and stressnrows=3sheet1.write(0,nclown_e,'file')sheet1.write(0,nclown_e+1,myfile)sheet1.write(0,nclown_e+2,"E_modulus")sheet1.write(0,nclown_e+3,E_modulus)sheet1.write(1,nclown_e,'sample')sheet1.write(1,nclown_e+1,name)sheet1.write(1,nclown_e+2,'run')sheet1.write(1,nclown_e+3,times)sheet1.write(2,nclown_e,"E_strain")sheet1.write(2,nclown_e+1,"E_stress")for i in range(len(engineer_strain)):sheet1.write(nrows,nclown_e,engineer_strain[i]) sheet1.write(nrows,nclown_e+1,engineer_stress[i]) nrows+=1nclown_e+=4#output true strain and stressnrows=3sheet2.write(0,nclown_t,'file')sheet2.write(0,nclown_t+1,myfile)sheet2.write(0,nclown_t+2,"E_modulus")sheet2.write(0,nclown_t+3,E_modulus)sheet2.write(1,nclown_t,'sample')sheet2.write(1,nclown_t+1,name)sheet2.write(1,nclown_t+2,'run')sheet2.write(1,nclown_t+3,times)sheet2.write(2,nclown_t,"T_strain")sheet2.write(2,nclown_t+1,"T_stress")for i in range(len(engineer_strain)):sheet2.write(nrows,nclown_t,true_strain[i]) sheet2.write(nrows,nclown_t+1,true_stress[i]) nrows+=1nclown_t+=4#output plastic strain and stressnrows=3sheet3.write(0,nclown_p,'file')sheet3.write(0,nclown_p+1,myfile)sheet3.write(0,nclown_p+2,"E_modulus")sheet3.write(0,nclown_p+3,E_modulus)sheet3.write(1,nclown_p,'sample')sheet3.write(1,nclown_p+1,name)sheet3.write(1,nclown_p+2,'run')sheet3.write(1,nclown_p+3,times)sheet3.write(2,nclown_p,"PL_strain")sheet3.write(2,nclown_p+1,"T_stress")for i in range(len(engineer_strain)):sheet3.write(nrows,nclown_p,plastic_strain[i])sheet3.write(nrows,nclown_p+1,true_stress[i])nrows+=1nclown_p+=4#output modified plastic strain and true stressnrows=3i_temp=1sheet4.write(0,nclown_pm,'file')sheet4.write(0,nclown_pm+1,myfile)sheet4.write(0,nclown_pm+2,"E_modulus")sheet4.write(0,nclown_pm+3,E_modulus)sheet4.write(1,nclown_pm,'sample')sheet4.write(1,nclown_pm+1,name)sheet4.write(1,nclown_pm+2,'run')sheet4.write(1,nclown_pm+3,times)sheet4.write(2,nclown_pm,"PL_strain")sheet4.write(2,nclown_pm+1,"Force")running=Truefor i in range(len(engineer_strain)):if running:mincr=150temp_e=(test_force[i]-test_force[i+mincr])/(plastic_strain[i]-plastic_strain[i+mincr])if temp_e>400000.0:i_temp=irunning=Falseelse:modifed_strain=engineer_strain[i]-engineer_strain[i_temp]modifed_plastic_strain=log(1.0+modifed_strain)-engineer_stress[i]*(1.0+modifed_strain)/E_modulus sheet4.write(nrows,nclown_pm,modifed_plastic_strain)sheet4.write(nrows,nclown_pm+1,test_force[i])nrows+=1##output simulation resultnrows=3sheet4.write(2,nclown_pm+2,"PL_strain")sheet4.write(2,nclown_pm+3,"Force")sheet4.write(2,nclown_pm+4,"TRIAX")for j in range(len(simu_P_strain)):sheet4.write(nrows,nclown_pm+2,simu_P_strain[j])sheet4.write(nrows,nclown_pm+3,simu_force[j])sheet4.write(nrows,nclown_pm+4,simu_triax[j])nrows+=1#######################next file(Test result)nclown_pm+=5book.save('material_treat.xls')另一例子import csvfrom odbAccess import *from abaqusConstants import *filename=getInput('Please input the ODB file name')#下面这样都是我定义的字典或list,用来存保存提取数据的elementArea={}elementConn={}nodeArea ={}timeTP =[]#下面可以看做一般的从odb文件中提取结果的步骤#打开指定的odb文件odb=openOdb(path=filename)#得到assembly中所有的instanceinst=odb.rootAssembly.instances#或取第一个instance中的所有单元,因为我这个odb里面只有一个instance #.keys()方法可以获得一个list有所有的instance名字elments=inst[inst.keys()[0]].elements#下面一段对单元循环,得到每个单元的几个结点,然后记录下来for el in elments:label=belnodes=el.connectivityelementConn[label]=nodes#节点nodes=inst[inst.keys()[0]].nodesfor nd in nodes:label=belnodeArea[label]=0#打开指定的stepst=odb.steps[odb.steps.keys()[0]]#对指定step的某个特定场变量做循环for v in st.frames[-1].fieldOutputs['EVOL'].values: label=v.elementLabeldata =v.dataelementArea[label]=datafor k,v in elementArea.iteritems():nds=elementConn[k]for nd in nds:nodeArea[nd]+=0.25*v#下面是提取每个frame中每个节点的NT11值frames=st.framesfor fr in frames:nt11=fr.fieldOutputs['NT11'].valuestime=fr.frameValuesumTp=0sumAr=0for va in nt11:label=va.nodeLabeldata=va.dataif data<0:area=nodeArea[label]sumTp+=data*areasumAr+=areatry:mean=float(sumTp)/float(sumAr)timeTP.append( (time,mean))except:print fr.frameIdfilename=getInput('pleae input the csv file \n name to save')wr=csv.writer(file(filename ,'wb'))#这个把结果写进csv文件,只要一句,很简单,也可以在这一句之前写个表头wr.writerows(timeTP)。
探讨ABAQUS/Explicit的准静态分析一、前言在模拟剪力墙非线性分析时,经常要使用准静态分析,如果用ABAQUS/Standard进行静态分析,计算时间会很长,甚至常常无法收敛。
使用ABAQUS/Explicit进行准静态分析,就不存在收敛问题,就是用慢速运动的ABAQUS/Explicit动态分析模拟静态问题,其关键是要设置合适的加速度、分析步时间和质量缩放系数等模型参数,避免加载速度过快导致的局部变形问题,使结果尽量接近静态分析的结果,否则即使能得到分析结果,其计算结果往往也是错的二、准静态分析1. 光滑幅值曲线对于准确和高效的准静态分析,要求施加的载荷尽可能地光滑。
突然、急促的运动会产生应力波,它将导致振荡或不准确的结果。
ABAQUS有一条简单、固定的光滑步骤(smooth step)幅值曲线,它自动地创建一条光滑的载荷幅值。
当你定义一个光滑步骤幅值曲线时,ABAQUS自动地用曲线连接每一组数据对,该曲线的一阶和二阶导数是光滑的,在每一组数据点上,它的斜率都为零。
由于这些一阶和二阶导数都是光滑的,你可以采用位移加载,应用一条光滑步骤幅值曲线,只用初始的和最终的数据点,而且中间的运动将是光滑的。
使用这种载荷幅值允许你进行准静态分析而不会产生由于加载速率不连续引起的波动。
2. 质量放大质量放大(mass scaling)可以在不需要人为提高加载速率的情况下降低运算的成本。
需要注意的是,采用质量缩放技术增大材料密度会增大动态分析的惯性效应,如同增大了加载速率。
如果适量缩放系数过大,会导致错误的分析姐夫哦,选择适量缩放系数的方法和选择加载速率的方法类似的,都要保证不影响动态分析结果的精度。
3. 加载速率一个物理过程所占用的实际时间称其为它的固有时间(nature time)。
对于一个准静态过程在固有时间中进行分析,我们一般能得到准确的静态结果。
毕竟,如果实际事件真实地发生在其固有时间尺度内,并在结束时其速度为零,那么动态分析应该能够得到这样的事实,即分析实际上已经达到了稳态。
具有优良力学性能的仿海绵结构。
海绵生物已经在地球上存活了几亿年,为了适应复杂多变的海洋环境,它们不断进化形成了独特的多孔结构。
本文以多孔玻璃海绵为主要研究对象,通过仿生结构设计模拟多孔玻璃海绵骨架的微观结构,设计了三种不同的仿海绵结构。
使用有限元分析软件Ansysworkbench对三种仿海绵结构及蜂窝结构的压缩、扭转和悬臂弯曲等静力学性能进行分析和比较,观察不同载荷下轻质结构应力集中情况,结果表明仿海绵结构II各项力学性能均比较出色。
为了验证结构建模和有限元分析结果的可靠性,使用3D打印技术,以光敏树脂为原料分别制备了仿海绵结构II和蜂窝结构试样进行静力学性能测试,实验测试结果与有限元分析结果吻合。
本文还分别以仿海绵结构II和蜂窝结构作为夹芯层设计了两种轻质夹芯管,并比较了两种轻质夹芯管在压缩、扭转和弯曲载荷下的轻量因子和比刚度,结果表明仿海绵结构夹芯管的各项指标比蜂窝夹芯管均有提高。
除了静力学性能,还对以这两种结构作为夹芯结构的薄壁管的稳定性能进行分析和比较。
仿海绵夹芯结构薄壁管的抗压和抗扭稳定性能同样好于蜂窝夹芯薄壁管。
以仿海绵I结构为模型,以碳纤维预浸料布为原料,开展碳纤维轻质结构铺层工艺的研究。
以模压成型和升温固化为工艺基础,设计了平铺和编织缠绕两种铺层方式,并对以这两种工艺制备试样的力学性能进行测试和比较,分析两种工艺对结构力学性能的影响。
此外,还以铝合金为原料制备了仿海绵轻质管,通过实验测试,比较碳纤维和铝合金两种材料对仿海绵结构力学性能的影响。
线性静力学分析实例——以悬臂梁为例线性静力学问题是简单且常见的有限元分析类型,不涉及任何非线性(材料非线性、几何非线性、接触等),也不考虑惯性及时间相关的材料属性。
在ABAQUS中,该类问题通常采用静态通用(Static,General)分析步或静态线性摄动(Static,Linear perturbation)分析步进行分析。
线性静力学问题很容易求解,往往用户更关系的是计算效率和求解效率,希望在获得较高精度的前提下尽量缩短计算时间,特别是大型模型。
这主要取决于网格的划分,包括种子的设置、网格控制和单元类型的选取。
在一般的分析中,应尽量选用精度和效率都较高的二次四边形/六面体单元,在主要的分析部位设置较密的种子;若主要分析部位的网格没有大的扭曲,使用非协调单元(如CPS4I、C3D8I)的性价比很高。
对于复杂模型,可以采用分割模型的方法划分二次四边形/六面体单元;有时分割过程过于繁琐,用户可以采用精度较高的二次三角形/四面体单元进行网格划分。
悬臂梁的线性静力学分析1.1 问题的描述一悬臂梁左端受固定约束,右端自由,结构尺寸如图1-1所示,求梁受载后的Mises应力、位移分布。
ν材料性质:弹性模量3=E=,泊松比3.02e均布载荷:F=103N图1-1 悬臂梁受均布载荷图1.2 启动ABAQUS启动ABAQUS有两种方法,用户可以任选一种。
(1)在Windows操作系统中单击“开始”--“程序”--ABAQUS 6.10 --ABAQUS/CAE。
(2)在操作系统的DOS窗口中输入命令:abaqus cae。
启动ABAQUS/CAE后,在出现的Start Section(开始任务)对话框中选择Create Model Database。
1.3 创建部件在ABAQUS/CAE顶部的环境栏中,可以看到模块列表:Module:Part,这表示当前处在Part(部件)模块,在这个模块中可以定义模型各部分的几何形体。
基于ABAQUS和EXCEL的泡棉静态力学性能分析
作者:周万里黄攀
来源:《科技风》2017年第09期
摘要:手机中大量应用泡棉作为缓冲材料保护关键器件,不同泡棉的缓冲效果完全不同,对器件的保护作用大小也不同。
通过泡棉的单轴压缩和回弹实验测试可以得到材料的位移-力曲线,但有限元软件ABAQUS中需要的材料参数不能直接在该软件中拟合得到。
故基于EXCEL的VB模块构建新公式和使用规划求解功能拟合材料参数。
在ABAQUS中建立有限元模型验证了用EXCEL拟合材料的准确性和该分析方法的正确性。
关键词:泡棉;有限元;ABAQUS;hyperfoam;Mullins软化效应;EXCEL;规划求解
泡棉因为具有良好的密封性和可压缩性,在手机中被大量应用根据用途可以分为导电泡棉、缓冲泡棉、双面胶泡棉和防尘防水泡棉等,根据应用的位置可以分为LCM泡棉、摄像头泡棉、音腔泡棉、受话器泡棉等。
不同的用途和位置对泡棉的要求完全不同。
国内文献对泡棉的研究主要在后期仿真应用上和没有考虑泡棉的应力软化效应,没有详细介绍如何从基础实验数据中获取有限元仿真所需要的参数再到仿真应用的过程。
本文首先使用高精度试验机对泡棉进行单轴压缩和回弹实验,获取位移-力曲线;然后转换为名义应变-名义应力曲线。
利用EXCEL的VB模块构建新公式,再把名义应变-名义应力曲线输入到EXCEL表格,并使用规划求解功能拟合曲线获取基于ABAQUS的hyperfoam本构模型和Mullins软化效应的材料参数;最后通过建立有限元模型验证该本构模型和拟合方法的正确性。
1 压缩和回弹实验
使用高精度试验机对泡棉进行压缩和回弹实验。
因为该泡棉太薄只有0.3mm的厚度,为减小误差把4层泡棉叠加在一起进行测试。
具体样品尺寸为25mmX25mmX0.3mmX4。
2 记录压缩和回弹数据
压缩试验机记录力的单位为g,位移为mm。
3 处理数据
因为前面有一段行程为空压,需要处理数据,减掉这部分位移并减少数据点。
处理后的数据见下图:
4 Hyperfoam本构理论
在ABAQUS软件中,定义泡棉的超弹性模型时,泡棉的超弹性行为建立在以下应变能函数上[ 1 ][ 2 ][ 4 ]:
其中μ和α控制偏量行为,其中μ和β控制体积行为。
N是材料参数,最高可达到6。
μi,αi,βi是由温度决定的材料参数。
5 Mullins软化本构理论
泡棉有着和橡胶材料相类似的Mullins效应(静态软化效应),由图1可见当泡棉经历加载-卸载过程时,卸载应力要低于加载时的应力,这种静态应力软化现象称为Mullins效应。
目前比较成熟的描述Mullins效应的本构理论是基于唯像学的伪弹性本构模型。
ABAQUS 软件已经将此本构模型集成到软件中,在进行有限元计算时,可以直接在材料属性中调用此模型。
为使本构方程能够方便描述Mullins效应,将应变能密度分成畸变能应变能密度和体积变化应变能密度两部分[ 1 ][ 3-6 ]。
即:
6 用EXCEL拟合材料参数
把从实验中获得的位移-力曲线转换成名义应变-应力曲线。
其中F为力,A0为初始截面积,ΔL为位移,L0为初始厚度。
因为泡棉自带PET计算名义应变时需剔除PET的影响,L0等于总厚度减去PET的厚度。
因为公式参数较多,选择用EXCEL的VB模块构建新的公式。
拟合时,首先将应变-应力曲线输入到Excel表格,再依次计算主伸长比、预测值、实际值和预测值的平方差、实际值和平均值的平方差、R平方。
当R平方等于1时表示,所有观测点都落在拟合的曲线上。
利用EXCEL的规划求解功能拟合曲线。
有限元分析结果和实验结果很接近,证明了用EXCEL拟合参数的准确性和ABAQUS hyperfoam本构及Mullins效应模拟泡棉压缩和回弹性能的精度很高。
7 结论
1)自带PET的泡棉厚度较薄时为减小测试误差叠加起来进行压缩和回弹实验获取实验数据的方法是可行的;
2)ABAQUS中的hyperfoam模型和Mullins参数可以使用EXCEL的VB模块和规划求解功能来拟合;
3)有限元分析的结果和实验测试的结果很接近,使用hyperfoam三阶模型并添加Mullins 效应能很好的模拟泡棉的单轴静态压缩和回弹曲线。
参考文献:
[1] 冯敏亮.电场活化聚合物(DE)力学性能模型研究[D].安徽:合肥工业大学,2007.
[2] 李飞.Mullins诱导各向异性研究及橡胶弹性元件多向刚度分析[D].湖南:湖南工业大学,2015.
[3] 王见.聚氨酯减振缓冲块静态特性有限元分析及对比实验[J].科协论坛,2009(3):91-92.
[4] 张凯,赵静,等.HDPE_EPDMTPV的压缩Mullins效应及其可逆回复[J].特种橡胶制品,2015,36(2):6-11.。