C MESMBR    SOURCE    GOUNAND   25/04/30    21:15:20     12258          
      SUBROUTINE MESMBR(MATRIK,KSMBR,
     $     KS2B,
     $     IMPR,IRET)
      IMPLICIT REAL*8 (A-H,O-Z)
      IMPLICIT INTEGER (I-N)
C***********************************************************************
C NOM         : MESMBR
C DESCRIPTION :
C     Ce sp initialise le second membre
C     (i.e. b de Ax=b) avec un chpoint d'inconnues duales.
C     On a en vue une méthode itérative de résolution.
C
C     Ce sp est quasiment identique à mexini.eso.
C     C'est une interface à ch2vec.
C
C
C LANGAGE     : ESOPE
C AUTEUR      : Stéphane GOUNAND (CEA/DRN/DMT/SEMT/TTMF)
C               mél : gounand@semt2.smts.cea.fr
C***********************************************************************
C APPELE  : CH2VEC
C***********************************************************************
C ENTREES            : MATRIK, KSMBR, IMPR
C ENTREES/SORTIES    : -
C SORTIES            : IRET
C CODE RETOUR (IRET) : 0 si ok
C                     <0 si problème
C     MATRIK : pointeur sur segment MATRIK de l'include SMMATRIK
C              on pioche dedans les informations nécessaires
C              (numérotations, inconnues, support géométriques)
C              pour effectuer la conversion KSMBR->KS2B.
C     KSMBR  : pointeur sur segment MCHPOI de l'include SMCHPOI
C              chpoint d'initialisation du vecteur KS2B
C     IMPR   : niveau d'impression
C     KS2B   : pointeur sur segment IZA de l'include SMMATRIK
C              vecteur b pour la résolution de Ax=b.
C              Il est initialisé à 0 si KSMBR est nul
C              sinon les valeurs non nulles de KSMBR
C              correspondant à des inconnues primales sont
C              chargées dans KS2B.
C              Les valeurs non nulles de KSMBR NE correspondant
C              PAS à des inconnues primales donnent lieu à
C              l'émission d'un warning (cf. CH2VEC).
C***********************************************************************
C VERSION    : v1, 01/04/98, version initiale
C HISTORIQUE : v1, 01/04/98, création
C HISTORIQUE : v1, 09/04/04, remplacer kidmat(1) par kidmat(2)
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
-INC SMMATRIK
      POINTEUR KS2B.IZA
-INC SMCHPOI
      POINTEUR KSMBR.MCHPOI
-INC SMELEME
      POINTEUR KISPG.MELEME
C
      IRET=0
      SEGACT MATRIK
C Initialisation du vecteur second membre à 0
      NBVA=KNTTD
      SEGINI KS2B
      IF(KSMBR.NE.0) THEN
C
C On transforme le chpoint en vecteur
C
C     Entrées
         MCHPOI=KSMBR
         MINC  =KMINCD
         KISPG =KISPGD
         IDMAT =KIDMAT(2)
C     Sortie : KS2B
C
         CALL CH2VEC(MCHPOI,MINC,KISPG,IDMAT,KS2B,IMPR,IRET)
         IF (IRET.NE.0) GOTO 9999
C
      ENDIF
C
      IF (IMPR.GT.5) THEN
         WRITE(IOIMP,*) 'mesmbr : création du pointeur KS2B=',KS2B
         WRITE(IOIMP,*) '         a partir du CHPOINT KSMBR=',KSMBR
         IF (IMPR.GT.7) THEN
            WRITE(IOIMP,*) 'KS2B(1..',NBVA,')= '
            WRITE(IOIMP,1002)(KS2B.A(II),II=1,NBVA)
         ENDIF
      ENDIF
C
*
*     Normal termination
*
      RETURN
*
* Format handling
*
 1002 FORMAT(10(1X,1PE11.4))
*
* Error handling
*
 9999 CONTINUE
      WRITE(IOIMP,*) 'An error was detected in mesmbr.eso'
      RETURN
*
* End of MESMBR
*
      END
 
