Télécharger comput.eso

Retour à la liste

Numérotation des lignes :

comput
  1. C COMPUT SOURCE CB215821 20/11/04 21:15:47 10766
  2. SUBROUTINE COMPUT(IVERI,NOMCMP,NOMPAR,VALPAR,NPARA,VALCMP,IERUT)
  3. IMPLICIT INTEGER(I-N)
  4. IMPLICIT REAL*8(A-H,O-Z)
  5. C-----------------------------------------------------------------------
  6. C
  7. C DESCRIPTION FONCTIONNELLE :
  8. C -------------------------
  9. C
  10. C Version du module externe COMPUT integree au code pour eviter tout
  11. C probleme d'edition de lien et pour permettre le passage de tests
  12. C de non regression.
  13. C
  14. C En utilisation normale, ce module doit etre surcharge par celui
  15. C de meme nom fourni par l'utilisateur.
  16. C
  17. C Si cette version de UMAT est appelee, cela signifie qu'il n'y a
  18. C pas eu surcharge par le module utilisateur.
  19. C => risque d'erreur non controlee a l'execution.
  20. C
  21. C-----------------------------------------------------------------------
  22. C
  23. C DESCRIPTION DE L'INTERFACE :
  24. C --------------------------
  25. C ENTREE : IVERI : INTEGER, indicateur de verification
  26. C IVERI=1 : On fait les verifications puis
  27. C retour a l'appelant sans faire
  28. C de calcul
  29. C IVERI=0 : On ne fait pas les verifications
  30. C On calcule directement la composante
  31. C demandee
  32. C ENTREE : NOMCMP : Nom de la composante a evaluer
  33. C ENTREE : NOMPAR : Noms des parametres
  34. C ENTREE : VALPAR : REAL*8(NPARA), valeurs des parametres
  35. C ENTREE : NPARA : INTEGER, nombre de parametres
  36. C SORTIE : VALCMP : REAL*8, valeur de la composante
  37. C SORTIE : IERUT : INTEGER, code retour
  38. C IERUT= 0 : OK
  39. C IERUT<>0 : NOOK
  40. C Les cas d'erreur pris en charge par la
  41. C programmation de l'utilisateur doivent
  42. C faire l'objet d'une affectation de IERUT
  43. C differente de 0
  44. C
  45. C-----------------------------------------------------------------------
  46. C
  47. C Fonction du module COMPUT 'bouchon' :
  48. C -----------------------------------
  49. C Evaluation externe des composantes du modele 'FLUAGE' 'POLYNOMIAL'
  50. C externalise pour TOUTATIS (ILOI=22)
  51. C
  52. C Codification des erreurs :
  53. C ------------------------
  54. C 1/ Erreurs en phase de verification : 1 =< IERUT =< 112
  55. C
  56. C IERUT= 1 : composante non reconnue
  57. C
  58. C IERUT= 11 : composante 'YOUN', mauvais nombre de parametres
  59. C IERUT= 12 : composante 'YOUN', mauvais noms de parametres
  60. C
  61. C IERUT= 21 : composante 'NU ', mauvais nombre de parametres
  62. C IERUT= 22 : composante 'NU ', mauvais noms de parametres
  63. C
  64. C IERUT= 31 : composante 'ALPH', mauvais nombre de parametres
  65. C IERUT= 32 : composante 'ALPH', mauvais noms de parametres
  66. C
  67. C IERUT= 41 : composante 'SMAX', mauvais nombre de parametres
  68. C IERUT= 42 : composante 'SMAX', mauvais noms de parametres
  69. C
  70. C IERUT= 51 : composante 'AF0 ', mauvais nombre de parametres
  71. C IERUT= 52 : composante 'AF0 ', mauvais noms de parametres
  72. C
  73. C IERUT= 61 : composante 'AF1 ', mauvais nombre de parametres
  74. C IERUT= 62 : composante 'AF1 ', mauvais noms de parametres
  75. C
  76. C IERUT= 71 : composante 'AF2 ', mauvais nombre de parametres
  77. C IERUT= 72 : composante 'AF2 ', mauvais noms de parametres
  78. C
  79. C IERUT= 81 : composante 'AF3 ', mauvais nombre de parametres
  80. C IERUT= 82 : composante 'AF3 ', mauvais noms de parametres
  81. C
  82. C IERUT= 91 : composante 'AF4 ', mauvais nombre de parametres
  83. C IERUT= 92 : composante 'AF4 ', mauvais noms de parametres
  84. C
  85. C IERUT=101 : composante 'AF5 ', mauvais nombre de parametres
  86. C IERUT=102 : composante 'AF5 ', mauvais noms de parametres
  87. C
  88. C IERUT=111 : composante 'AF6 ', mauvais nombre de parametres
  89. C IERUT=112 : composante 'AF6 ', mauvais noms de parametres
  90. C
  91. C 2/ Erreurs en phase de calcul : 201 =< IERUT =< 313
  92. C
  93. C IERUT=201 : composante non reconnue (en toute rigueur cette
  94. C erreur ne doit pas se produire)
  95. C
  96. C IERUT=211 : composante 'YOUN', temp. inferieure au zero absolu
  97. C IERUT=212 : composante 'YOUN', valeur illicite de 'PORO'
  98. C IERUT=213 : composante 'YOUN', valeur illicite de 'YOGC'
  99. C
  100. C IERUT=221 : composante 'NU ', temp. inferieure au zero absolu
  101. C IERUT=222 : composante 'NU ', valeur illicite de 'PORO'
  102. C IERUT=223 : composante 'NU ', valeur illicite de 'YOGC'
  103. C
  104. C IERUT=231 : composante 'ALPH', temp. inferieure au zero absolu
  105. C IERUT=232 : composante 'ALPH', valeur illicite de 'ALPC'
  106. C
  107. C IERUT=241 : composante 'SMAX', temp. inferieure au zero absolu
  108. C IERUT=242 : composante 'SMAX', valeur illicite de 'PORO'
  109. C IERUT=243 : composante 'SMAX', valeur illicite de 'YOGC'
  110. C
  111. C IERUT=251 : composante 'AF0 ', valeur illicite de 'TFIS'
  112. C IERUT=252 : composante 'AF0 ', valeur illicite de 'TUO2'
  113. C IERUT=253 : composante 'AF0 ', valeur illicite de 'FACF'
  114. C
  115. C IERUT=261 : composante 'AF1 ', valeur illicite de 'TFIS'
  116. C IERUT=262 : composante 'AF1 ', valeur illicite de 'TUO2'
  117. C IERUT=263 : composante 'AF1 ', valeur illicite de 'FACF'
  118. C IERUT=264 : composante 'AF1 ', valeur illicite de 'DSIU'
  119. C IERUT=265 : composante 'AF1 ', valeur illicite de 'DGRA'
  120. C
  121. C IERUT=271 : composante 'AF2 ', valeur illicite de 'TFIS'
  122. C IERUT=272 : composante 'AF2 ', valeur illicite de 'TUO2'
  123. C IERUT=273 : composante 'AF2 ', valeur illicite de 'FACF'
  124. C
  125. C IERUT=281 : composante 'AF3 ', valeur illicite de 'TFIS'
  126. C IERUT=282 : composante 'AF3 ', valeur illicite de 'TUO2'
  127. C IERUT=283 : composante 'AF3 ', valeur illicite de 'FACF'
  128. C IERUT=284 : composante 'AF3 ', valeur illicite de 'DSIU'
  129. C
  130. C IERUT=291 : composante 'AF4 ', valeur illicite de 'TFIS'
  131. C IERUT=292 : composante 'AF4 ', valeur illicite de 'TUO2'
  132. C IERUT=293 : composante 'AF4 ', valeur illicite de 'FACF'
  133. C
  134. C IERUT=301 : composante 'AF5 ', valeur illicite de 'TFIS'
  135. C IERUT=302 : composante 'AF5 ', valeur illicite de 'TUO2'
  136. C IERUT=303 : composante 'AF5 ', valeur illicite de 'FACF'
  137. C
  138. C IERUT=311 : composante 'AF6 ', valeur illicite de 'TFIS'
  139. C IERUT=312 : composante 'AF6 ', valeur illicite de 'TUO2'
  140. C IERUT=313 : composante 'AF6 ', valeur illicite de 'FACF'
  141. C
  142. C-----------------------------------------------------------------------
  143. C Arguments de l'interface
  144. C
  145.  
  146. -INC PPARAM
  147.  
  148. INTEGER IVERI, NPARA, IERUT
  149. CHARACTER*(*)NOMPAR(NPARA)
  150. CHARACTER*(*)NOMCMP
  151. REAL*8 VALPAR(NPARA), VALCMP
  152. C
  153. C Datas pour definir les parametrages de reference des composantes
  154. C
  155. INTEGER NPYOUN, NPNU, NPALPH, NPSMAX,
  156. & NPAF0, NPAF1, NPAF2, NPAF3, NPAF4, NPAF5, NPAF6
  157. PARAMETER (NPYOUN=3, NPNU=3, NPALPH=2, NPSMAX=3,
  158. & NPAF0=3, NPAF1=5, NPAF2=3, NPAF3=4, NPAF4=3,
  159. & NPAF5=3, NPAF6=3)
  160. CHARACTER*(LOCOMP) PAYOUN(NPYOUN), PANU(NPNU), PAALPH(NPALPH),
  161. & PASMAX(NPSMAX),
  162. & PAAF0(NPAF0), PAAF1(NPAF1), PAAF2(NPAF2),
  163. & PAAF3(NPAF3), PAAF4(NPAF4), PAAF5(NPAF5),
  164. & PAAF6(NPAF6)
  165. DATA PAYOUN/'T ','PORO','YOGC'/
  166. DATA PANU /'T ','PORO','YOGC'/
  167. DATA PAALPH/'T ','ALPC'/
  168. DATA PASMAX/'T ','PORO','YOGC'/
  169. DATA PAAF0 /'TFIS','TUO2','FACF'/
  170. DATA PAAF1 /'TFIS','TUO2','FACF','DSIU','DGRA'/
  171. DATA PAAF2 /'TFIS','TUO2','FACF'/
  172. DATA PAAF3 /'TFIS','TUO2','FACF','DSIU'/
  173. DATA PAAF4 /'TFIS','TUO2','FACF'/
  174. DATA PAAF5 /'TFIS','TUO2','FACF'/
  175. DATA PAAF6 /'TFIS','TUO2','FACF'/
  176. C
  177. C Variables locales
  178. C
  179. INTEGER IPARA
  180. C
  181. C Fonctions externes
  182. C
  183. C
  184. C
  185. C---------------------- Debut du code executable -----------------------
  186. C
  187. C
  188. IERUT=0
  189. VALCMP=0.D0
  190. C
  191. C=======================================================================
  192. C 1 - Verifications puis retour a l'appelant sans faire de calcul
  193. C=======================================================================
  194. C
  195. IF (IVERI.EQ.1) THEN
  196. C
  197. IF (NOMCMP.EQ.'YOUN') THEN
  198. IF (NPARA.NE.NPYOUN) THEN
  199. IERUT= 11
  200. GOTO 999
  201. ENDIF
  202. DO 1 IPARA=1,NPARA
  203. IF (NOMPAR(IPARA).NE.PAYOUN(IPARA)) THEN
  204. IERUT= 12
  205. GOTO 999
  206. ENDIF
  207. 1 CONTINUE
  208. C
  209. ELSE IF (NOMCMP.EQ.'NU ') THEN
  210. IF (NPARA.NE.NPNU) THEN
  211. IERUT= 21
  212. GOTO 999
  213. ENDIF
  214. DO 2 IPARA=1,NPARA
  215. IF (NOMPAR(IPARA).NE.PANU(IPARA)) THEN
  216. IERUT= 22
  217. GOTO 999
  218. ENDIF
  219. 2 CONTINUE
  220. C
  221. ELSE IF (NOMCMP.EQ.'ALPH') THEN
  222. IF (NPARA.NE.NPALPH) THEN
  223. IERUT= 31
  224. GOTO 999
  225. ENDIF
  226. DO 3 IPARA=1,NPARA
  227. IF (NOMPAR(IPARA).NE.PAALPH(IPARA)) THEN
  228. IERUT= 32
  229. GOTO 999
  230. ENDIF
  231. 3 CONTINUE
  232. C
  233. ELSE IF (NOMCMP.EQ.'SMAX') THEN
  234. IF (NPARA.NE.NPSMAX) THEN
  235. IERUT= 41
  236. GOTO 999
  237. ENDIF
  238. DO 4 IPARA=1,NPARA
  239. IF (NOMPAR(IPARA).NE.PASMAX(IPARA)) THEN
  240. IERUT= 42
  241. GOTO 999
  242. ENDIF
  243. 4 CONTINUE
  244. C
  245. ELSE IF (NOMCMP.EQ.'AF0 ') THEN
  246. IF (NPARA.NE.NPAF0) THEN
  247. IERUT= 51
  248. GOTO 999
  249. ENDIF
  250. DO 5 IPARA=1,NPARA
  251. IF (NOMPAR(IPARA).NE.PAAF0(IPARA)) THEN
  252. IERUT= 52
  253. GOTO 999
  254. ENDIF
  255. 5 CONTINUE
  256. C
  257. ELSE IF (NOMCMP.EQ.'AF1 ') THEN
  258. IF (NPARA.NE.NPAF1) THEN
  259. IERUT= 61
  260. GOTO 999
  261. ENDIF
  262. DO 6 IPARA=1,NPARA
  263. IF (NOMPAR(IPARA).NE.PAAF1(IPARA)) THEN
  264. IERUT= 62
  265. GOTO 999
  266. ENDIF
  267. 6 CONTINUE
  268. C
  269. ELSE IF (NOMCMP.EQ.'AF2 ') THEN
  270. IF (NPARA.NE.NPAF2) THEN
  271. IERUT= 71
  272. GOTO 999
  273. ENDIF
  274. DO 7 IPARA=1,NPARA
  275. IF (NOMPAR(IPARA).NE.PAAF2(IPARA)) THEN
  276. IERUT= 72
  277. GOTO 999
  278. ENDIF
  279. 7 CONTINUE
  280. C
  281. ELSE IF (NOMCMP.EQ.'AF3 ') THEN
  282. IF (NPARA.NE.NPAF3) THEN
  283. IERUT= 81
  284. GOTO 999
  285. ENDIF
  286. DO 8 IPARA=1,NPARA
  287. IF (NOMPAR(IPARA).NE.PAAF3(IPARA)) THEN
  288. IERUT= 82
  289. GOTO 999
  290. ENDIF
  291. 8 CONTINUE
  292. C
  293. ELSE IF (NOMCMP.EQ.'AF4 ') THEN
  294. IF (NPARA.NE.NPAF4) THEN
  295. IERUT= 91
  296. GOTO 999
  297. ENDIF
  298. DO 9 IPARA=1,NPARA
  299. IF (NOMPAR(IPARA).NE.PAAF4(IPARA)) THEN
  300. IERUT= 92
  301. GOTO 999
  302. ENDIF
  303. 9 CONTINUE
  304. C
  305. ELSE IF (NOMCMP.EQ.'AF5 ') THEN
  306. IF (NPARA.NE.NPAF5) THEN
  307. IERUT=101
  308. GOTO 999
  309. ENDIF
  310. DO 10 IPARA=1,NPARA
  311. IF (NOMPAR(IPARA).NE.PAAF5(IPARA)) THEN
  312. IERUT=102
  313. GOTO 999
  314. ENDIF
  315. 10 CONTINUE
  316. C
  317. ELSE IF (NOMCMP.EQ.'AF6 ') THEN
  318. IF (NPARA.NE.NPAF6) THEN
  319. IERUT=111
  320. GOTO 999
  321. ENDIF
  322. DO 11 IPARA=1,NPARA
  323. IF (NOMPAR(IPARA).NE.PAAF6(IPARA)) THEN
  324. IERUT=112
  325. GOTO 999
  326. ENDIF
  327. 11 CONTINUE
  328. C
  329. ELSE
  330. IERUT= 1
  331. ENDIF
  332. C
  333. C=======================================================================
  334. C 2 - Calcul de la composante demandee
  335. C=======================================================================
  336. C
  337. ELSE
  338. C
  339. IF (NOMCMP.EQ.'YOUN') THEN
  340. VALCMP=FVYOUN(VALPAR,NPARA,IERUT)
  341. C
  342. ELSE IF (NOMCMP.EQ.'NU ') THEN
  343. VALCMP=FVNU(VALPAR,NPARA,IERUT)
  344. C
  345. ELSE IF (NOMCMP.EQ.'ALPH') THEN
  346. VALCMP=FVALPH(VALPAR,NPARA,IERUT)
  347. C
  348. ELSE IF (NOMCMP.EQ.'SMAX') THEN
  349. VALCMP=FVSMAX(VALPAR,NPARA,IERUT)
  350. C
  351. ELSE IF (NOMCMP.EQ.'AF0 ') THEN
  352. VALCMP=FVAF0(VALPAR,NPARA,IERUT)
  353. C
  354. ELSE IF (NOMCMP.EQ.'AF1 ') THEN
  355. VALCMP=FVAF1(VALPAR,NPARA,IERUT)
  356. C
  357. ELSE IF (NOMCMP.EQ.'AF2 ') THEN
  358. VALCMP=FVAF2(VALPAR,NPARA,IERUT)
  359. C
  360. ELSE IF (NOMCMP.EQ.'AF3 ') THEN
  361. VALCMP=FVAF3(VALPAR,NPARA,IERUT)
  362. C
  363. ELSE IF (NOMCMP.EQ.'AF4 ') THEN
  364. VALCMP=FVAF4(VALPAR,NPARA,IERUT)
  365. C
  366. ELSE IF (NOMCMP.EQ.'AF5 ') THEN
  367. VALCMP=FVAF5(VALPAR,NPARA,IERUT)
  368. C
  369. ELSE IF (NOMCMP.EQ.'AF6 ') THEN
  370. VALCMP=FVAF6(VALPAR,NPARA,IERUT)
  371. C
  372. ELSE
  373. IERUT=201
  374. ENDIF
  375. C
  376. ENDIF
  377. C
  378. 999 RETURN
  379. END
  380.  
  381.  
  382.  
  383.  

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