C DYCPL1    SOURCE    BP208322  18/01/10    21:15:26     9684           

      SUBROUTINE DYCPL1(IP1,IP2,XDEP,NPAS,PDT,XCONV)
      IMPLICIT INTEGER(I-N)
      IMPLICIT REAL*8(A-H,O-Z)
*--------------------------------------------------------------------*
*                                                                    *
*     Operateur DYNE :                                               *
*     ________________                                               *
*                                                                    *
*     Calcul de la force fluidelastique par convolution.             *
*                                                                    *
*     Parametres:                                                    *
*                                                                    *
* e   IP1     LISTREEL h(\tau)                                       *
* e   IP2     LISTREEL q(t-\tau)                                     *
* e   XDEP    FLOTTTANT   q(t)                                       *
* e   PDT     FLOTTTANT = \Delta t                                   *
* s   XCONV   FLOTTTANT int_0^T h(\tau)*Qj(t-\tau) d\tau             *
*                                                                    *
*     Auteurs :                                                      *
*     BP, 2017-06-21                                                 *
*                                                                    *
*--------------------------------------------------------------------*

-INC SMLREEL 
    
*     RECUPERATION
*     des listreels deja actif en entree (ip2 est modifiable)
      MLREE1=IP1
      MLREE2=IP2
      JG=MLREE2.PROG(/1)
      
*     PERMUTATION CIRCULAIRE de q(t-tau)
        DO 1 I=JG,2,-1
          MLREE2.PROG(I)=MLREE2.PROG(I-1)
 1      CONTINUE
      
*     VALEUR COURANTE q(t)
*     Rem : pour DEVOGELAERE, t=|t_{n+1/2} si IND=2                  
*                               |t_{n+1}   si IND=1                  
*           pour DIFFERENCE_CENTREE, t=t_{n+1}         
      MLREE2.PROG(1)=XDEP
      
*     CALCUL DU PRODUIT DE CONVOLUTION
*     1ere valeur (la + importante, souvent plus de 75% de l'integrale)
      H1=MLREE1.PROG(1)    
      XCONV=H1*XDEP/2.D0        
*     termes intermediaires
c       DO 2 I=2,JG-1
c c         XPROD=MLREE1.PROG(I)*MLREE2.PROG(I)
c c         XCONV=XCONV+XPROD
c         XCONV=XCONV+MLREE1.PROG(I)*MLREE2.PROG(I)
c  2    CONTINUE
c     --> legere optimisation
      XCONV=XCONV+DDOTPV(JG-2,MLREE1.PROG(2),MLREE2.PROG(2))
*     dernier terme      
      XPROD=MLREE1.PROG(JG)*MLREE2.PROG(JG)/2.D0
      XCONV=XCONV+XPROD
c     fois le pas de temps
      XCONV=XCONV*PDT
      
      RETURN
      END
  
 
