找回密码
 注册
12
返回列表 发新帖
楼主: lishuqing

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

[复制链接]
 楼主| 发表于 2005-5-13 19:19:39 | 显示全部楼层

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

2005-5-13
根据你的建议,修改原程序如下:
记为1程序
!******************************
!单元生死,分层计算受力场
! J积分法计算KI:
!    读入crack-J-path, 定义路径
!     读入crack-J-cacul, 完成KI计算
!*******************************
N=3                         !层数      
M=15                         !层单元数
E=30e6                       !弹性常数
v=0.3
/SOL
ANTYPE,4
TRNOPT,FULL
LUMPM,0
/SOLU
ESEL,ALL
*DO,J,1,N,1
*IF,J,EQ,1,THEN
      ANTYPE,STATIC,NEW
    *ELSE
      ANTYPE,,REST
      PARRES, NEW, PARAFILE, DAT                   !读取数据文件
    *ENDIF
TIME,J
NSUBST,20,100,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             !显示载荷标量和边界条件   
/PBC, ALL, ,1
/REP
ESEL, ALL
/SOLU
SOLVE
J=J+1
PARSAV, ALL, PARAFILE, DAT                     !存储数据文件
/INPUT,';CRACK-J-PATH';,';LOG';,';G:\ANSYS WORK FILE\';,, 0     !
/INPUT,';CRACK-J-CACUL';,';LOG';,';G:\ANSYS WORK FILE\';,, 0   !读入文件,进入/post1计算
VALUEKI (1,J)=KI
VALUEKI (2,J)=(KI-1.0249)/1.0249
/SOLU  
SFEDELE, C1, ALL, PRES                   !层卸载
SFEDELE, C2, ALL, PRES
EKILL, C1                              !杀死层单元
EKILL, C2
*ENDDO
!************************************************
 楼主| 发表于 2005-5-13 19:22:43 | 显示全部楼层

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

由1程序,在时间上是连接的了,很棒。但有一点,我不是太明白,PARSAV 用以存储当前计算结果于文件里,PARRES用以从结果文件里读取数据,并由此继续计算下一步,但这一句J=J+1是什么意思呢?
另外,我是用VALUEKI数组来记录KI每个时间点上的值的,结果查看一下,VALUEKI里只保留最后的KI值,前面的就都又被0覆盖了(其初值为0)。就好象每次赋值的同时也对前面的用0更新了。看看help 文件,PARRES是会取代原变量的。是不是这个原因呀?PARRES的lab 项只有两个,我都试了试,结果都一样,VALUEKI数组只留有最后一个值。
我把这一句去掉,得到新的2程序。在运行时,时间还是连接的,但是,从第二次循环开始,不能正常加载了,从它显示的载荷和边界条件来看好像根本就没加载上。看来这么简单一句,还是来头不小的。
还有,你是用PARSAV, PARRES来存取数据的,好像没又进入到/post1里。但在/input 后还是得进入/post1的。这样,/solu和/post1交替并没影响计算时间的连续性。那么,我是不是可以通过前面用到的set来直接读取载荷步结果来的到数据,而不用反复的存和取呢?set 也是在/post1 里完成的。
今晚试试。下次再来汇报情况。
 楼主| 发表于 2005-5-13 19:23:51 | 显示全部楼层

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

    最后,谢谢你给的程序,让我又知道了两个原来这么重要的命令。你们的经验很丰富,又愿意帮助像我们这样的新手,我们是可以进步更快的了。多多吸取你们的经验,向你们学习。
 楼主| 发表于 2005-5-13 19:39:26 | 显示全部楼层

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

哦,倒还忘了,我想用的是动态分析方式,我把static改为4,也是没问题的。
发表于 2005-5-13 19:42:57 | 显示全部楼层

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

不行,你的程序太乱了
你那个杀死的步骤没处理好
 楼主| 发表于 2005-5-14 18:38:44 | 显示全部楼层

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

2005年5月14日星期六
下面向你汇报情况:
按我得思路修改程序如下,
!!*********************************
!通过rest来避开/post1和/solu的矛盾,
!    实现载荷步计算时间的连续性
!    避开parres对定义数组的重复替代
!    实现对KI,J的计算与层的推进的同步
!******************************
N=5
M=15
ESEL,ALL
/SOLU
OUTRES,ERASE
OUTRES,ALL,ALL        !保留所有计算子步结果
*DO,J,1,N,1
  *IF,J,EQ,1,THEN
      ANTYPE, 4, NEW        !第一步设定动态分析
    *ELSE
     ANTYPE,, REST, J-1,       !后续步从前一步的最后子步开始启动计算
  *ENDIF
  TIME,J                  !设定该步的末端时间
  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\';,, 0     !读入相关文件求解
