C IDPRIM    SOURCE    OF166741  26/02/23    21:15:19     12480          
C=======================================================================
C=       DEFINITION DES NOMS DE COMPOSANTES PRIMALES                   =
C=       -------------------------------------------                   =
C=                                                                     =
C=  Entrees :                                                          =
C=    IPMODE    Pointeur sur un MMODEL.KMODEL                          =
C=    MFR0      Numero de Formulation                                  =
C=      - Sert seulement si different de celui calcule avec IMODEL     =
C=                                                                     =
C=  Sorties :                                                          =
C=    IPNOMC    pointeur de type NOMID sur les listes de noms de       =
C=              composantes OBLigatoires et FACultatives               =
C=    NBROBL    Nombre de composantes OBLIGATOIRES                     =
C=    NBRFAC    Nombre de composantes FACULTATIVES                     =
C=                                                                     =
C=  Remarque : Voir INOMID ou CCOPTIO pour signification IFOUR         =
C=======================================================================
C
      SUBROUTINE IDPRIM(IPMODE,MFR0,IPNOMC,NBROBL,NBRFAC)
C
      IMPLICIT INTEGER(I-N)
      IMPLICIT REAL*8(A-H,O-Z)
C
-INC PPARAM
-INC CCOPTIO
C==DEB= FORMULATION HHO == Include specifique ==========================
-INC CCHHOPA
C==FIN= FORMULATION HHO ================================================
C
-INC SMMODEL
-INC SMLMOTS
C
      CHARACTER*(LOCOMP) CCOMP
      EXTERNAL LONG
C
      NBROBL=0
      NBRFAC=0
C
      IMODEL=IPMODE
      MELE  =IMODEL.NEFMOD
      MFR   =NUMMFR(MELE)
      NOMID =IMODEL.LNOMID(1)
C
C     Ne pas recreer le NOMID si deja present
      IF(NOMID.NE.0 .AND. (MFR.EQ.MFR0))THEN
        NBROBL=LESOBL(/2)
        NBRFAC=LESFAC(/2)
        IPNOMC=NOMID
        RETURN
      ENDIF
C
      MFR =MFR0
      MFR2=NUMFOR(IMODEL)
*
*     MACRO ELEMENT
*
      IF (MFR.EQ.61)THEN
        IF (IFOUR.EQ.-1.OR.IFOUR.EQ.-2) THEN
          NBROBL=5
          SEGINI,NOMID
          LESOBL(1)='UX  '
          LESOBL(2)='UY  '
          LESOBL(3)='RZ  '
          LESOBL(4)='UM  '
          LESOBL(5)='RM  '
        ENDIF
C     =================================================================
C     FORMULATION THERMOHYDRIQUE
C     =================================================================
      ELSE IF (MFR2.EQ.65) THEN
        NBROBL=3
        SEGINI,NOMID
        LESOBL(1)='PG  '
        LESOBL(2)='PC  '
        LESOBL(3)='T   '
C     =================================================================
C     FORMULATION MECANIQUE/CHARGEMENT/LIAISON/MELANGE/NAVIER_STOKES
C     =================================================================
      ELSE IF (MFR2.EQ.2.OR.MFR2.EQ.72.OR.MFR2.EQ.24.OR.MFR2.EQ.38
     &    .OR. MFR2.EQ.52) THEN
C
C       Cas particuliers 
C       ================
        IF (MFR.EQ.26) THEN
          NBROBL=1
          SEGINI,NOMID
          LESOBL(1)='ALFA'
        ELSE IF (MFR.EQ.28) THEN
          NBROBL=1
          SEGINI,NOMID
          LESOBL(1)='BETA'
C
C       Elements MASSIFS, MEMBRANE, UNIAXIALE
C       =====================================
        ELSE IF (MFR.EQ.1 .OR. MFR.EQ.25 .OR. MFR.EQ.27 .OR. MFR.EQ.31
     &      .OR. MFR.EQ.52) THEN
          IF (IFOUR.EQ.-2.OR.IFOUR.EQ.-1) THEN
            NBROBL=2
            SEGINI,NOMID
            LESOBL(1)='UX  '
            LESOBL(2)='UY  '
          ELSE IF (IFOUR.EQ.0) THEN
            NBROBL=2
            SEGINI,NOMID
            LESOBL(1)='UR  '
            LESOBL(2)='UZ  '
          ELSE IF (IFOUR.EQ.1) THEN
            NBROBL=3
            SEGINI,NOMID
            LESOBL(1)='UR  '
            LESOBL(2)='UZ  '
            LESOBL(3)='UT  '
          ELSE IF (IFOUR.EQ.2) THEN
            NBROBL=3
            SEGINI,NOMID
            LESOBL(1)='UX  '
            LESOBL(2)='UY  '
            LESOBL(3)='UZ  '
          ELSE IF (IFOUR.EQ.-3) THEN
            NBROBL=5
            SEGINI,NOMID
            LESOBL(1)='UX  '
            LESOBL(2)='UY  '
            LESOBL(3)='UZ  '
            LESOBL(4)='RY  '
            LESOBL(5)='RX  '
          ELSE IF (IFOUR.GE.3.AND.IFOUR.LE.15.AND.MFR.EQ.1) THEN
            IF (IFOUR.LE.6) THEN
              NBROBL=1
              SEGINI,NOMID
              LESOBL(1)='UX  '
            ELSE IF (IFOUR.EQ.7.OR.IFOUR.EQ.8) THEN
              NBROBL=2
              SEGINI,NOMID
              LESOBL(1)='UX  '
              LESOBL(2)='UY  '
            ELSE IF (IFOUR.EQ.9.OR.IFOUR.EQ.10) THEN
              NBROBL=2
              SEGINI,NOMID
              LESOBL(1)='UX  '
              LESOBL(2)='UZ  '
            ELSE IF (IFOUR.EQ.11) THEN
              NBROBL=3
              SEGINI,NOMID
              LESOBL(1)='UX  '
              LESOBL(2)='UY  '
              LESOBL(3)='UZ  '
            ELSE IF (IFOUR.EQ.12.OR.IFOUR.EQ.13.OR.IFOUR.EQ.15) THEN
              NBROBL=1
              SEGINI,NOMID
              LESOBL(1)='UR  '
            ELSE IF (IFOUR.EQ.14) THEN
              NBROBL=2
              SEGINI,NOMID
              LESOBL(1)='UR  '
              LESOBL(2)='UZ  '
            ENDIF
          ENDIF
C
C       Elements COQUE/POUTRE/TUYAU
C       ===========================
        ELSE IF (MFR.EQ.3  .OR. MFR.EQ.5 .OR. MFR.EQ.7  .OR. MFR.EQ.9 
     &      .OR. MFR.EQ.13 .OR. MFR.EQ.15.OR. MFR.EQ.17 .OR. MFR.EQ.49
     &      .OR. MFR.EQ.51 .OR. MFR.EQ.75) THEN
          IF (IFOUR.EQ.2) THEN
            NBROBL=6
            SEGINI,NOMID
            LESOBL(1)='UX  '
            LESOBL(2)='UY  '
            LESOBL(3)='UZ  '
            LESOBL(4)='RX  '
            LESOBL(5)='RY  '
            LESOBL(6)='RZ  '
          ELSE IF (IFOUR.EQ.1) THEN
            NBROBL=4
            SEGINI,NOMID
            LESOBL(1)='UR  '
            LESOBL(2)='UZ  '
            LESOBL(3)='UT  '
            LESOBL(4)='RT  '
          ELSE IF (IFOUR.EQ.0) THEN
            NBROBL=3
            SEGINI,NOMID
            LESOBL(1)='UR  '
            LESOBL(2)='UZ  '
            LESOBL(3)='RT  '
          ELSE IF (IFOUR.EQ.-1.OR.IFOUR.EQ.-2) THEN
            NBROBL=3
            SEGINI,NOMID
            LESOBL(1)='UX  '
            LESOBL(2)='UY  '
            LESOBL(3)='RZ  '
          ELSE IF (IFOUR.EQ.-3) THEN
            IF (MFR.EQ.3 .OR. MFR.EQ.5) THEN
              NBROBL=6
              SEGINI,NOMID
              LESOBL(1)='UX  '
              LESOBL(2)='UY  '
              LESOBL(3)='RZ  '
              LESOBL(4)='UZ  '
              LESOBL(5)='RY  '
              LESOBL(6)='RX  '
            ELSE
              NBROBL=3
              SEGINI,NOMID
              LESOBL(1)='UX  '
              LESOBL(2)='UY  '
              LESOBL(3)='RZ  '
            ENDIF
          ENDIF
