Télécharger lekmof.eso

Retour à la liste

Numérotation des lignes :

lekmof
  1. C LEKMOF SOURCE CB215821 20/11/25 13:33:34 10792
  2. SUBROUTINE LEKMOF(MTABD,NU,MTABX,KINC,IHV,MCHELM,KPOIND,
  3. &MUG,MCHELG)
  4. IMPLICIT INTEGER(I-N)
  5. IMPLICIT REAL*8 (A-H,O-Z)
  6. C***********************************************************************
  7. C
  8. C Ce sous programme lit le NUième coefficient d'un opérateur, stocké
  9. C à l'indice ARGnu de la table KIZX de pointeur MTABX associée à
  10. C l'opérateur en cours de traitement.
  11. C Le coefficient est de type ENTIER, FLOTTANT, POINT, CHPOINT ou MOT.
  12. C Dans le cas MOT, on récupère la donnée se trouvant à l'indice MOT
  13. C de la table INCO.
  14. C Ce Sp lit lit le coefficient et rend un MCHAML quoi qu'il arrive
  15. C Le MCHAML en retour est jetable il est calcule aux pts d'integrations
  16. C----------------------------------------------------------------------
  17. C HISTORIQUE : 20/10/01 : Création
  18. C
  19. C HISTORIQUE :
  20. C
  21. C
  22. C---------------------------
  23. C Paramètres Entrée/Sortie :
  24. C---------------------------
  25. C
  26. C E/ MTABD : Objet model de la zone
  27. C E/ NU : Rang du coefficient à aller chercher (ENTIER)
  28. C E/ MTABX : Pointeur de la table contenant le coefficient
  29. C E/ KINC : Pointeur de la table INCO dans laquelle on va chercher
  30. C les valeurs des indices lorsque ceux-ci sont des MOTS.
  31. C E/ IHV=0 CHPOINT SCALAIRE ou FLOTTANT
  32. C IHV=1 CHPOINT VECTEUR ou POINT
  33. C E/ MUG=0 On rend le coefficient tel quel
  34. C E/ MUG=1 Si le coefficient est un CHPOINT On retourne en plus le gradient
  35. C /S MCHELM : Chamelem pts d'intégration pour le COEF
  36. C /S MCHELG : Chamelem pts d'intégration pour le Gradient du coef (=0 sinon)
  37. C E/ KPOIND : ENTIER type du support GÉométrique DUAL du shéma
  38. C d'intégration => pour la création du Chamelem
  39. C----------------------------------------------------------------------
  40. C KPOIN = 0->SOMMET 1-> FACE 2-> CENTRE 3-> CENTREP0 4-> CENTREP1 5-> MSOMMET
  41. C----------------------------------------------------------------------
  42. C************************************************************************
  43.  
  44. -INC SMCHAML
  45. -INC SMCHPOI
  46. -INC SMELEME
  47. -INC SMCOORD
  48. -INC PPARAM
  49. -INC CCOPTIO
  50. -INC CCGEOME
  51. CHARACTER*8 TYPE,NOM,NARG,TYPM
  52. LOGICAL LOGI
  53. DIMENSION XPOI(3)
  54. C*****************************************************************************
  55. CLEKMOF
  56. C
  57. C- Récupération du TYPE du NUième argument de l'opérateur
  58. C
  59. C write(6,*)' DEBUT LEKMOF NU=',NU
  60.  
  61. IF (NU.LE.0 .OR. NU.GE.100) THEN
  62. INTERR(1) = NU
  63. INTERR(2) = 1
  64. INTERR(3) = 99
  65. CALL ERREUR(789)
  66. RETURN
  67. ENDIF
  68. IF (NU.LE.9) THEN
  69. WRITE(NARG,FMT='(A3,I1)')'ARG',Nu
  70. ELSE
  71. WRITE(NARG,FMT='(A3,I2)')'ARG',Nu
  72. ENDIF
  73. TYPE = ' '
  74. CALL LENCHA(NARG,LC)
  75. c write(6,*)' AVANT ACCTAB type=',type,NARG(1:LC),nom
  76. CALL ACCTAB(MTABX,'MOT', 0,0.D0,NARG(1:LC),LOGI, 0,
  77. & TYPE ,IVAL,COEF, NOM,LOGI,MCHPOI)
  78.  
  79. c write(6,*)' TYPE,COEF,MCHPOI,IVAL=',TYPE,COEF,MCHPOI,IVAL
  80. IF(TYPE.EQ.'ENTIER')COEF=FLOAT(IVAL)
  81. IF(TYPE.EQ.'MOT')THEN
  82. TYPE=' '
  83. CALL ACMO(KINC,NOM,TYPE,MCHPOI)
  84.  
  85. c write(6,*)' NOM=',NOM,' TYPE,ip=',TYPE,MCHPOI
  86. IF(TYPE.EQ.'ENTIER')THEN
  87. CALL ACME(KINC,NOM,IVAL)
  88. COEF=FLOAT(IVAL)
  89. ELSEIF(TYPE.EQ.'FLOTTANT')THEN
  90. CALL ACMF(KINC,NOM,COEF)
  91. ENDIF
  92. ENDIF
  93.  
  94.  
  95. IF(TYPE.EQ.'POINT')THEN
  96. IP=MCHPOI
  97. XPOI(1) = XCOOR((IP-1)*(IDIM+1) +1)
  98. XPOI(2) = XCOOR((IP-1)*(IDIM+1) +2)
  99. IF (IDIM.EQ.3) XPOI(3) = XCOOR((IP-1)*(IDIM+1) +3)
  100. ENDIF
  101.  
  102. c write(6,*)'TYPE=',TYPE
  103. IF(TYPE.NE.'FLOTTANT'.AND.TYPE.NE.'ENTIER'.AND.
  104. & TYPE.NE.'CHPOINT '.AND.TYPE.NE.'MCHAML '.AND.IHV.EQ.0)THEN
  105. C On ne veut pas d'objet de type %m1:8
  106. MOTERR(1: 8) = TYPE
  107. CALL ERREUR(39)
  108. RETURN
  109. ENDIF
  110.  
  111. IF(TYPE.NE.'POINT'.AND.
  112. & TYPE.NE.'CHPOINT '.AND.TYPE.NE.'MCHAML '.AND.IHV.EQ.1)THEN
  113. C On ne veut pas d'objet de type %m1:8
  114. MOTERR(1: 8) = TYPE
  115. CALL ERREUR(39)
  116. RETURN
  117. ENDIF
  118.  
  119. TYPM=' '
  120. CALL ACMO(MTABX,'DOMZ',TYPM,IMDL)
  121. CALL MELMOF(IMDL,MTABD,IHV,TYPE,COEF,XPOI,MCHPOI,MCHELM,KPOIND,
  122. &MUG,MCHELG)
  123.  
  124. c write(6,*)' FIN LEKMOF MUG=',MUG
  125. RETURN
  126. 1001 FORMAT(20(1X,I5))
  127. 1002 FORMAT(10(1X,1PE11.4))
  128. END
  129.  
  130.  
  131.  
  132.  
  133.  
  134.  
  135.  
  136.  
  137.  
  138.  
  139.  
  140.  
  141.  
  142.  

© Cast3M 2003 - Tous droits réservés.
Mentions légales