1 : C CL281T SOURCE CHAT 05/01/12 22:04:15 5004
2 : SUBROUTINE CL281T(NSP,MELEMF,MELEMC,MELECB,MELEFC,INORM,ICHPVO,
3 : & ICHPSU,LRECP,LRECV,ICHLIM,ICHRES,ICHRLI)
4 : C************************************************************************
5 : C
6 : C PROJET : CASTEM 2000
7 : C
8 : C NOM : CL281T
9 : C
10 : C DESCRIPTION : Subroutine appellée par CLIM22
11 : C calcul de RESIDU et CLIM at the board
12 : C OPTION: 'INSS' 2D with turbulence (k-\eps)
13 : C "supersonic inlet"
14 : C
15 : C LANGAGE : FORTRAN 77 + ESOPE 2000 (avec estensions CISI)
16 : C
17 : C AUTEUR : S.Kudriakov, DEN/DM2S/SFME/LTMF
18 : C
19 : C************************************************************************
20 : C ENTREES : NSP (type ENTIER) : full number of species
21 : C ('ESPEULE' + 1) ;
22 : C MELEMF (type MELEME) : maillage des faces des
23 : C éléments.
24 : C MELEMC (type MELEME) : maillage des centres des
25 : C éléments.
26 : C MELECB (type MELEME) : maillage des centres des éléments
27 : C de la frontière
28 : C MELEFC (type MELEME) : connectivités face-(centre
29 : C gauche, centre droit).
30 : C INORM (type MCHPOI) : normales at the faces
31 : C ICHPVO (type MCHPOI) : volumes of the cells
32 : C ICHPSU (type MCHPOI) : surfaces of the cell-interfaces
33 : C LRECP (type MLREEL) : list of CP's of the species
34 : C LRECV (type MLREEL) : list of CV's of the species
35 : C ICHLIM (type MCHPOI) : boundary conditions at the centers
36 : C of the boundary
37 : C-----------------------------------------------------
38 : C SORTIES: ICHRES (type MCHPOI) : the contribution to the residuum
39 : C due to the boundary conditions
40 : C given at the centres of the cells
41 : C next to the boundary
42 : C ICHRLI (type MCHPOI) : the values at the boundary faces
43 : C found by the procedure.
44 : C
45 : C APPELES (Calcul) :
46 : C
47 : C************************************************************************
48 : C
49 : C HISTORIQUE (Anomalies et modifications éventuelles)
50 : C
51 : C HISTORIQUE :
52 : C
53 : C************************************************************************
54 : C
55 : IMPLICIT INTEGER(I-N)
56 : -INC CCOPTIO
57 : -INC SMLMOTS
58 : -INC SMELEME
59 : POINTEUR MELEFC.MELEME, MELEMF.MELEME,MELEMC.MELEME,MELECB.MELEME
60 : -INC SMLENTI
61 : POINTEUR MLEMC.MLENTI, MLEMCB.MLENTI,MLEMF.MLENTI
62 : -INC SMCHPOI
63 : POINTEUR MPNORM.MPOVAL, MPVOL.MPOVAL, MPSURF.MPOVAL,
64 : & MPLIM.MPOVAL, MPRES.MPOVAL, MPRLI.MPOVAL
65 : C----------------------------------------
66 : C**** Variables de COOPTIO
67 : C----------------------------------------
68 : C INTEGER IPLLB, IERPER, IERMAX, IERR, INTERR
69 : C & ,IOTER, IOLEC, IOIMP, IOCAR, IOACQ
70 : C & ,IOPER, IOSGB, IOGRA, IOSAU, IORES
71 : C & ,IECHO, IIMPI, IOSPI
72 : C & ,IDIM, IFICLE, IPREFI
73 : C & ,MCOORD
74 : C & ,IFOMOD, NIFOUR, IFOUR, NSDPGE, IONIVE
75 : C & ,NGMAXY, IZROSF, ISOTYP, IOSCR,LTEXLU
76 : C & ,NORINC,NORVAL,NORIND,NORVAD
77 : C & ,NUCROU, IPSAUV
78 : C
79 : INTEGER INORM,ICHPVO,ICHPSU
80 : & ,ICHLIM,ICHRES,ICHRLI,ICEL,NFAC,IFAC
81 : & ,NGF,NGC,NLF,NLC,NLCB,LRECP,LRECV,I,NSP
82 : REAL*8 VOLU,SURF,CNX,CNY,CNZ,CTX,CTY,CTZ
83 : & ,CT2X,CT2Y,CT2Z,RF,PF,UXF,UYF,UZF,TOP,BOT
84 : & ,UNF,UTF,UT2F,GAMF
85 : & ,UT,UT2,UN,RHO,P,UX,UY,UZ
86 : & ,KAF,EPSF
87 : CHARACTER*(8) TYPE
88 : C------------------------------------------------------------
89 : -INC SMLREEL
90 : POINTEUR MLRECP.MLREEL, MLRECV.MLREEL
91 : C-------------------------------------------------------
92 : C********** Les CP's and CV's ***********************
93 : C-------------------------------------------------------
94 : SEGMENT GCONST
95 : REAL*8 GC(NSP)
96 : ENDSEGMENT
97 : POINTEUR CP.GCONST, CV.GCONST
98 : C-------------------------------------------------------------
99 : C******* Les fractionines massiques **************************
100 : C-------------------------------------------------------------
101 : SEGMENT FRAMAS
102 : REAL*8 YET(NSP)
103 : ENDSEGMENT
104 : POINTEUR YF.FRAMAS
105 : C------------------------------------------------------
106 : C**** KRIPAD pour la correspondance global/local
107 : C------------------------------------------------------
107 : CALL KRIPAD(MELEMC,MLEMC)
107 : CALL KRIPAD(MELECB,MLEMCB)
107 : CALL KRIPAD(MELEMF,MLEMF)
108 : C------------------------------------------------------
109 : C**** CHPOINTs de la table DOMAINE
110 : C------------------------------------------------------
110 : CALL LICHT(INORM,MPNORM,TYPE,ICEL)
110 : CALL LICHT(ICHPVO,MPVOL,TYPE,ICEL)
110 : CALL LICHT(ICHPSU,MPSURF,TYPE,ICEL)
111 : C------------------------------------------------------
112 : C**** CHPOINTs des variables
113 : C------------------------------------------------------
113 : CALL LICHT(ICHLIM,MPLIM,TYPE,ICEL)
113 : CALL LICHT(ICHRES,MPRES,TYPE,ICEL)
113 : CALL LICHT(ICHRLI,MPRLI,TYPE,ICEL)
114 : C---------------------------------------------------------
115 : C**** Boucle sur le face pour le calcul des invariants de
116 : C Riemann et du flux
117 : C---------------------------------------------------------
118 : SEGACT MELEFC
119 : NFAC=MELEFC.NUM(/2)
120 : UZF=0.0D0
121 : CNZ=0.0D0
122 : CTZ=0.0D0
123 : CT2X=0.0D0
124 : CT2Y=0.0D0
125 : CT2Z=0.0D0
126 : DO 1 IFAC=1,NFAC,1
127 : NGF=MELEFC.NUM(1,IFAC)
128 : NGC=MELEFC.NUM(2,IFAC)
129 : NLF=MLEMF.LECT(NGF)
130 : NLC=MLEMC.LECT(NGC)
131 : NLCB=MLEMCB.LECT(NGF)
132 : VOLU=MPVOL.VPOCHA(NLC,1)
133 : SURF=MPSURF.VPOCHA(NLF,1)
134 : C----------------------------------------------
135 : C In CASTEM les normales sont sortantes
136 : C----------------------------------------------
137 : CNX=-1*MPNORM.VPOCHA(NLF,1)
138 : CNY=-1*MPNORM.VPOCHA(NLF,2)
139 : IF(IDIM.EQ.2)THEN
140 : CTX=-1.0D0*CNY
141 : CTY=CNX
142 : ELSE
143 : CNZ=-1*MPNORM.VPOCHA(NLF,3)
144 : CTX=-1*MPNORM.VPOCHA(NLF,4)
145 : CTY=-1*MPNORM.VPOCHA(NLF,5)
146 : CTZ=-1*MPNORM.VPOCHA(NLF,6)
147 : CT2X=-1*MPNORM.VPOCHA(NLF,7)
148 : CT2Y=-1*MPNORM.VPOCHA(NLF,8)
149 : CT2Z=-1*MPNORM.VPOCHA(NLF,9)
150 : ENDIF
151 : C----------------------------------------
152 : SEGINI CP, CV
153 : MLRECP = LRECP
154 : MLRECV = LRECV
155 : SEGACT MLRECP, MLRECV
156 : DO 10 I=1,(NSP-1)
157 : CP.GC(I)=MLRECP.PROG(I)
158 : CV.GC(I)=MLRECV.PROG(I)
159 : 10 CONTINUE
160 : CP.GC(NSP)=MLRECP.PROG(NSP)
161 : CV.GC(NSP)=MLRECV.PROG(NSP)
162 : C----------------------------
163 : C Variables à la face
164 : C----------------------------
165 : RF=MPLIM.VPOCHA(NLCB,1)
166 : UXF=MPLIM.VPOCHA(NLCB,2)
167 : UYF=MPLIM.VPOCHA(NLCB,3)
168 : IF(IDIM.EQ.3)UZF=MPLIM.VPOCHA(NLCB,4)
169 : PF=MPLIM.VPOCHA(NLCB,IDIM+2)
170 : SEGINI YF
171 : DO 101 I=1,(NSP-1)
172 : YF.YET(I)=MPLIM.VPOCHA(NLCB,IDIM+2+I)
173 : 101 CONTINUE
174 : KAF=MPLIM.VPOCHA(NLCB,IDIM+NSP+2)
175 : EPSF=MPLIM.VPOCHA(NLCB,IDIM+NSP+3)
176 : c-------------------------------------------------------------
177 : c Computing GAMMA at the face-center
178 : c-------------------------------------------------------------
179 : top=0.0D0
180 : bot=0.0D0
181 : do 103 i=1,(nsp-1)
182 : top=top+yf.yet(i)*(cp.gc(i)-cp.gc(nsp))
183 : bot=bot+yf.yet(i)*(cv.gc(i)-cv.gc(nsp))
184 : 103 continue
185 : top=cp.gc(nsp)+top
186 : bot=cv.gc(nsp)+bot
187 : GAMF=top/bot
188 : C---------------------------------------
189 : C******* On calcule UN, UT, UT2, ASON, S
190 : C---------------------------------------
191 : UNF=(UXF*CNX)+(UYF*CNY)+(UZF*CNZ)
192 : UTF=(UXF*CTX)+(UYF*CTY)+(UZF*CTZ)
193 : UT2F=(UXF*CT2X)+(UYF*CT2Y)+(UZF*CT2Z)
194 : C-----------------------------------------------
195 : C******* Densite, vitesse, pression sur le bord
196 : C-----------------------------------------------
197 : UN = UNF
198 : UT=UTF
199 : UT2=UT2F
200 : RHO = RF
201 : P = PF
202 : UX=(UN*CNX)+(UT*CTX)+(UT2*CT2X)
203 : UY=(UN*CNY)+(UT*CTY)+(UT2*CT2Y)
204 : UZ=(UN*CNZ)+(UT*CTZ)+(UT2*CT2Z)
205 : C----------------------------------------
206 : MPRLI.VPOCHA(NLCB,1)=RHO
207 : MPRLI.VPOCHA(NLCB,2)=UX
208 : MPRLI.VPOCHA(NLCB,3)=UY
209 : IF(IDIM.EQ.3) MPRLI.VPOCHA(NLCB,4)=UZ
210 : MPRLI.VPOCHA(NLCB,IDIM+2)=P
211 : do 104 i=1,(nsp-1)
212 : MPRLI.VPOCHA(NLCB,IDIM+2+I)=YF.YET(I)
213 : 104 continue
214 : MPRLI.VPOCHA(NLCB,IDIM+NSP+2)=KAF
215 : MPRLI.VPOCHA(NLCB,IDIM+NSP+3)=EPSF
216 : C-------------------------------------------------------
217 : C******* Residuum (son SPG a le meme ordre que MELEFC)
218 : C-------------------------------------------------------
219 : MPRES.VPOCHA(IFAC,1)=RHO*UN*SURF/VOLU
220 : MPRES.VPOCHA(IFAC,2)=(RHO*UN*UX+(P*CNX))*SURF/VOLU
221 : MPRES.VPOCHA(IFAC,3)=(RHO*UN*UY+(P*CNY))*SURF/VOLU
222 : IF(IDIM.EQ.3)
223 : & MPRES.VPOCHA(IFAC,4)=(RHO*UN*UZ+(P*CNZ))*SURF/VOLU
224 : MPRES.VPOCHA(IFAC,IDIM+2)=((UN*GAMF*P/(GAMF-1.0D0)) +
225 : & (0.5D0*RHO*UN*(UN*UN+UT*UT+UT2*UT2)))*SURF/VOLU
226 : do 105 i=1,(nsp-1)
227 : MPRES.VPOCHA(IFAC,IDIM+2+I)=RHO*YF.YET(I)*UN*SURF/VOLU
228 : 105 continue
229 : MPRES.VPOCHA(IFAC,IDIM+NSP+2)=RHO*KAF*UN*SURF/VOLU
230 : MPRES.VPOCHA(IFAC,IDIM+NSP+3)=RHO*EPSF*UN*SURF/VOLU
231 : 1 CONTINUE
232 : C
233 : SEGDES MELEFC
234 : C
235 : SEGDES MLEMC
236 : SEGDES MLEMCB
237 : SEGDES MLEMF
238 : C
239 : SEGDES MPNORM
240 : SEGDES MPVOL
241 : SEGDES MPSURF
242 : SEGDES MPLIM
243 : SEGDES MPRES
244 : SEGDES MPRLI
245 : SEGDES MLRECP
246 : SEGDES MLRECV
247 : SEGDES YF
248 : C
249 : 9999 CONTINUE
250 : RETURN
251 : END
252 :
253 :
254 :
255 :
256 :
257 :
258 :
259 :
260 :
261 :
262 :
© Cast3M 2003 - All rights reserved.
Disclaimer