C
C       Element JOINT, JOINT CISAILLEMENT,JOINT GENERALISE, COS2
C       ===============================================================
        ELSE IF (MFR.EQ.35.OR.MFR.EQ.53.OR.MFR.EQ.55.OR.MFR.EQ.78) THEN
          IF (IFOUR.EQ.2) THEN
            NBROBL=3
            SEGINI,NOMID
            LESOBL(1)='UX  '
            LESOBL(2)='UY  '
            LESOBL(3)='UZ  '
          ELSE IF (IFOUR.EQ.-1.OR.IFOUR.EQ.-2.OR.IFOUR.EQ.-3) THEN
            NBROBL=2
            SEGINI,NOMID
            LESOBL(1)='UX  '
            LESOBL(2)='UY  '
          ELSE IF (IFOUR.EQ.0) THEN
            NBROBL=2
            SEGINI,NOMID
            LESOBL(1)='UR  '
            LESOBL(2)='UZ  '
          ENDIF
C
C       Elements HOMOGENEISE
C       =====================
        ELSE IF (MFR.EQ.37) THEN
          IF (IFOUR.EQ.1) THEN
            NBROBL=6
            SEGINI,NOMID
            LESOBL(1)='P   '
            LESOBL(2)='PI  '
            LESOBL(3)='UR  '
            LESOBL(4)='RT  '
            LESOBL(5)='UT  '
            LESOBL(6)='RR  '
          ELSE IF (IFOUR.EQ.0) THEN
            NBROBL=4
            SEGINI,NOMID
            LESOBL(1)='P   '
            LESOBL(2)='PI  '
            LESOBL(3)='UR  '
            LESOBL(4)='RT  '
          ELSE IF (IFOUR.EQ.2) THEN
            NBROBL=6
            SEGINI,NOMID
            LESOBL(1)='P   '
            LESOBL(2)='PI  '
            LESOBL(3)='UX  '
            LESOBL(4)='RY  '
            LESOBL(5)='UY  '
            LESOBL(6)='RX  '
          ELSE
            NBROBL=4
            SEGINI,NOMID
            LESOBL(1)='P   '
            LESOBL(2)='PI  '
            LESOBL(3)='UX  '
            LESOBL(4)='UY  '
          ENDIF
C
C       Elements TUYO
C       =============
        ELSE IF (MFR.EQ.39) THEN
          NBROBL=6+9
          SEGINI,NOMID
          LESOBL(1)='UX  '
          LESOBL(2)='UY  '
          LESOBL(3)='UZ  '
          LESOBL(4)='RX  '
          LESOBL(5)='RY  '
          LESOBL(6)='RZ  '
          LESOBL(7)='W0  '
          LESOBL(8)='U1  '
          LESOBL(9)='U2  '
          LESOBL(10)='U3  '
          LESOBL(11)='U4  '
          LESOBL(12)='W1  '
          LESOBL(13)='W2  '
          LESOBL(14)='W3  '
          LESOBL(15)='W4  '
C
C       Elements ZONE_COHESIVE
C       ======================
        ELSE IF (MFR.EQ.77) THEN
C         Element ZCO2 (xfem meca rupture en 2D)
          IF(IFOUR.EQ.-2.OR.IFOUR.EQ.-1) THEN
            NBROBL=2
            NBRFAC=18
            SEGINI,NOMID
            LESOBL(1)='AX  '
            LESOBL(2)='AY  '
            LESFAC(1)='UX  '
            LESFAC(2)='UY  '
            LESFAC(3)='B1X '
            LESFAC(4)='B1Y '
            LESFAC(5)='C1X '
            LESFAC(6)='C1Y '
            LESFAC(7)='D1X '
            LESFAC(8)='D1Y '
            LESFAC(9)='E1X '
            LESFAC(10)='E1Y '
            LESFAC(11)='B2X '
            LESFAC(12)='B2Y '
            LESFAC(13)='C2X '
            LESFAC(14)='C2Y '
            LESFAC(15)='D2X '
            LESFAC(16)='D2Y '
            LESFAC(17)='E2X '
            LESFAC(18)='E2Y '
C         Elements ZCO3 et ZCO4 (xfem meca rupture en 3D)
          ELSE IF (IFOUR.EQ.2) THEN
            NBROBL=3
            NBRFAC=27
            SEGINI,NOMID
            LESOBL(1)='AX  '
            LESOBL(2)='AY  '
            LESOBL(3)='AZ  '
            LESFAC(1)='UX  '
            LESFAC(2)='UY  '
            LESFAC(3)='UZ  '
            LESFAC(4)='B1X '
            LESFAC(5)='B1Y '
            LESFAC(6)='B1Z '
            LESFAC(7)='C1X '
            LESFAC(8)='C1Y '
            LESFAC(9)='C1Z '
            LESFAC(10)='D1X '
            LESFAC(11)='D1Y '
            LESFAC(12)='D1Z '
            LESFAC(13)='E1X '
            LESFAC(14)='E1Y '
            LESFAC(15)='E1Z '
            LESFAC(16)='B2X '
            LESFAC(17)='B2Y '
            LESFAC(18)='B2Z '
            LESFAC(19)='C2X '
            LESFAC(20)='C2Y '
            LESFAC(21)='C2Z '
            LESFAC(22)='D2X '
            LESFAC(23)='D2Y '
            LESFAC(24)='D2Z '
            LESFAC(25)='E2X '
            LESFAC(26)='E2Y '
            LESFAC(27)='E2Z '
          ENDIF
C
C       Element XFEM 
C       ============
        ELSE IF (MFR.EQ.63) THEN
CTY       Element XQ4R (xfem meca rupture en 2D)
          IF(IFOUR.EQ.-2.OR.IFOUR.EQ.-1) THEN
            NBROBL=2
            NBRFAC=18
            SEGINI,NOMID
            LESOBL(1)='UX  '
            LESOBL(2)='UY  '
            LESFAC(1)='AX  '
            LESFAC(2)='AY  '
            LESFAC(3)='B1X '
            LESFAC(4)='B1Y '
            LESFAC(5)='C1X '
            LESFAC(6)='C1Y '
            LESFAC(7)='D1X '
            LESFAC(8)='D1Y '
            LESFAC(9)='E1X '
            LESFAC(10)='E1Y '
            LESFAC(11)='B2X '
            LESFAC(12)='B2Y '
            LESFAC(13)='C2X '
            LESFAC(14)='C2Y '
            LESFAC(15)='D2X '
            LESFAC(16)='D2Y '
            LESFAC(17)='E2X '
            LESFAC(18)='E2Y '
CTY       Element XC8R (xfem meca rupture en 3D)
          ELSE IF (IFOUR.EQ.2) THEN
            NBROBL=3
            NBRFAC=27
            SEGINI,NOMID
            LESOBL(1)='UX  '
            LESOBL(2)='UY  '
            LESOBL(3)='UZ  '
            LESFAC(1)='AX  '
            LESFAC(2)='AY  '
            LESFAC(3)='AZ  '
            LESFAC(4)='B1X '
            LESFAC(5)='B1Y '
            LESFAC(6)='B1Z '
            LESFAC(7)='C1X '
            LESFAC(8)='C1Y '
            LESFAC(9)='C1Z '
            LESFAC(10)='D1X '
            LESFAC(11)='D1Y '
            LESFAC(12)='D1Z '
            LESFAC(13)='E1X '
            LESFAC(14)='E1Y '
            LESFAC(15)='E1Z '
            LESFAC(16)='B2X '
            LESFAC(17)='B2Y '
            LESFAC(18)='B2Z '
            LESFAC(19)='C2X '
            LESFAC(20)='C2Y '
            LESFAC(21)='C2Z '
            LESFAC(22)='D2X '
            LESFAC(23)='D2Y '
            LESFAC(24)='D2Z '
            LESFAC(25)='E2X '
            LESFAC(26)='E2Y '
            LESFAC(27)='E2Z '
          ENDIF
