ylap11
C YLAP11 SOURCE CB215821 20/11/25 13:44:00 10792 C************************************************************************ C C PROJET : CASTEM 2000 C C NOM : YLAPL11 C C DESCRIPTION : Voir YLAPL1 C C C LANGAGE : FORTRAN 77 + ESOPE 2000 (avec estensions CISI) C C AUTEUR : A. BECCANTINI, DRN/DMT/SEMT/LTMF C C************************************************************************ C C C APPELES (E/S) : LIRMOT, ERREUR C C C APPELES : YLAPL12 C C************************************************************************ C C*** ENTREE / SORTIE (voir Phrase d'appel GIBIANE) C C*********************************************************************** C C HISTORIQUE (Anomalies et modifications éventuelles) C C HISTORIQUE : 11/02/2003 Ajout de l'option MIXT pour la température C C************************************************************************ C IMPLICIT INTEGER(I-N) -INC PPARAM -INC CCOPTIO -INC SMMATRIK -INC SMCHPOI -INC SMLMOTS POINTEUR MLMNOM.MLMOTS POINTEUR MLDEFO.MLMOTS -INC SMCHAML POINTEUR ICOGRV.MCHELM POINTEUR ICOGRT.MCHELM C C**** Variables de COOPTIO C C INTEGER IPLLB, IERPER, IERMAX, IERR, INTERR C & ,IOTER, IOLEC, IOIMP, IOCAR, IOACQ C & ,IOPER, IOSGB, IOGRA, IOSAU, IORES C & ,IECHO, IIMPI, IOSPI C & ,IDIM C & ,MCOORD C & ,IFOMOD, NIFOUR, IFOUR, NSDPGE, IONIVE C & ,NGMAXY, IZROSF, ISOTYP, IOSCR,LTEXLU C & ,NORINC,NORVAL,NORIND,NORVAD C & ,NUCROU, IPSAUV C C**** Variables de SMLMOTS C INTEGER JGM, JGN C C**** Variables de SMMATRIK C INTEGER NKID, NKMT, NMATRI, NRIGE C C**** Variables du programme C & , IDOMA, MELEMC, MELEMF, MELEFL, ICHPSU, ICHPDI, ICHPVO & , INORM & , IRN, IVN, ITN, IGRVN, IGRTN & , IVNIMP, ITAUIM, ITIMP,IQIMP,IMIXT & , ILIINC, NC, INEFMD, ICOND & , IJACO, ICHFLU, ICHRES, NSOUPO,ICLAU REAL*8 MU,KAPPA,CV,DELTAT CHARACTER*(40) MESERR CHARACTER*4 MOT,LFLUX(2), LIMPL(2) CHARACTER*8 MOT2 CHARACTER*8 TYPE LOGICAL LOGRES,LOGIMP,LOGAN C DATA LFLUX/'FLUX','RESI'/ DATA LIMPL/'EXPL','IMPL'/ C C**** Initialisation des variables pour la gestion des erreurs. C MESERR = ' ' LOGAN = .FALSE. LOGRES=.FALSE. C C******* Flux ou residu? C IF(IERR .NE. 0)GOTO 9999 IF(ICELL .EQ. 1)THEN LOGRES = .FALSE. ELSEIF(ICELL .EQ. 2)THEN LOGRES = .TRUE. ELSE C C******** Message d'erreur standard C 251 2 C Tentative d'utilisation d'une option non implémentée C ENDIF C C IF(IERR .NE. 0)GOTO 9999 IF(ICELL .EQ. 1)THEN LOGIMP=.FALSE. ELSEIF(ICELL .EQ. 2)THEN LOGIMP=.TRUE. ELSE WRITE(IOIMP,*) 'Erreur de programmation' GOTO 9999 ENDIF C C********************************** C**** Lecture de l'objet MODELE *** C********************************** C ICOND = 1 IF(IRET.EQ.0.AND.TYPE.NE.'MMODEL')THEN WRITE(6,*)' On attend un objet MMODEL' RETURN ENDIF IF(IERR.NE.0)GOTO 9999 IF(IERR.NE.0)GOTO 9999 C C**** Centre, FACE et FACEL C IF(IERR .NE. 0) GOTO 9999 C IF(IERR .NE. 0) GOTO 9999 C IF(IERR .NE. 0) GOTO 9999 C C**** Lecture du CHPOINT contenant les surfaces des faces. C IF(IERR .NE. 0) GOTO 9999 C C**** Lecture du CHPOINT contenant les diametres minimums. C IF(IERR .NE. 0) GOTO 9999 C C**** Lecture du CHPOINT contenant les volumes C IF(IERR .NE. 0) GOTO 9999 C C********** Les normales aux faces C IF(IERR .NE. 0) GOTO 9999 C C******************************** C**** Fin table domaine ********* C******************************** C C**** Viscosité dynamique (kg/m/sec) C IF(IERR.NE.0)GOTO 9999 C C**** Conductivité thermique (J/sec/m/K) C IF(IERR.NE.0)GOTO 9999 C C**** Chaleur specifique (J/kg/K) C IF(IERR.NE.0)GOTO 9999 C C**** Densité C TYPE = 'CHPOINT ' IF(IERR .NE. 0) GOTO 9999 MOT = 'SCAL' C C**** Vitesse C TYPE='CHPOINT ' IF(IERR .NE. 0) GOTO 9999 JGN = 4 JGM = IDIM SEGINI MLMNOM IF(IERR .NE. 0) GOTO 9999 SEGSUP MLMNOM C C**** Température C TYPE='CHPOINT ' IF(IERR .NE. 0) GOTO 9999 JGN = 4 JGM = 1 SEGINI MLMNOM IF(IERR .NE. 0) GOTO 9999 SEGSUP MLMNOM C C**** Gradient de la vitesse C TYPE='CHPOINT ' IF(IERR .NE. 0) GOTO 9999 JGN = 4 JGM =IDIM*IDIM SEGINI MLMNOM IF(IDIM.EQ.2)THEN ELSE ENDIF IF(IERR .NE. 0) GOTO 9999 SEGSUP MLMNOM C C**** Gradient de la temperature C TYPE='CHPOINT ' IF(IERR .NE. 0) GOTO 9999 JGN = 4 JGM=IDIM SEGINI MLMNOM IF(IERR .NE. 0) GOTO 9999 SEGSUP MLMNOM C C IF (LOGIMP) THEN IF(IERR .NE. 0) GOTO 9999 ENDIF C C IF (LOGIMP) THEN IF(IERR .NE. 0) GOTO 9999 ENDIF C C C**** Conditions limites C C Vitesse imposée à la paroi C IF(IRET .NE. 0)THEN IF(MOT .EQ. 'VIMP')THEN TYPE='CHPOINT ' IF(IERR .NE. 0) GOTO 9999 MCHPOI = IVNIMP SEGACT MCHPOI NSOUPO = MCHPOI.IPCHP(/1) SEGDES MCHPOI IF(NSOUPO .GT. 0)THEN JGN = 4 JGM = IDIM SEGINI MLMNOM IF(IERR .NE. 0) GOTO 9999 SEGSUP MLMNOM ELSE IVNIMP=0 ENDIF ELSE IVNIMP=0 C C********** Je m'excuse et je le remets dans la pile C CALL REFUS ENDIF ELSE IVNIMP=0 ENDIF C C Tenseur des contraintes visqueux C IF(IRET .NE. 0)THEN IF(MOT .EQ. 'TAUI')THEN TYPE='CHPOINT ' IF(IERR .NE. 0) GOTO 9999 MCHPOI = ITAUIM SEGACT MCHPOI NSOUPO = MCHPOI.IPCHP(/1) SEGDES MCHPOI IF(NSOUPO .GT. 0)THEN JGN = 4 C 2D only JGM = 3*(IDIM-1) SEGINI MLMNOM IF(IDIM .EQ.2)THEN ELSE ENDIF IF(IERR .NE. 0) GOTO 9999 SEGSUP MLMNOM ELSE ITAUIM=0 ENDIF ELSE ITAUIM=0 C C********** Je m'excuse et je le remets dans la pile C CALL REFUS ENDIF ELSE ITAUIM=0 ENDIF C C Flux thermique C IF(IRET .NE. 0)THEN IF(MOT .EQ. 'QIMP')THEN TYPE='CHPOINT ' IF(IERR .NE. 0) GOTO 9999 MCHPOI = IQIMP SEGACT MCHPOI NSOUPO = MCHPOI.IPCHP(/1) SEGDES MCHPOI IF(NSOUPO .GT.0)THEN JGN = 4 JGM = IDIM SEGINI MLMNOM IF(IERR .NE. 0) GOTO 9999 SEGSUP MLMNOM ELSE IQIMP=0 ENDIF ELSE IQIMP=0 C C********** Je m'excuse et je le remets dans la pile C CALL REFUS ENDIF ELSE IQIMP=0 ENDIF C C Conditions aux limites mixtes C IF(IRET .NE. 0)THEN IF(MOT .EQ. 'MIXT')THEN TYPE='CHPOINT ' IF(IERR .NE. 0) GOTO 9999 MCHPOI = IMIXT SEGACT MCHPOI NSOUPO = MCHPOI.IPCHP(/1) SEGDES MCHPOI IF(NSOUPO .GT.0)THEN ELSE IMIXT=0 ENDIF ELSE IMIXT=0 C C********** Je m'excuse et je le remets dans la pile C CALL REFUS ENDIF ELSE IMIXT=0 ENDIF C C Température imposée C IF(IRET .NE. 0)THEN IF(MOT .EQ. 'TIMP')THEN TYPE='CHPOINT ' IF(IERR .NE. 0) GOTO 9999 MCHPOI = ITIMP SEGACT MCHPOI NSOUPO = MCHPOI.IPCHP(/1) SEGDES MCHPOI IF(NSOUPO .GT.0)THEN JGN = 4 JGM = 1 SEGINI MLMNOM IF(IERR .NE. 0) GOTO 9999 SEGSUP MLMNOM ELSE ITIMP=0 ENDIF ELSE ITIMP=0 C C********** Je m'excuse et je le remets dans la pile C CALL REFUS ENDIF ELSE ITIMP=0 ENDIF C C**** Les noms des inconnues C TYPE='LISTMOTS' IF(IERR .NE. 0) GOTO 9999 MLMOTS = ILIINC SEGACT MLMOTS SEGDES MLMOTS IF(NC .NE. (IDIM+2))THEN MESERR='LMOT1 = ??? ' WRITE(IOIMP,*) MESERR C C********** Message d'erreur standard C 21 2 C Données incompatibles C GOTO 9999 ENDIF C C OPTION POUR NE CALCULER QUE LA THERMIQUE C IRET = 0 IF(IERR .NE. 0) GOTO 9999 IF(IRET .NE. 0)THEN IF(MOT2 .EQ. 'CLAUDEIS')THEN ICLAU = 1 ELSE C C******* Je la remets dans la pile C ICLAU = 0 ENDIF ELSE ICLAU=0 ENDIF C C Fin de la lecture des données C C C Test des données C IF (.NOT.LOGIMP.AND.(ITIMP.NE.0)) THEN C**** La temperature imposéé à la paroi ne serve pas dans le C cas de proprietés physiques constantes en explicite MESERR='TIMP = ??? ' WRITE(IOIMP,*) MESERR C********** Message d'erreur standard C 21 2 C Données incompatibles C GOTO 9999 ENDIF C C Création de la matrice jacobienne du résidu du laplacien VF C IF (LOGIMP) THEN IF (IDIM.EQ.2) THEN $ IGRVN,ICOGRV,ICOGRT, $ IVNIMP,ITAUIM,ITIMP,IQIMP,IMIXT,ICLAU, $ MELEMC,MELEMF,MELEFL,ICHPSU,INORM,ICHPVO,MLMOTS, $ IJACO) ELSEIF (IDIM.EQ.3) THEN $ IGRVN,ICOGRV,ICOGRT, $ IVNIMP,ITAUIM,ITIMP,IQIMP, $ MELEMC,MELEMF,MELEFL,ICHPSU,INORM,ICHPVO,MLMOTS, $ IJACO) ELSE WRITE(IOIMP,*) 'IDIM=',IDIM,' ILLICITE.' GOTO 9999 ENDIF ELSE C C******* Objet MATRIK vide en explicite C NRIGE=7 NMATRI=0 NKID =9 NKMT =7 SEGINI MATRIK SEGDES MATRIK IJACO = MATRIK ENDIF C C**** Creation des flux aux interfaces C JGN=4 JGM=IDIM+1 SEGINI MLDEFO SEGACT MLMOTS DO ICELL=1,JGM,1 ENDDO SEGDES MLMOTS TYPE = 'CHPOINT ' C C**** Calcul des flux et du pas du temps. C IF(IDIM.EQ.2)THEN & IVNIMP,ITAUIM,IQIMP, & MELEMC,MELEMF,MELEFL,ICHPSU,INORM,ICHPDI,ICHFLU,DELTAT) ELSE & IVNIMP,ITAUIM,IQIMP, & MELEMC,MELEMF,MELEFL,ICHPSU,INORM,ICHPDI,ICHFLU,DELTAT) ENDIF IF(IERR .NE. 0)GOTO 9999 C C**** Calcul de residu (si LOGRES = .TRUE.) C IF(LOGRES)THEN TYPE = 'CHPOINT ' IF(IERR.NE.0) GOTO 9999 C & ICHFLU, ICHRES, & LOGAN,MESERR) IF(LOGAN)THEN C C******* Anomalie detectée C C C******* Message d'erreur standard C -301 0 C %m1:40 C MOTERR(1:40) = MESERR(1:40) WRITE(IOIMP,*) MOTERR(1:40) C C******* Message d'erreur standard C 5 3 C Erreur anormale.contactez votre support C GOTO 9999 ENDIF ELSE SEGSUP MLDEFO ICHRES = 0 ENDIF C C**** Sortie C TYPE = 'CHPOINT ' TYPE='MATRIK ' C 9999 RETURN END
© Cast3M 2003 - Tous droits réservés.
Mentions légales