C LTL       SOURCE    CHAT      05/01/13    01:25:53     5004
      SUBROUTINE LTL
      IMPLICIT INTEGER(I-N)
      IMPLICIT  REAL*8(A-H,O-Z)
C======================================================================
C  =  CALCUL DU PRODUIT SCALAIRE DE DEUX LISTREEL                     =
C  =                                                                  =
C  =  SYNTAXE :                                                       =
C  =                                                                  =
C  =    FLOT = LTL  LIST1 (LIST2 FLOT1 FLOT2)  ;                      =
C  =                                                                  =
C  =    LIST1, LIST2        : LISTREEL                                =
C  =                                                                  =
C  =    FLOT, FLOT1, FLOT2  : FLOTTANT                                =
C  =                                                                  =
C  =    FLOT = (FLOT1*LIST1) SCALAIRE (FLOT2*LIST2)                   =
C  =                                                                  =
C  =    SI LIST2 N'EST PAS DONNE,            LIST2=LIST1              =
C  =    SI FLOT2 N'EST PAS DONNE,            FLOT2=1.                 =
C  =    ST FLOT1 ET FLOT2 NE SONT PAS DONNE ,FLOT1=FLOT2=1.           =
C  =                                                                  =
C  =  CREATION    : 24/09/90                                          =
C  =  PROGRAMMEUR : P.P.                                              =
C======================================================================
C
-INC PPARAM
-INC CCOPTIO
-INC SMLREEL
C
      FLOT1=1.D0
C
      CALL LIROBJ('LISTREEL',MLREE1,1,IRET)
      IF(IRET.EQ.0) GOTO 666
C
      CALL LIROBJ('LISTREEL',MLREE2,0,IRET)
      IF(IRET.EQ.0) MLREE2=0
      IF(MLREE1.EQ.MLREE2) MLREE2=0
C
      CALL LIRREE(FLOT,0,IRET)
      IF(IRET.NE.0)THEN
        FLOT1=FLOT
        CALL LIRREE(FLOT,0,IRET)
        IF(IRET.NE.0)FLOT1=FLOT*FLOT1
      ENDIF
C
      SEGACT, MLREE1
      NPT=MLREE1.PROG(/1)
      IF (MLREE2.NE.0)THEN
        SEGACT, MLREE2
        NPTT=MLREE2.PROG(/1)
        IF(NPT.NE.NPTT)THEN
          CALL ERREUR(577)
          SEGDES, MLREE1, MLREE2
          GOTO 666
        ENDIF
      ENDIF
C
      FLOT=0.D0
      IF (MLREE2.EQ.0)THEN
        DO 10 IE1=1,NPT
          FLOT=FLOT+FLOT1*MLREE1.PROG(IE1)**2
 10     CONTINUE
        SEGDES, MLREE1
      ELSE
        DO 11 IE1=1,NPT
          FLOT=FLOT+FLOT1*MLREE1.PROG(IE1)*MLREE2.PROG(IE1)
 11     CONTINUE
        SEGDES, MLREE1, MLREE2
      ENDIF
C
      CALL ECRREE(FLOT)
C
 666  RETURN
      END




