1 : C CHGELE SOURCE PV 09/03/12 21:17:02 6325 2 : SUBROUTINE CHGELE(EPSILO,NDIM,JREBO,XNREB 3 : $ ,TARI,XARI2,DTREEL,IVPT,MELEME,IFACEL,IZCENT 4 : $ ,IELTFA,IZVIT,IZUN,IEL1,TDEP,XDEP2,JFACE,ICHGZ,IZSH) 5 : 6 : **************************************************************************** 7 : *** SP 'CHGELE' : permet de determiner le prochain élément traversé par la 8 : *** particule, les donnees de sortie de la particule deviennent alors les 9 : *** données d'entrée. 'CHGELE' traite le cas particulier de passage de la 10 : *** particule aux noeuds ou aux aretes des elements traversés. 11 : *** 12 : *** APPELES 1 = 'TRJIEL', 'TRJFAC' 13 : *** APPELES 2 = 'EXCEPT' 14 : *** 15 : *** E = 'EPSILO' marge relative acceptée position pt % element 16 : *** 'NDIM' dimension de l'espace 17 : *** 'JREBO' n° local face impermeable ou se trouve particule 18 : *** 'XNREB' vecteur normal à la face impermeable 19 : *** 'TARI' tps réel d'arrivée à l'interface de sortie 20 : *** 'XARI2' coords réelles d'arrivée à interface de sortie 21 : *** 'DTREEL' pas de tps reel de calcul 22 : *** 'IVPT' entier valant 1 en regime permanent 23 : *** 'MELEME' pteur sur le maillage du domaine etudié 24 : *** 'IFACEL' pteur sur la table " DOMAINE.FACEL" 25 : *** 'IZCENT' pteur sur la table "DOMAINE.CENTRE" 26 : *** 'IELTFA' pteur sur la table "DOMAINE.ELTFA" 27 : *** 'IZVIT' segment decrivant les vitesses (<- 'TRJVIT' OU 'TRJFLU') 28 : *** 'IZUN' segmt content flux aux faces % ss-maillage de 'IEL1' 29 : *** 30 : *** E/S = 'IEL1' n° global de l'élément suivant contenant particule 31 : *** 'TDEP' tps réel écoulé jusqu' au pt de départ de l'élémt suivant 32 : *** 'XDEP2' coords réelles départ ds élémt suivant 33 : *** 'JFACE' n° local interface de l'element suivant 34 : *** 'ICHGZ' vaut 1 si saut précédent effectif et 0 sinon 35 : *** 'IZSH' segment content coord reelles noeuds, fcts forme et base 36 : *** 37 : *** Rq : on considere que le vecteur aleatoire z est à retirer dans tous 38 : *** les cas apres chgt d'element meme si le saut précédent n'est pas 39 : *** effectif (diffusion compense convection, pas d'element voisin,...) 40 : *** 41 : *** Auteur Cyril Nou 42 : *************************************************************************** 43 : 44 : 45 : IMPLICIT INTEGER(I-N) 46 : IMPLICIT REAL*8 (A-H,O-Z) 47 : -INC SMELEME 48 : -INC SMCHAML 49 : POINTEUR IZCENT.MELEME,IELTFA.MELEME,IFACEL.MELEME 50 : SEGMENT IZVIT 51 : REAL*8 TEMTRA(NVIPT) 52 : INTEGER IPUN(NBS),IDUN(NBS),IPVPT(NVIPT),IFORML 53 : ENDSEGMENT 54 : SEGMENT IZVPT 55 : INTEGER IPUN1(NBS),IPUMAX 56 : ENDSEGMENT 57 : SEGMENT IZUN 58 : REAL*8 UN(I1,I2,I3) 59 : ENDSEGMENT 60 : SEGMENT IZUMAX 61 : REAL*8 UMAX(NBREL) 62 : ENDSEGMENT 63 : SEGMENT IZSH 64 : REAL*8 SHP(6,MNO9),SHY(12,MNO9),XYZL(3,MNO9) 65 : ENDSEGMENT 66 : DIMENSION XDEP2(3),XARI2(3),Z(3),XNREB(3) 67 : 68 : *** l'arrivée devient l'entrée pour l'élément suivant 69 : TDEP=TARI 70 : DO 10 I=1,NDIM 71 : XDEP2(I)=XARI2(I) 72 : 10 CONTINUE 73 : *** test position pt % noeuds/aretes avec renvoi 'IEL2' ou traj a lieu 74 : NVOISI=0 74 : CALL EXCEPT(EPSILO,NDIM,JREBO,XNREB,MELEME,IZCENT,IELTFA 75 : $ ,IZVIT,IVPT,IEL1,TDEP,DTREEL,XDEP2,IZSH,IZUN,IEL2,NVOISI) 76 : *** chgt element classique a partir d'une face 77 : IF (NVOISI.EQ.0) THEN 78 : IF (JREBO.LE.0) THEN 79 : *** cherche n° 'IEL2' qui a avec 'IEL1' face commune (globale) 'NF' 79 : CALL TRJIEL(IEL1,IEL2,JFACE,NF,IFACEL,IZCENT,IELTFA) 80 : IEL1=IEL2 81 : *** 'JFACE' n° local dans 'IEL1' associé à face de n° global 'NF' 81 : CALL TRJFAC(IEL1,NF,JFACE,IELTFA) 82 : ENDIF 83 : *** chgt element via noeud ou arete (pas de face traversee) 84 : ELSEIF (NVOISI.GT.0) THEN 85 : IEL1=IEL2 86 : JFACE=0 87 : ENDIF 88 : *** chgt vecteur aleatoire saut suivant (m si saut precedent non effectif) 89 : ICHGZ=1 90 : 91 : RETURN 92 : END 93 : 94 : 95 : 96 : 97 :
© Cast3M 2003 - All rights reserved.
Disclaimer