C JPMM      SOURCE    MB234859  25/09/08    21:15:43     12358          
      SUBROUTINE JPMM

* ---------------------------------------------------------------------
* 
*                               ROUTINE JPMT
* 
* ---------------------------------------------------------------------
* Auteur : Nikola JERANCE
* 
* Historique : 
* 
*       20/09/2022 - Première écriture (N. Jerance)
*     
* 
* Descriptif :
* 
*  Le produit d'un MCHAML à une seule composante et des LIGNES d'une matrice, 
* la matrice est une LISTREEL normalement obtenue par MPMAGV. 
* Le résultat est une matrice représentée par une LISTREEL
*  
*  
* ENTREES/SORTIES :
* 
*       (E)     ILREE1 = Pointeur sur la liste de réels (matrice obtenue par MPMA)
*       (E)     ICHAMJ = Pointeur sur J(x,y) en tant que MCHAML
*       (E)     IMOD1 = Pointeur sur le modèle
*       (S)     ILREE2 = Pointeur sur la nouvelle matrice
* 
* ---------------------------------------------------------------------

* ----------------------------------------------------------------------
* 
*                         0 - DECLARATIONS ET IMPORTS
* 
* ----------------------------------------------------------------------

      IMPLICIT INTEGER(I-N)
      IMPLICIT REAL*8(A-H,O-Z)

-INC PPARAM
-INC CCOPTIO
-INC CCGEOME
-INC CCREEL
-INC SMCOORD
-INC SMELEME
-INC SMLREEL
-INC SMCHAML
-INC SMMODEL
-INC SMINTE

*      WRITE(IOIMP,*) '    PARTIE 00 : LECTURE'

      CALL LIROBJ('MCHAML',ICHAMJ,1,IRETOU)
      
      IF (IERR.NE.0) RETURN
      
      CALL LIROBJ('MMODEL',IPMODL,1,IRETOU)
      
      IF (IERR.NE.0) RETURN
      
* Ouverture du segment MMODEL
      MMODE1 = IPMODL
      SEGACT,MMODE1

* Contrôle du nombre de IMODEL : MODELE ELEMENTAIRE. On veut un modèle
* simple, i.e. avec un seul IMODEL
      NBMOD = MMODE1.KMODEL(/1)
      IF (NBMOD .GT. 1) THEN
        SEGDES,MMODE1
        CALL ERREUR(21)
        RETURN
      ENDIF

* Ouverture du segment IMODEL : MODELE ELEMENTAIRE
      IMODE1 = MMODE1.KMODEL(1)
      SEGACT,IMODE1
      
* Ouverture du segment MELEME
      IPT1 = IMODE1.IMAMOD
      SEGACT,IPT1
      NBELEM = IPT1.NUM(/2)

* Récupération du segment SMINTE pour un MCHAML aux centres de
* gravité et constants par éléments sur le type TRI3
      MINTE1 = IMODE1.INFMOD(4)
      SEGACT,MINTE1


      CALL LIROBJ('LISTREEL',ILREE,1,IRETOU)
      
      IF (IERR.NE.0) RETURN
      
      ICHAMA = 0
      
      CALL JPMM1(ILREE,ICHAMJ,ILREE2,IMODE1,MINTE1,NBELEM)

* On calcule les valeurs du champ par élément 
*      WRITE(IOIMP,*) '    PARTIE FF : ECRITURE'
      
      CALL ECROBJ('LISTREEL',ILREE2)
      END 
 
