在 ansys 中如何 施加 地震波
三向输入简化后的单向输入
首先,将三个方向的地震加速度放到一个文本文件里,如accexyz.txt ,在这个数据文件里共放三列数据,每列为一个方向的地震加速度值,这里仅给出数据文件中前几行的数据:
-0.227109E-02 -0.209046E+00 0.467072E+01
-0.413893E-02 -0.168195E+00 0.261523E+01
-0.574753E-02 -0.157890E+00 0.809014E-01
-0.731227E-02 -0.152996E+00 0.119975E+01
-0.876865E-02 -0.138102E+00 0.130902E+01
-0.101067E-01 -0.131582E+00 0.143611E+00
.......................
然后,再建一个文本文件用来存放三个方向的地震加速度时间点,如time.txt ,在这个数据文件里仅一列数据,对应于加速度数据文件里每一行的时间点,这里给出数据文件中前几行数据:
0.100000E-01
0.200000E-01
0.300000E-01
0.400000E-01
0.500000E-01
0.600000E-01
.......................
编写如下的命令流文件,并命名为acce.inp
*dim,ACCEXYZ,TABLE,2000,3 !01行
*vread,ACCEXYZ(1,1),accexyz,txt,,JIK,3,2000 !02行(3e16.6) !03行
*vread,ACCEXYZ(1,0),time,txt !04行
(e16.6) !05行
ACCEXYZ(0,1)=1 !06行
ACCEXYZ(0,2)=2 !07行,同上
ACCEXYZ(0,3)=3 !08行,同上
finish
/SOLU
ANTYPE,trans
btime=0.01 !定义计算起始时间
etime=15.00 !定义计算结束时间
dtime=0.01 !定义计算时间步长
*DO,itime,btime,etime,dtime
time,itime
AUTOTS,0
NSUBST,1, , ,1
KBC,1
acel,ACCEXYZ(itime,1),ACCEXYZ(itime,2),ACCEXYZ(itime,3) !施加三个方向的地震加速度
SOLVE
*ENDDO
最后,在命令窗口里输入/input,acce,inp即可对结构进行地震动力分析。
说明和讨论:
1、命令流中各行说明:
01行:定义2000行,3列的数组,(行数根据数据文件里加速度点数来定)ACCEXYZ 用来存放三个方向的加速度值。
02行:从数据文件accexyz.txt 里读加速度值到数组ACCEXYZ,2000为行数,可根据情况修改。其中的JIK ,3,2000非常重要,它决定着将从加速度数据文件中数据输入到ACCEXYZ 数组时的存放格式,这里用到按JIK 方式变化, 即读进来的数据依次放入ACCEXYZ(I,J)(J 从1到3,I 从1到2000,K 默认从1到1)。根据这行命令下面(3e16.6)的格式,每次从数据文件里读一行三个数据,分别放入ACCEXYZ(1,1)、ACCEXYZ(1,2)、ACCEXYZ(1,3),接着再读下一行的三个数据,分别放入ACCEXYZ(2,1)、ACCEXYZ(2,2)、ACCEXYZ(2,3),依次类推。当然依据数据文件的格式,也可以选用IJK, IKJ, JIK, JKI, KIJ, KJI等格式,其中IJK 为默认。
03行:读数据的格式,每行三个数值。由于数据文件中的数据是用科学记数年法表示的,因此,这里也用相应FORTRAN 的科学记数法的格式。如果数据文件里的数值是如“0.2876 1.2333 2.9938”这样的格式,此行的数据格式也就修改为“(3f10.4)”这样的格式。
04行:从数据文件time.txt 里读时间值到数组ACCEXYZ 的第零列。
06行:将数组ACCEXYZ 的第零行赋值,如果不对行插值的话也可以不赋值
对于地震波的输入,可以把荷载记录做成文件,利用apdl 的读取功能读入倒数据库中。下面的例子是自己编的一个小文件。修改一下可以更简洁。有用到的朋友自己作一下把。
fini
/config,nres,1000
*dim,aceX,TABLE,3000,1
*dim,aceY,TABLE,3000,1
*dim,aceZ,TABLE,3000,1
*creat,ff
*vread,aceX(1,1),acex,txt,,1
(e16.6)
*vread,aceX(1,0),ACETT,,,1
(e17.6)
ACEX(0,1)=1
*end
/input,ff
*creat,ff
*vread,aceY(1,1),acey,txt,,1
(e16.6)
*vread,aceY(1,0),ACETT,,,1
(e17.6)
ACEY(0,1)=1
*end
/input,ff
*creat,ff
*vread,aceZ(1,1),acez,txt,,1
(e16.6)
*vread,aceZ(1,0),ACETT,,,1
(e17.6)
ACEZ(0,1)=1
*end
/input,ff
!地震波时程记录分成了3个文件,每个文件是一列。分别记录x,y,z 方向的加速度。acett 是时间记录。
这样就可以把加速度记录读取倒ansys 数据库中作为数组。
也可以把加速度记录做成一个文件,这样程序就简单多了。大家可以试看看修改一下。
下面是计算部分语句:
/SOLU
ANTYPE,trans
!求解其自己选了
TM_START=0.01
TM_END=15.00
TM_INCR=0.01
*DO,TM,TM_START,TM_END,TM_INCR
TIME,tm
alpha,
BETAD,
ACEL,acex(tm),acey(tm),acez(tm)
SOLVE
*ENDDO
fini
! 借助于ANSYS 动力分析基本功能和APDL 语言以及有关的地震资料编写的SEISMIC 程序
NT=100
DT=0.02
*DIM,ac,,NT
/INPUT,FF,txt
/SOLU
NSUBST,1,,,1
OUTRES,ALL,1
ANTYPE,TRANS
*DO,I,1.NT
ACEL,0.01*ac(I)*1.3,0,0 !ac(I)的值由地震资料获得
TIME,I*DT
SOLVE
*ENDDO
地震分析算例 (ANSYS) 土木工程中除了常见的静力分析以外,动力分析,特别是结构在地震荷载作用下的受力分析,也是土木工程中经常遇到的问题。结构的地震分析根据现行抗震规范要求,一般分为以下两类:基于结构自振特性的地震反应谱分析和基于特定地震波的地震时程分析。
本算例将以一个4质点的弹簧-质点体系来说明如何使用有限元软件进行地震分析。更复杂结构的分析其基本过程也与之类似。
关键知识点:
(a) 模态分析
(b) 谱分析
(c) 地震反应谱输入
(d) 地震时程输入
(e) 时程动力分析
(1) 在ANSYS 窗口顶部静态菜单,进入Parameters 菜单,选择Scalar Parameters 选项,在输入窗口中填入DAMPRA TIO=0.02,即所有振型的阻尼比为2%
(2) ANSYS主菜单Preprocessor->Element type->Add/Edit/Delete,添加Beam 188单元
(3) 在Element Types窗口中,选择Beam 188单元,选择Options ,进入Beam 188的选项窗口,将第7个和第8个选项,Stress/Strain (Sect Points) K7, Stress/Strain (Sect Nods) K8,从None 改为Max and Min Only。即要求Beam 188单元输出积分点和节点上的最大、最小应力和应变
(4) 在Element Types 窗口中,继续添加Mass 21集中质量单元
(5) 下面输入材料参数,进入ANSYS 主菜单Preprocessor->Material Props-> Material Models菜单,在Material Model Number 1中添加Structural-> Linear-> Elastic->Isotropic属性,输入材料的弹性模量EX 和泊松比PRXY 分别为210E9和0.3。
(6) 继续给Material Model Number 1添加Density 属性,输入密度为7800。
(7) 继续给Material Model Number 1添加Damping 属性,采用参数化建模,输入阻尼类型为Constant ,数值为DAMPRA TIO
(8) 接着建立梁单元的几何属性,和上一个例子一样,采用Sections 建模,进入ANSYS 主菜单Preprocessor->Sections->Beam->Common Sections,选择Sub-Type 为工字型,截面尺寸W1=0.2,W2=0.2, W3=0.5, t1=0.01, t2=0.01, t3=0.008
(9) 通过实参数输入集中质量单元的质量和转动惯量,在ANSYS 主菜单中选择Preprocessor->Real Constants->Add/Edit/Delete菜单,在Real Constants 窗口中选择Add ,在Element type for Real Constants选择Mass 21,在Real Constant for Number 1窗口中输入1.6E2,
1.6E2,如图所示。即该质量单元在X 和Y 方向的质量都为160,由于本例子模型为平面问
题,所以不必考虑Z 方向的质量,同样也不考虑单元的转动惯量。
(10) 继续添加第二类集中质量,过程和上面一样,但是输入的质量数值为1.2E2, 1.2E2
(11) 完成以上工作就完成了模型的基本数据准备,下面开始建立物理模型。
(12) 在ANSYS 主菜单中选择Preprocessor->Modeling->Create->Keypoints->In Active CS,依次输入关键点编号和坐标:需要说明的是,关键点6为后面建立梁单元所需的截面方向控制点,在上一个例子中已经做过介绍。
(13) 完成关键点输入后下面建立直线模型。在ANSYS 主菜单中选择Preprocessor->Modeling->Create->Lines->Lines->Straight Line,依次连接关键点1~5。
(14) 下面给建立完的几何模型赋予材料属性,在ANSYS 菜单中选择Meshing->Mesh Attributes->Picked Lines,选中所有的直线,进入Line Attributes窗口,选择相关选项材料属性,实参数,单元类型和截面类型都为1,点击OK 后输入关键点6作为截面方向控制点。
(15) 在ANSYS 主菜单中选择Preprocessor->Meshing->Size Cntrls-> ManualSize-> Lines-> Picked Lines,在Element Sizes on Picked Lines窗口中设定NDIV No. of element divisions为3,即将每条直线分为3段
(16) 在ANSYS 主菜单中选择Preprocessor->Meshing->Mesh->Lines,选择所有的直线,完成直线的网格划分。
(17) 为了便于后面操作,将网格划分后的单元和节点编号进行适当的清理。在ANSYS 主菜单中选择Preprocessor->Numbering Ctrls->Merge Items ,在Merge Coincident or Equivalently Defined Items 窗口中选择All ,清理所有重复的元素。同样选择Numbering Ctrls->Compress Number 菜单,在Compress Number中选择All ,对节点和单元进行重新编号。
(18) 下面建立集中质量单元,采取直接输入单元的方法建立。在ANSYS 主菜单中选择Preprocessor->Modeling->Create->Elements->Elem Attributes,在Element Attributes中设定单元类型编号为2 MASS 21,材料编号任意,实参数编号为1。如图所示
(19) 在ANSYS 主菜单中选择Preprocessor->Modeling->Create->Elements->Auto Numbered->Thru Nodes,选择节点2,建立第一个集中质量。
(20) 再次进入第18步Element Attributes窗口,设定实参数(Real constant set number)为2。
(21) 重复19步,选择节点8,14,20,建立其他的三个集中质量单元。
(22) 到此完成所有建模工作,下面开始进行结构分析
(23) 进入ANSYS 主菜单中Solution 功能模块,选择Solution->Define Loads->Apply->Structural->Displacement->On Nodes,选择节点1,设定约束所有的自由度。
(24) 首先做一次静力分析,选择ANSYS 主菜单Solution->Analysis Type->New Analysis,设定分析类型为Static
(25) 选择ANSYS 主菜单Solution->Solve->Current LS选项,进行一次静力分析
(26) 分析完后,下面进行模态分析,在ANSYS 主菜单中选择Solution->Analysis Type->New Analysis ,选择分析类型为Model
(27) 在ANSYS 主菜单中选择Solution->Analysis Type->Analysis Options,输入模态分析方法为子空间法(Subspace),求解8阶模态,同时需要作模态扩展,扩展的模态为8阶,并计算单元应力和应变,输入窗口如图
(28) 再次选择ANSYS 主菜单Solution->Solve->Current LS,计算当前问题
(29) 这时,如果需要看结果,可以进入后处理模块,即ANSYS 主菜单General Postproc ,可以看到计算的各阶频率和振型。
(30) 完成结构自振分析后,下面就可以进行反应谱分析
(31) 进入ANSYS 主菜单Solution->Analysis Type->New Analysis,选择分析类型为Spectrum 。
(32) 在ANSYS 主菜单Solution->Analysis Type->Analysis Options 中,选择谱分析的类型为单点输入(Sing-pt resp)
(33) 在ANSYS 主菜单中选择Preprocessor->Loads->Load Step Opts-> Time/Frequenc-> Damping ,输入所有的阻尼为DAMPRA TIO ,如图所示 (
34) 下面需要定义地震的反应谱。我国规范给定的是基于加速度的反应谱。在ANSYS 主菜单中选择Solution-> Load Step Opts->Spectrum->Single Point->Settings,设定反应谱类型为地震加速度,放大系数为1,输入方向为X 方向(1,0,0)。
(35) 接下来开始输入地震反应谱。这里输入的反应谱按7度多遇地震,取地震影响系数为0.08,第一组,III 类场地,卓越周期Tg=0.45s。值得注意的是,我国规范给的反应谱横坐标是周期,ANSYS 定义的反应谱横坐标是频率,应该注意上述区别。选择ANSYS 主菜单Solution-> Load Step Opts->Spectrum->Single Point->Freq Table ,输入频率反应谱Freq1~Freq12为0.167, 0.25, 0.333, 0.44444, 0.5, 0.667, 1, 1.25, 1.667, 2.222, 10, 100000, 如图
(36) 选择ANSYS 主菜单Solution-> Load Step Opts->Spectrum->Single Point->Spectr Values,输入对应的反应谱数值依次如下:
(37) 最后选择ANSYS 主菜单Solution-> Load Step Opts->Spectrum->Single Point->Mode Combine ,设定振型组合方式为SRSS 法,如图所示
(38) 选择ANSYS 主菜单Solution->Solve->Current LS,计算反应谱结果
(39) 进入ANSYS 主菜单后处理模块General Postproc ,在ANSYS 窗口顶部菜单选择File->Read input from,选择文件后缀名为*.mcom的文件
(40) 进入ANSYS 主菜单General Postproc->Plot Results->Deformed Shapes,选择绘制变形后形状和结构形状,得到地震反应谱分析的结构变形如图
(41) 最后我们来进行地震时程分析,进行地震时程分析以前,首先要有一个地震时程记录,本例子给定的地震时程记录总长20秒,记录点间隔0.02s ,共有1001个记录点。该地震记录存放在RECORD.TXT 文件中。 (42) 首先建立两个变量,在ANSYS 窗口顶部菜单选择Parameters->Scalar parameters,在窗口中输入NT=1001,即总共1001个记录点,DT=0.02,即记录点间隔0.02s
(43) 然后还需要定义一个数组来存放地震记录,选择ANSYS 窗口顶部菜单Parameters->Array parameters->Define/Edit,在弹出的Array Parameters窗口中点击Add 按钮,在Add New Array Parameter窗口中输入数组的名称为AC ,行数为NT 个,如图所示。
(44) 下面从数据文件中读入地震时程记录。选择ANSYS 窗口顶部菜单Parameters->Array parameters->Read from file ,在弹出窗口中依次输入将数据读入的数组名称AC ,可以用Browse 选择目标数据文件,最后要给出数据读入的格式(F8.3),可以参考Fortran 相应的文件输入输出要求。
(45) 完成数据读入后就可以进行地震反应分析。由于本次地震分析一共要进行1001步,超过了ANSYS 默认的最大1000步限制,因此首先需要进行调整。在ANSYS 的命令输入窗口内,输入以下命令: Finish /CONFIG, NRES, 20000
(46) 进入ANSYS 主菜单Solution->Analysis Type->New Analysis,指定分析类型为瞬态分析Transient ,Solution method 可以选择Full 。
(47) 进入ANSYS 主菜单Solution->Analysis Type->Sol'n Controls,在Solution Controls窗口里面选择Transient 页面,设定瑞雷阻尼的数值。由于阻尼的机理十分复杂,因此不同问题
可能各不相同,这里仅介绍一种阻尼的取法。输入质量阻尼系数为2*DAMPRATIO*FREQ1*2*3.1415926,刚度阻尼系数为 2*DAMPRATIO/(FREQ1*2*3.1415926),FREQ1为结构的第一阶自振频率。
(48) 下面将用一组循环控制语句来定义作用在结构上的加速度并进行计算。读者可以将下面这部分语句用任意编辑器(比如windows 的记事本)输入好以后复制ANSYS 的输入栏中。 *DO,I,1,1001 ! 对变量I 循环1001 ACEL,AC(I),0,0 ! 对结构施加X 方向加速度 TIME,I*0.02 ! 计算时间步长为0.02s OUTRES,ALL,ALL ! 输出所有结果 SOLVE ! 求解 *ENDDO ! 循环结束
(49) 下面介绍适用ANSYS 的时程后处理器TimeHist Postpro 来处理计算结果,在ANSYS 主菜单上选择TimeHist Postpro,这时会弹出时程变量窗口Time History Variables。点击工具栏上第一个绿色加号按钮,添加时程变量。在Add Time-History Variable窗口中选择要添加的变量为节点的X 方向位移。
(50) 选择第20号节点,回到时程变量窗口Time History Variables,点击工具栏上第三个按钮,即绘制出节点的位移时程曲线如图
*SET,NT,500 ! 假如有500个地震波数据点
*SET,DT,0.02 ! 每个地震波数据点之间的时间间隔是0.02
*dim,AC1,,NT,1 !定义X 方向加速波的数组
!*dim,AC2,,NT,1 ! 定义Y 、Z 方向加速波的数组 如果有的话
!*dim,AC3,,NT,1
*vread,AC1(1),elcentro_EW,txt,,JIK,1,NT !读入X 方向地震波文件(elcentro_EW.txt)到数组
(F16.2)
!*vread,AC2(1),elcentro_NS,txt,,JIK,1,NT !读入Y 、Z 方向地震波文件、如果有的话
!(F16.2)
!*vread,AC3(1),elcentro_EW,txt,,JIK,1,NT
!(F16.2)
*DO,I,1,NT !加载求解
ACEL,AC1(I),AC2(I),AC3(I)
TIME,I*DT
SOLVE
!************读入地震波数据************
*DIM,ELC,ARRAY,1,150,0, , , ! 定义数组
*CREATE,ansuitmp !读入数据
*VREAD,ELC(1,1),'ELC','txt',' ',150, , , , , ,
(e9.3,e11.3)
*END
/INPUT,ansuitmp
!****************求解****************
FINI
allsel
/SOLU
!eqslv,pcg,1e-4
ANTYPE,4 !指定分析类型为瞬态动力学分析
TRNOPT,full !瞬态动力学分析采用模态叠加法 !**************地震载荷**************
*DO,T,1,150,1 !循环读入地震数据并求解
TIME,0.001*T !设置时间步
KBC,0 !指定载荷为递增载荷
NSUB,1 ! 设定子步数为1
DAMPRATIO=0.05
pi=3.1415 ! 结构的阻尼比
FREQ1=1.0721*2*pi !角频率变圆频率
freq2=1.0927*2*pi
! 通过模态求解得出频率
ALPHAD,2*DAMPRATIO*FREQ1*freq2/(freq1+freq2) !质量阻尼 BETAD,2*DAMPRATIO/(FREQ1+freq2) !刚度阻尼
ACEL,ELC(1,T)/347,, !设定x ,y 方向加速度 ALLSEL !选中所有元素
SOLVE ! 求解
*ENDDO
SA VE ! 保存
FINI
建立acelx 、acely 两个地震波文本(txt ),文本中第一列为时间,第二列为加速度,如果两列之间为两空格,则加速度为负,一个空格则加速度为正,190行,19秒,间隔0.1记录一个值 麻烦你看看错在哪,谢谢
*dim,tjx,array,190,2
*dim,tjy,array,190,2
*create,ansuitmp
*vread,tjx(1,1),ACELX,txt,,jik,2,190
(E9.3,E11.3)
*end
/input,ansuitmp
*create,ansuitmp
*vread,tjy(1,1),ACELY ,txt,,jik,2,190
(e9.3,e11.3)
*end
/input,ansuitmp
! 对于地震波的输入,可以把荷载记录做成文件,利用apdl 的读取功能读入倒数据库中。下面的例子是自己编的一个小文件。修改一下可以更简洁。有用到的朋友自己作一下把。 fini
/config,nres,1000
*dim,aceX,TABLE,3000,1
*dim,aceY,TABLE,3000,1
*dim,aceZ,TABLE,3000,1
*creat,ff
*vread,aceX(1,1),acex,txt,,1
(e16.6)
*vread,aceX(1,0),ACETT,,,1
(e17.6)
ACEX(0,1)=1
*end
/input,ff
*creat,ff
*vread,aceY(1,1),acey,txt,,1
(e16.6)
*vread,aceY(1,0),ACETT,,,1
(e17.6)
ACEY(0,1)=1
*end
/input,ff
*creat,ff
*vread,aceZ(1,1),acez,txt,,1
(e16.6)
*vread,aceZ(1,0),ACETT,,,1
(e17.6)
ACEZ(0,1)=1
*end
/input,ff
!地震波时程记录分成了3个文件,每个文件是一列。分别记录x,y,z 方向的加速度。acett 是时间记录。
这样就可以把加速度记录读取倒ansys 数据库中作为数组。
也可以把加速度记录做成一个文件,这样程序就简单多了。大家可以试看看修改一下。
下面是计算部分语句:
/SOLU
ANTYPE,trans
!求解其自己选了
TM_START=0.01
TM_END=15.00
TM_INCR=0.01
*DO,TM,TM_START,TM_END,TM_INCR
TIME,tm
alpha,
BETAD,
ACEL,acex(tm),acey(tm),acez(tm)
SOLVE
*ENDDO
fini
加载地震波的命令
/solu
outres,basic,all !什么意思?
nsel,all !什么意思?
alphad,0.0
betad, 0.04872
anty,trans
time,1e-6
t=0.02
*do,n,1,2500
acel,aa (n)
time,t
t=t+0.02
solve
save
*enddo
fini
我用以上程序加载地震波怎么在图形窗口中显示只加在某一个支座出啊?
地震波应该是加在所有地面上的支座上啊. 或者说是一个平面上
ACEL 加载是不是不能指定加载点, 而是把惯性荷载直接加在整个结构上?
就想地震波输入一样, 是不是不用指定加载点?
看另外一个程序:
/solu
outr,all,all !什么意思?
anty,trans
time,1e-6
t=0.02
*do,n,1,444
acel,,aa (n)
lswrite,n
time,t
t=t+0.02
*enddo
lssolve,1,444
fini
而用下面这个加载则图形窗口好象显示是加在Y 方向的荷载
怎么控制加载方向和加载点啊? 是不是不用指定加载点
那为什么循环加载时图形窗口的ACEL 红色箭头又固定在某一支左上呢?
outr,all,all !什么意思?
outres,basic,all !结果输出控制,具体去看帮助吧。
nsel,all !选择所有的node
acel 是指惯性力,他的单位是加速度的单位(m^2/s), 他的大小是和质量有关系的(F=m*a)。你看到的在一个支座处的箭头,其实不是一般力,而是惯性力,他并不是加在支座处,而是画在了坐标圆点上了,其作用是充满了整个空间的。所以我觉得惯性力实际上应该叫惯性场,和磁场一样,不需要物体接触就能作用。重力场也是惯性场的一种。
加载地震荷载的时候和你想的不一样,不是加在基础上的,而是加在你所分析的对象上的。比如,地震加速度是向左的,那么你加向右的acel 就可以起道同样的效果,相对运动的原理嘛。
但谱分析的时候就不一样了,他默认的都是加在支座上的。
请教大侠, 在结构分析中, 如果前面已经定义了重力加速度, 在后面用DO 循环时要重新定义重加速度吗?
例 (1) *do,t,1,1800,1
time,0.01*t
acel,tsb(1,t),10
solve
*enddo
(2) *do,t,1,1800,1
time,0.01*t
acel,tsb(1,t)
solve
*enddo 应该是哪个?
在parameters/Array parameters/Dfine/edit,中定义的数组后,在加荷载前的GUI 命令为:solution----define loads----apply---functions----read file
定义的数组一定要用英文字母或数字存在ANSYS 的默认目录