trjcdt
C TRJCDT SOURCE CHAT 05/01/13 03:48:54 5004
***************************************************************************
*** SP 'TRJCDT' : permet de choisir un pas de tps judicieux (traversée
*** de la maille en 5 pas de tps en moyenne) pour le calcul de
*** l'avancée de la particule dans la maille par convection+diffusion.
***
*** APPELES 1 = aucun
*** APPELES 2 = aucun
***
*** E = 'NDIM' dimension de l'espace
*** 'DIAM' "longueur caracteristique" de la maille considérée
*** 'IZVIT' segment decrivant les vitesses (<- 'TRJVIT' OU 'TRJFLU')
*** 'IVPT' entier valant dans le cas du régime permanent
*** 'IEL1' n° global de l'element contenant particule
*** 'DIFL' coefficient dispersion longitudinal ds element
*** 'DIFT' coefficient dispersion transversal ds element
*** 'UCEN' vitesse ds element reel au pt centre
***
*** S = 'DTCALC' pas de tps utilisé pour calcul saut particule
***
*** Rq : critere convectif, dtcalcul=1/5*(diam/ucentre)
*** critere diffusif, dtcalcul=1/5*diam²/(6*max(dl,dt))
***
*** ORIGINE = 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
SEGMENT IZVIT
REAL*8 TEMTRA(NVIPT)
INTEGER IPUN(NBS),IDUN(NBS),IPVPT(NVIPT),IFORML
ENDSEGMENT
SEGMENT IZVPT
INTEGER IPUN1(NBS),IPUMAX
ENDSEGMENT
SEGMENT IZUN
ENDSEGMENT
SEGMENT IZUMAX
REAL*8 UMAX(NBREL)
ENDSEGMENT
DIMENSION UCEN(3)
*** recuperation de la vitesse ou flux maximal dans l'element 'IEL1'
IZVPT=IPVPT(IVPT)
SEGACT IZVPT
IZUMAX=IPUMAX
SEGACT IZUMAX
UEM=UMAX(IEL1)
SEGDES IZUMAX
SEGDES IZVPT
*** initialisation à -1 des variables de travail
DTC=-1.D0
DTD=-1.D0
DTCALC=-1.D0
DIFCAL=-1.D0
*** calcul de la norme de la vitesse au centre (moyenne sur element)
UNORM=0.D0
DO 10 I=1,NDIM
UNORM=UNORM+UCEN(I)**2
10 CONTINUE
UNORM=SQRT(UNORM)
*** pas de tps selon un critere convectif
IF (UNORM.GT.0.D0) DTC=DIAM/(5*UNORM)
*** recuperation du coeff dispersion max
IF (DIFL.GE.DIFT) THEN
DIFCAL=DIFL
ELSE
DIFCAL=DIFT
ENDIF
*** pas de tps selon un critere diffusif
IF (DIFCAL.GT.0.D0) DTD=(DIAM)**2/(5*6*DIFCAL)
*** on choisit le min pour pas de tps de calcul
IF (DTC.GT.0.D0) THEN
IF (DTD.GT.0.D0) THEN
IF (DTC.GE.DTD) THEN
DTCALC=DTD
ELSE
DTCALC=DTC
ENDIF
ELSE
*** cas ou pas de diffusion
DTCALC=DTC
ENDIF
ELSE
IF (DTD.GT.0.D0) THEN
*** cas ou pas de convection
DTCALC=DTD
ELSE
*** aucun mouvement! (ni convection, ni diffusion)
IEL1=-1
ENDIF
ENDIF
RETURN
END
					© Cast3M 2003 - Tous droits réservés.
					Mentions légales