Ansys节点位移提取子程序
ANSYS数据导出:节点、单元、振型
ANSYS数据导出:节点、单元、振型得到节点坐标和单元内包含的节点的程序如下,可以在ANSYS的帮助中找到每一个命令的详细解释。
将下面的程序拷贝到一个文本文件中filename.txt,保存,去掉后缀名TXT,再拷贝到工作目录下。
在命令提示符下输入*use filename,生产一个geomfile.txt文件,打开可以看到里面的数据! Get the coordinates of each node! Get the node list of each element!By:LiuXiaoqin(********************),atnuaa,*get,nodenum,node,,num,max ! 获得节点的数目*dim,nodepos,array,nodenum,3 ! nodepos存放节点的坐标*do,i,1,nodenum,1*get,nodepos(i,1),node,i,loc,x !获得节点的X坐标*get,nodepos(i,2),node,i,loc,y*get,nodepos(i,3),node,i,loc,z*enddo*get,elemnum,elem,,num,max !得到单元的总数目*dim,elemlist,array,elemnum,6 !单元包含的节点列表,指定每个单元包含6个节点,根据情况修改*do,i,1,elemnum,1*do,ii,1,6,1*get,elemlist(i,ii),elem,i,node,ii !获得节点编号*enddo*enddo*cfopen,geomfile,txt !打开文件,写入数据*vwrite,0(F8.0,' Coordinates of each node')*vwrite,sequ,nodepos(1,1),nodepos(1,2),nodepos(1,3)(F8.0,3e16.8)*vwrite,0(F8.0,' Nodes No. of each element')*vwrite,sequ,elemlist(1,1),elemlist(1,2),elemlist(1,3),elemlist( 1,4),elemlist(1,5),elemlist(1,6)(F8.0,6f8.0)*vwrite,0(F8.0)*cfclos获得振型的方法也类似,首先获得模态的个数,然后读取每一阶模态的频率和每个节点的偏移量!从ANSYS中导出模态频率及振型数据!By:LiuXiaoqin(********************),atnuaa,*get,nodenum,node,,num,max*set,tempvar,0*set,modenum,0!获得模态的阶数*do,i,1,100,1*get,tempvar,mode,i,freq*if,tempvar,LT,0.0001,THEN*if,modenum,LT,0.0001,THEN*set,modenum,(i-1)*endif*endif*enddo!*dim,modefqda,array,modenum,2*dim,modeshp,array,nodenum,3*cfopen,modefile,txt*do,i,1,modenum,1*get,modefq,mode,i,freq*get,modeda,mode,i,damp*vwrite,modefq,modeda(2e16.8)set,1,i!获得每个节点的位移*do,ii,1,nodenum,1*get,modeshp(ii,1),node,ii,u,x*get,modeshp(ii,2),node,ii,u,y*get,modeshp(ii,3),node,ii,u,z*enddo*vwrite,sequ,modeshp(1,1),modeshp(1,2),modeshp(1,3) (F8.0,3e16.8)*vwrite,0(F8.0)*enddo*cfclos。
ANSYS提取单元内力的方法
ANSYS提取单元内力的方法ANSYS提取单元或节点内力的方法方法1:节点荷载(List Results→Nodal Loads)方法2:节点合力计算(Nodal Cals→Sum @ Each Node)方法3:单元解中的节点解(List Results→Element Solution→Structural Forces & Moments)方法4:支座反力(List Results→Reaction Solu)方法5:单元表(List Results→Elem Table Data)上述各方法提取的结果关系如下:(1)方法1和方法2提取的结果完全相同,但结果为0的项在方法1的结果列表中不显示,而方法2的结果列表则会全部显示。
(2)方法3提取的结果是每个单元各节点在该单元中的内力,针对同一节点,将其在各个单元中的内力求和,其累加结果与方法1和2得到的结果一致。
(3)方法4提取的结果只显示有施加位移约束的节点反力,其数值大小与方法1和2得到的结果相差一个正负号,即节点内力和节点反力刚好是一对作用力与反作用力。
(4)方法5提取的结果是单元的内力,如果单元的形函数为线性(如BEAM188单元设置“KEYOPT(3)=0”),则ANSYS会取单元中点作为积分点并将其数值代替单元内的线性变化,因此其输出结果的绝对值等于方法3中对应单元的各节点相应内力绝对值的平均值;如果单元的形函数为非线性(如BEAM188单元设置“KEYOPT(3)=2”),则单元各节点的内力不同,其结果与方法3得到的结果一致。
(5)方法1~4提取的结果都是默认基于整体坐标系的,而方法5提取的结果是基于单元坐标系的,因此提取结果的方向和正负号需特别注意。
有限元中力的方向和结构力学中的方向是有区别的,不论是什么结果坐标系,力的正方向取为对应结果坐标的正方向,弯矩则是对应坐标轴的顺时针为正。
Ansys中节点力提取
Ansys中节点力提取几个问题的说明对于ansys中节点力提取的命令,一般有如下命令可以用,*GET,Par, NODE, N, RF,FX(FY/FZ/MX/MY/MZ)这组命令是我们最开始用的,用来提取节点反力,但是有个缺陷,节点反力只在有约束位置才能提取,如果在结构中任何一个节点处提取此节点所受合力,界面操作有两种方法。
Main Menu>General Postproc>Nodal Calcs>Total Force SumMain Menu>General Postproc>Nodal Calcs>Sum @ Each Node但是执行上面两个操作有个前提,需要选出对应的单元和节点,下面举例说明:如下图:800臂架结构由于要对连接架+塔帽进行单独的详细分析,需要提取旋转架与塔帽连接处铰点对塔帽的作用力。
而且为了在详细模型中施加载荷的时候方便,提取结果的坐标系需要是X向沿着主臂的局部坐标系,见示图1。
运用Main Menu>General Postproc>Nodal Calcs>Total Force Sum 或者Main Menu>General Postproc>Nodal Calcs>Sum @ Each Node这两个操作可以实现。
下面就这两个操作的的结果进行比较。
就如上模型,研究塔帽和旋转架连接左侧铰耳处受力提取,见示图2。
将塔帽上与此铰点相连接的两个单元选出来,选择此节点,见示图3。
读取结果文件,设置结果坐标系为要求的局部坐标系(文件中为局部坐标系11)。
执行Main Menu>General Postproc>Nodal Calcs>Total Force Sum,选取Active Rsys,结果界面如下:执行Main Menu>General Postproc>Nodal Calcs>Sum @ Each Node,结果界面如下:从结果界面上可以看出,了;两个结果界面中显示的结果来看,“结果显示1”与“结果显示3”的结果数据相同,而“结果显示2”与其他两个在在力的显示数据上相同,而矩的显示数据上并不相同。
ANSYS命令流提取方法
你的模型是自己建立的还是在其他地方建立的?如果是在ansys里面建立的,就会有你的命令流!大概有三种方式可以提取:
1,在工作目录里面后缀为.log的文件里面自动保存了你的所有操作,当然包括命令流了,可以用记事本打开查看,估计你得有基本的命令流常识,不然看不懂,下同!
2,1楼说的也是一种;应该是在Main Menu>Preprocessor>Session Editor这样的GUI路径,打开以后可以使用ctrl+A全选,然后再ctrl+c复制,这样就复制了这里面的命令流,记住要使用键盘,复制好了以后就可以建立一个记事本,然后这时候粘贴就行了,保存记事本即可!
3,还有一种是通过一个命令:
命令是:LGWRITE, Fname, Ext, --, Kedit
GUI是:Utility Menu>File>Write DB Log File (用户名就是Fname,生成文件后缀就是ext,自己定义,比如LGWRITE,me,txt,就生成了文件me.txt,里面包括了你在这个模型已经操作的命令流)
这个命令在默认情况下与第一种方法生成的基本上一样,而且是单独的一个案例的命令,在第一种方法里面,如果你没有及时清除你的工作空间里面的所有的文件,可能是命令流的一种累加,包括了你操作了的好几个的案例、也就是例子的命令流,可能需要你去分辨了;而且第三种方法还可以对命令流里面进行简单的筛选,当然是你要熟悉这个命令以后,不然默认就行。
ANSYS结果提取
ANSYS结果提取壳单元内力提取按坐标选择截面上节点,如果为杆中间截面,再选择与节点相关的截面一侧的单元,再选择计算弯矩的节点及希望计算反力用的坐标系,然后计算nsel,s,node,,nodefesln,s,esel,r,type,,1rsys,11spoint,11737fsum,rsys*get,RESULT(1),FSUM,0,item,FZ*get,RESULT(2),FSUM,0,item,FX*get,RESULT(3),FSUM,0,item,FYnsel,all*dim,JMneili,array,66,6*do,i,1,11*do,j,1,6csys,i*10+jspoint,,0,0,0nsel,s,loc,z,0,0.4esln,s,1nsel,s,loc,z,0fsum*get,JMneili(i*6-6+j,1),fsum,,item,fx !将fsum的结果赋值*get,JMneili(i*6-6+j,2),fsum,,item,fy*get,JMneili(i*6-6+j,3),fsum,,item,fz*get,JMneili(i*6-6+j,4),fsum,,item,mx*get,JMneili(i*6-6+j,5),fsum,,item,my*get,JMneili(i*6-6+j,6),fsum,,item,mz*enddo*enddo*status,JMneili在ansys中获取变形后所有节点坐标allsel !选择所有*cfopen,'r_out','txt', !定义输出文件名*get,minnum,node,0,num,min !取最小节点编号*get,enum,node,0,count !取节点数目*do,i,1,enum,1 !循环开始*vwrite,minnum,NX(minnum),NY(minnum),NZ(minnum),ux( minnum),uy(minnum),uz(minnum)!将节点坐标及变形值写入文件中(F8.0,tl1,' ','(',f6.4,',',f6.4,',',f6.4,')',' x',f15.12,'x y',f15.12,'y z',f15.12)minnum=ndnext(minnum) !取下一个节点*enddo !循环结束从ansys结果文件导出dat文件的方法以输出结点10数据为例来说明一下,采用的是命令流的形式:/post26file,truss,rst ! 指明从哪一个结果文件中读取数据nsol,2,10,u,z ! 结点10的z方向的位移输出deriv,3,2,1,,v10 ! 结点10的z方向的速度*dim,d,,n,3 ! 定义数组n需要给出具体的数值vget,d(1,1),1 ! 存储时间向量vget,d(1,2),2 ! 存储位移向量vget,d(1,3),3 ! 存储速度向量! 以下程序段是上面三个数值结果的导出*create,temp*cfopen,truss,dat*vwrite,d(1,1),d(1,2),d(1,3)(f10.6,' ',f10.6,' ',f10.6)*cfclos*end/input,tempfini! 完成操作以后,所需要的数值结果就存储到工作目录的w.dat文件。
(完整版)ansys怎样提取某个节点的应力和应变
ansys 怎样提取某个节点的应力和应变?时间:2010-11-14 来源:网络浏览次数: 次1. 最简单的办法是使用NSORT,打印出结果,可以通过控制使其输出到文件2. 使用apdl能复杂一点,下面是以前经常用的一段命令流,参考着修改一下吧*CREATE,GET_node_inf,mac,*GET,Nnod,NODE,0,COUNT !获取所选择的节点总数*DIM,S_Xyz,ARRAY,NNOD,5 !定义1个数组存放数据*GET,Nd,NODE,0,NUM,MIN !获取最小的节点编号*DO,I,1,Nnod,1S_Xyz(I,1)=Nd !将节点列表放数组第1列S_Xyz(I,2)=NX(Nd) !节点的X坐标放数组第2列S_Xyz(I,3)=NY(Nd) !节点的Y坐标放数组第3列S_Xyz(I,4)=NZ(Nd) !节点的Z坐标放数组第4列!*GET,S_Xyz(I,5),NODE,ND,S,EQV !节点的von mises值放数组第5列*GET,S_Xyz(I,5),NODE,ND,U,SUM !节点的总变形值值放数组第5列Nd=NDNEXT(Nd) !读出下一个节点编号*ENDDO*END*CREATE,OUT_node_inf,mac,*CFOPEN,node_info,txt,,*VWRITE,S_Xyz(1,1),S_Xyz(1,2),S_Xyz(1,3),S_Xyz(1,4),S_Xyz(1,5)(F10.0,3F15.4,E15.5)*CFCLOS*ENDGET_node_infOUT_node_inf/delete,GET_node_inf,mac/delete,OUT_node_inf,mac另附1.先对节点的值进行SORT,在提取最大的值即可。
最大应力节点编号及其数值的提取:ALLSELNSORT,S,EQV,0,0,ALL*GET,MAX_SEQV,SORT,0,IMAX*GET,MAXSEQV,NODE,MAX_EQV,S,EQV依次类推,可以最大应变节点编号及其值数值的提取:ALLSELNSORT,EPTO,EQV,0,0,ALL*GET,MAX_EPTOEQV,SORT,0,IMAX*GET,MAXEPTOEQV,NODE,MAX_EPTOEQV,S,EQV 最大位移节点编号及其数值的提取:ALLSELNSORT,U,SUM,0,0,ALL*GET,MAX_U,SORT,0,IMAX*GET,MAXU,NODE,MAX_U,U,SUM2.如把所有的节点应力应变数值提取然后找最大值*GET,NUMALL,NODE,0,COUNT*GET,NUMSTART,NODE,0,NUM,MINSMAX=0INUSE=NUMSTART*DO,I,1,NUMALL,1*GET,SSUM,NODE,INUSE,S,EQV*IF,SMAX,GE,SSUM,THENSMAX=SMAX*ELSEIF,SMAX,LT,SSUM,THENSMAX=SSUM*ENDIFINUSE=NDNEXT(INUSE)*ENDDO3.首先在窗口上显示应力应变云图,然后利用GET命令得到最大值。
Ansys中节点力提取
Ansys中节点力提取几个问题的说明对于ansys中节点力提取的命令,一般有如下命令可以用,*GET,Par, NODE, N, RF,FX(FY/FZ/MX/MY/MZ)这组命令是我们最开始用的,用来提取节点反力,但是有个缺陷,节点反力只在有约束位置才能提取,如果在结构中任何一个节点处提取此节点所受合力,界面操作有两种方法。
Main Menu>General Postproc>Nodal Calcs>Total Force SumMain Menu>General Postproc>Nodal Calcs>Sum @ Each Node但是执行上面两个操作有个前提,需要选出对应的单元和节点,下面举例说明:如下图:800臂架结构由于要对连接架+塔帽进行单独的详细分析,需要提取旋转架与塔帽连接处铰点对塔帽的作用力。
而且为了在详细模型中施加载荷的时候方便,提取结果的坐标系需要是X向沿着主臂的局部坐标系,见示图1。
运用Main Menu>General Postproc>Nodal Calcs>Total Force Sum 或者Main Menu>General Postproc>Nodal Calcs>Sum @ Each Node这两个操作可以实现。
下面就这两个操作的的结果进行比较。
就如上模型,研究塔帽和旋转架连接左侧铰耳处受力提取,见示图2。
将塔帽上与此铰点相连接的两个单元选出来,选择此节点,见示图3。
读取结果文件,设置结果坐标系为要求的局部坐标系(文件中为局部坐标系11)。
执行Main Menu>General Postproc>Nodal Calcs>Total Force Sum,选取Active Rsys,结果界面如下:执行Main Menu>General Postproc>Nodal Calcs>Sum @ Each Node,结果界面如下:从结果界面上可以看出,了;两个结果界面中显示的结果来看,“结果显示1”与“结果显示3”的结果数据相同,而“结果显示2”与其他两个在在力的显示数据上相同,而矩的显示数据上并不相同。
ansys力位移曲线
在ANSYS中,生成力位移曲线需要进行以下几个步骤:
1.构建模型:在ANSYS中,首先需要建立一个模型,包括模型的几何形状、材料属性和加载情况等。
2.定义材料属性:在ANSYS中,需要定义材料的弹性模量、泊松比等参数。
3.施加约束和载荷:根据实际情况,对模型施加约束和载荷,例如固定支撑、压力、温度等。
4.进行求解:选择适当的求解器进行求解,例如线性静态分析、非线性分析等。
5.提取结果:在求解完成后,可以通过ANSYS的后处理功能提取力位移曲线。
在后处理中,可以选择需要提取的节点或单元,然后查看其位移和
力的变化情况。
6.绘制曲线:将提取的位移和力数据导入到绘图软件中,例如Excel或Matlab等,然后绘制出力位移曲线。
通过以上步骤,就可以在ANSYS中生成力位移曲线,从而对材料的力学性能进行评估。
三、9、访问ANSYS数据库的子程序
ANSYS UPFs二次开发教程师访pomato157300@中国矿业大学力学与建筑工程学院力学系三、9、访问ANSYS数据库的子程序(1)选择或获得节点及单元的子程序● ndnext:获得下一个已被选择的节点的节点号。
● ndprev:获得前一个选择的节点的节点号。
● ndnxdf:获得下一个已定义节点的节点号。
● ndsel:选择节点、反选节点、删除节点或反转节点的选择状态。
● elnext:获得前一个已被选择的单元的单元号。
● elprev:获得前一个已被选择的单元的单元号。
● elnxdf:获得下一个已定义单元的单元号。
● elsel:选择单元、反选单元、删除单元或反转单元的选择状态。
(2)节点信息相关子程序● ndinqr:获得节点相关的信息。
● getnod:输入节点号,返回节点的坐标及转角。
● putnod:给定节点的坐标及转角坐标,以给定的节点号存储该节点。
● ndgall:输入节点号,函数返回该节点的x,y,z坐标及转角坐标,还可返回节点状态信息(是否已被定义,是否已被选择)。
● ndspgt:获得单元某一节点的节点求解结果。
(3)单元特征相关子程序● elmiqr:获得单元相关的信息。
● elmget:获得单元特征和单元的节点。
● elmput:存储单元特征和节点数。
● etyiqr:获得某一单元类型的数据项。
● etyget:获得单元类型信息。
● etyput:存储单元类型数据。
● echrtr:获得单元特征信息。
● etysel:选择单元类型、反选单元类型、删除单元类型或反转单元类型的选择状态。
● mpinqr:获得材料特性信息。
● mpget:获得材料特性表。
● mpput:存储材料特性表。
● mpdel:删除材料特性表。
● rlinqr:获得实常数集的相关信息。
● rlget:获得实常数数据。
● rlsel:选择或删除实常数集。
● csyiqr:获得坐标系相关信息。
● csyget:获得坐标系数据。
ANSYS提取层间位移命令流
!提取层间位移时程曲线!注意:最大变量号按需输入,必须大于:(层数*4)+(层数*5)+层数! 末尾两行按需输入! 本命令用于提取x向,如需提取y向,请参考第37行注释! cg——层高;cs——层数;xxkj——x向跨距;xxks——x向跨数;! yxkj——y向跨距;yxks——y向跨数! a,b,c,d用于循环和参数控制,不可更改! 本文仅做学习使用,如造成其余不良后果本人概不负责/POST26NUMVAR,200 !定义最大变量号为200cg=3cs=2xxkj=6xxks=1yxkj=6yxks=1*DIM,jdh,ARRAY,4,cs !得到每层4个角柱顶点节点号*DO,i,1,cs,1ALLSELNSLE,S,ALLNSEL,R,LOC,X,0,xxks*xxkjNSEL,U,LOC,X,0.01,xxks*xxkj-0.01NSEL,U,LOC,Y,0.01,yxks*yxkj-0.01NSEL,R,LOC,Z,i*cg*GET,NODE,NODE,,COUNT*GET,MINND,NODE,,NUM,MIN*DO,ii,1,NODE,1jdh(ii,i)=MINNDMINND=NDNEXT(MINND)*ENDDONSEL,U,,,ALL*ENDDOALLSEL,ALLa=2 !得到每个节点的x向位移*DO,i,1,cs,1*DO,ii,2,5,1NSOL,a,jdh(ii-1,i),U,X !如需提取y向,把x改为y即可a=a+1*ENDDO*ENDDOc=a !将每一层的4个节点相加再除以4b=2*DO,i,1,cs,1ADD,a+1,b,b+1ADD,a+2,b+2,b+3ADD,a+3,a+1,a+2ADD,a+4,a+3,,,,,,1/4a=a+4b=b+4*ENDDOd=a !用上一层的位移减去下一层的位移得到层间位移*DO,i,1,cs-1,1ADD,a+1,c+i*4,c+i*8,,,,,-1,1a=a+1*ENDDOPLVAR,c+4,d+1,d+2,d+3,d+4,d+5 !显示每一层的层间位移,如有10层,就一直写到d+9第 1 页PRVAR,c+4,d+1,d+2,d+3,d+4,d+5 !c+4不能变第 2 页。
ANSYS积分法和节点位移法求解应力强度因子附命令流
K I = √2π K II = √2π 其中: G为剪切模量;
G ∆v 1 + κ √r G ∆u 1 + κ √r
κ为材料常数,对于平面应力问题,取
3−������ 1+������
;
∆u为裂纹面在某点处的水平相对位移; ∆v为裂纹面在某点处的垂直相对位移。
图 1-6
位移法图解
根据断裂力学对于三种裂纹的定义,当∆v>0 时,K I 为正,裂纹上下面相对 位移为顺时针为正,即顺时针时,∆u>0,K II 为正;反之为负。理论上,当取上 下裂纹面同一位置的点,当该点趋向于裂尖时,结果更精确,本算例取奇异单元 上 1/4 处的节点的位移进行计算,计算模型同上。 首先,先对有限元模型进行求解,然后进入到后处理层,求出在局部坐标系 系下,所处裂纹上下面的奇异单元上 1/4 处节点的水平及竖直位移 ux,uy,然后 求出裂纹面的相对位移∆u、∆v,最后代入上式即可。 计算结果如图 1-7 所示:KI=223.84Mpa*(mm)1/2,KII=217.63Mpa*(mm)1/2。 计算误差分别为:3.1%、0.25%。
FINISH /CLEAR /TITIE,INTERACTIVE INTEGRATION METHOD BY IDUTER-ANSYS /PREP7 /RGB,INDEX,100,100,100, 0 /RGB,INDEX, 80, 80, 80,13 /RGB,INDEX, 60, 60, 60,14 /RGB,INDEX, 0, 0, 0,15 /REPLOT !------------------!UNIFIED UNIT(N,MM) PI=ACOS(-1) *SET,H,80 *SET,W,50 *SET,A,0.12*W *SET,BETA,90-45 *SET,ALPH,(90-BETA)*PI/180 *SET,SIGMA,100 R1=1 R2=2 R3=3 !THE HEIGHT OF MODEL !THE WEIGHT OF MODEL !HALF LENGTH OF THE ANGLED CRACK !THE INCLINED ANGLE OF CRACK ! RADIAN SYSTEM !SIGMA !FIRST ROW OF ELEMENT RADIUS !THIRD ROW OF ELEMENT RADIUS !SIXTH ROW OF ELEMENT RADIUS
ANSYS提取单元内力的方法
ANSYS提取单元或节点内力的方法方法1:节点荷载(List Results→Nodal Loads)方法2:节点合力计算(Nodal Cals→Sum @ Each Node)方法3:单元解中的节点解(List Results→Element Solution→Structural Forces & Moments)方法4:支座反力(List Results→Reaction Solu)方法5:单元表(List Results→Elem Table Data)上述各方法提取的结果关系如下:(1)方法1和方法2提取的结果完全相同,但结果为0的项在方法1的结果列表中不显示,而方法2的结果列表则会全部显示。
(2)方法3提取的结果是每个单元各节点在该单元中的内力,针对同一节点,将其在各个单元中的内力求和,其累加结果与方法1和2得到的结果一致。
(3)方法4提取的结果只显示有施加位移约束的节点反力,其数值大小与方法1和2得到的结果相差一个正负号,即节点内力和节点反力刚好是一对作用力与反作用力。
(4)方法5提取的结果是单元的内力,如果单元的形函数为线性(如BEAM188单元设置“KEYOPT(3)=0”),则ANSYS会取单元中点作为积分点并将其数值代替单元内的线性变化,因此其输出结果的绝对值等于方法3中对应单元的各节点相应内力绝对值的平均值;如果单元的形函数为非线性(如BEAM188单元设置“KEYOPT(3)=2”),则单元各节点的内力不同,其结果与方法3得到的结果一致。
(5)方法1~4提取的结果都是默认基于整体坐标系的,而方法5提取的结果是基于单元坐标系的,因此提取结果的方向和正负号需特别注意。
有限元中力的方向和结构力学中的方向是有区别的,不论是什么结果坐标系,力的正方向取为对应结果坐标的正方向,弯矩则是对应坐标轴的顺时针为正。
ansys etable提取结果
ANSYS etable提取结果etable提取运算结果ansys求解完结束后,会把计算结果保存在结果表中,行是单元的编号,列是计算信息,如节点位移、节点力、应力、应变等。
ETABLE这个命令就是把表中的需要的信息取出来,赋值给某个自定义的向量,再通过*GET命令可以指定某个具体的单元,就可以把该单元的对应计算结果提取出来了。
ETABLE, Lab, Item, Comp命令选项解释:Lab自定义的表名,用于后续命令或输出的标题,最多可使用8个字母,不可与预定义的表名称重复。
默认的表名是Item和Comp项的前四个字母组合而成的8个字母。
如果与用户之前定义的表名相同,本次结果将被包括在同一表中。
最多可定义200个不同的表名。
以下表名是ANSYS预定义的,不可用作用户自定表名:REFL, STAT, 和ERAS. Lab = REFL 以ETABLE的最新选项重写所有ETABLE命令预定义的表,但保留字段将被忽略,这个命令在载荷步改变后重写表时很方便。
Lab = STAT将显示储存的表的值。
Lab = ERAS将删除整个表。
Item选项名称。
常用的选项名称见后表。
某些选项需要栏目名。
Item = ERAS将删除表中的某一栏。
Comp选项的栏目名(如果需要的话。
常用的栏目名见后表。
说明:定义单元值的表以便后续处理。
单元值表可以被认为是工作表,其行代表所有被选择的单元。
其列代表通过ETABLE命令输入表中的单元值。
每一列数据有一个用户定义的名称,用于列表和显示。
将数据输入单元表后,你不仅可以列出和显示你的数据,还可以对数据进行许多操作,例如列相加或列相乘[SADD, SMULT],为安全计算定义允许的应力[SALLOW],或者将一列数据和另一列相乘[SMULT]。
更多的细节请看ANSYS Basic Analysis Guide。
有很多不同类型的数据结果可以被存在单元表中。
例如,许多单元的选项只有一个值(也就是说,每一个单元对应此选项只有一个值单一值的选项包括:SERR, SDSG, TERR, TDSG, SENE, TENE, KENE, JHEAT, JS, VOLU和CENT. 其余的选项是多个值的(也就是说,这些值在单元中是变化的,每个节点有不同的值。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
external ResRdBegin,ResRdSolBegin,ResRdSolEnd,ResRdEnd,
x ResRdDispBegin,ResRdDisp,ResRdDispEnd
integer ResRdBegin,ResRdSolBegin,ResRdDisp
!结果文件中的结果集个数
c ResRdBegin (int,sc,out) - 0, successful other, error in file open
!ResRDBegin 执行情况的判断
if (kerr/=0) go to 999 !判断文件是否读取正确
character*106 dispname
integer dispunit,kerr,iSet,ncumit,kcmplx,lstep,substep,time,k,i,j
character*4 DofLab(MAXDOFSPERNODE)
double precision Disp(MAXDOFSPERNODE)
x MaxNode,NumNode,MaxElem,NumElem,MaxResultSet,
x NumResultSet
character*12 Fname
character*80 Title(5)
character*8 JobName
c lstep (int,sc,in/out) - Load step number 载荷tep of this load step 某一个载荷步的子步
c ncumit (int,sc,in/out) - Cumulative iteration number 累积的迭代号
kerr = ResRdBegin (Nunit,Lunit,Fname,8,Title(1),JobName,
x Units,NumDof,DOF(1),UserCode,
x MaxNode, NumNode, MaxElem, NumElem,
c Lunit (int,sc,in) - Current print output unit (usually 6 <STDOUT>标准输出)
!系统默认的输出设备号是6,表示在显示器上输出
c Fname (ch*(ncFname),sc,in) - The name (with extension) for the file
*deck,ResRdDemo User ansys
program ResRdDemo
c ********** test program for ResRd.F routines *****
3004 format (' UserCode=',i8,' MaxResultSet=',i6,' NumResultSet=',i6)
write (*,3005) MaxNode,NumNode,MaxElem,NumElem
3005 format (' MaxNode=',i6,' NumNode=',i6,' MaxElem=',i6,
write (*,3000) Nunit,Lunit,Fname
3000 format (/' ***** ResRdDemo *****'/
x ' Nunit=',i3,' Lunit=',i3,' Fname=',a) !/号表示换行的意思
x 'file exceeds the currently dimensioned size.'/
x ' DOFs per node on the file =',i5/
x ' DOFs per node dimensioned in ResRdDemo.F=',i5)
kerr = ResRdSolBegin (2,lstep,substep,ncumit,kcmplx,time,
x Title(1),DofLab(1))
c primary function: Read the solution header records 返回结果文件中解集的头记录
!如果是平面问题NumDOF=2
!如果是空间问题NumDOF=3
c DOF (int,ar(*),out) - The DOFs per node 每个结点的自由度
!如果是平面问题则NumDOF(1)=1,NumDOF(2)=2,即x,y
go to 999
endif
write (*,3001) Title(1),Title(2) !打印标题
3001 format (' *** Header'/' Title=',a/' Stitle1=',a)
write (*,3002) JobName, Units, NumDof !打印工作名,单位制,结点自由度数目
!如果是空间问题则NumDOF(1)=1,NumDOF(2)=2,NumDOF(3)=3,即x,y,z
c UserCode (int,sc,out) - Code for this application
c MaxNode (int,sc,out) - Maximum node number used 结点号的最大值
c 3, U.S. Customary - foot(英尺)
c 4, U.S. Customary - inch(英寸)
c 6, MPA
c NumDOF (int,sc,out) - Number of DOF per node 每个结点的自由度数目
!带扩展名的文件名
!结果文件保存后的文件名,可能被更改过
!如果没有更改过则Fname=JobName
c ncFname (int,sc,in) - Number of characters in Fname 文件名包含的字符长度
c output arguments:输出参数
c Title (ch*80,ar(2),out) - Title and First subtitle
c JobName (ch*8,sc,out) - Jobname from file 结果文件保存前的文件名,没有被更改过
c Units (int,sc,out) - 0, unknown 1, SI 2, CSG 单位制
dispunit=20
dispname="Displacement.rst"
open (unit=dispunit,file=dispname,status='unknown')
!新建文件unit=kunit=20,file=kname='Displacement.rst',用来存放每个结点的位移信息
x ' NumElem=',i6)
c ********** Load Sets ********** 载荷集
do iSet = 1,NumResultSet
ncumit = iSet
kcmplx = 0
3002 format (' JobName=',a,' Units=',i3,' NumDof=',i4)
write (*,3003) (DOF(i),i=1,NumDof)
3003 format (' DOF=',10i4)
write (*,3004) UserCode,MaxResultSet,NumResultSet
c MaxResultSet (int,sc,out) - Maximum number of result sets (usually 1000)
!结果集的最大值
c NumResultSet (int,sc,out) - Number of result sets on file
x MaxResultSet,NumResultSet)
c primary function: Open result file and return global information 返回通用信息
c input arguments:输入参数
c Nunit (int,sc,in) - Fortran Unit number for file (ANSYS uses 12)
rewind dispunit !将文件2记录的读写位置定位在文件的起点
!开始读取结果文件中的数据
Nunit = 12
Lunit = 6
Fname = 'file_1.rst'
integer MAXDOFSPERNODE
parameter (MAXDOFSPERNODE=32)
!maxdofspernode:允许每个结点的最大自由度数量
integer Nunit,Lunit,Units,NumDof,DOF(MAXDOFSPERNODE),UserCode,
if (NumDof>MAXDOFSPERNODE) then !判断结点的自由度数目是否超过设定的最大值
write (*,9100) NumDof,MAXDOFSPERNODE
9100 format (/' *** ERROR ***'/' Number of DOFs per node on the ',
c input arguments: