Télécharger vari.eso

Retour à la liste

Numérotation des lignes :

vari
  1. C VARI SOURCE CB215821 20/11/25 13:41:55 10792
  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.  
  51. -INC PPARAM
  52. -INC CCOPTIO
  53.  
  54. CHARACTER*8 MOCHAM(5),MOFLUI(23)
  55. CHARACTER*4 MONUAG(1)
  56. CHARACTER*(LOCOMP) MOT2
  57. CHARACTER*72 CHAR
  58.  
  59. DATA MOCHAM/'NOEUD ','GRAVITE ','RIGIDITE','MASSE ',
  60. & 'STRESSES'/
  61.  
  62. DATA MOFLUI/'CPLIQ ','HLS ','HVS ','LATENT ',
  63. & 'PSATT ','PVAP ','ROLIQ ','ROVAP ',
  64. & 'TLIQUID ','TSATP ','ZVAP ','TODIFF ',
  65. & 'TOCOND ','DHVDT ','DHVDP ','DHLDP ',
  66. & 'DPSAT ','DZVDP ','DZVDT ','DRVDP ',
  67. & 'DRVDT ','MULIQ ','LBDALIQ '/
  68.  
  69. DATA MONUAG/'NUAG'/
  70.  
  71. IFLUI = 0
  72. INUAGE = 0
  73. IPMODL = 0
  74. IRET = 0
  75. MICHE = 0
  76.  
  77. * -----------
  78. * On cherche une des entrees des tables de l'eau
  79. * -----------
  80. CALL LIRMOT(MOFLUI,23,IFLUI,0)
  81. IF (IERR.NE.0) RETURN
  82.  
  83. * ===========
  84. * SYNTAXE 3 : Appel aux tables de l'eau
  85. * ===========
  86. IF (IFLUI.NE.0) THEN
  87. CALL VARIO(IFLUI)
  88. RETURN
  89. ENDIF
  90.  
  91. * -----------
  92. * On cherche la presence du mot-cle NUAG
  93. * -----------
  94. CALL LIRMOT(MONUAG,1,INUAGE,0)
  95. IF (IERR.NE.0) RETURN
  96.  
  97. * ===========
  98. * SYNTAXE 2 : 'VARI' 'NUAGE'
  99. * ===========
  100. IF (INUAGE.EQ.1) THEN
  101.  
  102. *- Lecture du modele :
  103. CALL LIROBJ('MMODEL ',IPMODL,1,iretou)
  104. CALL ACTOBJ('MMODEL ',IPMODL,1)
  105. IF (IERR.NE.0) RETURN
  106.  
  107. *- Lecture du 1er MCHAML decrivant la fonction a appliquer ("NUAGE") :
  108. CALL LIROBJ('MCHAML ',IRE1a,1,iretou)
  109. CALL ACTOBJ('MCHAML ',IRE1a,1)
  110. IF (IERR.NE.0) RETURN
  111. CALL REDUAF(IRE1a,IPMODL,IRE1,0,IR,KER)
  112. IF(IR .NE. 1) CALL ERREUR(KER)
  113. IF(IERR .NE. 0) RETURN
  114.  
  115. *- Lecture du 2e CHAMP (MCHAML ou CHPOINT) entree de la fonction :
  116. CALL LIROBJ('MCHAML ',IRE2a,0,iretou)
  117. IF (IERR.NE.0) RETURN
  118. IF (iretou.EQ.1) THEN
  119. CALL ACTOBJ('MCHAML ',IRE2a,1)
  120. CALL REDUAF(IRE2a,IPMODL,IRE2,0,IR,KER)
  121. IF(IR .NE. 1) CALL ERREUR(KER)
  122. IF(IERR .NE. 0) RETURN
  123. ELSE
  124. CALL LIROBJ('CHPOINT ',IRE2,1,iretou)
  125. CALL ACTOBJ('CHPOINT ',IRE2,1)
  126. IF (IERR.NE.0) RETURN
  127. MICHE = 1
  128. ENDIF
  129.  
  130. *- Lecture optionnelle du support du champ resultat :
  131. JEMIL = 0
  132. CALL LIRMOT(MOCHAM,5,JEMIL,0)
  133. IF (IERR.NE.0) RETURN
  134. IF (JEMIL.EQ.0) JEMIL = 3
  135.  
  136. *- Lecture optionnelle d'un sous-type pour le champ resultat :
  137. iretou = 0
  138. CHAR = ' '
  139. CALL LIRCHA(CHAR,0,iretou)
  140. IF (IERR.NE.0) RETURN
  141. IF (iretou.EQ.0) CHAR = ' '
  142.  
  143. *- Calcul du MCHAML resultat IRET :
  144. CALL VARINU(IRE1,IRE2,IPMODL,IRET,MICHE,JEMIL,CHAR)
  145.  
  146. *- Ecriture du resultat sauf en cas d'erreur :
  147. IF (IRET.NE.0) THEN
  148. CALL ACTOBJ('MCHAML ',IRET,1)
  149. CALL ECROBJ('MCHAML ',IRET)
  150. ENDIF
  151.  
  152. * ===========
  153. * SYNTAXE 1 : 'VARI' ... EVOL1 ;
  154. * ===========
  155. * ELSE IF (INUAGE.EQ.0) THEN
  156. ELSE
  157.  
  158. *- Lecture du premier objet (MMODEL ou CHPOINT) :
  159. CALL LIROBJ('MMODEL ',IPMODL,0,iretou)
  160. IF (IERR.NE.0) RETURN
  161.  
  162. C- -------------
  163. C- Syntaxe 1.1 : VARI modl1 champ1 evol1 ... ;
  164. C- -------------
  165. * IF (IPMODL.NE.0) THEN
  166. IF (iretou.NE.0) THEN
  167. CALL ACTOBJ('MMODEL ',IPMODL,1)
  168.  
  169. *- Lecture du champ d'entree (MCHAML ou CHPOINT) :
  170. CALL LIROBJ('MCHAML ',IRE1,0,iretou)
  171. IF (IERR.NE.0) RETURN
  172. IF (iretou.EQ.0) THEN
  173. CALL LIROBJ('CHPOINT ',IRE1,1,iretou)
  174. CALL ACTOBJ('CHPOINT ',IRE1,1)
  175. IF (IERR.NE.0) RETURN
  176. MICHE = 1
  177. ELSE
  178. CALL ACTOBJ('MCHAML ',IRE1,1)
  179. ENDIF
  180.  
  181. *- Lecture d'une EVOLUTION donnant la fonction a appliquer :
  182. CALL LIROBJ('EVOLUTIO',IRE2,1,iretou)
  183. CALL ACTOBJ('EVOLUTIO',IRE2,1)
  184. IF (IERR.NE.0) RETURN
  185.  
  186. *- Lecture optionnelle du support du champ resultat :
  187. JEMIL = 0
  188. CALL LIRMOT(MOCHAM,5,JEMIL,0)
  189. IF (IERR.NE.0) RETURN
  190. IF (JEMIL.EQ.0) JEMIL = 3
  191.  
  192. *- Calcul du MCHAML resultat IRET :
  193. CALL VARICA(IRE1,IRE2,IPMODL,IRET,MICHE,JEMIL)
  194.  
  195. *- Ecriture du resultat sauf en cas d'erreur :
  196. IF (IRET.NE.0) THEN
  197. CALL ACTOBJ('MCHAML ',IRET,1)
  198. CALL ECROBJ('MCHAML ',IRET)
  199. ENDIF
  200.  
  201. C- -------------
  202. C- Syntaxe 1.2 : VARI chpo1 evol1 ... ;
  203. C- -------------
  204. ELSE
  205. * IF (IPMODL.EQ.0) THEN
  206.  
  207. *- Lecture du CHPOINT d'entree :
  208. CALL LIROBJ('CHPOINT ',IRE1,1,iretou)
  209. CALL ACTOBJ('CHPOINT ',IRE1,1)
  210. IF (IERR.NE.0) RETURN
  211.  
  212. *- Lecture d'une EVOLUTION donnant la fonction a appliquer :
  213. CALL LIROBJ('EVOLUTIO',IRE2,1,iretou)
  214. CALL ACTOBJ('EVOLUTIO',IRE2,1)
  215. IF (IERR.NE.0) RETURN
  216.  
  217. *- Lecture optionnelle du nom de la composante resultat
  218. MOT2 = ' '
  219. CALL LIRCHA(MOT2,0,iretou)
  220. IF (IERR.NE.0) RETURN
  221. IF (iretou.EQ.0) MOT2 = ' '
  222.  
  223. *- Calcul du CHPOINT resultat IRET :
  224. CALL VARIPO(IRE1,IRE2,MOT2,IRET)
  225.  
  226. *- Ecriture du CHPOINT resultat sauf en cas d'erreur :
  227. IF (IRET.NE.0) THEN
  228. CALL ACTOBJ('CHPOINT ',IRET,1)
  229. CALL ECROBJ('CHPOINT ',IRET)
  230. ENDIF
  231. ENDIF
  232. ENDIF
  233.  
  234. END
  235.  
  236.  
  237.  
  238.  

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