| 查看: 4939 | 回复: 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”.是不是场变量的子程序里,不能用双精度来计算呢? |
» 猜你喜欢
三甲基碘化亚砜的氧化反应
已经有4人回复
请问下大家为什么这个铃木偶联几乎不反应呢
已经有5人回复
请问有评职称,把科研教学业绩算分排序的高校吗
已经有5人回复
孩子确诊有中度注意力缺陷
已经有12人回复
2025冷门绝学什么时候出结果
已经有3人回复
天津工业大学郑柳春团队欢迎化学化工、高分子化学或有机合成方向的博士生和硕士生加入
已经有4人回复
康复大学泰山学者周祺惠团队招收博士研究生
已经有6人回复
AI论文写作工具:是科研加速器还是学术作弊器?
已经有3人回复
论文投稿,期刊推荐
已经有4人回复
硕士和导师闹得不愉快
已经有13人回复
» 本主题相关价值贴推荐,对您同样有帮助:
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














回复此楼