Télécharger vari.eso

Retour à la liste

Numérotation des lignes :

  1. C VARI SOURCE CB215821 18/09/21 21:16:56 9930
  2.  
  3. *_______________________________________________________________________
  4. *
  5. * Calcul d'un champ variable
  6. * ( MCHAML, CHPOINT )
  7. *
  8. *
  9. * 1 ere Possibilite
  10. * -----------------
  11. * Variation d'un champ en fonction d'une loi de variation
  12. *
  13. * CHEL2 = VARI MODL1 ! CHEL1 ! EVOL1 (MOT1) ;
  14. * ! CHPO1 !
  15. * ou
  16. *
  17. * CHPO2 = VARI CHPO1 EVOL1 (MOT2) ;
  18. *
  19. * CHEL1 Champ donne, type MCHAML
  20. * CHPO1 Champ donne, type CHPOINT
  21. * EVOL1 Objet definissant la loi de variation, type EVOLUTION
  22. * MODL1 Modele de calcul, type MMODEL
  23. * MOT1 Objet de type MOT precisant le support du champ scalaire
  24. * MOT2 Nom a donner a la composante du CHPOINT resultat
  25. *
  26. * 2 eme Possibilite
  27. * -----------------
  28. * Variation d'un champ/element ayant un ou des composante(s)
  29. * de type EVOLUTION ou NUAGE en fonction d'un champ/point
  30. * ou d'un champ/element. Ce champ/point ou champ/element
  31. * ne doit avoir qu'une seul composante de nom quelconque.
  32. * (Exemple d'application : variation des caracteristiques
  33. * de materiaux en fonction de la temperature)
  34. *
  35. * CHEL2 = VARI 'NUAG' MODL1 CHEL1 CHEP1 (MOT1) ;
  36. *
  37. * CHEL1 Champ donne, type MCHAML
  38. * CHEP1 Champ donne, type CHPOINT ou MCHAML
  39. * MODL1 Modele de calcul, type MMODEL
  40. * MOT1 Objet de type MOT precisant le support du champ.
  41. * S'il est absent, le support du champ CHEL2
  42. * sera le support RIGIDITE
  43. *_______________________________________________________________________
  44.  
  45. SUBROUTINE VARI
  46.  
  47. IMPLICIT INTEGER(I-N)
  48. IMPLICIT REAL*8 (A-H,O-Z)
  49.  
  50. -INC CCOPTIO
  51.  
  52. CHARACTER*8 MOCHAM(5),MOFLUI(23)
  53. CHARACTER*4 MOT2, MONUAG(1)
  54. CHARACTER*72 CHAR
  55.  
  56. DATA MOCHAM/'NOEUD ','GRAVITE ','RIGIDITE','MASSE ',
  57. & 'STRESSES'/
  58.  
  59. DATA MOFLUI/'CPLIQ ','HLS ','HVS ','LATENT ',
  60. & 'PSATT ','PVAP ','ROLIQ ','ROVAP ',
  61. & 'TLIQUID ','TSATP ','ZVAP ','TODIFF ',
  62. & 'TOCOND ','DHVDT ','DHVDP ','DHLDP ',
  63. & 'DPSAT ','DZVDP ','DZVDT ','DRVDP ',
  64. & 'DRVDT ','MULIQ ','LBDALIQ '/
  65.  
  66. DATA MONUAG/'NUAG'/
  67.  
  68. IFLUI = 0
  69. INUAGE = 0
  70. IPMODL = 0
  71. IRET = 0
  72. MICHE = 0
  73.  
  74. * -----------
  75. * On cherche une des entrees des tables de l'eau
  76. * -----------
  77. CALL LIRMOT(MOFLUI,23,IFLUI,0)
  78. IF (IERR.NE.0) RETURN
  79.  
  80. * ===========
  81. * SYNTAXE 3 : Appel aux tables de l'eau
  82. * ===========
  83. IF (IFLUI.NE.0) THEN
  84. CALL VARIO(IFLUI)
  85. RETURN
  86. ENDIF
  87.  
  88. * -----------
  89. * On cherche la presence du mot-cle NUAG
  90. * -----------
  91. CALL LIRMOT(MONUAG,1,INUAGE,0)
  92. IF (IERR.NE.0) RETURN
  93.  
  94. * ===========
  95. * SYNTAXE 2 : 'VARI' 'NUAGE'
  96. * ===========
  97. IF (INUAGE.EQ.1) THEN
  98.  
  99. *- Lecture du modele :
  100. CALL LIROBJ('MMODEL ',IPMODL,1,iretou)
  101. IF (IERR.NE.0) RETURN
  102. CALL ACTOBJ('MMODEL ',IPMODL,1)
  103.  
  104. *- Lecture du 1er MCHAML decrivant la fonction a appliquer ("NUAGE") :
  105. CALL LIROBJ('MCHAML ',IRE1a,1,iretou)
  106. IF (IERR.NE.0) RETURN
  107. CALL ACTOBJ('MCHAML ',IRE1a,1)
  108. CALL REDUAF(IRE1a,IPMODL,IRE1,0,IR,KER)
  109. IF(IR .NE. 1) CALL ERREUR(KER)
  110. IF(IERR .NE. 0) RETURN
  111.  
  112. *- Lecture du 2e CHAMP (MCHAML ou CHPOINT) entree de la fonction :
  113. CALL LIROBJ('MCHAML ',IRE2a,0,iretou)
  114. IF (IERR.NE.0) RETURN
  115. IF (iretou.EQ.1) THEN
  116. CALL ACTOBJ('MCHAML ',IRE2a,1)
  117. CALL REDUAF(IRE2a,IPMODL,IRE2,0,IR,KER)
  118. IF(IR .NE. 1) CALL ERREUR(KER)
  119. IF(IERR .NE. 0) RETURN
  120. ELSE
  121. CALL LIROBJ('CHPOINT ',IRE2,1,iretou)
  122. IF (IERR.NE.0) RETURN
  123. CALL ACTOBJ('CHPOINT ',IRE2,1)
  124. MICHE = 1
  125. ENDIF
  126.  
  127. *- Lecture optionnelle du support du champ resultat :
  128. JEMIL = 0
  129. CALL LIRMOT(MOCHAM,5,JEMIL,0)
  130. IF (IERR.NE.0) RETURN
  131. IF (JEMIL.EQ.0) JEMIL = 3
  132.  
  133. *- Lecture optionnelle d'un sous-type pour le champ resultat :
  134. iretou = 0
  135. CHAR = ' '
  136. CALL LIRCHA(CHAR,0,iretou)
  137. IF (IERR.NE.0) RETURN
  138. IF (iretou.EQ.0) CHAR = ' '
  139.  
  140. *- Calcul du MCHAML resultat IRET :
  141. CALL VARINU(IRE1,IRE2,IPMODL,IRET,MICHE,JEMIL,CHAR)
  142.  
  143. *- Ecriture du resultat sauf en cas d'erreur :
  144. IF (IRET.NE.0) THEN
  145. CALL ACTOBJ('MCHAML ',IRET,1)
  146. CALL ECROBJ('MCHAML ',IRET)
  147. ENDIF
  148.  
  149. * ===========
  150. * SYNTAXE 1 : 'VARI' ... EVOL1 ;
  151. * ===========
  152. * ELSE IF (INUAGE.EQ.0) THEN
  153. ELSE
  154.  
  155. *- Lecture du premier objet (MMODEL ou CHPOINT) :
  156. CALL LIROBJ('MMODEL ',IPMODL,0,iretou)
  157. IF (IERR.NE.0) RETURN
  158.  
  159. C- -------------
  160. C- Syntaxe 1.1 : VARI modl1 champ1 evol1 ... ;
  161. C- -------------
  162. * IF (IPMODL.NE.0) THEN
  163. IF (iretou.NE.0) THEN
  164.  
  165. *- Lecture du champ d'entree (MCHAML ou CHPOINT) :
  166. CALL LIROBJ('MCHAML ',IRE1,0,iretou)
  167. IF (IERR.NE.0) RETURN
  168. IF (iretou.EQ.0) THEN
  169. CALL LIROBJ('CHPOINT ',IRE1,1,iretou)
  170. IF (IERR.NE.0) RETURN
  171. MICHE = 1
  172. ENDIF
  173.  
  174. *- Lecture d'une EVOLUTION donnant la fonction a appliquer :
  175. CALL LIROBJ('EVOLUTIO',IRE2,1,iretou)
  176. IF (IERR.NE.0) RETURN
  177.  
  178. *- Lecture optionnelle du support du champ resultat :
  179. JEMIL = 0
  180. CALL LIRMOT(MOCHAM,5,JEMIL,0)
  181. IF (IERR.NE.0) RETURN
  182. IF (JEMIL.EQ.0) JEMIL = 3
  183.  
  184. *- Calcul du MCHAML resultat IRET :
  185. CALL VARICA(IRE1,IRE2,IPMODL,IRET,MICHE,JEMIL)
  186.  
  187. *- Ecriture du resultat sauf en cas d'erreur :
  188. IF (IRET.NE.0) CALL ECROBJ('MCHAML ',IRET)
  189.  
  190. C- -------------
  191. C- Syntaxe 1.2 : VARI chpo1 evol1 ... ;
  192. C- -------------
  193. ELSE
  194. * IF (IPMODL.EQ.0) THEN
  195.  
  196. *- Lecture du CHPOINT d'entree :
  197. CALL LIROBJ('CHPOINT ',IRE1,1,iretou)
  198. IF (IERR.NE.0) RETURN
  199.  
  200. *- Lecture d'une EVOLUTION donnant la fonction a appliquer :
  201. CALL LIROBJ('EVOLUTIO',IRE2,1,iretou)
  202. IF (IERR.NE.0) RETURN
  203.  
  204. *- Lecture optionnelle du nom de la composante resultat
  205. MOT2 = ' '
  206. CALL LIRCHA(MOT2,0,iretou)
  207. IF (IERR.NE.0) RETURN
  208. IF (iretou.EQ.0) MOT2 = ' '
  209.  
  210. *- Calcul du CHPOINT resultat IRET :
  211. CALL VARIPO(IRE1,IRE2,MOT2,IRET)
  212.  
  213. *- Ecriture du CHPOINT resultat sauf en cas d'erreur :
  214. IF (IRET.NE.0) CALL ECROBJ('CHPOINT ',IRET)
  215.  
  216. ENDIF
  217.  
  218. ENDIF
  219.  
  220. RETURN
  221. END
  222.  
  223.  
  224.  
  225.  
  226.  
  227.  

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