Télécharger xcvfpu.eso

Retour à la liste

Numérotation des lignes :

xcvfpu
  1. C XCVFPU SOURCE GF238795 18/02/05 21:16:22 9726
  2. SUBROUTINE XCVFPU(FN,GR,PG,XYZ,HR,PGSQ,RPG,
  3. & NES,IDIM,NP,NPG,IAXI,AJ,NBEL,NUM,XCOOR,
  4. & NPTI,IPADI,UN,NPTS,IPADS,UET,F,AMU,IKM,RO,IKR,
  5. & YP,DS,TK,TE,NBINC)
  6. IMPLICIT INTEGER(I-N)
  7. IMPLICIT REAL*8 (A-H,O-Z)
  8.  
  9. C************************************************************************
  10. C
  11. C SYNTAXE :
  12. C
  13. C FPU (RO,UN,MU,UET,YP <,VPAROI> ) VPAROI non fait
  14. C
  15. C
  16. C
  17. C RO cst ou au sommet ROS(NPTS)
  18. C ANU VISCOSITE CINEMATIQUE
  19. C UET U*
  20. C YP DISTANCE A LA PAROI
  21. C VPAROI VITESSE DE LA PAROI (PAR DEFAUT 0.D0)
  22. C
  23. C IDIM : dime espace NES : dime espace elt
  24. C NP : nb pt par elt, NPG : nb pt d'intégration
  25. C NPTS : nb pt de la frontière NPTI : nb pt total
  26. C NBEL : nb d'éléments
  27. C NUM(NP,NBEL) connectivités de l'élément (par type d'élément)
  28. C IPADS: Indirections maillage frontière
  29. C IPADI: Indirections maillage total
  30. C
  31. C
  32. C VS(I,3) tableau local ; vitesse aux sommets de l'élément<- UN(NPTS)
  33. C UETS(I) tableau local ; U* aux sommets de l'élément <- UET(NPTS)
  34. C UXL,UYL,UZL ux,uy,uz aux points de gauss
  35. C
  36. C DS(NP,NPTS) valeurs de U* intégrés aux noeuds : Somme_S Na U*a dS
  37. C TK(NP,NPTS) valeurs de Kp intégrés aux noeuds :
  38. C TE(NP,NPTS) valeurs de Ep intégrés aux noeuds :
  39. C sert à projeter les champs des points de gauss au sommet en divisant
  40. C ensuite par la matrice masse diagonale (Fait dans yfpu)
  41. C
  42. C
  43. C
  44. C
  45. C
  46. C************************************************************************
  47. -INC CCREEL
  48. DIMENSION FN(NP,NPG),GR(IDIM,NP,NPG),PG(NPG),AJ(IDIM,IDIM,NPG)
  49. DIMENSION XYZ(IDIM,NP),HR(NES,NP,NPG),PGSQ(NPG),RPG(NPG)
  50. DIMENSION XCOOR(*),DS(NPTS)
  51. DIMENSION NUM(NP,NBEL)
  52.  
  53. DIMENSION UN(NPTI,IDIM),RO(*),AMU(*)
  54. DIMENSION UET(NPTS),F(NPTS,IDIM),TK(NPTS),TE(NPTS)
  55. DIMENSION IPADI(*),IPADS(*)
  56.  
  57.  
  58. C CONSTANTES PHYSIQUES
  59. C
  60. DATA CNU,AKER /0.09D0,0.41D0/
  61. DIMENSION VS(16,3),UETS(16),ROS(16),AMUS(16)
  62. DATA NITMAX/100/,W/0.7D0/,EPS/1.D-4/
  63. REAL*8 UZTL
  64.  
  65. UZTL=0.D0
  66. SQCNU=SQRT(CNU)
  67. DEUPI=1.D0
  68. IF(IAXI.NE.0)DEUPI=2.D0*XPI
  69. c?? CALL INITD(DS,NPTS,0.D0)
  70. IERC=0
  71. ERRMAX=0.D0
  72. NBP=0
  73. NBIM=0
  74. DO 2 K=1,NBEL
  75. DO 20 I=1,NP
  76. J=NUM(I,K)
  77. JI=IPADI(NUM(I,K))
  78. JR=(1-IKR)*(JI-1)+1
  79. JM=(1-IKM)*(JI-1)+1
  80. JS=IPADS(NUM(I,K))
  81.  
  82. DO 10 N=1,IDIM
  83. XYZ(N,I) = XCOOR((J-1)*(IDIM+1)+N)
  84. VS(I,N)=UN(JI,N)
  85. 10 CONTINUE
  86. UETS(I)=UET(JS)
  87. ROS(I) = RO(JR)
  88. AMUS(I)= AMU(JM)
  89.  
  90. 20 CONTINUE
  91.  
  92. CALL CALJBR(FN,GR,PG,XYZ,HR,PGSQ,RPG,
  93. & NES,IDIM,NP,NPG,IAXI,AIRE,AJ,SGN)
  94.  
  95. DO 60 J=1,NP
  96. JS=IPADS(NUM(J,K))
  97. FX=0.D0
  98. FY=0.D0
  99. FZ=0.D0
  100. FU=0.D0
  101. FK=0.D0
  102. FE=0.D0
  103.  
  104. DO 50 L=1,NPG
  105.  
  106. UXL=0.D0
  107. UYL=0.D0
  108. UZL=0.D0
  109. UETL=0.D0
  110. AMUL=0.D0
  111. ROL =0.D0
  112.  
  113. DO 5 I=1,NP
  114. UXL=UXL+FN(I,L)*VS(I,1)
  115. UYL=UYL+FN(I,L)*VS(I,2)
  116. IF(IDIM.EQ.3)UZL=UZL+FN(I,L)*VS(I,3)
  117. UETL=UETL+FN(I,L)*UETS(I)
  118. AMUL=AMUL+FN(I,L)*AMUS(I)
  119. ROL =ROL +FN(I,L)*ROS(I)
  120. 5 CONTINUE
  121. UNL=UXL*AJ(1,IDIM,L)+UYL*AJ(2,IDIM,L)
  122. IF(IDIM.EQ.3)UNL=UNL+UZL*AJ(3,IDIM,L)
  123. UXNL=UNL*AJ(1,IDIM,L)
  124. UYNL=UNL*AJ(2,IDIM,L)
  125. UXTL=UXL-UXNL
  126. UYTL=UYL-UYNL
  127. * Y AURAIT IL UNE ERREUR UYX ET UYTL ET NON QUE DES X GBM
  128. UTL=(UXTL*UXTL+UYTL*UYTL)
  129.  
  130. IF(IDIM.EQ.3)THEN
  131. UZNL=UNL*AJ(3,IDIM,L)
  132. UZTL=UZL-UZNL
  133. UTL=UTL+(UZTL*UZTL)
  134. ENDIF
  135. UTL=UTL**0.5D0+1.D-30
  136. TXL=UXTL/UTL
  137. TYL=UYTL/UTL
  138. TZL=UZTL/UTL
  139.  
  140. UTM=ABS(UTL)
  141. ANUL = AMUL/ROL
  142.  
  143. C
  144. C CALCUL DE U ETOILE A PARTIR UTM
  145. C
  146. C --------------------CAROLI---I--------------------------
  147. UETLN=UETL
  148. DO 57 MI=1,NITMAX
  149. YPLUS=YP*UETLN/ANUL
  150. YPLUS=ABS(YPLUS)
  151. c Reichardt
  152. UPLUS=1.D0/AKER*Log(1.+AKER*yplus)+
  153. & 7.8D0*(1.D0-exp(-yplus/11.D0)-(yplus/11.D0)*exp(-yplus/3.D0))
  154.  
  155.  
  156. C ---- RELAX SU UET ------------------------------------
  157. UETI=ABS(UTM/(UPLUS+1.D-5))
  158. UETLNT=W*UETLN+(1.D0-W)*UETI
  159. ERR=ABS(UETLNT-UETLN)/MAX(UETLN,UETLNT)
  160. UETLN0=UETLN
  161. UETLN=UETLNT
  162. IF(ERR.LT.EPS)GO TO 58
  163.  
  164. 57 CONTINUE
  165.  
  166. IF(ERR.GT.ERRMAX)THEN
  167. C IF(L.EQ.1.AND.J.EQ.1.AND.K.LE.5)write(6,*)'UETLN',UETLN,UETLN0
  168. ERRMAX=ERR
  169. NBP=NBP+1
  170. IERC=1
  171. ENDIF
  172.  
  173.  
  174. 58 CONTINUE
  175. IF(NBIM.LT.MI)NBIM=MI
  176. C --------------------CAROLI----F------------------
  177.  
  178. C************************************************************************
  179. C CALCUL Q D M
  180. C************************************************************************
  181.  
  182. C CALCUL DU COEFFICIENT AK A PARTIR DE UTM
  183.  
  184. UETLN=UETLN+(ANUL/YP)
  185. AK=0.D0
  186. IF(UTM.GT.1.D-10)AK=UETLN*UETLN*FN(J,L)*PGSQ(L)*DEUPI*RPG(L)
  187. FX=FX-AK*TXL*ROL
  188. FY=FY-AK*TYL*ROL
  189. IF(IDIM.EQ.3)FZ=FZ-AK*TZL*ROL
  190. FU=FU+UETLN*FN(J,L)*PGSQ(L)*DEUPI*RPG(L)
  191. YPLUS2=-(YPLUS+0.01D0)*(YPLUS+0.01D0)*0.0017D0
  192.  
  193. IF(YPLUS.LE.0.1)THEN
  194. Ret= 300.
  195. FKP=(0.057+0.05*(sqrt(Ret/1600.)))*(yplus*yplus)
  196. & *exp(-yplus/7.3)
  197. FKP=FKP+4.6*(1.-exp(-yplus/20.))/(4.*yplus/Ret+1.)
  198. & *(1.-exp(-((yplus/3.)**2.)))
  199. FKE = 1./AKER/((YPLUS**4.+15.**4.)**0.25)
  200. FK=FK+((UETLN*UETLN/SQCNU*FKP)*FN(J,L)*PGSQ(L)*DEUPI*RPG(L))
  201. FE=FE+((ROL*UETLN*UETLN*UETLN*UETLN/ANUL*FKE)
  202. & *FN(J,L)*PGSQ(L)*DEUPI*RPG(L))
  203.  
  204. ELSE
  205.  
  206. FK=FK+((UETLN*UETLN/SQCNU)*FN(J,L)*PGSQ(L)*DEUPI*RPG(L))
  207. FE=FE+((UETLN*UETLN*UETLN/(AKER*YP*(1.D0-EXP(YPLUS2))))
  208. C FE=FE+((UETLN*UETLN*UETLN/(AKER*YP ))
  209. & *FN(J,L)*PGSQ(L)*DEUPI*RPG(L))
  210.  
  211. ENDIF
  212. 50 CONTINUE
  213.  
  214. F(JS,1)=F(JS,1)+FX
  215. F(JS,2)=F(JS,2)+FY
  216. IF(IDIM.EQ.3)F(JS,3)=F(JS,3)+FZ
  217. DS(JS)=DS(JS)+FU
  218.  
  219. IF(NBINC.EQ.3)THEN
  220. C
  221. C CALCUL DE KP ET DE EPSILONP
  222. C
  223. TK(JS)=TK(JS)+FK
  224. TE(JS)=TE(JS)+FE
  225. ENDIF
  226.  
  227. 60 CONTINUE
  228.  
  229. 2 CONTINUE
  230. IF(IERC.NE.0)
  231. & write(6,*)' NON CONVERGENCE EN ',NITMAX,'ITERATIONS',ERRMAX,NBP
  232.  
  233. write(6,*)' FPU : Nb max d iterations ',nbim
  234.  
  235. RETURN
  236. 1002 FORMAT(10(1X,1PE11.4))
  237. 1001 FORMAT(20(1X,I5))
  238. END
  239.  
  240.  
  241.  
  242.  
  243.  
  244.  
  245.  
  246.  
  247.  

© Cast3M 2003 - Tous droits réservés.
Mentions légales