C DCOGA1    SOURCE    GOUNAND   05/12/21    21:17:58     5281
      SUBROUTINE DCOGA1(NDDL,IESREL,NBPOGO,NLDF,NLCO,NBELEM,
     $     JCOEFF,JDFFPG,
     $     JDCOFG,
     $     IMPR,IRET)
      IMPLICIT REAL*8 (A-H,O-Z)
      IMPLICIT INTEGER (I-N)
C***********************************************************************
C NOM         : DCOGA1
C PROJET      :
C DESCRIPTION : Calcul des derivees du coefficient aux points de Gauss
C      d'un élément
C               de référence pour chaque élément réel.
C
C LANGAGE     : Fortran 77 (sauf E/S)
C AUTEUR      : Stéphane GOUNAND (CEA/DRN/DMT/SEMT/LTMF)
C               mél : gounand@semt2.smts.cea.fr
C***********************************************************************
C APPELES          : -
C APPELE PAR       : DCOGAU
C***********************************************************************
C ENTREES            :
C ENTREES/SORTIES    :
C SORTIES            : -
C CODE RETOUR (IRET) : = 0 si tout s'est bien passé
C***********************************************************************
C VERSION    : v3.1, 30/07/04, possiblité de travailler
C                              dans l'espace de référence
C VERSION    : v1, 26/08/03, version initiale
C HISTORIQUE : v1, 26/08/03, création
C HISTORIQUE :
C HISTORIQUE :
C***********************************************************************
C Prière de PRENDRE LE TEMPS de compléter les commentaires
C en cas de modification de ce sous-programme afin de faciliter
C la maintenance !
C***********************************************************************

-INC PPARAM
-INC CCOPTIO
      INTEGER NDDL,IESREL,NBPOGO,NBELEM
      REAL*8 JCOEFF(NDDL,NLCO)
      REAL*8 JDFFPG(NDDL,IESREL,NBPOGO,NLDF)
      REAL*8 JDCOFG(IESREL,NBPOGO,NBELEM)
*
      INTEGER IMPR,IRET
      INTEGER IELEM,IPOGO,JESREL,IDDL
*
* Executable statements
*
      IF (IMPR.GT.1) WRITE(IOIMP,*) 'Entrée dans dcoga1'
      DO IELEM=1,NBELEM
         IF (NLCO.EQ.1) THEN
            ILCO=1
         ELSE
            ILCO=IELEM
         ENDIF
         IF (NLDF.EQ.1) THEN
            ILDF=1
         ELSE
            ILDF=IELEM
         ENDIF
         DO IPOGO=1,NBPOGO
            DO JESREL=1,IESREL
               DO IDDL=1,NDDL
                  JDCOFG(JESREL,IPOGO,IELEM)=
     $                 JDCOFG(JESREL,IPOGO,IELEM)
     $                 + (JCOEFF(IDDL,ILCO)
     $                    * JDFFPG(IDDL,JESREL,IPOGO,ILDF))
               ENDDO
            ENDDO
         ENDDO
      ENDDO
*
* Normal termination
*
      IRET=0
      RETURN
*
* Format handling
*
*
* Error handling
*
 9999 CONTINUE
      IRET=1
      WRITE(IOIMP,*) 'An error was detected in subroutine dcoga1'
      RETURN
*
* End of subroutine DCOGA1
*
      END


