SUBROUTINE SIM4DI(KDIM,XX,JX,GX) 1,2

      IMPLICIT NONE
      INTEGER KDIM
      INCLUDE 'champ.cdk'
      INCLUDE 'chinc.cdk'

      REAL JZ,JS,XX(KDIM),GX(KDIM),JX
      COMPLEX ZD,SD

      EXTERNAL LININC,ADJINC

      NCO=-1
      DO IKX=1,IKTX
      DO IKY=1,IKTY
        IF (L(IKX+KTX,IKY).EQ.1) THEN
         NCO = NCO + 2
         ZO(IKX,IKY) = CMPLX(XX(NCO),XX(NCO+1))
        ELSE
         ZO(IKX,IKY) = CMPLX(0.,0.)
        ENDIF
      ENDDO
      ENDDO
      DO IKX=1,IKTX
      DO IKY=1,IKTY
        IF (L(IKX+KTX,IKY).EQ.1) THEN
         NCO = NCO + 2
         SO(IKX,IKY) = CMPLX(XX(NCO),XX(NCO+1))
        ELSE
         SO(IKX,IKY) = CMPLX(0.,0.)
        ENDIF
      ENDDO
      ENDDO

      JZ = 0.
      JS = 0.
      DO IKX=1,IKTX
         DO IKY=1,IKTY
          IF (L(IKX+KTX,IKY).EQ.1) THEN
           ZD = ZO(IKX,IKY)+ZTRAJ(IKX,IKY,1)-ZM(IKX,IKY)  
           SD = SO(IKX,IKY)+STRAJ(IKX,IKY,1)-SM(IKX,IKY)  
           JZ = JZ + REAL(ZD*CONJG(ZD)) 
           JS = JS + REAL(SD*CONJG(SD)) 
          ENDIF
         ENDDO 
      ENDDO
      WRITE(22,101) JZ,JS
 101  FORMAT(2E12.4)

      GRFLAG = 0 
      OBFLAG = 0
      JXFLAG = 1
      CALL LININC(JX)

      CALL ADJINC

      NCO=0
      DO IKX=1,IKTX
      DO IKY=1,IKTY
        IF (L(IKX+KTX,IKY).EQ.1) THEN
         NCO = NCO + 1
         GX(NCO) = REAL(ZO(IKX,IKY))
         NCO = NCO + 1
         GX(NCO) = AIMAG(ZO(IKX,IKY))
        ENDIF
      ENDDO
      ENDDO
      DO IKX=1,IKTX
      DO IKY=1,IKTY
        IF (L(IKX+KTX,IKY).EQ.1) THEN
         NCO = NCO + 1
         GX(NCO) = REAL(SO(IKX,IKY))
         NCO = NCO + 1
         GX(NCO) = AIMAG(SO(IKX,IKY))
        ENDIF
      ENDDO
      ENDDO

      RETURN
      END