sautpa
C SAUTPA SOURCE CHAT 05/01/13 03:11:37 5004 $ ,NDIM,ITY1,ITYG,NOEL1,NOUN1,DIAM,DIFL,DIFT,TDEP,XDEP2 $ ,UELEM,DTREEL,UREEL,U,TARI,XCON2,XARI2,IZSH,Z $ ,IREBCO,IREBDI,NTEST) * ************************************************************************* *** SP 'SAUTPA' : fait avancer la particule apres un pas de tps 'DTREEL' *** par convection (analytique ou explicite) + dispersion (explicite). *** *** APPELES 1 = 'TDRAND' *** APPELES 2 = 'REEREF', 'REFREE', 'JCBIEN', 'SAUCO1', SAUCO2', *** 'SAUDIF', 'NORMVI' *** *** E = 'EPSILO' marge relative acceptée % 0 (cause machine) *** 'ICHGZ' vaut 1 si saut précédent effectif, 0 sinon *** 'JREBO' n° local face impermeable ou se trouve particule, -1 sinon *** 'XIREB' pt d'impact sur la face impermeable *** 'XNREB' vecteur normal à la face impermeable *** 'NDIM' dimension de l'espace *** 'ITY1' entier caracterisant le type de l'element *** 'ITYG' entier caracterisant la geometrie de l'element *** 'NOEL1' nombre de noeuds de l'element traversé *** 'NOUN1' nombre de flux de l'element traversé *** 'DIAM' "longueur caracteristique" de l'element traversé *** 'DIFL' coeff dispersion longitudinal ds element considere *** 'DIFT' coeff dispersion transversal ds element considere *** 'TDEP' tps reel depart avant l'avancee de la particule *** 'XDEP2' coord reelles de depart particule *** 'UELEM' valeurs des flux aux faces *** 'DTREEL' pas de tps réel pour le calcul avancée particule *** *** S = 'UREEL' vecteur "vitesse convective" ds element reel *** 'U' vecteur "vitesse diffusive" ds element reel *** 'TARI' tps reel d'arrivee apres avancee particule *** 'XCON2' coord reelles arrivee particule apres convection *** 'XARI2' coord reelles arrivee particule apres diffusion *** 'NTEST' vaut 0 si Jacobien nul pour approximation vitesse, 0 sinon *** *** E/S = 'IZSH' segment content pour l'elemt considere au pt depart : *** 'XYZL' coordonnees reelles des noeuds (E) *** 'SHP' fonctions de forme et derivees ds elemt ref (S) *** 'SHY' fonctions de base et derivees ds elemt ref (S) *** 'Z' vecteur aleatoire entre -1 et 1 pour le saut diffusif *** 'IREBCO' vaut 1 si rebond lors de la convection, 0 sinon *** 'IREBDI' vaut 1 si rebond lors de la diffusion, 0 sinon *** *** Auteur Cyril Nou ************************************************************************* * IMPLICIT INTEGER(I-N) IMPLICIT REAL*8 (A-H,O-Z) SEGMENT IZSH REAL*8 SHP(6,MNO9),SHY(12,MNO9),XYZL(3,MNO9) ENDSEGMENT DIMENSION XDEP(3),XDEP2(3),XCON2(3),XARI2(3) DIMENSION UELEM(NOUN1),UREEL(3),U(3),XJAC(3,3),Z(3) DIMENSION XIREB(3),XNREB(3),XITEST(3),XNTEST(3),X(3) C write(6,*)' uelem ', (UELEM(ii),ii=1,NOUN1) ****************************** *** INITIALISATION DU SAUT *** ****************************** *** calcul position de départ de référence *** initialisation à position de départ TARI=TDEP IREBCO=0 IREBDI=0 JFTEST=0 DO 10 I=1,NDIM XCON2(I)=XDEP2(I) XARI2(I)=XDEP2(I) 10 CONTINUE ********************** *** SAUT CONVECTIF *** ********************** *** cas ou le saut convectif est calculé explicitement $ ,DIAM,UELEM,XDEP,XDEP2,DTREEL,XCON2,IZSH,UREEL,NTEST) *** cas ou Jacobien nul lors approximation vitesse IF (NTEST.EQ.0) RETURN *** calcul de la norme de la vitesse ******************************************************** *** CAS OU TRAVERSEE FACE IMPERMEABLE PDT CONVECTION *** ******************************************************** IF (ITEST.EQ.0) THEN $ ,XDEP2,XCON2,IZSH,XITEST,XNTEST,KTEST,JFTEST) IF ((KTEST.EQ.2).AND.(JFTEST.EQ.JREBO)) THEN IREBCO=1 COEFC=COEFC*DTREEL DO 30 I=1,NDIM XCON2(I)=XCON2(I)-IREBCO*COEFC*XNREB(I) 30 CONTINUE ENDIF ENDIF ********************************* *** SAUT DIFFUSIF (EXPLICITE) *** ********************************* IF (ICHGZ.EQ.1) THEN *** on retire vecteur aleatoire car saut précédent effectif DO 20 I=1,3 Z(I)=(2.D0*Z(I))-1.D0 20 CONTINUE ENDIF $ ,DTREEL,XNORM,UXY,DIFL,DIFT,U,XARI2) ******************************************************* *** CAS OU TRAVERSEE FACE IMPERMEABLE PDT DIFFUSION *** ******************************************************* IF (JTEST.EQ.0) THEN $ ,XCON2,XARI2,IZSH,XITEST,XNTEST,KTEST,JFTEST) IF ((KTEST.EQ.2).AND.(JFTEST.EQ.JREBO)) THEN IREBDI=1 DO 40 I=1,NDIM XIREB(I)=XITEST(I) XNREB(I)=XNTEST(I) 40 CONTINUE DO 50 I=1,NDIM X(I)=XARI2(I)-XIREB(I) 50 CONTINUE DO 60 I=1,NDIM XARI2(I)=XARI2(I)-2*IREBDI*COEFD*XNREB(I) 60 CONTINUE ENDIF ENDIF ******************************* *** TEMPS ARRIVEE PARTICULE *** ******************************* TARI=TDEP+DTREEL RETURN END
© Cast3M 2003 - Tous droits réservés.
Mentions légales