找回密码
 注册
查看: 2597|回复: 27

[求助]时间怎么连接不上

[复制链接]
发表于 2005-5-9 19:06:00 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有账号?注册

x

我写了一个循环程序,每次循环中,设定这一步的终止时间,并通过/INPUT方式读入另一个文件,用来计算断裂J积分,以期望得到J积分值的时间变化曲线。但在计算过程中,每次循环开始,计算时间的起点不是上次循环设定时间,而总是从0开始,时间是连接不上的。我不明白这又是为什么?
我试着单步执行时,时间也是连不上的。我还试过不用/INPUT方式,换用宏,调用子函数方式,计算J值。但,仍是连不上。整了一天,也搞不通。我也没找到程序里面哪里有finish 的命令呀?(在动态分析下,不是只要不finish,计算就是连续的吗?)。
读入文件程序里也没有finish的命令句呀?
还得请各位多多指点,我可一点也摸不清这个坑有多深的。
发表于 2005-5-9 19:34:48 | 显示全部楼层

[求助]时间怎么连接不上

贴上来看看吧,大侠
 楼主| 发表于 2005-5-10 20:20:54 | 显示全部楼层

[求助]时间怎么连接不上

模型已建好,下面是计算程序的主体部分:crack-J-cycle
!******************************
!单元生死,分层计算受力,J积分法计算KI
!   读入crack-J-path,定义路径
!   读入crack-J-cacul,完成KI计算
!*******************************
N=2                          !层数      
M=15                         !层单元数
E=30e6                       !弹性常数
v=0.3
/solu
esel,all
*do,j,1,N,1
  TIME,j
  nsubst,50,200,1
  esel,s,elem,,ceng1(1,j)
  *do,i,1,M,1
   esel,a,elem,,ceng1(i,j)
  *enddo
  CM,C1, ELEM
esel,all
  esel,s,elem,,ceng2(1,j)
  *do,i,1,M,1
   esel,a,elem,,ceng2(i,j)
  *enddo
  CM,C2, ELEM                !层选择
/solu
cmsel,,c1
SFE,c1,3,PRES, ,-0.5641895, , ,
cmsel,,c2
SFE,c2,3,PRES, ,-0.5641895, , ,        !!层加载
esel,,live
/PSF,PRES,NORM,2,0,1      !
/PBF,DEFA, ,1             !
/PIC,DEFA, ,1             !显示载荷标量
!*!Shows boundarycondition (BC) symbols and values   
/PBC,ALL, ,1
/REP
esel,all
/STATUS,SOLU
SOLVE   
/INPUT,';crack-J-path';,';log';,';G:\ANSYS work file\crack\';,, 0    !
/INPUT,';crack-J-cacul';,';log';,';G:\ANSYS work file\crack\';,, 0   !读入文件
value(1,j)=KI
value(2,j)=(KI-1.0249)/1.0249         !保存KI值于数组中
/solu  
SFEDELE,c1,all,PRES                   !层卸载
SFEDELE,c2,all,PRES
ekill,c1                              !杀死层单元
ekill,c2
*enddo
下面是读入的两个程序。
定义积分路径crack-J-path:
!********************
!路径节点,1179,1515,1212,1614,1211,1612,1210,1610,1209,1608,1208,1606,1207,1604,1206,1602,1205,1600,1204,1581,86  ,489 ,158 ,550,157 ,548 ,156 ,546 ,155 ,544 ,154 ,542 ,153 ,540 ,152 ,538 ,151 ,536 ,150 ,477 ,78  
!定义路径jint
/post1
PATH,JINT,41,60,48             !路径节点已存入patharray数组中
*do,i,1,41,1                  
PPATH,i,patharray(1,i)         !循环依次定义路径点
*enddo
!*************************
计算路径的J 积分crack-J-cacul:
!***********************
!路径在程序外事先定义好
!将该程序嵌入单元生死程序,完成与之同步的J 积分计算
!***********************************************
! J积分法,计算KI
!**************************************************
  !E=30e6                      !常数,外部定义
  !v=0.3                       !
  !*CREATE,JIN1                 !输出变量名
  !STINFC                      !函数名,用于内嵌函数
