42 . IDTITL ,UNITAB ,LSUBMODEL,IPM ,PM ,
56#include "implicit_f.inc"
63#include "tablen_c.inc"
67 TYPE (UNIT_TYPE_),
INTENT(IN) ::UNITAB
69 INTEGER ,
INTENT(IN) :: IGTYP,PROP_ID,IPM(NPROPMI,NUMMAT),NPC(*)
70 my_real,
INTENT(IN) :: pld(*),pm(npropm,nummat)
71 my_real,
INTENT(INOUT) :: geo(*)
72 CHARACTER(LEN=NCHARTITLE)::IDTITL
73 TYPE(
prop_tag_) ,
DIMENSION(0:MAXPROP) :: PROP_TAG
78 INTEGER IG,I,J,NGASES,IFLOW,
80 INTEGER MAT_ID(2,100),F_IDMASS(2,100),F_IDTEMP(2,100),
81 . F_IDMF(2,100),MW_MIXTURE,MW_MIXTURE_OK,
82 . nb_points,nb_points_1,
83 . ifun_ref,ifun_tmp,ifun_tmp_usr
85 . fsmass(100),fstemp(100),astime,
87 . cpai_mix,cpbi_mix,cpci_mix,cpdi_mix,cpei_mix,cpfi_mix,
88 . mf_tot,mol_tot,mass_tot,mass_ini,mol_ini,mwi_mixture,
89 . stp_gama_mix,stp_temp,init_mass,cpi_mix,
90 . r_igc1, fac_m, fac_t
92 DATA MESS/
'INJECTOR PROPERTY SET '/
94 LOGICAL IS_AVAILABLE, IS_ENCRYPTED
101 is_encrypted = .false.
102 is_available = .false.
132 CALL hm_get_intv(
'NIP',ngases,is_available,lsubmodel)
133 CALL hm_get_intv(
'IFLOW',iflow,is_available,lsubmodel)
135 IF (ngases<1.OR.100<ngases)
THEN
144 IF (iflow/=0.AND.iflow/=1)
THEN
152 CALL hm_get_intv(
'FUN_A1',f_idmass(1,1),is_available,lsubmodel)
153 CALL hm_get_intv(
'FUN_B1',f_idtemp(1,1),is_available,lsubmodel)
154 CALL hm_get_floatv(
'F_SCALE_Y',fsmass(1),is_available,lsubmodel,unitab)
155 CALL hm_get_floatv(
'F_SHIFT_Y',fstemp(1),is_available,lsubmodel,unitab)
156 CALL hm_get_floatv(
'A_SCALE_X',astime,is_available,lsubmodel,unitab)
161 IF(fsmass(1) == zero)fsmass(1)=one*fac_m
162 IF(fstemp(1) == zero)fstemp(1)=one*fac_t
163 IF(f_idmass(1,1) == 0)
THEN
166 . anmode=aninfo_blind_1,
171 IF(npc(nfunct+1+j) == f_idmass(1,1)) f_idmass(2,1)=j
172 IF(npc(nfunct+1+j) == f_idtemp(1,1)) f_idtemp(2,1)=j
174 IF(f_idmass(2,1) == 0)
THEN
177 . anmode=aninfo_blind_1,
182 IF(f_idtemp(1,1)/=0.AND.f_idtemp(2,1) == 0)
THEN
185 . anmode=aninfo_blind_1,
196 IF (molfr(i) < zero)
THEN
199 . anmode=aninfo_blind_1,
203 IF (f_idmf(1,i)/=0) molfr(i)=one
207 mat_id(2,i) = nintri(mat_id(1,i),ipm,npropmi,nummat,1)
208 IF(mat_id(2,i) == 0)
THEN
215 ELSEIF(ipm(2,mat_id(2,i))/=999)
THEN
225 IF(npc(nfunct+1+j) == f_idmf(1,i)) f_idmf(2,i)=j
227 IF(f_idmf(1,i)/=0.AND.f_idmf(2,i) == 0)
THEN
230 . anmode=aninfo_blind_1,
239 IF(astime == zero)astime=one*fac_t
240 r_igc1=pm(27,mat_id(2,1))
245 IF (igeo(22) == 1)
THEN
246 IF (f_idmass(2,i)/=0)
THEN
247 ifun_tmp=f_idmass(2,i)
248 ifun_tmp_usr=f_idmass(1,i)
250 ELSE IF (igeo(22) == 2)
THEN
251 IF (f_idmf(2,i)/=0)
THEN
253 ifun_tmp_usr=f_idmf(1,i)
256 IF (ifun_tmp/=0)
THEN
257 IF ((npc(ifun_tmp+1)-npc(ifun_tmp)) >= 4)
THEN
259 DO j = npc(ifun_tmp),npc(ifun_tmp+1)-3,2
260 IF (pld(j+1) > pld(j+3))
THEN
262 . msgtype=msgwarning,
263 . anmode=aninfo_blind_1,
266 . i2=ifun_tmp_usr,i3=i)
269 ELSE IF (iflow == 1)
THEN
270 DO j = npc(ifun_tmp),npc(ifun_tmp+1)-1,2
271 IF (pld(j+1) < zero)
THEN
273 . msgtype=msgwarning,
274 . anmode=aninfo_blind_1,
277 . i2=ifun_tmp_usr,i3=i)
290 IF (f_idmf(2,i)/=0)
THEN
292 . nb_points_1=npc(f_idmf(2,i))-npc(f_idmf(2,i)+1)
293 nb_points=npc(f_idmf(2,i))-npc(f_idmf(2,i)+1)
294 IF (nb_points/=nb_points_1)
THEN
306 IF (f_idmf(2,i)/=0)
THEN
308 . ifun_ref=f_idmf(2,i)
309 DO j=npc(f_idmf(2,i)),npc(f_idmf(2,i)+1)-1,2
310 icurpt=j-npc(f_idmf(2,i))
311 IF (pld(j)/=pld(npc(ifun_ref)+icurpt))
THEN
322 IF (ifun_ref/=-1)
THEN
324 DO j=npc(ifun_ref),npc(ifun_ref+1)-1,2
325 icurpt=j-npc(ifun_ref)
328 IF (f_idmf(2,i)==0)
THEN
329 mf_tot=mf_tot+molfr(i)
330 IF (molfr(i)<zero)
THEN
333 . anmode=aninfo_blind_1,
336 . i2=icurpt/2+1,i3=i)
339 IF (pld(npc(f_idmf(2,i))+icurpt+1)<zero)
THEN
342 . anmode=aninfo_blind_1,
345 . i2=icurpt/2+1,i3=i)
347 mf_tot=mf_tot+pld(npc(f_idmf(2,i))+icurpt+1)
351 IF (abs(mf_tot-one)>em03)
THEN
354 . anmode=aninfo_blind_1,
364 mf_tot=mf_tot+molfr(i)
367 IF (mf_tot<em03)
THEN
373 ELSE IF (abs(mf_tot-one)>em03)
THEN
376 molfr(i)=molfr(i)/mf_tot
379 . msgtype=msgwarning,
401 IF (f_idmf(2,i) == 0)
THEN
404 mol_ini=molfr(i)*pld(npc(f_idmf(2,i))+3)
406 mol_tot=mol_tot+mol_ini
409 IF (mol_tot == zero)
THEN
410 init_mass = em09 / unitab%FAC_M_WORK
412 IF (f_idmf(2,i) == 0)
THEN
415 mol_ini=molfr(i)*pld(npc(f_idmf(2,i))+3)
417 init_mass = mol_ini*pm(20,mat_id(2,i))
419 mass_tot = mass_tot + init_mass
420 cpai_mix = cpai_mix + init_mass*pm(21,mat_id(2,i))
421 cpbi_mix = cpbi_mix + init_mass*pm(22,mat_id(2,i))
422 cpci_mix = cpci_mix + init_mass*pm(23,mat_id(2,i))
423 cpdi_mix = cpdi_mix + init_mass*pm(24,mat_id(2,i))
424 cpei_mix = cpei_mix + init_mass*pm(25,mat_id(2,i))
425 cpfi_mix = cpfi_mix + init_mass*pm(26,mat_id(2,i))
427 mwi_mixture=mass_tot/mol_tot
428 cpai_mix = cpai_mix / mass_tot
429 cpbi_mix = cpbi_mix / mass_tot
430 cpci_mix = cpci_mix / mass_tot
431 cpdi_mix = cpdi_mix / mass_tot
432 cpei_mix = cpei_mix / mass_tot
433 cpfi_mix = cpfi_mix / mass_tot
438 igeo(25)=f_idmass(2,1)
439 igeo(26)=f_idtemp(2,1)
441 igeo(100+(i-1)*2+1)=mat_id(2,i)
442 igeo(100+(i-1)*2+2)=f_idmf(2,i)
455 . +cpci_mix*stp_temp*stp_temp
456 . +cpdi_mix*stp_temp*stp_temp*stp_temp
457 . +cpei_mix/(stp_temp*stp_temp)
458 . +cpfi_mix*stp_temp*stp_temp*stp_temp*stp_temp
459 stp_gama_mix=cpi_mix/(cpi_mix-r_igc1/mwi_mixture)
465 geo(211+(i-1)+1)=molfr(i)
469 WRITE(iout,1000)prop_id
471 WRITE(iout,1130)ig,iflow,f_idmass(1,1),f_idtemp(1,1),
472 . fsmass(1),fstemp(1),astime
473 WRITE(iout,1110)ngases
474 WRITE(iout,1115)mwi_mixture,stp_gama_mix,
475 . cpai_mix,cpbi_mix,cpci_mix,
476 . cpdi_mix,cpei_mix,cpfi_mix
478 WRITE(iout,1140)mat_id(1,i),molfr(i),f_idmf(1,i)
486 IF(geo(39)/=zero.AND.igeo( 9)== 0) igeo( 9)=nint(geo(39))
487 IF(geo(171)/=zero.AND.igeo(10)== 0) igeo(10)=nint(geo(171))
492 & 5x,
'INJECTOR PROPERTY SET (/PROP/INJECT2)'/,
493 & 5x,
'--------------------------------------',/,
494 & 5x,
'PROPERTY SET NUMBER . . . . . . . . . .=',i10,/,
495 & 5x,
'CONFIDENTIAL DATA'//)
504 & 5x,
'MIXTURE DEFINTION'/,
505 & 5x,
'NUMBER OF GASES . . . . . . . . . . . .=',i10
507 & 5x,
'INITIAL CHARACTERISTICS OF MIXTURE',/,
508 & 5x,
'----------------------------------',/,
509 & 5x,
'MOLECULAR WEIGHT. . . . . . . . . . . .=',1pg20.13,/,
510 & 5x,
'STP GAMMA . . . . . . . . . . . . . . .=',1pg20.13,/,
511 & 5x,
'COEFFICIENT CPA . . . . . . . . . . . .=',1pg20.13,/,
512 & 5x,
'COEFFICIENT CPB . . . . . . . . . . . .=',1pg20.13,/,
513 & 5x,
'COEFFICIENT CPC . . . . . . . . . . . .=',1pg20.13,/,
514 & 5x,
'COEFFICIENT CPD . . . . . . . . . . . .=',1pg20.13,/,
515 & 5x,
'COEFFICIENT CPE . . . . . . . . . . . .=',1pg20.13,/,
516 & 5x,
'COEFFICIENT CPF . . . . . . . . . . . .=',1pg20.13,/)
518 & 5x,
'INJECTOR PROPERTY SET'/,
519 & 5x,
'PROPERTY SET NUMBER . . . . . . . . . .=',i10,/,
520 & 5x,
'INCOMING MASS FLAG FOR FUNCTIONS. . . .=',i10,/,
521 & 5x,
'(0:MASS/TIME, 1:MASS FLOW/TIME)',/,
522 & 5x,
'TIME FUNCTION FOR INCOMING MASS . . . .=',i10
523'TIME FUNCTION FOR INCOMING GAS TEMP . .=',i10,/,
524 & 5x,
'SCALE FACTOR FOR INCOMING MASS. . . . .=',1pg20.13,/,
525 & 5x,
'SCALE FACTOR FOR INCOMING GAS TEMP. . .=',1pg20.13,/,
526 & 5x,
'ABSCISSA SCALE FACTOR',/,
527 & 5x,
' FOR TIME BASED FUNCTIONS . . . . .=',1pg20.13,/)
529 & 10x,
'GAS NUMBER. . . . . . . . . . . . . . .=',i10,/,
530 & 10x,
'MOLAR FRACTION. . . . . . . . . . . . .=',1pg20.13,/,
531 & 10x,
'TIME FUNCTION FOR MOLAR FRACTION. . . .=',i10,/)
subroutine ancmsg(msgid, msgtype, anmode, i1, i2, i3, i4, i5, i6, i7, i8, i9, i10, i11, i12, i13, i14, i15, i16, i17, i18, i19, i20, r1, r2, r3, r4, r5, r6, r7, r8, r9, c1, c2, c3, c4, c5, c6, c7, c8, c9, prmode)