36
37
38
39 USE python_funct_mod, ONLY : python_
40 use finter_mixed_mod, ONLY : finter_mixed
41 USE sensor_mod
42
43
44
45#include "implicit_f.inc"
46
47
48
49#include "com04_c.inc"
50#include "com08_c.inc"
51#include "param_c.inc"
52
53
54
55 INTEGER ,INTENT(IN) :: NSENSOR
56 INTEGER NJET, IBAGJET(NIBJET,*), NPC(*), IGEO(NPROPGI,*), (*)
57
59 . rbagjet(nrbjet,*), tf(*),scalt,
60 . geo(npropg,*), pm(npropm,*), datainj(6,njet)
61 TYPE (SENSOR_STR_) ,DIMENSION(NSENSOR) ,INTENT(IN) :: SENSOR_TAB
62 type(python_) :: python
63
64
65
66 INTEGER I_INJ, I_TYPINJ, NGASES, ISENS, IFLU, IMASS, ITEMP, IMOL,
67 . I_GAS, IJ, IK, IL, IMASS1, I_GAS1, IMOL1, KK
69 . tstart, astime, dgmassi, gmtot_old, gmass_old, gmol_old, fmass,
70 . ftemp, molfr, gmass, gmass_dt, gmtot, dgmass, efac ,
71 . tsg, rmwg, temp,
72 . cpa, cpb, cpc, cpd, cpe, cpf, mw,
73 . cpa_new, cpb_new, cpc_new, cpd_new, cpe_new, cpf_new,mwmix_new,
74 . dmass_mix, dmol_mix, dmassg_mix, dteps, mass_mix, mass_mix_dt,
75 . mwmix, fmass1, mw1, molfr1, r_igc1, dgmout
76
77 r_igc1 =pm(27,ivolu(66))
78
79
80
81 DO ij=1,njet
82 i_inj = ibagjet(13,ij)
83 i_typinj = igeo(22,i_inj)
84 ngases = igeo(23,i_inj)
85
86 isens = ibagjet(4,ij)
87 IF(isens==0)THEN
88 tstart=zero
89 ELSE
90 tstart=sensor_tab(isens)%TSTART
91 ENDIF
92 iflu =igeo(24,i_inj)
93 astime = geo(201,i_inj)
94 dgmassi=zero
95 cpa_new=zero
96 cpb_new=zero
97 cpc_new=zero
98 cpd_new=zero
99 cpe_new=zero
100 cpf_new=zero
101 gmtot_old=rbagjet(8,ij)
102 gmass_old=rbagjet(7,ij)
103 gmol_old=rbagjet(20,ij)
104
105 DO ik=1,ngases
106 IF (i_typinj==1) THEN
107 fmass=geo(208+(ik-1)*2+1,i_inj)
108 IF (iflu==1)fmass=fmass/astime
109 ftemp=geo(208+(ik-1)*2+2,i_inj)
110 imass=igeo(100+(ik-1)*3+2,i_inj)
111 itemp=igeo(100+(ik-1)*3+3,i_inj)
112 ELSE IF (i_typinj==2) THEN
113 fmass=geo(209,i_inj)
114 IF (iflu==1)fmass=fmass/astime
115 ftemp=geo(210,i_inj)
116 molfr=geo(211+(ik-1)+1,i_inj)
117 imass=igeo(25,i_inj)
118 itemp=igeo(26,i_inj)
119 imol =igeo(100+(ik-1)*2+2,i_inj)
120 END IF
121
122 IF (i_typinj==1) THEN
123 i_gas=igeo(100+(ik-1)*3+1,i_inj)
124 ELSE IF (i_typinj==2) THEN
125 i_gas=igeo(100+(ik-1)*2+1,i_inj)
126 END IF
127 mw =pm(20,i_gas)
128 cpa =pm(21,i_gas)
129 cpb =pm(22,i_gas)
130 cpc =pm(23,i_gas)
131 cpd =pm(24,i_gas)
132 cpe =pm(25,i_gas)
133 cpf =pm(26,i_gas)
134 IF(tt>=tstart)THEN
135 tsg = (tt-tstart)/astime
136
137 IF(itemp>0) THEN
138 temp=ftemp*finter_mixed(python,nfunct,itemp,tsg,npc,tf)
139 ELSE
140 temp=ftemp
141 ENDIF
142 efac= temp*(cpa+half*cpb*temp+third*cpc*temp*temp
143 . +fourth*cpd*temp*temp*temp
144 . -cpe/(temp*temp)
145 . +one_fifth*cpf*temp*temp*temp*temp)
146 ELSE
147 efac=zero
148 ENDIF
149
150 dmass_mix=zero
151 dmol_mix=zero
152 dmassg_mix=zero
153
154 IF(tt>=tstart)THEN
155 dteps=dt1/astime
156 IF (dt1==zero) dteps=em15
157
158 IF (i_typinj==1) THEN
159
160 DO il=1,ngases
161
162 i_gas1=igeo(100+(il-1)*3+1,i_inj)
163 imass1=igeo(100+(il-1)*3+2,i_inj)
164 fmass1=geo(208+(il-1)*2+1,i_inj)
165 IF (iflu==1) fmass1=fmass1/astime
166 mw1=pm(20,i_gas1)
167
168 IF(imass1>0) THEN
169 gmass=fmass1*finter_mixed(python,nfunct,imass1,tsg,npc,tf)
170 ELSE
171 gmass=fmass1
172 END IF
173
174 IF (iflu==1) THEN
175 dmass_mix=dmass_mix+gmass
176 dmol_mix=dmol_mix+gmass/mw1
177 ELSEIF (iflu==0) THEN
178 IF(imass1>0) THEN
179 gmass_dt=fmass1*finter_mixed(python,nfunct,imass1,tsg+dteps,npc,tf)
180 ELSE
181 gmass_dt=fmass1
182 END IF
183 dmass_mix=dmass_mix+(gmass_dt-gmass)
184 dmol_mix=dmol_mix+(gmass_dt-gmass)/mw1
185 END IF
186 END DO
187
188 IF(imass>0) THEN
189 gmass=fmass*finter_mixed(python,nfunct,imass,tsg,npc,tf)
190 ELSE
191 gmass=fmass
192 END IF
193 dmassg_mix=gmass
194 IF (iflu==0) THEN
195 IF(imass>0) THEN
196 gmass_dt=fmass*finter_mixed(python,nfunct,imass,tsg+dteps,npc,tf)
197 ELSE
198 gmass_dt=fmass
199 END IF
200 dmassg_mix=gmass_dt-gmass
201 END IF
202 ELSE IF (i_typinj==2) THEN
203
204
205
206
207
208
209
210 mass_mix=zero
211 mass_mix_dt=zero
212 DO il=1,ngases
213
214 i_gas1=igeo(100+(il-1)*2+1,i_inj)
215 imass1=igeo(25,i_inj)
216 fmass1=geo(209,i_inj)
217 IF (iflu==1) fmass1=fmass1/astime
218 mw1=pm(20,i_gas1)
219
220 imol1=igeo(100+(il-1)*2+2,i_inj)
221 molfr1=geo(211+(il-1)+1,i_inj)
222
223 IF (imol1==0) THEN
224 gmass=molfr1
225 . *mw1
226 ELSE
227 gmass=molfr1
228 . *finter_mixed(python,nfunct,imol1,tsg,npc,tf)
229 . *mw1
230 END IF
231 IF (iflu==1) THEN
232 dmass_mix=dmass_mix+gmass
233 dmol_mix=dmol_mix+gmass/mw1
234
235 mass_mix=mass_mix+gmass
236
237 ELSEIF (iflu==0) THEN
238 IF (imol1==0) THEN
239 gmass_dt=molfr1
240 . *mw1
241 ELSE
242 gmass_dt=molfr1
243 . *finter_mixed(python,nfunct,imol1,tsg+dteps,npc,tf)
244 . *mw1
245 END IF
246
247
248 dmass_mix=dmass_mix+gmass
249 dmol_mix=dmol_mix+gmass/mw1
250 mass_mix=mass_mix+gmass
251 mass_mix_dt=mass_mix_dt+gmass_dt
252
253 END IF
254 END DO
255
256 IF (imol==0) THEN
257 gmass=fmass*molfr
258 . *mw
259 ELSE
260 gmass=fmass*molfr
261 . *finter_mixed(python,nfunct,imol,tsg,npc,tf)
262 . *mw
263 END IF
264 gmass=gmass
265 . *finter_mixed(python,nfunct,imass,tsg,npc,tf)/mass_mix
266 dmass_mix=fmass*dmass_mix
267 . *finter_mixed(python,nfunct,imass,tsg,npc,tf)/mass_mix
268 dmol_mix =fmass*dmol_mix
269 . *finter_mixed(python,nfunct,imass,tsg,npc,tf)/mass_mix
270 dmassg_mix=gmass
271 IF (iflu==0) THEN
272 IF (imol==0) THEN
273 gmass_dt=fmass*molfr
274 . *mw
275 ELSE
276 gmass_dt=fmass*molfr
277 . *finter_mixed(python,nfunct,imol,tsg+dteps,npc,tf)
278 . *mw
279 END IF
280
281
282 gmass_dt=gmass_dt*finter_mixed(python,nfunct,imass,tsg+dteps,npc,tf)/mass_mix_dt
283 END IF
284 END IF
285
286 IF (dmass_mix/=zero)THEN
287 mwmix_new =dmass_mix/dmol_mix
288 cpa_new =cpa_new +cpa*dmassg_mix/dmass_mix
289 cpb_new =cpb_new +cpb*dmassg_mix/dmass_mix
290 cpc_new =cpc_new +cpc*dmassg_mix/dmass_mix
291 cpd_new =cpd_new +cpd*dmassg_mix/dmass_mix
292 cpe_new =cpe_new +cpe*dmassg_mix/dmass_mix
293 cpf_new =cpf_new +cpf*dmassg_mix/dmass_mix
294 END IF
295
296 kk=20+(ik-1)*4
297 IF(iflu==1) THEN
298 gmass_old = rbagjet(kk+1,ij)
299 gmass =gmass*dt1 + gmass_old
300 dgmass=
max(zero,gmass-gmass_old)
301 ELSE
302 dgmass=
max(zero,gmass_dt-gmass)
303 END IF
304 rbagjet(kk+1,ij) = rbagjet(kk+1,ij) + dgmass
305 rbagjet(kk+2,ij) = rbagjet(kk+2,ij) + dgmass
306 dgmassi=dgmassi+dgmass
307 ELSE
308 dgmass=zero
309 gmass =zero
310 ENDIF
311
312 IF(dmass_mix/=zero) THEN
313 datainj(4,ij)=datainj(4,ij)+efac*dmassg_mix/dmass_mix
314 ENDIF
315
316 END DO
317
318
319 IF (dt1>zero) THEN
320 datainj(2,ij)=dgmassi/dt1
321 ELSE
322 datainj(2,ij)=zero
323 ENDIF
324
325 IF (dmass_mix/=zero)THEN
326 mwmix=mwmix_new
327 rbagjet(2 ,ij)=cpa_new
328 rbagjet(3 ,ij)=cpb_new
329 rbagjet(4 ,ij)=cpc_new
330 rbagjet(16,ij)=cpd_new
331 rbagjet(17,ij)=cpe_new
332 rbagjet(18,ij)=cpf_new
333 END IF
334
335 cpa = rbagjet(2,ij)
336 cpb = rbagjet(3,ij)
337 cpc = rbagjet(4,ij)
338 cpd = rbagjet(16,ij)
339 cpe = rbagjet(17,ij)
340 cpf = rbagjet(18,ij)
341 IF (dmass_mix/=zero)THEN
342 rmwg=r_igc1/mwmix
343 rbagjet(1,ij)=rmwg
344 ELSE
345 rmwg=rbagjet(1,ij)
346 END IF
347
348 gmtot =gmtot_old+dgmassi
349
350 rbagjet(1,ij)=rmwg
351 rbagjet(8,ij)=gmtot
352 rbagjet(7,ij)=rbagjet(7,ij)+dgmassi
353 rbagjet(20,ij)=dmol_mix
354 ENDDO
355
356
357 RETURN