SUBROUTINE SPECALL,4
C
IMPLICIT NONE
include 'champ.cdk'
include 'chobs.cdk'
INTEGER NV,NOZ,DELFLAG
REAL JZ,JZO,JZM,JZF,JZS(20)
PRINT*,'PASSE DANS LA ROUTINE SPECALL'
C
C DELFLAG = 0 DONNE LA DIFFERENCE ENTRE LE CONTROLE ET
C LA TRAJECTOIRE
C DELFLAG = 1 DONNE LA DIFFERENCE ENTRE LE FIRST GUESS PRECEDANT
C ET LA TRAJECTOIRE
C
DELFLAG = 0
IF(DELFLAG.NE.1) THEN
DO NV=1,20
JZS(NV) = 0.0
ENDDO
NOZ = 0
DO NT=0,NSTOP,36
NOZ = NOZ + 1
NV = NT
IF(NT.EQ.0) NV = -1
JZ = 0
DO IKX=1,IKTX
DO IKY=1,IKTY
IF (L(IKX+KTX,IKY).EQ.1) THEN
RHZ(IKX,IKY) = ZCONT(IKX,IKY,NV+2)-ZTRAJ(IKX,IKY,NV+2)
RHS(IKX,IKY) = CMPLX(0.,0.)
ELSE
RHZ(IKX,IKY) = CMPLX(0.,0.)
RHS(IKX,IKY) = CMPLX(0.,0.)
ENDIF
JZ = JZ + REAL(RHZ(IKX,IKY)*CONJG(RHZ(IKX,IKY)))
ENDDO
ENDDO
JZS(NOZ) = JZ
IF(NT.EQ.0) THEN
JZO = JZ
CALL SPEC
(RHZ,RHS,IKTX,IKTY,KTX,KTY,NS,SPZ,0,AJ,BJ,
. GRFLAG,NT*DELT)
ENDIF
IF(abs(NT-NSTOP/2+1).lt.18) THEN
JZM = JZ
CALL SPEC
(RHZ,RHS,IKTX,IKTY,KTX,KTY,NS,SPZ,0,AJ,BJ,
. GRFLAG,NT*DELT)
ENDIF
IF(NT.EQ.NSTOP) THEN
JZF = JZ
CALL SPEC
(RHZ,RHS,IKTX,IKTY,KTX,KTY,NS,SPZ,0,AJ,BJ,
. GRFLAG,NT*DELT)
ENDIF
ENDDO
WRITE(22,101) NOITR,JZO,JZM,JZF
WRITE(24,102) NOITR,(JZS(NV),NV=1,20)
101 FORMAT(I10,3E12.4)
102 FORMAT(I10,20E12.4)
ELSE
DO IKX=1,IKTX
DO IKY=1,IKTY
IF (L(IKX+KTX,IKY).EQ.1) THEN
RHZ(IKX,IKY) = ZGM1(IKX,IKY)-ZTRAJ(IKX,IKY,1)
RHS(IKX,IKY) = CMPLX(0.,0.)
ZGM1(IKX,IKY)= ZTRAJ(IKX,IKY,1)
ELSE
RHZ(IKX,IKY) = CMPLX(0.,0.)
RHS(IKX,IKY) = CMPLX(0.,0.)
ZGM1(IKX,IKY)= CMPLX(0.,0.)
ENDIF
ENDDO
ENDDO
CALL SPEC
(RHZ,RHS,IKTX,IKTY,KTX,KTY,NS,SPZ,0,AJ,BJ,
. GRFLAG,NT*DELT)
ENDIF
RETURN
END