Download ylap11.eso

Back to the list

   1 : C YLAP11    SOURCE    MAGN      09/07/30    21:22:11     6458           
   2 :       SUBROUTINE YLAP11()
   3 : C************************************************************************
   4 : C
   5 : C PROJET            :  CASTEM 2000
   6 : C
   7 : C NOM               :  YLAPL11
   8 : C
   9 : C DESCRIPTION       :  Voir YLAPL1
  10 : C
  11 : C     
  12 : C LANGAGE           :  FORTRAN 77 + ESOPE 2000 (avec estensions CISI)
  13 : C      
  14 : C AUTEUR            :  A. BECCANTINI, DRN/DMT/SEMT/LTMF                        
  15 : C
  16 : C************************************************************************
  17 : C
  18 : C
  19 : C APPELES (E/S)     :  LIRMOT, ERREUR
  20 : C 
  21 : C      
  22 : C APPELES           :  YLAPL12
  23 : C
  24 : C************************************************************************
  25 : C
  26 : C*** ENTREE / SORTIE (voir Phrase d'appel GIBIANE)
  27 : C
  28 : C***********************************************************************
  29 : C
  30 : C HISTORIQUE (Anomalies et modifications éventuelles)
  31 : C
  32 : C HISTORIQUE : 11/02/2003 Ajout de l'option MIXT pour la température
  33 : C      
  34 : C************************************************************************
  35 : C
  36 :       IMPLICIT INTEGER(I-N)
  37 : -INC CCOPTIO
  38 : -INC SMMATRIK
  39 : -INC SMCHPOI
  40 : -INC SMLMOTS
  41 :       POINTEUR MLMNOM.MLMOTS
  42 :       POINTEUR MLDEFO.MLMOTS
  43 : -INC SMCHAML
  44 :       POINTEUR ICOGRV.MCHELM
  45 :       POINTEUR ICOGRT.MCHELM
  46 : C
  47 : C**** Variables de COOPTIO
  48 : C
  49 : C      INTEGER IPLLB, IERPER, IERMAX, IERR, INTERR
  50 : C     &        ,IOTER,   IOLEC,  IOIMP,     IOCAR,  IOACQ
  51 : C     &        ,IOPER,   IOSGB,  IOGRA,     IOSAU,  IORES
  52 : C     &        ,IECHO,   IIMPI,  IOSPI
  53 : C     &        ,IDIM
  54 : C     &        ,MCOORD
  55 : C     &        ,IFOMOD, NIFOUR, IFOUR, NSDPGE, IONIVE
  56 : C     &        ,NGMAXY, IZROSF, ISOTYP, IOSCR,LTEXLU
  57 : C     &        ,NORINC,NORVAL,NORIND,NORVAD
  58 : C     &        ,NUCROU, IPSAUV
  59 : C
  60 : C**** Variables de SMLMOTS
  61 : C
  62 :       INTEGER  JGM, JGN
  63 : C
  64 : C**** Variables de SMMATRIK
  65 : C
  66 :       INTEGER   NKID, NKMT, NMATRI, NRIGE         
  67 : C
  68 : C**** Variables du programme
  69 : C
  70 :       INTEGER ICELL, IRET, INDIC, NBCOMP
  71 :      &      , IDOMA, MELEMC, MELEMF, MELEFL, ICHPSU, ICHPDI, ICHPVO
  72 :      &      , INORM
  73 :      &      , IRN, IVN, ITN, IGRVN, IGRTN
  74 :      &      , IVNIMP, ITAUIM, ITIMP,IQIMP,IMIXT
  75 :      &      , ILIINC, NC, INEFMD, ICOND
  76 :      &      , IJACO, ICHFLU, ICHRES, NSOUPO,ICLAU
  77 :       REAL*8 MU,KAPPA,CV,DELTAT
  78 :       CHARACTER*(40) MESERR
  79 :       CHARACTER*4 MOT,LFLUX(2), LIMPL(2)
  80 :       CHARACTER*8 MOT2
  81 :       CHARACTER*8 TYPE
  82 :       LOGICAL LOGRES,LOGIMP,LOGAN
  83 : C
  84 :       DATA LFLUX/'FLUX','RESI'/
  85 :       DATA LIMPL/'EXPL','IMPL'/
  86 : C
  87 : C**** Initialisation des variables pour la gestion des erreurs.
  88 : C
  89 :       MESERR  = '                                        '
  90 :       LOGAN = .FALSE.
  91 : C
  92 : C******* Flux ou residu?
  93 : C
  93 :       CALL LIRMOT(LFLUX,2,ICELL,1)
  94 :       IF(IERR .NE. 0)GOTO 9999
  95 :       IF(ICELL .EQ. 1)THEN
  96 :          LOGRES = .FALSE.
  97 :       ELSEIF(ICELL .EQ. 2)THEN
  98 :          LOGRES = .TRUE.
  99 :       ELSE
 100 : C
 101 : C******** Message d'erreur standard
 102 : C         251 2
 103 : C         Tentative d'utilisation d'une option non implémentée
 104 : C
 104 :          CALL ERREUR(251)
 105 :       ENDIF
 106 : C
 107 : C
 107 :       CALL LIRMOT(LIMPL,2,ICELL,1)
 108 :       IF(IERR .NE. 0)GOTO 9999
 109 :       IF(ICELL .EQ. 1)THEN
 110 :          LOGIMP=.FALSE.
 111 :       ELSEIF(ICELL .EQ. 2)THEN
 112 :          LOGIMP=.TRUE.
 113 :       ELSE
 114 :          WRITE(IOIMP,*) 'Erreur de programmation'
 114 :          CALL ERREUR(5)
 115 :          GOTO 9999
 116 :       ENDIF
 117 : 
 118 : C
 119 : C**********************************
 120 : C**** Lecture de l'objet MODELE ***
 121 : C**********************************
 122 : C
 123 :       ICOND = 1
 123 :       CALL QUETYP(TYPE,ICOND,IRET)
 124 : 
 125 :       IF(IRET.EQ.0.AND.TYPE.NE.'MMODEL')THEN
 126 :         WRITE(6,*)' On attend un objet MMODEL'
 127 :         RETURN
 128 :       ENDIF
 128 :       CALL LIROBJ('MMODEL',MMODEL,ICOND,IRET)
 129 :       IF(IERR.NE.0)GOTO 9999
 129 :       CALL LEKMOD(MMODEL,IDOMA,INEFMD)
 130 :       IF(IERR.NE.0)GOTO 9999
 131 : C
 132 : C**** Centre, FACE et FACEL
 133 : C
 133 :       CALL LEKTAB(IDOMA,'CENTRE',MELEMC)
 134 :       IF(IERR .NE. 0) GOTO 9999
 135 : C
 135 :       CALL LEKTAB(IDOMA,'FACE',MELEMF)
 136 :       IF(IERR .NE. 0) GOTO 9999
 137 : C      
 137 :       CALL LEKTAB(IDOMA,'FACEL',MELEFL)
 138 :       IF(IERR .NE. 0) GOTO 9999
 139 : C
 140 : C**** Lecture du CHPOINT contenant les surfaces des faces.
 141 : C
 141 :       CALL LEKTAB(IDOMA,'XXSURFAC',ICHPSU)
 142 :       IF(IERR .NE. 0) GOTO 9999
 143 : C  
 144 : C**** Lecture du CHPOINT contenant les diametres minimums.
 145 : C
 145 :       CALL LEKTAB(IDOMA,'XXDIEMIN',ICHPDI)
 146 :       IF(IERR .NE. 0) GOTO 9999
 147 : C     
 148 : C**** Lecture du CHPOINT contenant les volumes
 149 : C
 149 :       CALL LEKTAB(IDOMA,'XXVOLUM',ICHPVO)
 150 :       IF(IERR .NE. 0) GOTO 9999
 151 : C
 152 : C********** Les normales aux faces
 153 : C
 153 :       CALL LEKTAB(IDOMA,'XXNORMAF',INORM)
 154 :       IF(IERR .NE. 0) GOTO 9999
 155 : C
 156 : C********************************
 157 : C**** Fin table domaine *********
 158 : C********************************
 159 : C
 160 : C**** Viscosité dynamique (kg/m/sec)
 161 : C
 161 :       CALL LIRREE(MU,1,IRET)
 162 :       IF(IERR.NE.0)GOTO 9999
 163 : C
 164 : C**** Conductivité thermique (J/sec/m/K)
 165 : C
 165 :       CALL LIRREE(KAPPA,1,IRET)
 166 :       IF(IERR.NE.0)GOTO 9999
 167 : C
 168 : C**** Chaleur specifique (J/kg/K)
 169 : C
 169 :       CALL LIRREE(CV,1,IRET)
 170 :       IF(IERR.NE.0)GOTO 9999
 171 : C
 172 : C**** Densité
 173 : C
 174 :       TYPE = 'CHPOINT '
 174 :       CALL LIROBJ(TYPE,IRN,1,IRET)
 175 :       IF(IERR .NE. 0) GOTO 9999
 176 :       INDIC = 1
 177 :       NBCOMP = 1
 178 :       MOT = 'SCAL'
 178 :       CALL QUEPOI(IRN, MELEMC, INDIC, NBCOMP, MOT)
 179 : C
 180 : C**** Vitesse
 181 : C
 182 :       TYPE='CHPOINT '
 182 :       CALL LIROBJ(TYPE,IVN,1,IRET)
 183 :       IF(IERR .NE. 0) GOTO 9999
 184 :       JGN = 4
 185 :       JGM = IDIM
 186 :       SEGINI MLMNOM
 187 :       MLMNOM.MOTS(1) = 'UX  '
 188 :       MLMNOM.MOTS(2) = 'UY  '
 189 :       IF(IDIM.EQ.3) MLMNOM.MOTS(3) = 'UZ  '
 189 :       CALL QUEPO1(IVN, MELEMC, MLMNOM)
 190 :       IF(IERR .NE. 0) GOTO 9999
 191 :       SEGSUP MLMNOM
 192 : C
 193 : C**** Température
 194 : C
 195 :       TYPE='CHPOINT '
 195 :       CALL LIROBJ(TYPE,ITN,1,IRET)
 196 :       IF(IERR .NE. 0) GOTO 9999
 197 :       JGN = 4
 198 :       JGM = 1
 199 :       SEGINI MLMNOM
 200 :       MLMNOM.MOTS(1) = 'SCAL'
 200 :       CALL QUEPO1(ITN, MELEMC, MLMNOM)
 201 :       IF(IERR .NE. 0) GOTO 9999
 202 :       SEGSUP MLMNOM
 203 : C
 204 : C**** Gradient de la vitesse
 205 : C
 206 :       TYPE='CHPOINT '
 206 :       CALL LIROBJ(TYPE,IGRVN,1,IRET)
 207 :       IF(IERR .NE. 0) GOTO 9999
 208 :       JGN = 4
 209 :       JGM =IDIM*IDIM
 210 :       SEGINI MLMNOM
 211 :       IF(IDIM.EQ.2)THEN
 212 :          MLMNOM.MOTS(1) = 'P1DX'
 213 :          MLMNOM.MOTS(2) = 'P1DY'
 214 :          MLMNOM.MOTS(3) = 'P2DX'
 215 :          MLMNOM.MOTS(4) = 'P2DY'
 216 :       ELSE
 217 :          MLMNOM.MOTS(1) = 'P1DX'
 218 :          MLMNOM.MOTS(2) = 'P1DY'
 219 :          MLMNOM.MOTS(3) = 'P1DZ'
 220 :          MLMNOM.MOTS(4) = 'P2DX'
 221 :          MLMNOM.MOTS(5) = 'P2DY'
 222 :          MLMNOM.MOTS(6) = 'P2DZ'
 223 :          MLMNOM.MOTS(7) = 'P3DX'
 224 :          MLMNOM.MOTS(8) = 'P3DY'
 225 :          MLMNOM.MOTS(9) = 'P3DZ'
 226 :       ENDIF
 226 :       CALL QUEPO1(IGRVN, MELEMF, MLMNOM)
 227 :       IF(IERR .NE. 0) GOTO 9999
 228 :       SEGSUP MLMNOM
 229 : C
 230 : C**** Gradient de la temperature
 231 : C
 232 :       TYPE='CHPOINT '
 232 :       CALL LIROBJ(TYPE,IGRTN,1,IRET)
 233 :       IF(IERR .NE. 0) GOTO 9999
 234 :       JGN = 4
 235 :       JGM=IDIM
 236 :       SEGINI MLMNOM
 237 :       MLMNOM.MOTS(1) = 'P1DX'
 238 :       MLMNOM.MOTS(2) = 'P1DY'
 239 :       IF(IDIM.EQ.3) MLMNOM.MOTS(3) = 'P1DZ  '
 239 :       CALL QUEPO1(IGRTN, MELEMF, MLMNOM)
 240 :       IF(IERR .NE. 0) GOTO 9999
 241 :       SEGSUP MLMNOM
 242 : C
 243 : C
 244 :       IF (LOGIMP) THEN
 244 :          CALL LIROBJ('MCHAML  ',ICOGRV,1,IRET)
 245 :          IF(IERR .NE. 0) GOTO 9999
 246 :       ENDIF
 247 : C
 248 : C
 249 :       IF (LOGIMP) THEN
 249 :          CALL LIROBJ('MCHAML  ',ICOGRT,1,IRET)
 250 :          IF(IERR .NE. 0) GOTO 9999
 251 :       ENDIF
 252 : C
 253 : C
 254 : C**** Conditions limites 
 255 : C
 256 : C     Vitesse imposée à la paroi
 257 : C
 257 :       CALL LIRCHA(MOT,0,IRET)
 258 :       IF(IRET .NE. 0)THEN
 259 :          IF(MOT .EQ. 'VIMP')THEN
 260 :             TYPE='CHPOINT '
 260 :             CALL LIROBJ(TYPE,IVNIMP,1,IRET)
 261 :             IF(IERR .NE. 0) GOTO 9999
 262 :             MCHPOI = IVNIMP
 263 :             SEGACT MCHPOI
 264 :             NSOUPO = MCHPOI.IPCHP(/1)
 265 :             SEGDES MCHPOI
 266 :             IF(NSOUPO .GT. 0)THEN
 267 :                JGN = 4
 268 :                JGM = IDIM
 269 :                SEGINI MLMNOM
 270 :                MLMNOM.MOTS(1) = 'UX  '
 271 :                MLMNOM.MOTS(2) = 'UY  '
 272 :                IF(IDIM.EQ.3) MLMNOM.MOTS(3) = 'UZ  '
 272 :                CALL QUEPO1(IVNIMP, 0, MLMNOM)
 273 :                IF(IERR .NE. 0) GOTO 9999
 274 :                SEGSUP MLMNOM
 275 :             ELSE
 276 :                IVNIMP=0
 277 :             ENDIF
 278 :          ELSE
 279 :             IVNIMP=0
 280 : C
 281 : C********** Je m'excuse et je le remets dans la pile
 282 : C
 282 :             CALL REFUS
 283 :          ENDIF
 284 :       ELSE
 285 :          IVNIMP=0
 286 :       ENDIF
 287 : C
 288 : C     Tenseur des contraintes visqueux
 289 : C
 289 :       CALL LIRCHA(MOT,0,IRET)
 290 :       IF(IRET .NE. 0)THEN
 291 :          IF(MOT .EQ. 'TAUI')THEN
 292 :             TYPE='CHPOINT '
 292 :             CALL LIROBJ(TYPE,ITAUIM,1,IRET)
 293 :             IF(IERR .NE. 0) GOTO 9999
 294 :             MCHPOI = ITAUIM
 295 :             SEGACT MCHPOI
 296 :             NSOUPO = MCHPOI.IPCHP(/1)
 297 :             SEGDES MCHPOI
 298 :             IF(NSOUPO .GT. 0)THEN
 299 :                JGN = 4
 300 : C           2D only
 301 :                JGM = 3*(IDIM-1)
 302 :                SEGINI MLMNOM
 303 :                IF(IDIM .EQ.2)THEN
 304 :                   MLMNOM.MOTS(1) = 'TXX'
 305 :                   MLMNOM.MOTS(2) = 'TYY'
 306 :                   MLMNOM.MOTS(3) = 'TXY'
 307 :                ELSE
 308 :                   MLMNOM.MOTS(1) = 'TXX'
 309 :                   MLMNOM.MOTS(2) = 'TYY'
 310 :                   MLMNOM.MOTS(3) = 'TZZ'
 311 :                   MLMNOM.MOTS(4) = 'TXY'
 312 :                   MLMNOM.MOTS(5) = 'TXZ'
 313 :                   MLMNOM.MOTS(6) = 'TYZ'
 314 :                ENDIF
 314 :                CALL QUEPO1(ITAUIM, 0, MLMNOM)
 315 :                IF(IERR .NE. 0) GOTO 9999
 316 :                SEGSUP MLMNOM
 317 :             ELSE
 318 :                ITAUIM=0
 319 :             ENDIF
 320 :          ELSE
 321 :             ITAUIM=0
 322 : C
 323 : C********** Je m'excuse et je le remets dans la pile
 324 : C
 324 :             CALL REFUS
 325 :          ENDIF
 326 :       ELSE
 327 :          ITAUIM=0
 328 :       ENDIF
 329 : C
 330 : C     Flux thermique 
 331 : C
 331 :       CALL LIRCHA(MOT,0,IRET)
 332 :       IF(IRET .NE. 0)THEN
 333 :          IF(MOT .EQ. 'QIMP')THEN
 334 :             TYPE='CHPOINT '
 334 :             CALL LIROBJ(TYPE,IQIMP,1,IRET)
 335 :             IF(IERR .NE. 0) GOTO 9999
 336 :             MCHPOI = IQIMP
 337 :             SEGACT MCHPOI
 338 :             NSOUPO = MCHPOI.IPCHP(/1)
 339 :             SEGDES MCHPOI
 340 :             IF(NSOUPO .GT.0)THEN
 341 :                JGN = 4
 342 :                JGM = IDIM
 343 :                SEGINI MLMNOM
 344 :                MLMNOM.MOTS(1) = 'UX  '
 345 :                MLMNOM.MOTS(2) = 'UY  '
 346 :                IF(IDIM .EQ. 3) MLMNOM.MOTS(3) = 'UZ  '
 346 :                CALL QUEPO1(IQIMP, 0, MLMNOM)
 347 :                IF(IERR .NE. 0) GOTO 9999
 348 :                SEGSUP MLMNOM
 349 :             ELSE
 350 :                IQIMP=0
 351 :             ENDIF
 352 :          ELSE
 353 :             IQIMP=0
 354 : C
 355 : C********** Je m'excuse et je le remets dans la pile
 356 : C
 356 :             CALL REFUS
 357 :          ENDIF
 358 :       ELSE
 359 :          IQIMP=0
 360 :       ENDIF
 361 : C
 362 : C      Conditions aux limites mixtes 
 363 : C
 363 :       CALL LIRCHA(MOT,0,IRET)
 364 :       IF(IRET .NE. 0)THEN
 365 :          IF(MOT .EQ. 'MIXT')THEN
 366 :             TYPE='CHPOINT '
 366 :             CALL LIROBJ(TYPE,IMIXT,1,IRET)
 367 :             IF(IERR .NE. 0) GOTO 9999
 368 :             MCHPOI = IMIXT
 369 :             SEGACT MCHPOI
 370 :             NSOUPO = MCHPOI.IPCHP(/1)
 371 :             SEGDES MCHPOI
 372 :             IF(NSOUPO .GT.0)THEN
 373 :             ELSE
 374 :                IMIXT=0
 375 :             ENDIF
 376 :          ELSE
 377 :             IMIXT=0
 378 : C
 379 : C********** Je m'excuse et je le remets dans la pile
 380 : C
 380 :             CALL REFUS
 381 :          ENDIF
 382 :       ELSE
 383 :          IMIXT=0
 384 :       ENDIF
 385 : C
 386 : C     Température imposée
 387 : C
 387 :       CALL LIRCHA(MOT,0,IRET)
 388 :       IF(IRET .NE. 0)THEN
 389 :          IF(MOT .EQ. 'TIMP')THEN
 390 :             TYPE='CHPOINT '
 390 :             CALL LIROBJ(TYPE,ITIMP,1,IRET)
 391 :             IF(IERR .NE. 0) GOTO 9999
 392 :             MCHPOI = ITIMP
 393 :             SEGACT MCHPOI
 394 :             NSOUPO = MCHPOI.IPCHP(/1)
 395 :             SEGDES MCHPOI
 396 :             IF(NSOUPO .GT.0)THEN
 397 :                JGN = 4
 398 :                JGM = 1
 399 :                SEGINI MLMNOM
 400 :                MLMNOM.MOTS(1) = 'SCAL'
 400 :                CALL QUEPO1(ITIMP, 0, MLMNOM)
 401 :                IF(IERR .NE. 0) GOTO 9999
 402 :                SEGSUP MLMNOM
 403 :             ELSE
 404 :                ITIMP=0
 405 :             ENDIF
 406 :          ELSE
 407 :             ITIMP=0
 408 : C
 409 : C********** Je m'excuse et je le remets dans la pile
 410 : C
 410 :             CALL REFUS
 411 :          ENDIF
 412 :       ELSE
 413 :          ITIMP=0
 414 :       ENDIF
 415 : C
 416 : C**** Les noms des inconnues
 417 : C
 418 :       TYPE='LISTMOTS'
 418 :       CALL LIROBJ(TYPE,ILIINC,1,IRET)
 419 :       IF(IERR .NE. 0) GOTO 9999
 420 :       MLMOTS = ILIINC
 421 :       SEGACT MLMOTS
 422 :       NC = MLMOTS.MOTS(/2)
 423 :       SEGDES MLMOTS
 424 :       IF(NC .NE. (IDIM+2))THEN
 425 :          MESERR='LMOT1 = ???                         '
 426 :          WRITE(IOIMP,*) MESERR
 427 : C
 428 : C********** Message d'erreur standard
 429 : C           21 2
 430 : C           Données incompatibles
 431 : C
 431 :          CALL ERREUR(21)
 432 :          GOTO 9999
 433 :       ENDIF
 434 : C
 435 : C    OPTION POUR NE CALCULER QUE LA THERMIQUE  
 436 : C
 437 :       IRET = 0
 437 :       CALL LIRCHA(MOT2,0,IRET)
 438 :       IF(IERR .NE. 0) GOTO 9999
 439 :       IF(IRET .NE. 0)THEN
 440 :          IF(MOT2 .EQ. 'CLAUDEIS')THEN
 441 :             ICLAU = 1
 442 :          ELSE
 443 : C
 444 : C******* Je la remets dans la pile
 445 : C
 445 :             CALL ECRCHA(MOT2)
 446 :             ICLAU = 0
 447 :          ENDIF
 448 :       ELSE
 449 :          ICLAU=0
 450 :       ENDIF
 451 : 
 452 : C
 453 : C Fin de la lecture des données
 454 : C
 455 : C
 456 : C Test des données
 457 : C
 458 :       IF (.NOT.LOGIMP.AND.(ITIMP.NE.0)) THEN
 459 : C**** La temperature imposéé à la paroi ne serve pas dans le
 460 : C     cas de proprietés physiques constantes en explicite
 461 :          MESERR='TIMP = ???                          '
 462 :          WRITE(IOIMP,*) MESERR
 463 : C********** Message d'erreur standard
 464 : C           21 2
 465 : C           Données incompatibles
 466 : C     
 466 :          CALL ERREUR(21)
 467 :          GOTO 9999
 468 :       ENDIF
 469 : C
 470 : C Création de la matrice jacobienne du résidu du laplacien VF
 471 : C
 472 :       IF (LOGIMP) THEN
 473 :          IF (IDIM.EQ.2) THEN
 473 :             CALL YLAP1A(MU,KAPPA,CV,IRN,IVN,ITN,
 474 :      $           IGRVN,ICOGRV,ICOGRT,
 475 :      $           IVNIMP,ITAUIM,ITIMP,IQIMP,IMIXT,ICLAU,
 476 :      $           MELEMC,MELEMF,MELEFL,ICHPSU,INORM,ICHPVO,MLMOTS,
 477 :      $           IJACO)
 478 :           ELSEIF (IDIM.EQ.3) THEN
 478 :             CALL YLAP2A(MU,KAPPA,CV,IRN,IVN,ITN,
 479 :      $           IGRVN,ICOGRV,ICOGRT,
 480 :      $           IVNIMP,ITAUIM,ITIMP,IQIMP,
 481 :      $           MELEMC,MELEMF,MELEFL,ICHPSU,INORM,ICHPVO,MLMOTS,
 482 :      $           IJACO)
 483 :           ELSE
 484 :              WRITE(IOIMP,*) 'IDIM=',IDIM,' ILLICITE.'
 484 :              CALL ERREUR(5)
 485 :              GOTO 9999
 486 :           ENDIF
 487 :        ELSE
 488 : C
 489 : C******* Objet MATRIK vide en explicite
 490 : C
 491 :          NRIGE=7
 492 :          NMATRI=0
 493 :          NKID =9
 494 :          NKMT =7
 495 :          SEGINI MATRIK
 496 :          SEGDES MATRIK
 497 :          IJACO = MATRIK
 498 :        ENDIF
 499 : C
 500 : C**** Creation des flux aux interfaces
 501 : C
 502 :       JGN=4
 503 :       JGM=IDIM+1
 504 :       SEGINI MLDEFO
 505 :       SEGACT MLMOTS
 506 :       DO ICELL=1,JGM,1
 507 :          MLDEFO.MOTS(ICELL)=MLMOTS.MOTS(ICELL+1)
 508 :       ENDDO
 509 :       SEGDES MLMOTS
 510 :       TYPE = 'CHPOINT '
 510 :       CALL KRCHP1(TYPE, MELEMF, ICHFLU, MLDEFO)
 511 : C     
 512 : C**** Calcul des flux et du pas du temps.
 513 : C
 514 :       IF(IDIM.EQ.2)THEN
 514 :          CALL YLAP12(MU,KAPPA,CV,IRN,IVN,IGRVN,IGRTN,
 515 :      &        IVNIMP,ITAUIM,IQIMP,
 516 :      &        MELEMC,MELEMF,MELEFL,ICHPSU,INORM,ICHPDI,ICHFLU,DELTAT)
 517 :       ELSE
 517 :          CALL YLAP13(MU,KAPPA,CV,IRN,IVN,IGRVN,IGRTN,
 518 :      &        IVNIMP,ITAUIM,IQIMP,
 519 :      &        MELEMC,MELEMF,MELEFL,ICHPSU,INORM,ICHPDI,ICHFLU,DELTAT)
 520 :       ENDIF
 521 :       IF(IERR .NE. 0)GOTO 9999
 522 : C
 523 : C**** Calcul de residu (si LOGRES = .TRUE.)         
 524 : C
 525 :       IF(LOGRES)THEN
 526 :          TYPE = 'CHPOINT '
 526 :          CALL KRCHP1(TYPE, MELEMC, ICHRES, MLDEFO)
 527 :          IF(IERR.NE.0) GOTO 9999
 528 : C
 528 :          CALL KONRE1(MELEMC,MELEMF,MELEFL,ICHPVO,
 529 :      &        ICHFLU, ICHRES,
 530 :      &        LOGAN,MESERR)
 531 :          IF(LOGAN)THEN
 532 : C
 533 : C******* Anomalie detectée
 534 : C
 535 : C
 536 : C******* Message d'erreur standard
 537 : C        -301 0
 538 : C        %m1:40
 539 : C
 540 :             MOTERR(1:40) =  MESERR(1:40)
 541 :             WRITE(IOIMP,*) MOTERR(1:40)
 542 : C
 543 : C******* Message d'erreur standard
 544 : C        5 3
 545 : C        Erreur anormale.contactez votre support
 546 : C         
 546 :             CALL ERREUR(5)
 547 :             GOTO 9999
 548 :          ENDIF
 549 :       ELSE
 550 :          SEGSUP MLDEFO
 551 :          ICHRES = 0
 552 :       ENDIF
 553 : C
 554 : C**** Sortie     
 555 : C     
 555 :       CALL ECRREE(DELTAT)
 556 :       TYPE = 'CHPOINT '
 556 :       IF(ICHRES .NE. 0) CALL ECROBJ(TYPE,ICHRES)
 556 :       IF(ICHFLU .NE. 0) CALL ECROBJ(TYPE,ICHFLU)
 557 :       TYPE='MATRIK '
 557 :       CALL ECROBJ(TYPE,IJACO)
 558 : C
 559 :  9999 RETURN
 560 :       END
 561 : 
 562 : 
 563 :  
 564 :  
 565 :  
 566 :  
 567 :  
 568 :  
 569 :  
 570 :  
 571 :  
 572 :  

© Cast3M 2003 - All rights reserved.
Disclaimer