/post1
ETABLE,SENE,SENE              !提取单元应变能
ETABLE,VOLU,VOLU              !提取单元体积
SEXP,W,SENE,VOLU,1,-1         !计算应变能密度W=sene/volu            
PDEF,W,ETAB,W                 !应变能密度映射到路径上
PCALC,INTG,J1,W,YG             !积分,计算J1
*GET,JA,PATH,,LAST,J1          !提取Ja
PDEF,CLEAR                    !清楚原有路径参量
PVECT,NORM,NX,NY,NZ           !定义路径法向向量
PDEF,INTR,SX,SX               !
PDEF,INTR,SY,SY               !
PDEF,INTR,SXY,SXY             !三维应力映射到路径上
PCALC,MULT,TX,SX,NX           ! CALCULATE TRACTION TX
PCALC,MULT,C1,SXY,NY          !   TX = SX*NX + SXY*NY
PCALC,ADD,TX,TX,C1
PCALC,MULT,TY,SXY,NX          ! CALCULATE TRACTION TY
PCALC,MULT,C1,SY,NY           !   TY = SXY*NX + SY*NY
PCALC,ADD,TY,TY,C1
*GET,DX,PATH,,LAST,S         
DX=DX/100
PCALC,ADD,XG,XG,,,,-DX/2      
PDEF,INTR,UX1,UX            
PDEF,INTR,UY1,UY            
PCALC,ADD,XG,XG,,,,DX      
PDEF,INTR,UX2,UX            
PDEF,INTR,UY2,UY            
PCALC,ADD,XG,XG,,,,-DX/2   
C=(1/DX)                      !差分法求一阶导数
PCALC,ADD,C1,UX2,UX1,C,-C   
PCALC,ADD,C2,UY2,UY1,C,-C   
PCALC,MULT,C1,TX,C1         
PCALC,MULT,C2,TY,C2         
PCALC,ADD,C1,C1,C2
PCALC,INTG,J,C1,S            
*GET,JB,PATH,,LAST,J      
JINT=(JA-JB)            
PDEF,CLEAR                 
CON1=E/(1-(v*v))            ! J-TO-KI CONVERSION FACTOR
KI=SQRT(CON1*JINT)           ! CALCULATE KI FROM J
  !*STATUS,KI
!*******************************************
麻烦了!!!!!!
 楼主| 发表于 2005-5-11 18:55:39 | 显示全部楼层

[求助]时间怎么连接不上

freddieaid 大哥呀,你怎么还没来了?我可等你好久了。相关程序已呈上,别就不理我了。
 楼主| 发表于 2005-5-11 18:57:56 | 显示全部楼层

[求助]时间怎么连接不上

如果还有哪里没讲明确,请讲,我会尽快回复。谢谢!!!!
发表于 2005-5-11 20:10:37 | 显示全部楼层

[求助]时间怎么连接不上

呵呵,只能凭感觉说啦
按顺序来讲:
第一步求解完毕,有压力
  SFE,c1,3,PRES, ,-0.5641895, , ,
  SFE,c2,3,PRES, ,-0.5641895, , ,        !!层加载
然后你读入文件
  /INPUT,';crack-J-path';,';log';,';G:\ANSYS work file\crack\';,, 0    !
  /INPUT,';crack-J-cacul';,';log';,';G:\ANSYS work file\crack\';,, 0   !读入文件
  从其中内容看你已经进入后处理了
又进入求解器
   SFEDELE,c1,all,PRES                   !层卸载
   SFEDELE,c2,all,PRES
   ekill,c1                              !杀死层单元
   ekill,c2
第二次循环,又重新加力求解
我的感觉是你得到的结果只有一个荷载步,尽管你定义了循环
而结果步的状态是加了压力,也杀死了c1和c2
程序有点乱


  
 楼主| 发表于 2005-5-11 20:17:02 | 显示全部楼层

[求助]时间怎么连接不上

你的分析结论很对,计算过程就是最终只有一步。但你又是从哪里的出如此准确的结论呢?
 楼主| 发表于 2005-5-11 20:32:19 | 显示全部楼层

[求助]时间怎么连接不上

另外,如果仅仅只把那两行/input,...撤掉,循环在时间上又是连接的了。这个我试过的。这该如何理解?
还有,我应该在哪些地方给我的程序美美容,使她更漂亮点呢?计算的逻辑步鄹?程序语言格式?其它一些必要的命令的加入?另外的细节?
还请大哥指点呀!!!
发表于 2005-5-11 20:46:08 | 显示全部楼层

[求助]时间怎么连接不上

你在循环的最前面加上以下语句试试
*if,j,eq,1,then
  antype,static,new
  *else
    antype,,rest
