C OTTVAG    SOURCE    FD218221  21/06/10    21:15:50     11030          
      SUBROUTINE OTTVAG(XX,SIG,VAR1,NVARI,SS1,NDEF,MCN,
     &           XVAL,SS2,VV3,VAR2,KR2,QV1,QV2,QV3,PWX,
     &           XC,PWY,MCO,MV,IERUT)
*
      IMPLICIT INTEGER (I-N)
      IMPLICIT REAL*8 (A-H,O-Z)
      PARAMETER (TOL=1.D-7)
      DIMENSION XVAL(*),SS1(*),SIG(*),SS2(*)
      DIMENSION VAR1(*),VV3(*),PWX(*),PWY(*)
      DIMENSION DD(6,6),WO1(6),WO2(6),SS3(6)
      DIMENSION KR2(*),QV1(MCN,*),QV2(MCN,*),QV3(*)       
      DIMENSION AA(10,10),BB(10),VAR2(*),XC(*)
*
      IERUT=0
      YOUN  = XVAL(1)
      XNU   = XVAL(2)
      RTRAC = XVAL(3)
          GFTR  = XVAL(4)
      CALL ZERO (PWY,MCN,1)
      CALL ZERO (AA,MCN,MCN)      
      CALL ZERO (VV3,NVARI,1)
      CALL ZERO(DD,6,6)
      GKK = YOUN/3.D0/(1.D0-2.D0*XNU)
      GMU = YOUN/2.D0/(1.D0+XNU)
      DD(1,1) = GKK + 4.D0*GMU/3.D0
      DD(2,2) = DD(1,1)
      DD(3,3) = DD(1,1)
      DD(1,2) = GKK - 2.D0*GMU/3.D0
      DD(1,3) = DD(1,2)
      DD(2,3) = DD(1,2)
      DD(2,1) = DD(1,2)
      DD(3,1) = DD(1,2)
      DD(3,2) = DD(1,2)
      DD(4,4) = GMU
      IF(NDEF.GT.4) THEN
        DD(5,5) = GMU
        DD(6,6) = GMU
      ENDIF
*
      DO 21 KV1=1,MCO
        KV0=KR2(KV1)
        BB(KV1)=PWX(KV0)
        DO IJ=1,NDEF
          WO1(IJ)=0.
          DO IK=1,NDEF
            WO1(IJ)=WO1(IJ)+DD(IJ,IK)*QV2(KV0,IK)
          ENDDO
        ENDDO
        DO 22 KW1=1,MCO
          KW0=KR2(KW1)
          AA(KW1,KV1)=0.
          DO IJ=1,NDEF
            AA(KW1,KV1)=AA(KW1,KV1)+QV1(KW0,IJ)*WO1(IJ)
          ENDDO
 22     CONTINUE
        AA(KV1,KV1)=AA(KV1,KV1)+QV3(KV0)
 21   CONTINUE
      CALL INVMA1(AA,MCN,MCO,KFG)
      IF(KFG.NE.0) THEN
          IERUT = 2
          RETURN
      ENDIF
      DO KV1=1,MCO
        PWY(KV1)=0.
        DO KW1=1,MCO
          PWY(KV1)=PWY(KV1)+AA(KV1,KW1)*BB(KW1)
        ENDDO
      ENDDO
      IF(MV.EQ.1) THEN
        DO KV1=1,MCO
          KV0= KR2(KV1)
        ENDDO
      ENDIF
      DO I=1,NDEF
        WO2(I)=0.
        DO KV1=1,MCO
          KV0= KR2(KV1)
          WO2(I)= WO2(I)+QV2(KV0,I)*PWY(KV1)
        ENDDO
      ENDDO
      DO I=1,NDEF
         IF(MV.EQ.1) THEN
           SS2(I)=SS1(I)
         ELSE
           SS2(I)=0. 
         ENDIF
         DO J=1,NDEF
           SS2(I)=SS2(I)-DD(I,J)*WO2(J)
        ENDDO
      ENDDO
*
       DO 33 KV1=1,MCO
         KV0 = KR2(KV1)
         GO TO (1,2,3,4,5,6,7,8,9,10),KV0
*
 1       CONTINUE
           VV3(1) = PWY(KV1)
           VV3(2) = PWY(KV1)
           GO TO 33
 2       CONTINUE
           VV3(1) = -PWY(KV1)
           GO TO 33
 3       CONTINUE
           VV3(1) = PWY(KV1)
           GO TO 33
 4       CONTINUE
           VV3(3) = PWY(KV1)
           VV3(4) = PWY(KV1)
           GO TO 33
 5       CONTINUE
           VV3(3) = -PWY(KV1)
           GO TO 33
 6       CONTINUE
           VV3(3) = PWY(KV1)
           GO TO 33
 7       CONTINUE
           VV3(5) = PWY(KV1)
           VV3(6) = PWY(KV1)
           GO TO 33
 8       CONTINUE
           VV3(5) = -PWY(KV1)
           GO TO 33
 9       CONTINUE
           VV3(5) = PWY(KV1)
           GO TO 33
 10     CONTINUE
           VV3(7) = PWY(KV1)
 33   CONTINUE
      RETURN
      END
 
