找回密码
 注册
Simdroid-非首页
查看: 491|回复: 10

【讨论】如何加子程序?

[复制链接]
发表于 2003-11-17 22:03:56 | 显示全部楼层 |阅读模式 来自 湖北武汉
1、在inp文件上修改加入子程序,可为什么import的时候说“unknown keyword `usersubroutines.`?(vertify里都通过了的。)
2、如果用cae的job里面的general去指定user subroutine files可以吗?
  
目前学习情况是用cae建模和计算,课题需要加用户子程序,可现在还没什么概念,还请各位师兄指点迷津,现在进度很慢,不知如何下手了,拜托,拜托!
发表于 2003-11-17 22:11:10 | 显示全部楼层 来自 上海闵行区

回复: 【讨论】如何加子程序?

Simdroid开发平台
你说的应该是6.X以前的老版本,老版本的子程序和INPUT文件写在一起
在6.X以后的ABAQUS中,
子程序单独作为一个文件,比如your_subroutine.for
然后运行abaqus j=your_input_file user=your_subroutine
  
可以在CAE中指定
发表于 2003-11-18 08:13:54 | 显示全部楼层 来自 北京航空航天大学

回复: 【讨论】如何加子程序?

岂不是和marc学的
发表于 2003-11-18 09:07:39 | 显示全部楼层 来自 日本

回复: 【讨论】如何加子程序?

其实不然。
 楼主| 发表于 2003-11-18 10:36:12 | 显示全部楼层 来自 湖北武汉

回复: 【讨论】如何加子程序?

其实不然?老兄说明白点,偶悟性不够啊!
是不是子程序的格式只能是for啊?现在想知道的是如何加入子程序,能不能有哪位大哥能给我一个例子?(mndeemail@sina.com)
abaqus自带的帮助文档里有吗?就是那种step by step的如何加入子程序的,还有比较加与不加的说明。
我现在用abaqus j=your_input_file user=your_subroutine 加了以后,dat里面老是报错,还请哪位热心的师兄帮个忙!
顺便问一下,有武汉的师兄吗?
发表于 2003-11-18 10:56:51 | 显示全部楼层 来自 江西南昌

回复: 回复: 【讨论】如何加子程序?

Apple-tree wrote:
我现在用abaqus j=your_input_file user=your_subroutine 加了以后,dat里面老是报错,还请哪位热心的师兄帮个忙!
  

检查你的input file and subs,我粘一个urdfil给你,这个sub应该没有问题,只要在
input file中确保有如下语法:
*node file
urdfil文件如下:
      SUBROUTINE URDFIL(LSTOP,LOVRWRT,KSTEP,KINC,DTIME,TIME)
C
      INCLUDE 'ABA_PARAM.INC'
C
      DIMENSION ARRAY(513),JRRAY(NPRECD,513),TIME(2),LRUNIT(2,1)
     1,COORD(3)
      EQUIVALENCE (ARRAY(1),JRRAY(1,1))
      CALL POSFIL(KSTEP,KINC,ARRAY,JRCD)
      OPEN(UNIT=17,FILE='D:\TEMP\F3.DAT')  
     WRITE(17,*) KINC,KSTEP  
      DO 1000 K2=1,10
      DO 100 K1=1,99999
C
      CALL DBFILE(0,ARRAY,JRCD)  
      IF(JRCD.NE.0)  GO TO 110  
      KEY=JRRAY(1,2)
C
      IF(KEY.EQ.107) THEN
      KEL=JRRAY(1,3)
      COORD(1)=ARRAY(4)
      COORD(2)=ARRAY(5)
      COORD(3)=ARRAY(6)
      WRITE(17,120) KEL,COORD(1),COORD(2),COORD(3)  
