Télécharger vari.eso

Retour à la liste

Numérotation des lignes :

vari
  1. C VARI SOURCE OF166741 26/02/19 21:15:03 12437
  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) TYPOBJ
  55. CHARACTER*8 MOCHAM(5),MOFLUI(23)
  56. CHARACTER*4 MONUAG(1),MOLEXT(1)
  57. CHARACTER*(LOCOMP) MOT2
  58. CHARACTER*72 CHAR
  59.  
  60. DATA MOCHAM/'NOEUD ','GRAVITE ','RIGIDITE','MASSE ',
  61. & 'STRESSES'/
  62.  
  63. DATA MOFLUI/'CPLIQ ','HLS ','HVS ','LATENT ',
  64. & 'PSATT ','PVAP ','ROLIQ ','ROVAP ',
  65. & 'TLIQUID ','TSATP ','ZVAP ','TODIFF ',
  66. & 'TOCOND ','DHVDT ','DHVDP ','DHLDP ',
  67. & 'DPSAT ','DZVDP ','DZVDT ','DRVDP ',
  68. & 'DRVDT ','MULIQ ','LBDALIQ '/
  69.  
  70. DATA MONUAG/'NUAG'/
  71. DATA MOLEXT / 'LEXT' /
  72.  
  73. IFLUI = 0
  74. INUAGE = 0
  75. ILOIEX = 0
  76. IPMODL = 0
  77. IRET = 0
  78. MICHE = 0
  79.  
  80. * -----------
  81. * On cherche une des entrees des tables de l'eau
  82. * -----------
  83. CALL LIRMOT(MOFLUI,23,IFLUI,0)
  84. IF (IERR.NE.0) RETURN
  85.  
  86. * ===========
  87. * SYNTAXE 3 : Appel aux tables de l'eau
  88. * ===========
  89. IF (IFLUI.NE.0) THEN
  90. CALL VARIO(IFLUI)
  91. RETURN
  92. ENDIF
  93.  
  94. * -----------
  95. * On cherche la presence du mot-cle NUAG
  96. * -----------
  97. CALL LIRMOT(MONUAG,1,INUAGE,0)
  98. IF (IERR.NE.0) RETURN
  99.  
  100. * ===========
  101. * SYNTAXE 2 : 'VARI' 'NUAGE'
  102. * ===========
  103. IF (INUAGE.EQ.1) THEN
  104.  
  105. *- Lecture du modele :
  106. CALL LIROBJ('MMODEL ',IPMODL,1,iretou)
  107. CALL ACTOBJ('MMODEL ',IPMODL,1)
  108. IF (IERR.NE.0) RETURN
  109.  
  110. *- Lecture du 1er MCHAML decrivant la fonction a appliquer ("NUAGE") :
  111. CALL LIROBJ('MCHAML ',IRE1a,1,iretou)
  112. CALL ACTOBJ('MCHAML ',IRE1a,1)
  113. IF (IERR.NE.0) RETURN
  114. CALL REDUAF(IRE1a,IPMODL,IRE1,0,IR,KER)
  115. IF(IR .NE. 1) CALL ERREUR(KER)
  116. IF(IERR .NE. 0) RETURN
  117.  
  118. *- Lecture du 2e CHAMP (MCHAML ou CHPOINT) entree de la fonction :
  119. CALL LIROBJ('MCHAML ',IRE2a,0,iretou)
  120. IF (IERR.NE.0) RETURN
  121. IF (iretou.EQ.1) THEN
  122. CALL ACTOBJ('MCHAML ',IRE2a,1)
  123. CALL REDUAF(IRE2a,IPMODL,IRE2,0,IR,KER)
  124. IF(IR .NE. 1) CALL ERREUR(KER)
  125. IF(IERR .NE. 0) RETURN
  126. ELSE
  127. CALL LIROBJ('CHPOINT ',IRE2,1,iretou)
  128. CALL ACTOBJ('CHPOINT ',IRE2,1)
  129. IF (IERR.NE.0) RETURN
  130. MICHE = 1
  131. ENDIF
  132.  
  133. *- Lecture optionnelle du support du champ resultat :
  134. JEMIL = 0
  135. CALL LIRMOT(MOCHAM,5,JEMIL,0)
  136. IF (IERR.NE.0) RETURN
  137. IF (JEMIL.EQ.0) JEMIL = 3
  138.  
  139. *- Lecture optionnelle d'un sous-type pour le champ resultat :
  140. iretou = 0
  141. CHAR = ' '
  142. CALL LIRCHA(CHAR,0,iretou)
  143. IF (IERR.NE.0) RETURN
  144. IF (iretou.EQ.0) CHAR = ' '
  145.  
  146. *- Calcul du MCHAML resultat IRET :
  147. CALL VARINU(IRE1,IRE2,IPMODL,IRET,MICHE,JEMIL,CHAR)
  148.  
  149. *- Ecriture du resultat sauf en cas d'erreur :
  150. IF (IRET.NE.0) THEN
  151. CALL ACTOBJ('MCHAML ',IRET,1)
  152. CALL ECROBJ('MCHAML ',IRET)
  153. ENDIF
  154.  
  155. RETURN
  156. ENDIF
  157.  
  158. * -----------
  159. * On cherche la presence du mot-cle LEXT (LoiEXT)
  160. * -----------
  161. CALL LIRMOT(MOLEXT,1,ILOIEX,0)
  162. IF (IERR.NE.0) RETURN
  163.  
  164. * ===========
  165. * SYNTAXE 4 : 'VARI' 'LEXT'
  166. * ===========
  167. IF (ILOIEX.EQ.1) THEN
  168.  
  169. *- Lecture optionnelle du support du champ resultat :
  170. JEMIL = 0
  171. CALL LIRMOT(MOCHAM,5,JEMIL,0)
  172. IF (IERR.NE.0) RETURN
  173. IF (JEMIL.EQ.0) JEMIL = 5
  174.  
  175. *- Lecture optionnelle d'un sous-type pour le champ resultat :
  176. iretou = 0
  177. CHAR = ' '
  178. CALL LIRCHA(CHAR,0,iretou)
  179. IF (IERR.NE.0) RETURN
  180. IF (iretou.EQ.0) CHAR = ' '
  181.  
  182. IRE1 = 0
  183. IRE2 = 0
  184. IRE3 = 0
  185.  
  186. *- Lecture de la TABLE decrivant la fonction a appliquer :
  187. CALL LIROBJ('TABLE ',IPTABL,1,iretou)
  188. IF (IERR.NE.0) RETURN
  189.  
  190. *- Syntaxe 4.1 : MODELE CHEPARF (CHEETAI)
  191. *- Lecture du MODELE support :
  192. CALL LIROBJ('MMODEL ',IPMODL,0,iretou)
  193. IF (IERR.NE.0) RETURN
  194. IF (iretou.ne.0) THEN
  195. CALL ACTOBJ('MMODEL ',IPMODL,1)
  196. IF (IERR.NE.0) RETURN
  197.  
  198. TYPOBJ = 'MCHAML '
  199.  
  200. *- Lecture du 1er CHAMP OBLIGATOIRE (MCHAML) : PARAMETRES etat final
  201. CALL LIROBJ(TYPOBJ,ipchmz,1,iretou)
  202. CALL ACTOBJ(TYPOBJ,ipchmz,1)
  203. IF (IERR.NE.0) RETURN
  204. CALL REDUAF(ipchmz,IPMODL,IRE1,0,ir,ker)
  205. IF (ir.NE.1) CALL ERREUR(ker)
  206. IF (IERR.NE.0) RETURN
  207.  
  208. *- Lecture du 2e CHAMP facultatif (MCHAML) : COEFFICIENTS
  209. CALL LIROBJ(TYPOBJ,ipchmz,0,iretou)
  210. IF (IERR.NE.0) RETURN
  211. IF (iretou.NE.0) THEN
  212. CALL ACTOBJ(TYPOBJ,ipchmz,1)
  213. CALL REDUAF(ipchmz,IPMODL,IRE2,0,ir,ker)
  214. IF (ir.NE.1) CALL ERREUR(ker)
  215. IF (IERR.NE.0) RETURN
  216. ENDIF
  217.  
  218. *- Lecture du 3e CHAMP facultatif (MCHAML) : ETAT initial
  219. CALL LIROBJ(TYPOBJ,ipchmz,0,iretou)
  220. IF (IERR.NE.0) RETURN
  221. IF (iretou.NE.0) THEN
  222. CALL ACTOBJ(TYPOBJ,ipchmz,1)
  223. CALL REDUAF(ipchmz,IPMODL,IRE3,0,ir,ker)
  224. IF (ir.NE.1) CALL ERREUR(ker)
  225. IF (IERR.NE.0) RETURN
  226. ENDIF
  227.  
  228. *- Synatxe 4.2 : CHPPARF (CHPETAI)
  229. ELSE
  230.  
  231. IPMODL = 0
  232. TYPOBJ = 'CHPOINT '
  233.  
  234. *- Lecture du 1er CHAMP OBLIGATOIRE (CHPOINT) : PARAMETRES etat final
  235. CALL LIROBJ(TYPOBJ,IRE1,1,iretou)
  236. CALL ACTOBJ(TYPOBJ,IRE1,1)
  237. IF (IERR.NE.0) RETURN
  238.  
  239. *- Lecture du 2e CHAMP facultatif (CHPOINT) : COEFFICIENTS
  240. CALL LIROBJ(TYPOBJ,IRE2,0,iretou)
  241. IF (iretou.NE.0) THEN
  242. CALL ACTOBJ(TYPOBJ,IRE2,1)
  243. ENDIF
  244. IF (IERR.NE.0) RETURN
  245.  
  246. *- Lecture du 3e CHAMP facultatif (CHPOINT) : ETAT initial
  247. CALL LIROBJ(TYPOBJ,IRE3,0,iretou)
  248. IF (iretou.NE.0) THEN
  249. CALL ACTOBJ(TYPOBJ,IRE3,1)
  250. ENDIF
  251. IF (IERR.NE.0) RETURN
  252.  
  253. ENDIF
  254.  
  255. *- Calcul du CHAMP resultat IRET :
  256. CALL VARILE(IPTABL,IPMODL,IRE1,IRE2,IRE3,JEMIL,CHAR, IRET)
  257.  
  258. *- Ecriture du resultat sauf en cas d'erreur :
  259. IF (IRET.NE.0) THEN
  260. CALL ACTOBJ(TYPOBJ,IRET,1)
  261. CALL ECROBJ(TYPOBJ,IRET)
  262. ENDIF
  263.  
  264. RETURN
  265. ENDIF
  266.  
  267. * ===========
  268. * SYNTAXE 1 : 'VARI' ... EVOL1 ;
  269. * ===========
  270.  
  271. *- Lecture du premier objet (MMODEL ou CHPOINT) :
  272. CALL LIROBJ('MMODEL ',IPMODL,0,iretou)
  273. IF (IERR.NE.0) RETURN
  274.  
  275. C- -------------
  276. C- Syntaxe 1.1 : VARI modl1 champ1 evol1 ... ;
  277. C- -------------
  278. * IF (IPMODL.NE.0) THEN
  279. IF (iretou.NE.0) THEN
  280. CALL ACTOBJ('MMODEL ',IPMODL,1)
  281.  
  282. *- Lecture du champ d'entree (MCHAML ou CHPOINT) :
  283. CALL LIROBJ('MCHAML ',IRE1,0,iretou)
  284. IF (IERR.NE.0) RETURN
  285. IF (iretou.EQ.0) THEN
  286. CALL LIROBJ('CHPOINT ',IRE1,1,iretou)
  287. CALL ACTOBJ('CHPOINT ',IRE1,1)
  288. IF (IERR.NE.0) RETURN
  289. MICHE = 1
  290. ELSE
  291. CALL ACTOBJ('MCHAML ',IRE1,1)
  292. ENDIF
  293.  
  294. *- Lecture d'une EVOLUTION donnant la fonction a appliquer :
  295. CALL LIROBJ('EVOLUTIO',IRE2,1,iretou)
  296. CALL ACTOBJ('EVOLUTIO',IRE2,1)
  297. IF (IERR.NE.0) RETURN
  298.  
  299. *- Lecture optionnelle du support du champ resultat :
  300. JEMIL = 0
  301. CALL LIRMOT(MOCHAM,5,JEMIL,0)
  302. IF (IERR.NE.0) RETURN
  303. IF (JEMIL.EQ.0) JEMIL = 3
  304.  
  305. *- Calcul du MCHAML resultat IRET :
  306. CALL VARICA(IRE1,IRE2,IPMODL,IRET,MICHE,JEMIL)
  307.  
  308. *- Ecriture du resultat sauf en cas d'erreur :
  309. IF (IRET.NE.0) THEN
  310. CALL ACTOBJ('MCHAML ',IRET,1)
  311. CALL ECROBJ('MCHAML ',IRET)
  312. ENDIF
  313.  
  314. C- -------------
  315. C- Syntaxe 1.2 : VARI chpo1 evol1 ... ;
  316. C- -------------
  317. ELSE
  318. * IF (IPMODL.EQ.0) THEN
  319.  
  320. *- Lecture du CHPOINT d'entree :
  321. CALL LIROBJ('CHPOINT ',IRE1,1,iretou)
  322. CALL ACTOBJ('CHPOINT ',IRE1,1)
  323. IF (IERR.NE.0) RETURN
  324.  
  325. *- Lecture d'une EVOLUTION donnant la fonction a appliquer :
  326. CALL LIROBJ('EVOLUTIO',IRE2,1,iretou)
  327. CALL ACTOBJ('EVOLUTIO',IRE2,1)
  328. IF (IERR.NE.0) RETURN
  329.  
  330. *- Lecture optionnelle du nom de la composante resultat
  331. MOT2 = ' '
  332. CALL LIRCHA(MOT2,0,iretou)
  333. IF (IERR.NE.0) RETURN
  334. IF (iretou.EQ.0) MOT2 = ' '
  335.  
  336. *- Calcul du CHPOINT resultat IRET :
  337. CALL VARIPO(IRE1,IRE2,MOT2,IRET)
  338.  
  339. *- Ecriture du CHPOINT resultat sauf en cas d'erreur :
  340. IF (IRET.NE.0) THEN
  341. CALL ACTOBJ('CHPOINT ',IRET,1)
  342. CALL ECROBJ('CHPOINT ',IRET)
  343. ENDIF
  344. ENDIF
  345.  
  346. RETURN
  347. END
  348.  
  349.  
  350.  

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