Fortran Abaqus子程序UVARM-1.#在Windows&;中查找-世纪之南6.6

Fortran Abaqus子程序UVARM-1.#在Windows&;中查找-世纪之南6.6,fortran,intel-fortran,Fortran,Intel Fortran,我已经为Abaqus编写了子程序UVARM。程序正在运行,但显示结果 -1.#IND 在窗口和 -nan 在Centos 6.6中 以下是部分脚本: 我无法解决它,但在我看来变量INVT变成sqrt(-1)在下面的代码中。我如何通过只提取真实部分来运行它?下面我想它的结尾是INVT=some实数+SQRT(-some number)。我如何解决这个问题 C Stress tensor: CALL GETVRM('S',ARRAY,JARRAY,FLGR

我已经为Abaqus编写了子程序
UVARM
。程序正在运行,但显示结果

    -1.#IND 
在窗口和

    -nan 
在Centos 6.6中

以下是部分脚本:

我无法解决它,但在我看来变量
INVT
变成
sqrt(-1)
在下面的代码中。我如何通过只提取真实部分来运行它?下面我想它的结尾是
INVT=some实数+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      

请避免在这里使用plz之类的东西。如果你想使用复杂的算术,请声明你的变量并使其复杂。然后把它转换成真实的。谢谢haraldkl,这可能太基本了,但你能在我的例子中显示出来吗。