*endif
 楼主| 发表于 2005-5-12 22:41:39 | 显示全部楼层

[求助]时间怎么连接不上


Freddieaid 老大哥,我想我找到原因了:在/input 的那几个log文件里,是在/post1 里完成对路径的定义和J 积分的计算,在下次循环,又得进入/solu 以完成加载,求解的工作。而在由/post1 转入/solu 同时,系统会自动认为你已完成求解而finish 掉前面的求解工作。所以,就老是循环时,时间连接不起来。这样分析对不对呢?
问题出来了,原因似乎找到了,怎么搞定它呢?感觉还是挺麻烦的。对路经的定义和J 积分计算肯定要进入/post1,要加载,求解又得到/solu里去,而单元生死,逐层的推进的模式是不想改的。这里面好像很矛盾,不知该如何是好。
我还是再把我想完成的工作,更详细的给你讲一讲,也方便你帮我来分析一下。
火箭发动机固体推进剂的燃烧是层面燃烧的,也就是一层一层由表面向里推进,这个用单元生死方法来模拟。固体推进剂一般做成圆桶形状。燃烧由内面开始,外面是与发动机壳体粘一块的。对推进剂燃烧的外层加载压强(暂不考虑温度载荷)。J 积分是为考虑推进剂内的裂纹而加的。暂时也不考虑裂纹的扩展。我想得到的是,在发动机工作过程中,随着推进剂逐层燃烧进去,裂纹周围J 积分值的变化过程是怎样的。
   这其中的矛盾如何化解,还请这位大哥帮我寻思寻思。如果有别的办法,也不妨告诉我,试试别的办法,没准又会好些,条条大道通罗马吗——当然,只要找得到。
谢谢你给我的提示!!
 楼主| 发表于 2005-5-12 22:45:50 | 显示全部楼层

[求助]时间怎么连接不上

我再去试试。
又麻烦你了。
发表于 2005-5-13 00:21:50 | 显示全部楼层

[求助]时间怎么连接不上

呵呵,燃烧我不懂,但我可以说一下求解过程.
如果只有两个荷载步:
  你在循环的最前面加上以下语句
*if,j,eq,1,then
antype,static,new
*else
   antype,,rest
*endif
如果不止两个荷载步:
  在循环的最前面加上以下语句
     *if,j,eq,1,then
       antype,static,new
     *else
       antype,,rest
       parres,new,parafile,dat
     *endif
   在solve命令后加以下语句:
      j=j+1
      parsav,all,parafile,dat

  
 楼主| 发表于 2005-5-13 11:03:17 | 显示全部楼层

[求助]时间怎么连接不上

谢谢你又来了!
昨天晚上看到你的那段程序,我还没来得及试。因为我那时突然想到一个没准可行的解决办法。总的来讲就是把/solu与/post1两部分分开。先安时间time退移仅在/slou下循环求解(其中不包括需在/post1 下的对路径的定义和J 积分计算这两部分),这只要在原程序中仅去掉那两个/input部分就可。求解完成,这才转入/post1里,通过循环,根据时间time ,读取在主体程序内定义的各个time点上的结果,read result,并由这个time的result来计算J积分值。因为是根据time循环read的,当然也就可以的到J随time的变化值,也就是随发动机工作过程的变化情况。
不知上面的描述是否明确,我对ansys的术语还不大了解的,也是刚接触的。
昨晚,试了试,结果还是可以的。那一刻,别提心里多高兴了。我就一直在哼“猪头,猪脑,猪身,猪尾巴。。。。”把舍友都给弄烦了。哈哈!!!

 楼主| 发表于 2005-5-13 11:12:45 | 显示全部楼层

[求助]时间怎么连接不上

近的那段程序我拷走了,下一步就安你的试试,如果整出来,那就可以同步进行了。这样的话,还可以为后面可能别的要求提供方便。毕竟前面我提到的那个办法,尽管可以达到目前的要求,但也难说她的应用的强壮性和通用性。
问题一个一个解决,我也在慢慢的了解ansys了。
谢谢你的每一次帮助!!!
 楼主| 发表于 2005-5-13 19:18:55 | 显示全部楼层

[求助]时间怎么连接不上

下图是我用的模型。上下两端用层状网格,便于一层一层的向内部平形推进。
  
集中区域有一个半裂纹。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

快速回复 返回顶部 返回列表