| 查看: 4945 | 回复: 1 | |||
| 当前只显示满足指定条件的回帖,点击这里查看本话题的所有回帖 | |||
[交流]
abaqus中场变量子程序中的单、双精度计算问题已有1人参与
|
|||
|
SUBROUTINE USDFLD(FIELD,STATEV,PNEWDT,DIRECT,T,CELENT, 1 TIME,DTIME,CMNAME,ORNAME,NFIELD,NSTATV,NOEL,NPT,LAYER, 2 KSPT,KSTEP,KINC,NDI,NSHR,COORD,JMAC,JMATYP,MATLAYO, 3 LACCFLA) C INCLUDE 'ABA_PARAM.INC' DOUBLE PRECISION a,b,c,d,e,f C CHARACTER*80 CMNAME,ORNAME CHARACTER*3 FLGRAY(15) DIMENSION FIELD(NFIELD),STATEV(NSTATV),DIRECT(3,3), 1 T(3,3),TIME(2) DIMENSION ARRAY(15),JARRAY(15),JMAC(*),JMATYP(*), 1 COORD(*) C C Absolute value of current strain: CALL GETVRM('POR',ARRAY,JARRAY,FLGRAY,JRCD,JMAC,JMATYP, 1 MATLAYO,LACCFLA) P1=ARRAY(1) CALL GETVRM('TEMP',ARRAY,JARRAY,FLGRAY,JRCD,JMAC,JMATYP, 1 MATLAYO,LACCFLA) T1=ARRAY(1) C field variable FIELD(1)=P1 C state variable C IF(P1.GE.7.5*(10**6).AND.T1.GE.308)THEN DOUBLE PRECISION c,e,f ,DOUBLE PRECISION a,b,c,d,e,f ,END IF(T1.GE.284.0D0.AND.T1.LE.292.0D0) THEN a=5.0D-4*(T1-273.15D0)*(T1-273.15D0) b=10.0D0**(3.42D-2*(T1-273.15D0)+a+6.4804D0) c=DEXP(-9400.0D0/T1) d=(b-8.0D6)/1.0D6 e=(0.585D0*(10.0**1.0D13))*c*d f=0.5D0*(1.0D0-e)*0.4D0 STATEV(1)=(0.6*46*1.0D6+9313.264*1.0D6*f)/1.0D6 END IF END C If error, write comment to .DAT file: C IF(JRCD.NE.0)THEN C WRITE(6,*) 'REQUEST ERROR IN USDFLD FOR ELEMENT NUMBER ', C 1 NOEL,'INTEGRATION POINT NUMBER ',NPT C ENDIF C RETURN END 这是本人编的一个子程序,在默认的单精度条件下去计算,可以顺利过去,可是由于有的数值比较小,超过了单精度的问题,所以都改成了双精度去计算,同样的程序,为什么改成双精度去计算就不好使了呢?出现下面这样的错误提示“A return statement is invalid in the main programm”.是不是场变量的子程序里,不能用双精度来计算呢? |
» 猜你喜欢
之前让一硕士生水了7个发明专利,现在这7个获批发明专利的维护费可从哪儿支出哈?
已经有5人回复
博士读完未来一定会好吗
已经有29人回复
博士申请都是内定的吗?
已经有5人回复
到新单位后,换了新的研究方向,没有团队,持续积累2区以上论文,能申请到面上吗
已经有12人回复
投稿精细化工
已经有4人回复
高职单位投计算机相关的北核或SCI四区期刊推荐,求支招!
已经有4人回复
导师想让我从独立一作变成了共一第一
已经有9人回复
读博
已经有4人回复
JMPT 期刊投稿流程
已经有4人回复
心脉受损
已经有5人回复
» 本主题相关价值贴推荐,对您同样有帮助:
Abaqus的子程序问题
已经有5人回复
ABAQUS中的用户子程序fortran编写问题
已经有4人回复
chen201023
木虫 (正式写手)
- 应助: 0 (幼儿园)
- 金币: 6869.4
- 散金: 80
- 红花: 3
- 帖子: 330
- 在线: 109.8小时
- 虫号: 1311273
- 注册: 2011-05-31
- 专业: 金属结构材料

2楼2020-05-15 14:35:53













回复此楼