我为Abaqus编写了子程序UVARM
。程序正在运行但显示结果
-1.#IND
Windows中的和
-nan
在Centos 6.6中。
以下是部分脚本:
我无法解决此问题,但在我看来变量INVT
在下面的代码中变为sqrt(-1)
。如何通过仅提取实部来运行此操作?下面我认为它最终会以INVT = some Real number + SQRT(-Some number)
结束。我该如何解决这个问题?
C Stress tensor:
CALL GETVRM('S',ARRAY,JARRAY,FLGRAY,JRCD,JMAC,JMATYP,
1 MATLAYO,LACCFLA)
JERROR = JERROR + JRCD
SIGMA11 = ARRAY(1)
SIGMA22 = ARRAY(2)
SIGMA33 = ARRAY(3)
SIGMA12 = ARRAY(4)
SIGMA13 = ARRAY(5)
SIGMA23 = ARRAY(6)
C REARRANGE THE STRESS VECTOR *****
C MCT DECOMPOSITION
SIGMAM=MATMUL(MATQM,SIGMAC)
INVT=(SIGMAM(2,1)+SIGMAM(3,1)+
1 SQRT((SIGMAM(2,1)+SIGMAM(3,1))**2-
2 4*(SIGMAM(2,1)*SIGMAM(3,1)+SIGMAM(4,1)**2)))/2
INVS1=SIGMAM(6,1)**2+SIGMAM(5,1)**2
INVS2=0.25*(SIGMAM(2,1)-SIGMAM(3,1))**2+SIGMAM(4,1)**2
C MACAULAY BRACKETS
IF (INVT.LT.0) THEN
INVT=0.0
END IF
SIGMAEFFT=SQRT((BT/BS1)*INVT**2+INVS1+(BS2/BS1)*INVS2)
SIGMAEFFL=SIGMAM(1,1)
C MACAULAY BRACKETS
IF (SIGMAEFFL.LT.0) THEN
SIGMAEFFL=0.0
END IF