1 : C CL221T SOURCE CHAT 05/01/12 22:04:07 5004
2 : SUBROUTINE CL221T(NSP,MELEMF,MELEMC,MELECB,MELEFC,INORM,ICHPVO,
3 : & ICHPSU,LRECP,LRECV,IROC,IVITC,IPC,IYN,
4 : & IKAN,IEPSN,ICHLIM,ICHRES,ICHRLI)
5 : C************************************************************************
6 : C
7 : C PROJET : CASTEM 2000
8 : C
9 : C NOM : CL221T
10 : C
11 : C DESCRIPTION : Subroutine appellée par CLIM22
12 : C calcul de RESIDU et CLIM at the board
13 : C OPTION: 'INRI' 2D with turbulence (k-\eps)
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 IROC (type MCHPOI) : densityes at the centres of the domain
36 : C IVITC (type MCHPOI) : velocities at the centres of the domain
37 : C IPC (type MCHPOI) : pressure at the centres of the domain
38 : C IYN (type MCHPOI) : mass fraction of the species at the
39 : C centres of the domain
40 : C IKAN (type MCHPOI) : turbulent kinetic energy, k,
41 : C at the centres of the domain
42 : C IEPSN (type MCHPOI) : rate of dissipated turb. energy
43 : C at the centres of the domain
44 : C ICHLIM (type MCHPOI) : boundary conditions at the centers
45 : C of the boundary
46 : C-----------------------------------------------------
47 : C SORTIES: ICHRES (type MCHPOI) : the contribution to the residuum
48 : C due to the boundary conditions
49 : C given at the centres of the cells
50 : C next to the boundary
51 : C ICHRLI (type MCHPOI) : the values at the boundary faces
52 : C found by the procedure.
53 : C
54 : C APPELES (Calcul) :
55 : C
56 : C************************************************************************
57 : C
58 : C HISTORIQUE (Anomalies et modifications éventuelles)
59 : C
60 : C HISTORIQUE :
61 : C
62 : C************************************************************************
63 : C
64 : IMPLICIT INTEGER(I-N)
65 : -INC CCOPTIO
66 : -INC SMLMOTS
67 : -INC SMELEME
68 : POINTEUR MELEFC.MELEME, MELEMF.MELEME,MELEMC.MELEME,MELECB.MELEME
69 : -INC SMLENTI
70 : POINTEUR MLEMC.MLENTI, MLEMCB.MLENTI,MLEMF.MLENTI
71 : -INC SMCHPOI
72 : POINTEUR MPNORM.MPOVAL, MPVOL.MPOVAL, MPSURF.MPOVAL, MPRC.MPOVAL,
73 : & MPVC.MPOVAL, MPPC.MPOVAL, MPYN.MPOVAL, MPLIM.MPOVAL,
74 : & MPRES.MPOVAL, MPRLI.MPOVAL, MPKAC.MPOVAL,MPEPSC.MPOVAL
75 : C----------------------------------------
76 : C**** Variables de COOPTIO
77 : C----------------------------------------
78 : C INTEGER IPLLB, IERPER, IERMAX, IERR, INTERR
79 : C & ,IOTER, IOLEC, IOIMP, IOCAR, IOACQ
80 : C & ,IOPER, IOSGB, IOGRA, IOSAU, IORES
81 : C & ,IECHO, IIMPI, IOSPI
82 : C & ,IDIM, IFICLE, IPREFI
83 : C & ,MCOORD
84 : C & ,IFOMOD, NIFOUR, IFOUR, NSDPGE, IONIVE
85 : C & ,NGMAXY, IZROSF, ISOTYP, IOSCR,LTEXLU
86 : C & ,NORINC,NORVAL,NORIND,NORVAD
87 : C & ,NUCROU, IPSAUV
88 : C
89 : INTEGER INORM,ICHPVO,ICHPSU, IROC,IVITC,IPC
90 : & ,IYN,ICHLIM,ICHRES,ICHRLI,ICEL,NFAC,IFAC,IKAN,IEPSN
91 : & ,NGF,NGC,NLF,NLC,NLCB,LRECP,LRECV,I,NSP
92 : REAL*8 VOLU,SURF,RC,PC,UXC,UYC,UZC,GAMC,CNX,CNY,CNZ,CTX,CTY,CTZ
93 : & ,CT2X,CT2Y,CT2Z,RF,PF,UXF,UYF,UZF,TOP,BOT
94 : & ,UNC,UNF,UTF,UT2F,SF,ASONC,ASONF,GAMF
95 : & ,G1,G3,ASON2,S,UT,UT2,UN,RHO,P,UX,UY,UZ
96 : & ,KAC,EPSC,KAF,EPSF
97 : CHARACTER*(8) TYPE
98 : C------------------------------------------------------------
99 : -INC SMLREEL
100 : POINTEUR MLRECP.MLREEL, MLRECV.MLREEL
101 : C-------------------------------------------------------
102 : C********** Les CP's and CV's ***********************
103 : C-------------------------------------------------------
104 : SEGMENT GCONST
105 : REAL*8 GC(NSP)
106 : ENDSEGMENT
107 : POINTEUR CP.GCONST, CV.GCONST
108 : C-------------------------------------------------------------
109 : C******* Les fractionines massiques **************************
110 : C-------------------------------------------------------------
111 : SEGMENT FRAMAS
112 : REAL*8 YET(NSP)
113 : ENDSEGMENT
114 : POINTEUR YC.FRAMAS, YF.FRAMAS
115 : C------------------------------------------------------
116 : C**** KRIPAD pour la correspondance global/local
117 : C------------------------------------------------------
117 : CALL KRIPAD(MELEMC,MLEMC)
117 : CALL KRIPAD(MELECB,MLEMCB)
117 : CALL KRIPAD(MELEMF,MLEMF)
118 : C------------------------------------------------------
119 : C**** CHPOINTs de la table DOMAINE
120 : C------------------------------------------------------
120 : CALL LICHT(INORM,MPNORM,TYPE,ICEL)
120 : CALL LICHT(ICHPVO,MPVOL,TYPE,ICEL)
120 : CALL LICHT(ICHPSU,MPSURF,TYPE,ICEL)
121 : C------------------------------------------------------
122 : C**** CHPOINTs des variables
123 : C------------------------------------------------------
123 : CALL LICHT(IROC,MPRC,TYPE,ICEL)
123 : CALL LICHT(IVITC,MPVC,TYPE,ICEL)
123 : CALL LICHT(IPC,MPPC,TYPE,ICEL)
123 : CALL LICHT(IYN,MPYN,TYPE,ICEL)
123 : CALL LICHT(IKAN,MPKAC,TYPE,ICEL)
123 : CALL LICHT(IEPSN,MPEPSC,TYPE,ICEL)
123 : CALL LICHT(ICHLIM,MPLIM,TYPE,ICEL)
123 : CALL LICHT(ICHRES,MPRES,TYPE,ICEL)
123 : CALL LICHT(ICHRLI,MPRLI,TYPE,ICEL)
124 : C---------------------------------------------------------
125 : C**** Boucle sur le face pour le calcul des invariants de
126 : C Riemann et du flux
127 : C---------------------------------------------------------
128 : SEGACT MELEFC
129 : NFAC=MELEFC.NUM(/2)
130 : UZC=0.0D0
131 : UZF=0.0D0
132 : CNZ=0.0D0
133 : CTZ=0.0D0
134 : CT2X=0.0D0
135 : CT2Y=0.0D0
136 : CT2Z=0.0D0
137 : DO 1 IFAC=1,NFAC,1
138 : NGF=MELEFC.NUM(1,IFAC)
139 : NGC=MELEFC.NUM(2,IFAC)
140 : NLF=MLEMF.LECT(NGF)
141 : NLC=MLEMC.LECT(NGC)
142 : NLCB=MLEMCB.LECT(NGF)
143 : VOLU=MPVOL.VPOCHA(NLC,1)
144 : SURF=MPSURF.VPOCHA(NLF,1)
145 : C----------------------------------------------
146 : C In CASTEM les normales sont sortantes
147 : C----------------------------------------------
148 : CNX=-1*MPNORM.VPOCHA(NLF,1)
149 : CNY=-1*MPNORM.VPOCHA(NLF,2)
150 : IF(IDIM.EQ.2)THEN
151 : CTX=-1.0D0*CNY
152 : CTY=CNX
153 : ELSE
154 : CNZ=-1*MPNORM.VPOCHA(NLF,3)
155 : CTX=-1*MPNORM.VPOCHA(NLF,4)
156 : CTY=-1*MPNORM.VPOCHA(NLF,5)
157 : CTZ=-1*MPNORM.VPOCHA(NLF,6)
158 : CT2X=-1*MPNORM.VPOCHA(NLF,7)
159 : CT2Y=-1*MPNORM.VPOCHA(NLF,8)
160 : CT2Z=-1*MPNORM.VPOCHA(NLF,9)
161 : ENDIF
162 : C----------------------------------------
163 : SEGINI CP, CV
164 : MLRECP = LRECP
165 : MLRECV = LRECV
166 : SEGACT MLRECP, MLRECV
167 : DO 10 I=1,(NSP-1)
168 : CP.GC(I)=MLRECP.PROG(I)
169 : CV.GC(I)=MLRECV.PROG(I)
170 : 10 CONTINUE
171 : CP.GC(NSP)=MLRECP.PROG(NSP)
172 : CV.GC(NSP)=MLRECV.PROG(NSP)
173 : C----------------------------
174 : C Variables au centre
175 : C----------------------------
176 : RC=MPRC.VPOCHA(NLC,1)
177 : PC=MPPC.VPOCHA(NLC,1)
178 : UXC=MPVC.VPOCHA(NLC,1)
179 : UYC=MPVC.VPOCHA(NLC,2)
180 : IF(IDIM.EQ.3)UZC=MPVC.VPOCHA(NLC,3)
181 : SEGINI YC
182 : SEGACT MPYN
183 : DO 100 I=1,(NSP-1)
184 : YC.YET(I)=MPYN.VPOCHA(NLC,I)
185 : 100 CONTINUE
186 : KAC=MPKAC.VPOCHA(NLC,1)
187 : EPSC=MPEPSC.VPOCHA(NLC,1)
188 : C----------------------------
189 : C Variables à la face
190 : C----------------------------
191 : RF=MPLIM.VPOCHA(NLCB,1)
192 : UXF=MPLIM.VPOCHA(NLCB,2)
193 : UYF=MPLIM.VPOCHA(NLCB,3)
194 : IF(IDIM.EQ.3)UZF=MPLIM.VPOCHA(NLCB,4)
195 : PF=MPLIM.VPOCHA(NLCB,IDIM+2)
196 : SEGINI YF
197 : DO 101 I=1,(NSP-1)
198 : YF.YET(I)=MPLIM.VPOCHA(NLCB,IDIM+2+I)
199 : 101 CONTINUE
200 : KAF=MPLIM.VPOCHA(NLCB,IDIM+NSP+2)
201 : EPSF=MPLIM.VPOCHA(NLCB,IDIM+NSP+3)
202 : c-------------------------------------------------------------
203 : c Computing GAMMA at the cell-center
204 : c-------------------------------------------------------------
205 : top=0.0D0
206 : bot=0.0D0
207 : do 102 i=1,(nsp-1)
208 : top=top+yc.yet(i)*(cp.gc(i)-cp.gc(nsp))
209 : bot=bot+yc.yet(i)*(cv.gc(i)-cv.gc(nsp))
210 : 102 continue
211 : top=cp.gc(nsp)+top
212 : bot=cv.gc(nsp)+bot
213 : GAMC=top/bot
214 : c-------------------------------------------------------------
215 : c Computing GAMMA at the face-center
216 : c-------------------------------------------------------------
217 : top=0.0D0
218 : bot=0.0D0
219 : do 103 i=1,(nsp-1)
220 : top=top+yf.yet(i)*(cp.gc(i)-cp.gc(nsp))
221 : bot=bot+yf.yet(i)*(cv.gc(i)-cv.gc(nsp))
222 : 103 continue
223 : top=cp.gc(nsp)+top
224 : bot=cv.gc(nsp)+bot
225 : GAMF=top/bot
226 : C---------------------------------------
227 : C******* On calcule UN, UT, UT2, ASON, S
228 : C---------------------------------------
229 : UNC=(UXC*CNX)+(UYC*CNY)+(UZC*CNZ)
230 : UNF=(UXF*CNX)+(UYF*CNY)+(UZF*CNZ)
231 : UTF=(UXF*CTX)+(UYF*CTY)+(UZF*CTZ)
232 : UT2F=(UXF*CT2X)+(UYF*CT2Y)+(UZF*CT2Z)
233 : C----------------------------------
234 : ASONC=(GAMC*PC/RC)**0.5D0
235 : ASONF=(GAMF*PF/RF)**0.5D0
236 : C
237 : SF=PF/(RF**GAMF)
238 : C-----------------------------------------------
239 : C******* Densite, vitesse, pression sur le bord
240 : C-----------------------------------------------
241 : G1=UNC-(2.0D0*ASONC)/(GAMC-1.0D0)
242 : G3=UNF+(2.0D0*ASONF)/(GAMF-1.0D0)
243 : UN=0.5D0*(G1+G3)
244 : ASON2=(0.5D0*(G3-G1))
245 : ASON2=ASON2*(GAMF-1.0D0)/2.0D0
246 : ASON2=ASON2*ASON2
247 : S=SF
248 : UT=UTF
249 : UT2=UT2F
250 : RHO=ASON2/(GAMF*S)
251 : RHO=RHO**(1.0D0/(GAMF-1.0D0))
252 : P=RHO*ASON2/GAMF
253 : UX=(UN*CNX)+(UT*CTX)+(UT2*CT2X)
254 : UY=(UN*CNY)+(UT*CTY)+(UT2*CT2Y)
255 : UZ=(UN*CNZ)+(UT*CTZ)+(UT2*CT2Z)
256 : C----------------------------------------
257 : MPRLI.VPOCHA(NLCB,1)=RHO
258 : MPRLI.VPOCHA(NLCB,2)=UX
259 : MPRLI.VPOCHA(NLCB,3)=UY
260 : IF(IDIM.EQ.3) MPRLI.VPOCHA(NLCB,4)=UZ
261 : MPRLI.VPOCHA(NLCB,IDIM+2)=P
262 : do 104 i=1,(nsp-1)
263 : MPRLI.VPOCHA(NLCB,IDIM+2+I)=YF.YET(I)
264 : 104 continue
265 : MPRLI.VPOCHA(NLCB,IDIM+NSP+2)=KAF
266 : MPRLI.VPOCHA(NLCB,IDIM+NSP+3)=EPSF
267 : C-------------------------------------------------------
268 : C******* Residuum (son SPG a le meme ordre que MELEFC)
269 : C-------------------------------------------------------
270 : MPRES.VPOCHA(IFAC,1)=RHO*UN*SURF/VOLU
271 : MPRES.VPOCHA(IFAC,2)=(RHO*UN*UX+(P*CNX))*SURF/VOLU
272 : MPRES.VPOCHA(IFAC,3)=(RHO*UN*UY+(P*CNY))*SURF/VOLU
273 : IF(IDIM.EQ.3)
274 : & MPRES.VPOCHA(IFAC,4)=(RHO*UN*UZ+(P*CNZ))*SURF/VOLU
275 : MPRES.VPOCHA(IFAC,IDIM+2)=((UN*GAMF*P/(GAMF-1.0D0)) +
276 : & (0.5D0*RHO*UN*(UN*UN+UT*UT+UT2*UT2)))*SURF/VOLU
277 : do 105 i=1,(nsp-1)
278 : MPRES.VPOCHA(IFAC,IDIM+2+I)=RHO*YF.YET(I)*UN*SURF/VOLU
279 : 105 continue
280 : MPRES.VPOCHA(IFAC,IDIM+NSP+2)=RHO*KAF*UN*SURF/VOLU
281 : MPRES.VPOCHA(IFAC,IDIM+NSP+3)=RHO*EPSF*UN*SURF/VOLU
282 : 1 CONTINUE
283 : C
284 : SEGDES MELEFC
285 : C
286 : SEGDES MLEMC
287 : SEGDES MLEMCB
288 : SEGDES MLEMF
289 : C
290 : SEGDES MPNORM
291 : SEGDES MPVOL
292 : SEGDES MPSURF
293 : SEGDES MPRC
294 : SEGDES MPPC
295 : SEGDES MPVC
296 : SEGDES MPYN
297 : SEGDES MPKAC
298 : SEGDES MPEPSC
299 : SEGDES MPLIM
300 : SEGDES MPRES
301 : SEGDES MPRLI
302 : SEGDES MLRECP
303 : SEGDES MLRECV
304 : SEGDES YC
305 : SEGDES YF
306 : C
307 : 9999 CONTINUE
308 : RETURN
309 : END
310 :
311 :
312 :
313 :
314 :
315 :
316 :
317 :
318 :
319 :
© Cast3M 2003 - All rights reserved.
Disclaimer