C MARE      SOURCE    GOUNAND   05/12/21    21:34:10     5281
      SUBROUTINE MARE(MA,NI,NJ,
     $     COPER,
     $     RE,
     $     IMPR,IRET)
      IMPLICIT REAL*8 (A-H,O-Z)
      IMPLICIT INTEGER (I-N)
C***********************************************************************
C NOM         : MARE
C DESCRIPTION : Implémentation d'opérations matrice -> réel
C
C
C
C LANGAGE     : ESOPE
C AUTEUR      : Stéphane GOUNAND (CEA/DEN/DM2S/SFME/LTMF)
C               mél : gounand@semt2.smts.cea.fr
C***********************************************************************
C APPELES          :
C APPELES (E/S)    :
C APPELES (BLAS)   :
C APPELES (CALCUL) :
C APPELE PAR       :
C***********************************************************************
C SYNTAXE GIBIANE    :
C ENTREES            :
C ENTREES/SORTIES    :
C SORTIES            :
C CODE RETOUR (IRET) : = 0 si tout s'est bien passé
C***********************************************************************
C VERSION    : v1, 27/09/2005, version initiale
C HISTORIQUE : v1, 27/09/2005, 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
*
      REAL*8 MA(NI,NJ)
      CHARACTER*8 COPER
      REAL*8 RE
*
      INTEGER IMPR,IRET
*
* Executable statements
*
      IF (IMPR.GT.2) WRITE(IOIMP,*) 'Entrée dans mare.eso'
      RE=0.D0
      IF (COPER.EQ.'TRACE   ') THEN
         IF (NI.NE.NJ) GOTO 9998
         DO II=1,NI
            RE=RE+MA(II,II)
         ENDDO
      ELSEIF (COPER.EQ.'TRJJT   ') THEN
         IF (NI.NE.NJ) GOTO 9998
         DO IJ=1,NJ
            DO II=1,NI
               RE=RE+(MA(II,IJ)**2)
            ENDDO
         ENDDO
      ELSE
         WRITE(IOIMP,*) 'Operation ',COPER,' unknown'
         GOTO 9999
      ENDIF
*
* Normal termination
*
      IRET=0
      RETURN
*
* Format handling
*
*
* Error handling
*
 9998 CONTINUE
      WRITE(IOIMP,*) NI,'.NE.',NJ
      GOTO 9999
*
 9999 CONTINUE
      IRET=1
      WRITE(IOIMP,*) 'An error was detected in subroutine mare'
      RETURN
*
* End of subroutine MARE
*
      END