/INPUT,';CRACK-J-CACUL';,';LOG';,';G:\ANSYS WORK FILE\';,, 0
VALUEKI(1,J)=KI
VALUEKI(2,J)=(KI-1.0249)/1.0249
/SOLU  
SFEDELE,C1,ALL,PRES         !层卸载
SFEDELE,C2,ALL,PRES
EKILL,C1
EKILL,C2                     !杀死层单元
  !FINISH
*ENDDO
!*********************************************
结果所有时间点上的KI值都能留存在VALUEKI数组里。这是我想要的。
 楼主| 发表于 2005-5-14 18:52:52 | 显示全部楼层

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

下面引用由freddieaid2005/05/13 07:42pm 发表的内容:
不行,你的程序太乱了
你那个杀死的步骤没处理好
恳请大侠再具体一些好吗?我是新手,好多编程技巧和规则不懂的。行行好吧,折磨死人了。
 楼主| 发表于 2005-5-15 23:04:49 | 显示全部楼层

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

我应改如何修改那个杀死的步骤,以提高程序的性能呢?
请诸位热心人多多指教,不胜感激!!!!
发表于 2005-5-16 01:52:45 | 显示全部楼层

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

lishuqing兄弟,我总觉得你把简单问题复杂化了
 楼主| 发表于 2005-5-16 23:13:10 | 显示全部楼层

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

freddieaid 老大哥,请不要把复杂问题简单化好吗?在你看来简单的东西,在一些人--至少在我--看来怕也是不简单的了。
我说过,我是新手,很多东西都是没你学的那么透的。我就是希望能得到你和对此感兴趣的朋友的指点。大家在一块交流吗。我们能不能把问题和回答都表达地尽量直接与明确些呢?请照顾我们之间的不可避免的差距。
你的指点让我不知如何去下手。
我希望我接到的问题直接、明确,当然我对我力所能及的问题的回答也尽量做到直接、明确(尽管我的表达能力,和对ansys的了解也不怎么样),让别人一看就至少大概知道如何理解我的意思,如何去进一步尝试。
我们既不要把复杂问题简单化,也不要把简单问题复杂话好吗?目的就是要让对方懂,而不是只要自己懂就行了。
当然,如果诸位觉得我的邀请还不诚恳,我的尝试还不努力,我想我只有两句话:一句,我尽力了;二句,请告诉我如何改进呢?
我想,交流,不仅是知识上的。也说说心里话吗。对吧。
发表于 2005-5-20 13:12:44 | 显示全部楼层

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

我想吧,反正你的后处理与计算根本就没什么关系,没必要这么复杂啊
先把计算完成后,在进入后处理提取结果反而容易点
另外,我觉得在计算前将需要杀死的单元先选择好比较合乎习惯
呵呵,就是交流
 楼主| 发表于 2005-5-20 21:30:18 | 显示全部楼层

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

是这样的,我是想先简单点的搞好在逐步添加别的另需的要求和功能.我不仅是想的到J这个值的时间变化情况,还想进一步尝试去添加判据以模拟裂纹动态扩展的情况.显然,solve与J计算是得同步的:solv后计算J ,再循环判断是否扩展,若扩展,就还得对裂纹处理,处理后还得重新solv,计算,判断,如此循环,直到判据不扩展,才能进入下一层的工作呀?这个思路还可行吧?
在杀死单元处,你说的对,我是直接把待杀死单元取来杀掉的,这是我得疏忽,谢谢你帮我指出来.
当然,现在我得工作是还简单得,但是我也是在刚学的呀,得一步一步来的,不可能一步到底是吧?当然,如果大哥你或任何谁愿意帮我,让我一步到底做好它,那我当然会高兴的怕连觉也睡不着的,感激不尽呀!!!!
所以,我一方面我得一点一点学从简单的起步,一方面又得多少考虑后面的.我现在也说不请我得这个想法是否合理,不过倒还觉得有个目标了,去弄些东西或许会学的更快些,也是件有点挑战的吧--至少对于我是这样的.
我想,没有交流解决不了的问题的.所以我来论坛,所以我愿意,也很高兴与你,与大家交流,学习.
发表于 2005-5-20 23:57:13 | 显示全部楼层

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

呵呵,明白。
交流=进步
希望论坛蒸蒸日上啊
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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