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 : REAL*8 FVYOUN, FVNU, FVALPH, FVSMAX, FVAF0, FVAF1, FVAF2, 180 : & FVAF3, FVAF4, FVAF5, FVAF6 181 : EXTERNAL FVYOUN, FVNU, FVALPH, FVSMAX, FVAF0, FVAF1, FVAF2, 182 : & FVAF3, FVAF4, FVAF5, FVAF6 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 :
© Cast3M 2003 - All rights reserved.
Disclaimer