Télécharger comput.eso

Retour à la liste

Numérotation des lignes :

  1. C COMPUT SOURCE CHAT 05/01/12 22:16:19 5004
  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 : CHARACTER*4, nom de la composante a evaluer
  33. C ENTREE : NOMPAR : CHARACTER*4(NPARA), 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. INTEGER IVERI, NPARA, IERUT
  146. CHARACTER*4 NOMCMP, NOMPAR(NPARA)
  147. REAL*8 VALPAR(NPARA), VALCMP
  148. C
  149. C Datas pour definir les parametrages de reference des composantes
  150. C
  151. INTEGER NPYOUN, NPNU, NPALPH, NPSMAX,
  152. & NPAF0, NPAF1, NPAF2, NPAF3, NPAF4, NPAF5, NPAF6
  153. PARAMETER (NPYOUN=3, NPNU=3, NPALPH=2, NPSMAX=3,
  154. & NPAF0=3, NPAF1=5, NPAF2=3, NPAF3=4, NPAF4=3,
  155. & NPAF5=3, NPAF6=3)
  156. CHARACTER*4 PAYOUN(NPYOUN), PANU(NPNU), PAALPH(NPALPH),
  157. & PASMAX(NPSMAX),
  158. & PAAF0(NPAF0), PAAF1(NPAF1), PAAF2(NPAF2),
  159. & PAAF3(NPAF3), PAAF4(NPAF4), PAAF5(NPAF5),
  160. & PAAF6(NPAF6)
  161. DATA PAYOUN/'T ','PORO','YOGC'/
  162. DATA PANU /'T ','PORO','YOGC'/
  163. DATA PAALPH/'T ','ALPC'/
  164. DATA PASMAX/'T ','PORO','YOGC'/
  165. DATA PAAF0 /'TFIS','TUO2','FACF'/
  166. DATA PAAF1 /'TFIS','TUO2','FACF','DSIU','DGRA'/
  167. DATA PAAF2 /'TFIS','TUO2','FACF'/
  168. DATA PAAF3 /'TFIS','TUO2','FACF','DSIU'/
  169. DATA PAAF4 /'TFIS','TUO2','FACF'/
  170. DATA PAAF5 /'TFIS','TUO2','FACF'/
  171. DATA PAAF6 /'TFIS','TUO2','FACF'/
  172. C
  173. C Variables locales
  174. C
  175. INTEGER IPARA
  176. C
  177. C Fonctions externes
  178. C
  179. C
  180. C
  181. C---------------------- Debut du code executable -----------------------
  182. C
  183. C
  184. IERUT=0
  185. VALCMP=0.D0
  186. C
  187. C=======================================================================
  188. C 1 - Verifications puis retour a l'appelant sans faire de calcul
  189. C=======================================================================
  190. C
  191. IF (IVERI.EQ.1) THEN
  192. C
  193. IF (NOMCMP.EQ.'YOUN') THEN
  194. IF (NPARA.NE.NPYOUN) THEN
  195. IERUT= 11
  196. GOTO 999
  197. ENDIF
  198. DO 1 IPARA=1,NPARA
  199. IF (NOMPAR(IPARA).NE.PAYOUN(IPARA)) THEN
  200. IERUT= 12
  201. GOTO 999
  202. ENDIF
  203. 1 CONTINUE
  204. C
  205. ELSE IF (NOMCMP.EQ.'NU ') THEN
  206. IF (NPARA.NE.NPNU) THEN
  207. IERUT= 21
  208. GOTO 999
  209. ENDIF
  210. DO 2 IPARA=1,NPARA
  211. IF (NOMPAR(IPARA).NE.PANU(IPARA)) THEN
  212. IERUT= 22
  213. GOTO 999
  214. ENDIF
  215. 2 CONTINUE
  216. C
  217. ELSE IF (NOMCMP.EQ.'ALPH') THEN
  218. IF (NPARA.NE.NPALPH) THEN
  219. IERUT= 31
  220. GOTO 999
  221. ENDIF
  222. DO 3 IPARA=1,NPARA
  223. IF (NOMPAR(IPARA).NE.PAALPH(IPARA)) THEN
  224. IERUT= 32
  225. GOTO 999
  226. ENDIF
  227. 3 CONTINUE
  228. C
  229. ELSE IF (NOMCMP.EQ.'SMAX') THEN
  230. IF (NPARA.NE.NPSMAX) THEN
  231. IERUT= 41
  232. GOTO 999
  233. ENDIF
  234. DO 4 IPARA=1,NPARA
  235. IF (NOMPAR(IPARA).NE.PASMAX(IPARA)) THEN
  236. IERUT= 42
  237. GOTO 999
  238. ENDIF
  239. 4 CONTINUE
  240. C
  241. ELSE IF (NOMCMP.EQ.'AF0 ') THEN
  242. IF (NPARA.NE.NPAF0) THEN
  243. IERUT= 51
  244. GOTO 999
  245. ENDIF
  246. DO 5 IPARA=1,NPARA
  247. IF (NOMPAR(IPARA).NE.PAAF0(IPARA)) THEN
  248. IERUT= 52
  249. GOTO 999
  250. ENDIF
  251. 5 CONTINUE
  252. C
  253. ELSE IF (NOMCMP.EQ.'AF1 ') THEN
  254. IF (NPARA.NE.NPAF1) THEN
  255. IERUT= 61
  256. GOTO 999
  257. ENDIF
  258. DO 6 IPARA=1,NPARA
  259. IF (NOMPAR(IPARA).NE.PAAF1(IPARA)) THEN
  260. IERUT= 62
  261. GOTO 999
  262. ENDIF
  263. 6 CONTINUE
  264. C
  265. ELSE IF (NOMCMP.EQ.'AF2 ') THEN
  266. IF (NPARA.NE.NPAF2) THEN
  267. IERUT= 71
  268. GOTO 999
  269. ENDIF
  270. DO 7 IPARA=1,NPARA
  271. IF (NOMPAR(IPARA).NE.PAAF2(IPARA)) THEN
  272. IERUT= 72
  273. GOTO 999
  274. ENDIF
  275. 7 CONTINUE
  276. C
  277. ELSE IF (NOMCMP.EQ.'AF3 ') THEN
  278. IF (NPARA.NE.NPAF3) THEN
  279. IERUT= 81
  280. GOTO 999
  281. ENDIF
  282. DO 8 IPARA=1,NPARA
  283. IF (NOMPAR(IPARA).NE.PAAF3(IPARA)) THEN
  284. IERUT= 82
  285. GOTO 999
  286. ENDIF
  287. 8 CONTINUE
  288. C
  289. ELSE IF (NOMCMP.EQ.'AF4 ') THEN
  290. IF (NPARA.NE.NPAF4) THEN
  291. IERUT= 91
  292. GOTO 999
  293. ENDIF
  294. DO 9 IPARA=1,NPARA
  295. IF (NOMPAR(IPARA).NE.PAAF4(IPARA)) THEN
  296. IERUT= 92
  297. GOTO 999
  298. ENDIF
  299. 9 CONTINUE
  300. C
  301. ELSE IF (NOMCMP.EQ.'AF5 ') THEN
  302. IF (NPARA.NE.NPAF5) THEN
  303. IERUT=101
  304. GOTO 999
  305. ENDIF
  306. DO 10 IPARA=1,NPARA
  307. IF (NOMPAR(IPARA).NE.PAAF5(IPARA)) THEN
  308. IERUT=102
  309. GOTO 999
  310. ENDIF
  311. 10 CONTINUE
  312. C
  313. ELSE IF (NOMCMP.EQ.'AF6 ') THEN
  314. IF (NPARA.NE.NPAF6) THEN
  315. IERUT=111
  316. GOTO 999
  317. ENDIF
  318. DO 11 IPARA=1,NPARA
  319. IF (NOMPAR(IPARA).NE.PAAF6(IPARA)) THEN
  320. IERUT=112
  321. GOTO 999
  322. ENDIF
  323. 11 CONTINUE
  324. C
  325. ELSE
  326. IERUT= 1
  327. ENDIF
  328. C
  329. C=======================================================================
  330. C 2 - Calcul de la composante demandee
  331. C=======================================================================
  332. C
  333. ELSE
  334. C
  335. IF (NOMCMP.EQ.'YOUN') THEN
  336. VALCMP=FVYOUN(VALPAR,NPARA,IERUT)
  337. C
  338. ELSE IF (NOMCMP.EQ.'NU ') THEN
  339. VALCMP=FVNU(VALPAR,NPARA,IERUT)
  340. C
  341. ELSE IF (NOMCMP.EQ.'ALPH') THEN
  342. VALCMP=FVALPH(VALPAR,NPARA,IERUT)
  343. C
  344. ELSE IF (NOMCMP.EQ.'SMAX') THEN
  345. VALCMP=FVSMAX(VALPAR,NPARA,IERUT)
  346. C
  347. ELSE IF (NOMCMP.EQ.'AF0 ') THEN
  348. VALCMP=FVAF0(VALPAR,NPARA,IERUT)
  349. C
  350. ELSE IF (NOMCMP.EQ.'AF1 ') THEN
  351. VALCMP=FVAF1(VALPAR,NPARA,IERUT)
  352. C
  353. ELSE IF (NOMCMP.EQ.'AF2 ') THEN
  354. VALCMP=FVAF2(VALPAR,NPARA,IERUT)
  355. C
  356. ELSE IF (NOMCMP.EQ.'AF3 ') THEN
  357. VALCMP=FVAF3(VALPAR,NPARA,IERUT)
  358. C
  359. ELSE IF (NOMCMP.EQ.'AF4 ') THEN
  360. VALCMP=FVAF4(VALPAR,NPARA,IERUT)
  361. C
  362. ELSE IF (NOMCMP.EQ.'AF5 ') THEN
  363. VALCMP=FVAF5(VALPAR,NPARA,IERUT)
  364. C
  365. ELSE IF (NOMCMP.EQ.'AF6 ') THEN
  366. VALCMP=FVAF6(VALPAR,NPARA,IERUT)
  367. C
  368. ELSE
  369. IERUT=201
  370. ENDIF
  371. C
  372. ENDIF
  373. C
  374. 999 RETURN
  375. END
  376.  
  377.  
  378.  

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