Download comput.eso

Back to the list

   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