C LEKMOF    SOURCE    CB215821  20/11/25    13:33:34     10792          
      SUBROUTINE LEKMOF(MTABD,NU,MTABX,KINC,IHV,MCHELM,KPOIND,
     &MUG,MCHELG)
      IMPLICIT INTEGER(I-N)
      IMPLICIT REAL*8 (A-H,O-Z)
C***********************************************************************
C
C Ce sous programme lit le NUième coefficient d'un opérateur, stocké
C à l'indice ARGnu de la table KIZX de pointeur MTABX associée à
C l'opérateur en cours de traitement.
C Le coefficient est de type ENTIER, FLOTTANT, POINT, CHPOINT ou MOT.
C Dans le cas MOT, on récupère la donnée se trouvant à l'indice MOT
C de la table INCO.
C Ce Sp lit lit le coefficient et rend un MCHAML quoi qu'il arrive
C Le MCHAML en retour est jetable il est calcule aux pts d'integrations
C----------------------------------------------------------------------
C HISTORIQUE : 20/10/01 : Création
C
C HISTORIQUE :
C
C
C---------------------------
C Paramètres Entrée/Sortie :
C---------------------------
C
C E/  MTABD  : Objet model de la zone
C E/  NU     : Rang du coefficient à aller chercher (ENTIER)
C E/  MTABX  : Pointeur de la table contenant le coefficient
C E/  KINC   : Pointeur de la table INCO dans laquelle on va chercher
C              les valeurs des indices lorsque ceux-ci sont des MOTS.
C E/  IHV=0 CHPOINT SCALAIRE ou FLOTTANT
C     IHV=1 CHPOINT VECTEUR  ou POINT
C E/  MUG=0 On rend le coefficient tel quel
C E/  MUG=1 Si le coefficient est un CHPOINT On retourne en plus le gradient
C  /S MCHELM : Chamelem pts d'intégration pour le COEF
C  /S MCHELG : Chamelem pts d'intégration pour le Gradient du coef (=0 sinon)
C E/  KPOIND : ENTIER type du support GÉométrique DUAL du shéma
C              d'intégration => pour la création du Chamelem
C----------------------------------------------------------------------
C KPOIN = 0->SOMMET 1-> FACE     2-> CENTRE  3-> CENTREP0 4-> CENTREP1 5-> MSOMMET
C----------------------------------------------------------------------
C************************************************************************

-INC SMCHAML
-INC SMCHPOI
-INC SMELEME
-INC SMCOORD
-INC PPARAM
-INC CCOPTIO
-INC CCGEOME
      CHARACTER*8 TYPE,NOM,NARG,TYPM
      LOGICAL LOGI
      DIMENSION XPOI(3)
C*****************************************************************************
CLEKMOF
C
C- Récupération du TYPE du NUième argument de l'opérateur
C
C     write(6,*)' DEBUT LEKMOF NU=',NU

      IF (NU.LE.0 .OR. NU.GE.100) THEN
         INTERR(1) = NU
         INTERR(2) = 1
         INTERR(3) = 99
         CALL ERREUR(789)
         RETURN
      ENDIF
      IF (NU.LE.9) THEN
         WRITE(NARG,FMT='(A3,I1)')'ARG',Nu
      ELSE
         WRITE(NARG,FMT='(A3,I2)')'ARG',Nu
      ENDIF
      TYPE = ' '
      CALL LENCHA(NARG,LC)
c     write(6,*)' AVANT ACCTAB type=',type,NARG(1:LC),nom
      CALL ACCTAB(MTABX,'MOT',   0,0.D0,NARG(1:LC),LOGI,     0,
     &                  TYPE ,IVAL,COEF,       NOM,LOGI,MCHPOI)

c     write(6,*)' TYPE,COEF,MCHPOI,IVAL=',TYPE,COEF,MCHPOI,IVAL
      IF(TYPE.EQ.'ENTIER')COEF=FLOAT(IVAL)
      IF(TYPE.EQ.'MOT')THEN
      TYPE=' '
      CALL ACMO(KINC,NOM,TYPE,MCHPOI)

c     write(6,*)' NOM=',NOM,' TYPE,ip=',TYPE,MCHPOI
       IF(TYPE.EQ.'ENTIER')THEN
        CALL ACME(KINC,NOM,IVAL)
        COEF=FLOAT(IVAL)
        ELSEIF(TYPE.EQ.'FLOTTANT')THEN
        CALL ACMF(KINC,NOM,COEF)
       ENDIF
      ENDIF


       IF(TYPE.EQ.'POINT')THEN
        IP=MCHPOI
        XPOI(1) = XCOOR((IP-1)*(IDIM+1) +1)
        XPOI(2) = XCOOR((IP-1)*(IDIM+1) +2)
        IF (IDIM.EQ.3) XPOI(3) = XCOOR((IP-1)*(IDIM+1) +3)
       ENDIF

c       write(6,*)'TYPE=',TYPE
      IF(TYPE.NE.'FLOTTANT'.AND.TYPE.NE.'ENTIER'.AND.
     &   TYPE.NE.'CHPOINT '.AND.TYPE.NE.'MCHAML  '.AND.IHV.EQ.0)THEN
C On ne veut pas d'objet de type %m1:8
      MOTERR(1: 8) = TYPE
      CALL ERREUR(39)
      RETURN
      ENDIF

      IF(TYPE.NE.'POINT'.AND.
     &   TYPE.NE.'CHPOINT '.AND.TYPE.NE.'MCHAML  '.AND.IHV.EQ.1)THEN
C On ne veut pas d'objet de type %m1:8
      MOTERR(1: 8) = TYPE
      CALL ERREUR(39)
      RETURN
      ENDIF

         TYPM=' '
         CALL ACMO(MTABX,'DOMZ',TYPM,IMDL)
      CALL MELMOF(IMDL,MTABD,IHV,TYPE,COEF,XPOI,MCHPOI,MCHELM,KPOIND,
     &MUG,MCHELG)

c     write(6,*)' FIN LEKMOF MUG=',MUG
      RETURN
 1001 FORMAT(20(1X,I5))
 1002 FORMAT(10(1X,1PE11.4))
      END










 
 
 