120   FORMAT(5X,'NODE',I5,5X,'COORD',F20.14,5X,F20.14,5X,F20.14,5X)
      ELSE IF(KEY.EQ.101)THEN  
      KEL=JRRAY(1,3)
      
      COORD(1)=ARRAY(4)
      COORD(2)=ARRAY(5)
      COORD(3)=ARRAY(6)
      WRITE(17,140) KEL,COORD(1),COORD(2),COORD(3)
140   FORMAT(5X,'NODE',I5,5X,'UCOORD',F20.14,5X,F20.14,5X,F20.14,5X)
      ELSE IF(KEY.EQ.102)THEN  
      WRITE(17,130) ARRAY(3),ARRAY(4),ARRAY(5),ARRAY(6),ARRAY(7),
     1 ARRAY(8),ARRAY(9)
130   FORMAT(5X,'NODE',I5,5X,'VELOVITY',F20.10,5X,F20.10,5X,F20.10,
  1 5X,F20.10,5X,F20.10,5X,F20.10,5X)
      END IF
C
100   CONTINUE
1000  CONTINUE
110   CONTINUE
      CLOSE(17)  
      RETURN
      END
发表于 2003-11-18 11:39:13 | 显示全部楼层 来自 日本

回复: 回复: 【讨论】如何加子程序?

Apple-tree wrote:
其实不然?老兄说明白点,偶悟性不够啊!
是不是子程序的格式只能是for啊?现在想知道的是如何加入子程序,能不能有哪位大哥能给我一个例子?(mndeemail@sina.com)
abaqus自带的帮助文档里有吗?就是那种step by step的如何加入子程序的,还有比较加与不加的说明。
我现在用abaqus j=your_input_file user=your_subroutine 加了以后,dat里面老是报错,还请哪位热心的师兄帮个忙!
顺便问一下,有武汉的师兄吗?

  
关于sub的文件后缀,我以前和wjytj兄辩论过。这跟你使用的平台有关,想必大家使用Wintel的居多,因此文件后缀就是for。至于如何调用,你自己列出的command就是正确的。至于你的错误,你应该列出来才好对症下药,我的想像力很差的。
 楼主| 发表于 2003-11-18 13:36:26 | 显示全部楼层 来自 湖北武汉

回复: 【讨论】如何加子程序?

谢谢hxzdavid给我的例子,我再试试看,要是有什么问题我再请教大家。再次谢谢各位的热心帮助!
发表于 2003-11-18 14:21:40 | 显示全部楼层 来自 江苏南京

回复: 【讨论】如何加子程序?

子程序的类别不同,其调用法也会有些不一样,比方说加载方面的DFLUX,它对单元施加不均匀的热载,这样,如果你目的想调用它,只要编好DFLUX命名的子程序并把主inp放在同一目录下并在fortran编译好后,主inp中的*dflux,,,
  element set,bfnu
加一个nu后直接就可以调用到DFLUX的子程序。
与之对应的*dflux施加的均匀体载为:
*dflux,。。。
  element set,bf,1e10
你可以对比一下,bf 与bfnu这点不同就可以调用了!
另一种就是需要你使用user=。。。来调用的,比方说umat,你就需要在material中加入一名user=...来调用对你材料的子程序。。。
个人意见,可能有误,敬请指导!
 楼主| 发表于 2003-11-18 18:53:05 | 显示全部楼层 来自 湖北武汉

回复: 【讨论】如何加子程序?

现在能加子程序了,就是还搞不清楚差别和含义。
 楼主| 发表于 2003-11-18 18:59:10 | 显示全部楼层 来自 湖北武汉

回复: 【讨论】如何加子程序?

正在比较,呵呵!
您需要登录后才可以回帖 登录 | 注册

本版积分规则

Archiver|小黑屋|联系我们|仿真互动网 ( 京ICP备15048925号-7 )

GMT+8, 2024-3-28 17:59 , Processed in 0.052378 second(s), 13 queries , Gzip On, MemCache On.

Powered by Discuz! X3.5 Licensed

© 2001-2024 Discuz! Team.

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