Abaqus子程序UVARM -1。#IND在Windows& -nan in Centos 6.6

时间:2015-09-15 12:13:56

标签: fortran intel-fortran

我为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      

0 个答案:

没有答案