Télécharger lmdtab.eso

Retour à la liste

Numérotation des lignes :

lmdtab
  1. C LMDTAB SOURCE OF166741 24/03/28 21:15:05 11811
  2.  
  3. C***********************************************************************
  4. C NOM : lmdtab.eso
  5. C DESCRIPTION : Sortie d'un MCHAML au format .med
  6. C***********************************************************************
  7. C HISTORIQUE : 07/12/2017 : RPAREDES : Creation
  8. C HISTORIQUE : 10/01/2024 : OF : Modifications legeres
  9. C HISTORIQUE : 24/01/2024 : OF : Modifications legeres (2)
  10. C HISTORIQUE : 31/01/2024 : OF : Modifications legeres (3)
  11. C HISTORIQUE : 12/02/2024 : OF : Passage en MED 64b
  12. C***********************************************************************
  13. C Priere de PRENDRE LE TEMPS DE COMPLETER LES COMMENTAIRES
  14. C en cas de modification de ce sous-programme afin de faciliter
  15. C la maintenance !
  16. C***********************************************************************
  17. C APPELE PAR : operateur (LIRE 'MED') lirmed.eso
  18. C***********************************************************************
  19. C ENTREES : MFID : Id du fichier
  20. C MTABLE : Table avec la geometrie
  21. C NBNOIN : Numerotation de noeuds courant
  22. C SLSCHA : Segment avec l'information des champs
  23. C SLSSOR : Segment avec l'information de la table
  24. C SORTIES : ISOR : Pointeur vers la TABLE
  25. C***********************************************************************
  26.  
  27. SUBROUTINE LMDTAB(MFID, MTABLE, NBNOIN, SLSCHA, SLSSOR, ISOR)
  28.  
  29. IMPLICIT INTEGER(i-n)
  30. IMPLICIT REAL*8(a-h,o-z)
  31.  
  32. -INC PPARAM
  33. -INC CCOPTIO
  34. -INC CCGEOME
  35. -INC CCMED
  36.  
  37. -INC SMELEME
  38. -INC SMLMOTS
  39. -INC SMTABLE
  40. -INC SMCHAML
  41. -INC SMCHPOI
  42.  
  43. CHARACTER*8 cha8a
  44. CHARACTER*(MED_NAME_SIZE) fname
  45.  
  46. EXTERNAL LONG
  47.  
  48. C ***** Declaration des segments
  49. C----- SEG SLSCHA
  50. C LISMAI : nom du maillage
  51. C ncham : nombre de champs (CHPOINT ou MCHAML)
  52. C LISCHA : liste des noms de champs
  53. C LSCHIN : liste de SEG CHAINF (information)
  54. C LSPARA : liste de SEG CHAPAR (parametres)
  55. SEGMENT SLSCHA
  56. CHARACTER*(MED_NAME_SIZE) LISMAI
  57. CHARACTER*(MED_NAME_SIZE) LISCHA(ncham)
  58. INTEGER LSCHIN(ncham), LSPARA(ncham)
  59. ENDSEGMENT
  60.  
  61. SEGMENT SLSFUS
  62. INTEGER CHAFUS(nbfus)
  63. ENDSEGMENT
  64.  
  65. C----- SEG SLSSOR
  66. C nbsor : nombre de champs a sortir
  67. C CHATYP : type de champ (CHPOINT, MCHAML ou TABLE)
  68. C CHANOM : nom du champ
  69. C CHALIS : liste de champs dans un segment SLSFUS(CHPOINT ou MCHAML)
  70. C ou SLSSOR(TABLE)
  71. SEGMENT SLSSOR
  72. CHARACTER*8 CHATYP(nbsor)
  73. CHARACTER*(MED_NAME_SIZE) CHANOM(nbsor)
  74. INTEGER CHALIS(nbsor)
  75. ENDSEGMENT
  76.  
  77. SEGMENT CHAINF
  78. C nseq : nombre de sequences de calcul dans le champ
  79. C ncomp : nombre de composantes
  80. C INUMDT : liste de numeros de pas de tps
  81. C INUMIT : liste de numeros d'iteration
  82. C ISCHPR : liste de SEG CHAPRO (profil)
  83. C XDT : liste de pas de tps
  84. C CNAME : liste de noms des composants
  85. C CUNIT : liste d'unites des composants
  86. INTEGER INUMDT(nseq), INUMIT(nseq), ISCHPR(nseq)
  87. REAL*8 XDT(nseq)
  88. CHARACTER*(MED_SNAME_SIZE) CNAME(ncomp), CUNIT(ncomp)
  89. ENDSEGMENT
  90.  
  91. LOGICAL login,logre
  92.  
  93. C***********************************************************************
  94. C Ecriture de la TABLE
  95. C***********************************************************************
  96.  
  97. C-----Initialisation
  98. intin = 0
  99. intre = 0
  100. floin = 0.D0
  101. flore = 0.D0
  102. login = .FALSE.
  103. logre = .TRUE.
  104.  
  105. ISOR = 0
  106.  
  107. nbsor = SLSSOR.CHALIS(/1)
  108. m = nbsor + 1
  109. SEGINI MTAB1
  110.  
  111. DO ia=1,nbsor
  112. cha8a = SLSSOR.CHATYP(ia)
  113. fname = SLSSOR.CHANOM(ia)
  114. SLSFUS = SLSSOR.CHALIS(ia)
  115. nbfus = SLSFUS.CHAFUS(/1)
  116. IF (nbfus .EQ. 0) THEN
  117. CALL ERREUR(21)
  118. RETURN
  119. ENDIF
  120. icha = SLSFUS.CHAFUS(1)
  121. CHAINF = SLSCHA.LSCHIN(icha)
  122. m = CHAINF.INUMDT(/1)
  123.  
  124. C-------Ecriture du temps
  125. IF (ia .EQ. 1) THEN
  126. SEGINI MTAB2
  127. DO ib = 1, m
  128. indt = CHAINF.INUMDT(ib)
  129. xndt = CHAINF.XDT(ib)
  130. MTAB2.MTABTI(ib) = 'ENTIER'
  131. MTAB2.MTABTV(ib) = 'FLOTTANT'
  132. MTAB2.MTABII(ib) = indt
  133. MTAB2.RMTABV(ib) = xndt
  134. ENDDO
  135. MTAB2.MLOTAB = m
  136. SEGDES MTAB2
  137. CALL ECCTAB(MTAB1,'MOT ',intin,floin,'TEMPS',login,intin,
  138. & 'TABLE ',intre,flore,' ',logre,MTAB2)
  139. ENDIF
  140.  
  141. SEGINI MTAB2
  142. DO ib = 1, m
  143. isor2 = 0
  144. IF (cha8a .EQ. 'CHPOINT ') THEN
  145. CALL LMDCHP(MFID, MTABLE, NBNOIN, SLSCHA,SLSFUS, ib, isor2)
  146. ELSEIF (cha8a .EQ. 'MCHAML ') THEN
  147. CALL LMDCHM(MFID, MTABLE, SLSCHA,SLSFUS, ib, isor2)
  148. ENDIF
  149. IF (IERR.NE.0) RETURN
  150. IF (isor2 .EQ. 0) THEN
  151. CALL ERREUR(21)
  152. RETURN
  153. ENDIF
  154. indt = CHAINF.INUMDT(ib)
  155. MTAB2.MTABTI(ib) = 'ENTIER '
  156. MTAB2.MTABTV(ib) = cha8a
  157. MTAB2.MTABII(ib) = indt
  158. MTAB2.MTABIV(ib) = isor2
  159. ENDDO
  160. MTAB2.MLOTAB = m
  161. SEGDES MTAB2
  162. CALL ECCTAB(MTAB1,'MOT ',intin,floin,fname,login,intin,
  163. & 'TABLE ',intre,flore,' ',logre,MTAB2)
  164. ENDDO
  165.  
  166. ISOR = MTAB1
  167.  
  168. C RETURN
  169. END
  170.  
  171.  
  172.  

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