C
C       FORMULATION HHO MECANIQUE (SEULEMENT 2D (CP/DP) et 3D
C       =====================================================
        ELSE IF (MFR.EQ.HHO_MFR_ELEMENT) THEN
          i_d_c = IDIM
          n_o_c = ABS(imodel.INFMOD(12))
          n_d_c = n_o_c * i_d_c
          n_o_f = ABS(imodel.INFMOD( 9))
          n_d_f = n_o_f * i_d_c

          NBROBL = n_d_c + n_d_f
          NBRFAC = 0
          SEGINI,NOMID

          j1 = 1
          j2 = j1 + n_o_c
          j3 = j2 + n_o_c
          n_o_c = n_o_c - 1
          IF (IFOUR.EQ.-2 .OR. IFOUR.EQ.-1) THEN
            DO i = 0, n_o_c
c***            WRITE(LESOBL(j1+i),'(A6,I2.2)') 'UX_HC_',i
c***            WRITE(LESOBL(j2+i),'(A6,I2.2)') 'UY_HC_',i
              WRITE(LESOBL(j1+i),'(A3,I1.1,A4)') 'UXC',i,'    '
              WRITE(LESOBL(j2+i),'(A3,I1.1,A4)') 'UYC',i,'    '
            END DO
          ELSE IF (IFOUR.EQ.2) THEN
            DO i = 0, n_o_c
c***            WRITE(LESOBL(j1+i),'(A6,I2.2)') 'UX_HC_',i
c***            WRITE(LESOBL(j2+i),'(A6,I2.2)') 'UY_HC_',i
c***            WRITE(LESOBL(j3+i),'(A6,I2.2)') 'UZ_HC_',i
              WRITE(LESOBL(j1+i),'(A3,I1.1,A4)') 'UXC',i,'    '
              WRITE(LESOBL(j2+i),'(A3,I1.1,A4)') 'UYC',i,'    '
              WRITE(LESOBL(j3+i),'(A3,I1.1,A4)') 'UZC',i,'    '
            END DO
          ELSE
            write(ioimp,*) 'IDPRIM - HHO - IFOUR not implemented'
            CALL ERREUR(5)
            RETURN
          END IF

          j1 = n_d_c + 1
          j2 = j1 + n_o_f
          j3 = j2 + n_o_f
          n_o_f = n_o_f - 1
          IF (IFOUR.EQ.-2 .OR. IFOUR.EQ.-1) THEN
            DO i = 0, n_o_f
c***            WRITE(LESOBL(j1+i),'(A6,I2.2)') 'UX_HF_',i
c***            WRITE(LESOBL(j2+i),'(A6,I2.2)') 'UY_HF_',i
              WRITE(LESOBL(j1+i),'(A3,I1.1,A4)') 'UXF',i,'    '
              WRITE(LESOBL(j2+i),'(A3,I1.1,A4)') 'UYF',i,'    '
            END DO
          ELSE IF (IFOUR.EQ.2) THEN
            DO i = 0, n_o_f
c***            WRITE(LESOBL(j1+i),'(A6,I2.2)') 'UX_HF_',i
c***            WRITE(LESOBL(j2+i),'(A6,I2.2)') 'UY_HF_',i
c***            WRITE(LESOBL(j3+i),'(A6,I2.2)') 'UZ_HF_',i
              WRITE(LESOBL(j1+i),'(A3,I1.1,A4)') 'UXF',i,'    '
              WRITE(LESOBL(j2+i),'(A3,I1.1,A4)') 'UYF',i,'    '
              WRITE(LESOBL(j3+i),'(A3,I1.1,A4)') 'UZF',i,'    '
            END DO
          END IF
        ENDIF
C     =================================================================
C     FORMULATION LIQUIDE
C     =================================================================
      ELSE IF (MFR2.EQ.11) THEN
C
C       Elements LIQUIDE
C       ================
        IF (MFR.EQ.11) THEN
          NBROBL=2
          SEGINI,NOMID
          LESOBL(1)='P   '
          LESOBL(2)='PI  '
C
C       Elements TUYAU ACOUSTIQUE PUR
C       =============================
        ELSE IF (MFR.EQ.41) THEN
          NBROBL=2
          SEGINI,NOMID
          LESOBL(1)='PI  '
          LESOBL(2)='P   '
C
C       Elements SURFACE LIBRE 
C       ======================
        ELSE IF (MFR.EQ.23) THEN
          NBROBL=3
          SEGINI,NOMID
          LESOBL(1)='P   '
          LESOBL(2)='PI  '
          LESOBL(3)='UZ  '
        ENDIF
C     =================================================================
C     FORMULATION MECANIQUE+LIQUID
C     =================================================================
      ELSE IF (MFR2.EQ.44) THEN
C
C       Element de RACCORD LITU
C       =======================
        IF (MFR.EQ.43) THEN
          NBROBL=5
          SEGINI,NOMID
          LESOBL(1)='UX  '
          LESOBL(2)='UY  '
          LESOBL(3)='UZ  '
          LESOBL(4)='PI  '
          LESOBL(5)='P   '
C
C       Element de RACCORD
C       ==================
        ELSE IF (MFR.EQ.19.OR.MFR.EQ.21) THEN
          NBROBL=2
          SEGINI,NOMID
          LESOBL(1)='P   '
          LESOBL(2)='PI  '
C
C       Element de RACCORD MASSIF (2e serie de composantes)
C       ====================================================
        ELSE IF (MFR.EQ.1019) THEN
          IF (IFOUR.EQ.-2.OR.IFOUR.EQ.-1) THEN
            NBROBL=2
            SEGINI,NOMID
            LESOBL(1)='UX  '
            LESOBL(2)='UY  '
          ELSE IF (IFOUR.EQ.0) THEN
            NBROBL=2
            SEGINI,NOMID
            LESOBL(1)='UR  '
            LESOBL(2)='UZ  '
          ELSE IF (IFOUR.EQ.1) THEN
            NBROBL=3
            SEGINI,NOMID
            LESOBL(1)='UR  '
            LESOBL(2)='UZ  '
            LESOBL(3)='UT  '
          ELSE IF (IFOUR.EQ.2.OR.IFOUR.EQ.-3) THEN
            NBROBL=3
            SEGINI,NOMID
            LESOBL(1)='UX  '
            LESOBL(2)='UY  '
            LESOBL(3)='UZ  '
          ENDIF
C
C       Element de RACCORD COQUE (2e serie de composantes)
C       ==================================================
        ELSE IF (MFR.EQ.1021) THEN
          IF (IFOUR.EQ.-2.OR.IFOUR.EQ.-1) THEN
            NBROBL=3
            SEGINI,NOMID
            LESOBL(1)='UX  '
            LESOBL(2)='UY  '
            LESOBL(3)='RZ  '
          ELSE IF (IFOUR.EQ.0) THEN
            NBROBL=3
            SEGINI,NOMID
            LESOBL(1)='UR  '
            LESOBL(2)='UZ  '
            LESOBL(3)='RT  '
          ELSE IF (IFOUR.EQ.1) THEN
            NBROBL=4
            SEGINI,NOMID
            LESOBL(1)='UR  '
            LESOBL(2)='UZ  '
            LESOBL(3)='UT  '
            LESOBL(4)='RT  '
          ELSE IF (IFOUR.EQ.2.OR.IFOUR.EQ.-3) THEN
            NBROBL=6
            SEGINI,NOMID
            LESOBL(1)='UX  '
            LESOBL(2)='UY  '
            LESOBL(3)='UZ  '
            LESOBL(4)='RX  '
            LESOBL(5)='RY  '
            LESOBL(6)='RZ  '
          ENDIF
        ENDIF
C     =================================================================
C     FORMULATION POREUX
C     =================================================================
      ELSE IF (MFR2.EQ.33) THEN
C
C       Element POREUX
C       ==============
        IF (MFR.EQ.33) THEN
          IF (IFOUR.EQ.-2.OR.IFOUR.EQ.-1) THEN
            NBROBL=3
            SEGINI,NOMID
            LESOBL(1)='UX  '
            LESOBL(2)='UY  '
            LESOBL(3)='P   '
          ELSE IF (IFOUR.EQ.0) THEN
            NBROBL=3
            SEGINI,NOMID
            LESOBL(1)='UR  '
            LESOBL(2)='UZ  '
            LESOBL(3)='P   '
          ELSE IF (IFOUR.EQ.1) THEN
            NBROBL=4
            SEGINI,NOMID
            LESOBL(1)='UR  '
            LESOBL(2)='UZ  '
            LESOBL(3)='UT  '
            LESOBL(4)='P   '
          ELSE IF (IFOUR.EQ.2.OR.IFOUR.EQ.-3) THEN
            NBROBL=4
            SEGINI,NOMID
            LESOBL(1)='UX  '
            LESOBL(2)='UY  '
            LESOBL(3)='UZ  '
            LESOBL(4)='P   '
          ENDIF
C
C       Element POREUX type Q
C       =====================
        ELSE IF (MFR.EQ.57) THEN
          IF (IFOUR.EQ.-2.OR.IFOUR.EQ.-1) THEN
            NBROBL=4
            SEGINI,NOMID
            LESOBL(1)='UX  '
            LESOBL(2)='UY  '
            LESOBL(3)='P   '
            LESOBL(4)='PQ  '
          ELSE IF (IFOUR.EQ.0) THEN
            NBROBL=4
            SEGINI,NOMID
            LESOBL(1)='UR  '
            LESOBL(2)='UZ  '
            LESOBL(3)='P   '
            LESOBL(4)='PQ  '
          ELSE IF (IFOUR.EQ.1) THEN
            NBROBL=5
            SEGINI,NOMID
            LESOBL(1)='UR  '
            LESOBL(2)='UZ  '
            LESOBL(3)='UT  '
            LESOBL(4)='P   '
            LESOBL(5)='PQ  '
          ELSE IF (IFOUR.EQ.2.OR.IFOUR.EQ.-3) THEN
            NBROBL=5
            SEGINI,NOMID
            LESOBL(1)='UX  '
            LESOBL(2)='UY  '
            LESOBL(3)='UZ  '
            LESOBL(4)='P   '
            LESOBL(5)='PQ  '
          ENDIF
C
C       Element POREUX type R
C       =====================
        ELSE IF (MFR.EQ.59) THEN
          IF (IFOUR.EQ.-2.OR.IFOUR.EQ.-1) THEN
            NBROBL=5
            SEGINI,NOMID
            LESOBL(1)='UX  '
            LESOBL(2)='UY  '
            LESOBL(3)='P   '
            LESOBL(4)='PQ  '
            LESOBL(5)='TP  '
          ELSE IF (IFOUR.EQ.0) THEN
            NBROBL=5
            SEGINI,NOMID
            LESOBL(1)='UR  '
            LESOBL(2)='UZ  '
            LESOBL(3)='P   '
            LESOBL(4)='PQ  '
            LESOBL(5)='TP  '
          ELSE IF (IFOUR.EQ.1) THEN
            NBROBL=6
            SEGINI,NOMID
            LESOBL(1)='UR  '
            LESOBL(2)='UZ  '
            LESOBL(3)='UT  '
            LESOBL(4)='P   '
            LESOBL(5)='PQ  '
            LESOBL(6)='TP  '
          ELSE IF(IFOUR.EQ.2.OR.IFOUR.EQ.-3) THEN
            NBROBL=6
            SEGINI,NOMID
            LESOBL(1)='UX  '
            LESOBL(2)='UY  '
            LESOBL(3)='UZ  '
            LESOBL(4)='P   '
            LESOBL(5)='PQ  '
            LESOBL(6)='TP  '
          ENDIF
        ENDIF
C     =================================================================
C     FORMULATION ELECTROSTATIQUE
C     =================================================================
      ELSE IF (MFR2.EQ.71) THEN
        NBROBL=1
        SEGINI,NOMID
        LESOBL(1)='VEL     '
C     =================================================================
C     FORMULATION THERMIQUE
C     =================================================================
      ELSE IF (MFR2.EQ.29) THEN
C
C       Elements COQUE
C       ==============
        IF (MFR.EQ.3.OR.MFR.EQ.5.OR.MFR.EQ.9) THEN
          NPINT=infmod(1)
          IF(NPINT.EQ.0) THEN
             NBROBL=3
             SEGINI NOMID
             LESOBL(1)='TINF    '
             LESOBL(2)='T       '
             LESOBL(3)='TSUP    '
          ELSE
             NBROBL = 1
             SEGINI NOMID
             LESOBL(1)='T       '
          ENDIF
C
C       Autres elements
C       ===============
        ELSE
          NBROBL=1
          SEGINI NOMID
          LESOBL(1)='T       '
        ENDIF
C     =================================================================
C     FORMULATION DIFFUSION
C     =================================================================
      ELSE IF (MFR2.EQ.73) THEN
C
C       Recuperation du LISTMOTS dans IVAMOD(1)
        MLMOT1=IVAMOD(1)

C       Recuperation de l'inconnue PRIMALE
        CCOMP =MLMOT1.MOTS(1)
        NBCHAR=LONG(CCOMP)
        IF (NBCHAR.GT.LOCOMP) THEN
          CALL ERREUR(536)
          RETURN
        ENDIF
C
C       Elements COQUE
C       ==============
        IF (MFR.EQ.3 .OR. MFR.EQ.5 .OR. MFR.EQ.9) THEN
          NPINT=infmod(1)
          IF(NPINT.EQ.0) THEN
             NBROBL=3
             SEGINI NOMID
             LESOBL(1)=CCOMP(1:NBCHAR)//'IN     '
             LESOBL(2)=CCOMP
             LESOBL(3)=CCOMP(1:NBCHAR)//'SU     '
          ELSE
             NBROBL = 1
             SEGINI NOMID
             LESOBL(1)=CCOMP
          ENDIF
C
C       Autres elements
C       ===============
        ELSE
          NBROBL = 1
          SEGINI NOMID
          LESOBL(1)=CCOMP
        ENDIF
C     =================================================================
C     FORMULATION CHANGEMENT_PHASE
C     =================================================================
      ELSE IF (MFR2.EQ.30) THEN
C
        IF (IMODEL.CMATEE.EQ.'CHPH_PAR') THEN
          NBROBL=1
          NBRFAC=0
          SEGINI,NOMID
          MLMOT1=IMODEL.IVAMOD(1)
          NOMID.LESOBL(1)=MLMOT1.MOTS(1)
        ELSE IF  (IMODEL.CMATEE.EQ.'CHPH_SOL')THEN
          NBROBL=2
          NBRFAC=0
          SEGINI,NOMID
          MLMOT1=IMODEL.IVAMOD(1)
          NOMID.LESOBL(1)=MLMOT1.MOTS(1)
          NOMID.LESOBL(2)=MLMOT1.MOTS(2)
        ENDIF
C     =================================================================
      ENDIF
C        
      IF (NOMID.NE.0) THEN
        if (ifomod.eq.6) then
          nbrfa0 = nbrfac
          NBRFAC = NBROBL + (nbrfa0*2)
          segadj nomid
          do imo = 1,nbrobl
           lesfac(nbrfa0 + imo)(2:4) = lesobl(imo)(1:3)
           lesfac(nbrfa0 + imo)(1:1) = 'I'
          enddo
          do imo = 1,nbrfa0
           lesfac(nbrfa0+nbrobl+imo)(2:4) = lesfac(imo)(1:3)
           lesfac(nbrfa0+nbrobl+imo)(1:1) = 'I'
          enddo
        endif
      ENDIF
C
      IF (NOMID.NE.0) SEGACT,NOMID*NOMOD
      IPNOMC=NOMID
      END
 
 
 
