xcvfpu
C XCVFPU SOURCE GF238795 18/02/05 21:16:22 9726 & NES,IDIM,NP,NPG,IAXI,AJ,NBEL,NUM,XCOOR, & NPTI,IPADI,UN,NPTS,IPADS,UET,F,AMU,IKM,RO,IKR, IMPLICIT INTEGER(I-N) IMPLICIT REAL*8 (A-H,O-Z) C************************************************************************ C C SYNTAXE : C C FPU (RO,UN,MU,UET,YP <,VPAROI> ) VPAROI non fait C C C C RO cst ou au sommet ROS(NPTS) C ANU VISCOSITE CINEMATIQUE C UET U* C YP DISTANCE A LA PAROI C VPAROI VITESSE DE LA PAROI (PAR DEFAUT 0.D0) C C IDIM : dime espace NES : dime espace elt C NP : nb pt par elt, NPG : nb pt d'intégration C NPTS : nb pt de la frontière NPTI : nb pt total C NBEL : nb d'éléments C NUM(NP,NBEL) connectivités de l'élément (par type d'élément) C IPADS: Indirections maillage frontière C IPADI: Indirections maillage total C C C VS(I,3) tableau local ; vitesse aux sommets de l'élément<- UN(NPTS) C UETS(I) tableau local ; U* aux sommets de l'élément <- UET(NPTS) C UXL,UYL,UZL ux,uy,uz aux points de gauss C C DS(NP,NPTS) valeurs de U* intégrés aux noeuds : Somme_S Na U*a dS C TK(NP,NPTS) valeurs de Kp intégrés aux noeuds : C TE(NP,NPTS) valeurs de Ep intégrés aux noeuds : C sert à projeter les champs des points de gauss au sommet en divisant C ensuite par la matrice masse diagonale (Fait dans yfpu) C C C C C C************************************************************************ -INC CCREEL DIMENSION FN(NP,NPG),GR(IDIM,NP,NPG),PG(NPG),AJ(IDIM,IDIM,NPG) DIMENSION XYZ(IDIM,NP),HR(NES,NP,NPG),PGSQ(NPG),RPG(NPG) DIMENSION XCOOR(*),DS(NPTS) DIMENSION UN(NPTI,IDIM),RO(*),AMU(*) DIMENSION UET(NPTS),F(NPTS,IDIM),TK(NPTS),TE(NPTS) DIMENSION IPADI(*),IPADS(*) C CONSTANTES PHYSIQUES C DATA CNU,AKER /0.09D0,0.41D0/ DIMENSION VS(16,3),UETS(16),ROS(16),AMUS(16) DATA NITMAX/100/,W/0.7D0/,EPS/1.D-4/ REAL*8 UZTL UZTL=0.D0 SQCNU=SQRT(CNU) DEUPI=1.D0 IF(IAXI.NE.0)DEUPI=2.D0*XPI c?? CALL INITD(DS,NPTS,0.D0) IERC=0 ERRMAX=0.D0 NBP=0 NBIM=0 DO 20 I=1,NP J=NUM(I,K) JI=IPADI(NUM(I,K)) JR=(1-IKR)*(JI-1)+1 JM=(1-IKM)*(JI-1)+1 JS=IPADS(NUM(I,K)) DO 10 N=1,IDIM XYZ(N,I) = XCOOR((J-1)*(IDIM+1)+N) VS(I,N)=UN(JI,N) 10 CONTINUE UETS(I)=UET(JS) ROS(I) = RO(JR) AMUS(I)= AMU(JM) 20 CONTINUE & NES,IDIM,NP,NPG,IAXI,AIRE,AJ,SGN) DO 60 J=1,NP JS=IPADS(NUM(J,K)) FX=0.D0 FY=0.D0 FZ=0.D0 FU=0.D0 FK=0.D0 FE=0.D0 DO 50 L=1,NPG UXL=0.D0 UYL=0.D0 UZL=0.D0 UETL=0.D0 AMUL=0.D0 ROL =0.D0 DO 5 I=1,NP UXL=UXL+FN(I,L)*VS(I,1) UYL=UYL+FN(I,L)*VS(I,2) IF(IDIM.EQ.3)UZL=UZL+FN(I,L)*VS(I,3) UETL=UETL+FN(I,L)*UETS(I) AMUL=AMUL+FN(I,L)*AMUS(I) ROL =ROL +FN(I,L)*ROS(I) 5 CONTINUE UNL=UXL*AJ(1,IDIM,L)+UYL*AJ(2,IDIM,L) IF(IDIM.EQ.3)UNL=UNL+UZL*AJ(3,IDIM,L) UXNL=UNL*AJ(1,IDIM,L) UYNL=UNL*AJ(2,IDIM,L) UXTL=UXL-UXNL UYTL=UYL-UYNL * Y AURAIT IL UNE ERREUR UYX ET UYTL ET NON QUE DES X GBM UTL=(UXTL*UXTL+UYTL*UYTL) IF(IDIM.EQ.3)THEN UZNL=UNL*AJ(3,IDIM,L) UZTL=UZL-UZNL UTL=UTL+(UZTL*UZTL) ENDIF UTL=UTL**0.5D0+1.D-30 TXL=UXTL/UTL TYL=UYTL/UTL TZL=UZTL/UTL UTM=ABS(UTL) ANUL = AMUL/ROL C C CALCUL DE U ETOILE A PARTIR UTM C C --------------------CAROLI---I-------------------------- UETLN=UETL DO 57 MI=1,NITMAX YPLUS=YP*UETLN/ANUL YPLUS=ABS(YPLUS) c Reichardt UPLUS=1.D0/AKER*Log(1.+AKER*yplus)+ & 7.8D0*(1.D0-exp(-yplus/11.D0)-(yplus/11.D0)*exp(-yplus/3.D0)) C ---- RELAX SU UET ------------------------------------ UETI=ABS(UTM/(UPLUS+1.D-5)) UETLNT=W*UETLN+(1.D0-W)*UETI ERR=ABS(UETLNT-UETLN)/MAX(UETLN,UETLNT) UETLN0=UETLN UETLN=UETLNT IF(ERR.LT.EPS)GO TO 58 57 CONTINUE IF(ERR.GT.ERRMAX)THEN C IF(L.EQ.1.AND.J.EQ.1.AND.K.LE.5)write(6,*)'UETLN',UETLN,UETLN0 ERRMAX=ERR NBP=NBP+1 IERC=1 ENDIF 58 CONTINUE IF(NBIM.LT.MI)NBIM=MI C --------------------CAROLI----F------------------ C************************************************************************ C CALCUL Q D M C************************************************************************ C CALCUL DU COEFFICIENT AK A PARTIR DE UTM UETLN=UETLN+(ANUL/YP) AK=0.D0 IF(UTM.GT.1.D-10)AK=UETLN*UETLN*FN(J,L)*PGSQ(L)*DEUPI*RPG(L) FX=FX-AK*TXL*ROL FY=FY-AK*TYL*ROL IF(IDIM.EQ.3)FZ=FZ-AK*TZL*ROL FU=FU+UETLN*FN(J,L)*PGSQ(L)*DEUPI*RPG(L) YPLUS2=-(YPLUS+0.01D0)*(YPLUS+0.01D0)*0.0017D0 IF(YPLUS.LE.0.1)THEN Ret= 300. FKP=(0.057+0.05*(sqrt(Ret/1600.)))*(yplus*yplus) & *exp(-yplus/7.3) FKP=FKP+4.6*(1.-exp(-yplus/20.))/(4.*yplus/Ret+1.) & *(1.-exp(-((yplus/3.)**2.))) FKE = 1./AKER/((YPLUS**4.+15.**4.)**0.25) FK=FK+((UETLN*UETLN/SQCNU*FKP)*FN(J,L)*PGSQ(L)*DEUPI*RPG(L)) FE=FE+((ROL*UETLN*UETLN*UETLN*UETLN/ANUL*FKE) & *FN(J,L)*PGSQ(L)*DEUPI*RPG(L)) ELSE FK=FK+((UETLN*UETLN/SQCNU)*FN(J,L)*PGSQ(L)*DEUPI*RPG(L)) FE=FE+((UETLN*UETLN*UETLN/(AKER*YP*(1.D0-EXP(YPLUS2)))) C FE=FE+((UETLN*UETLN*UETLN/(AKER*YP )) & *FN(J,L)*PGSQ(L)*DEUPI*RPG(L)) ENDIF 50 CONTINUE F(JS,1)=F(JS,1)+FX F(JS,2)=F(JS,2)+FY IF(IDIM.EQ.3)F(JS,3)=F(JS,3)+FZ DS(JS)=DS(JS)+FU C C CALCUL DE KP ET DE EPSILONP C TK(JS)=TK(JS)+FK TE(JS)=TE(JS)+FE ENDIF 60 CONTINUE 2 CONTINUE IF(IERC.NE.0) & write(6,*)' NON CONVERGENCE EN ',NITMAX,'ITERATIONS',ERRMAX,NBP write(6,*)' FPU : Nb max d iterations ',nbim RETURN 1002 FORMAT(10(1X,1PE11.4)) 1001 FORMAT(20(1X,I5)) END
© Cast3M 2003 - Tous droits réservés.
Mentions légales