43 . IDTITL ,UNITAB ,LSUBMODEL,IPM ,PM ,
57#include "implicit_f.inc"
64#include "tablen_c.inc"
68 TYPE (UNIT_TYPE_),
INTENT(IN) ::UNITAB
70 INTEGER ,
INTENT(IN) :: IGTYP,PROP_ID,IPM(NPROPMI,NUMMAT),NPC(*)
71 my_real,
INTENT(IN) :: pld(*),pm(npropm,nummat)
72 my_real,
INTENT(INOUT) :: geo(*)
73 CHARACTER(LEN=NCHARTITLE)::IDTITL
74 TYPE(
prop_tag_) ,
DIMENSION(0:MAXPROP) :: PROP_TAG
79 INTEGER IG,I,J,K,NGASES,IFLOW,IJET,NOD1,NOD2,NOD3,
81 INTEGER MAT_ID(2,100),F_IDMASS(2,100),F_IDTEMP(2,100),
82 . F_IDMF(2,100),MW_MIXTURE,MW_MIXTURE_OK,
83 . nb_points,nb_points_1,nb_points_old,
84 . ifun_ref,ifun_tmp,ifun_tmp_usr
86 . fsmass(100),fstemp(100),astime,
88 . cpai_mix,cpbi_mix,cpci_mix,cpdi_mix,cpei_mix,cpfi_mix,
89 . mf_tot,mol_tot,mass_tot,mass_ini,mol_ini,mwi_mixture,
90 . stp_gama_mix,stp_temp,mass_mol,init_mass,cpi_mix,
91 . r_igc1, fac_m, fac_t
93 DATA /
'INJECTOR PROPERTY SET '/
95 LOGICAL IS_AVAILABLE, IS_ENCRYPTED
99 INTEGER NINTRI,USR2SYS
102 is_encrypted = .false.
103 is_available = .false.
133 CALL hm_get_intv(
'NIP',ngases,is_available,lsubmodel)
134 CALL hm_get_intv(
'IFLOW',iflow,is_available,lsubmodel)
136 IF (ngases<1.OR.100<ngases)
THEN
145 IF (iflow/=0.AND.iflow/=1)
THEN
153 CALL hm_get_intv(
'FUN_A1',f_idmass(1,1),is_available,lsubmodel)
154 CALL hm_get_intv(
'FUN_B1',f_idtemp(1,1),is_available,lsubmodel)
155 CALL hm_get_floatv(
'F_SCALE_Y',fsmass(1),is_available,lsubmodel,unitab)
156 CALL hm_get_floatv(
'F_SHIFT_Y',fstemp(1),is_available,lsubmodel,unitab)
157 CALL hm_get_floatv(
'A_SCALE_X',astime,is_available,lsubmodel,unitab)
162 IF(fsmass(1) == zero)fsmass(1)=one*fac_m
163 IF(fstemp(1) == zero)fstemp(1)=one*fac_t
164 IF(f_idmass(1,1) == 0)
THEN
167 . anmode=aninfo_blind_1,
172 IF(npc(nfunct+1+j) == f_idmass(1,1)) f_idmass(2,1)=j
173 IF(npc(nfunct+1+j) == f_idtemp(1,1)) f_idtemp(2,1)=j
175 IF(f_idmass(2,1) == 0)
THEN
178 . anmode=aninfo_blind_1,
183 IF(f_idtemp(1,1)/=0.AND.f_idtemp(2,1) == 0)
THEN
186 . anmode=aninfo_blind_1,
197 IF (molfr(i) < zero)
THEN
200 . anmode=aninfo_blind_1
204 IF (f_idmf(1,i)/=0) molfr(i)=one
208 mat_id(2,i) = nintri(mat_id(1,i),ipm,npropmi,nummat,1)
209 IF(mat_id(2,i) == 0)
THEN
216 ELSEIF(ipm(2,mat_id(2,i))/=999)
THEN
219 . anmode=aninfo_blind_1,
226 IF(npc(nfunct+1+j) == f_idmf(1,i)) f_idmf(2,i)=j
228 IF(f_idmf(1,i)/=0.AND.f_idmf(2,i) == 0)
THEN
231 . anmode=aninfo_blind_1,
240 IF(astime == zero)astime=one*fac_t
241 r_igc1=pm(27,mat_id(2,1))
246 IF (igeo(22) == 1)
THEN
247 IF (f_idmass(2,i)/=0)
THEN
248 ifun_tmp=f_idmass(2,i)
249 ifun_tmp_usr=f_idmass(1,i)
251 ELSE IF (igeo(22) == 2)
THEN
252 IF (f_idmf(2,i)/=0)
THEN
254 ifun_tmp_usr=f_idmf(1,i)
257 IF (ifun_tmp/=0)
THEN
258 IF ((npc(ifun_tmp+1)-npc(ifun_tmp)) >= 4)
THEN
260 DO j = npc(ifun_tmp),npc(ifun_tmp+1)-3,2
261 IF (pld(j+1) > pld(j+3))
THEN
263 . msgtype=msgwarning,
264 . anmode=aninfo_blind_1,
267 . i2=ifun_tmp_usr,i3=i)
270 ELSE IF (iflow == 1)
THEN
271 DO j = npc(ifun_tmp),npc(ifun_tmp+1)-1,2
272 IF (pld(j+1) < zero)
THEN
274 . msgtype=msgwarning,
275 . anmode=aninfo_blind_1,
278 . i2=ifun_tmp_usr,i3=i)
291 IF (f_idmf(2,i)/=0)
THEN
293 . nb_points_1=npc(f_idmf(2,i))-npc(f_idmf(2,i)+1)
294 nb_points=npc(f_idmf(2,i))-npc(f_idmf(2,i)+1)
295 IF (nb_points/=nb_points_1)
THEN
307 IF (f_idmf(2,i)/=0)
THEN
309 . ifun_ref=f_idmf(2,i)
310 DO j=npc(f_idmf(2,i)),npc(f_idmf(2,i)+1)-1,2
311 icurpt=j-npc(f_idmf(2,i))
312 IF (pld(j)/=pld(npc(ifun_ref)+icurpt))
THEN
323 IF (ifun_ref/=-1)
THEN
325 DO j=npc(ifun_ref),npc(ifun_ref+1)-1,2
326 icurpt=j-npc(ifun_ref)
329 IF (f_idmf(2,i)==0)
THEN
330 mf_tot=mf_tot+molfr(i)
331 IF (molfr(i)<zero)
THEN
334 . anmode=aninfo_blind_1,
337 . i2=icurpt/2+1,i3=i)
340 IF (pld(npc(f_idmf(2,i))+icurpt+1)<zero)
THEN
343 . anmode=aninfo_blind_1,
346 . i2=icurpt/2+1,i3=i)
348 mf_tot=mf_tot+pld(npc
352 IF (abs(mf_tot-one)>em03
THEN
355 . anmode=aninfo_blind_1,
365 mf_tot=mf_tot+molfr(i)
368 IF (mf_tot<em03)
THEN
374 ELSE IF (abs(mf_tot-one)>em03)
THEN
377 molfr(i)=molfr(i)/mf_tot
380 . msgtype=msgwarning,
381 . anmode=aninfo_blind_1,
402 IF (f_idmf(2,i) == 0)
THEN
405 mol_ini=molfr(i)*pld(npc(f_idmf(2,i))+3)
407 mol_tot=mol_tot+mol_ini
410 IF (mol_tot == zero)
THEN
411 init_mass = em09 / unitab%FAC_M_WORK
413 IF (f_idmf(2,i) == 0)
THEN
416 mol_ini=molfr(i)*pld(npc(f_idmf(2,i))+3)
418 init_mass = mol_ini*pm(20,mat_id(2,i))
420 mass_tot = mass_tot + init_mass
421 cpai_mix = cpai_mix + init_mass*pm(21,mat_id(2,i))
422 cpbi_mix = cpbi_mix + init_mass*pm(22,mat_id(2,i))
423 cpci_mix = cpci_mix + init_mass*pm(23,mat_id(2,i))
424 cpdi_mix = cpdi_mix + init_mass*pm(24,mat_id(2,i))
425 cpei_mix = cpei_mix + init_mass*pm(25,mat_id(2,i))
426 cpfi_mix = cpfi_mix + init_mass*pm(26,mat_id(2,i))
428 mwi_mixture=mass_tot/mol_tot
429 cpai_mix = cpai_mix / mass_tot
430 cpbi_mix = cpbi_mix / mass_tot
431 cpci_mix = cpci_mix / mass_tot
432 cpdi_mix = cpdi_mix / mass_tot
433 cpei_mix = cpei_mix / mass_tot
434 cpfi_mix = cpfi_mix / mass_tot
439 igeo(25)=f_idmass(2,1)
440 igeo(26)=f_idtemp(2,1)
442 igeo(100+(i-1)*2+1)=mat_id(2,i)
443 igeo(100+(i-1)*2+2)=f_idmf(2,i)
456 . +cpci_mix*stp_temp*stp_temp
457 . +cpdi_mix*stp_temp*stp_temp*stp_temp
458 . +cpei_mix/(stp_temp*stp_temp)
459 . +cpfi_mix*stp_temp*stp_temp*stp_temp*stp_temp
466 geo(211+(i-1)+1)=molfr(i)
470 WRITE(iout,1000)prop_id
472 WRITE(iout,1130)ig,iflow,f_idmass(1,1),f_idtemp(1,1),
473 . fsmass(1),fstemp(1),astime
474 WRITE(iout,1110)ngases
475 WRITE(iout,1115)mwi_mixture,stp_gama_mix,
476 . cpai_mix,cpbi_mix,cpci_mix,
477 . cpdi_mix,cpei_mix,cpfi_mix
479 WRITE(iout,1140)mat_id(1,i),molfr(i),f_idmf(1,i)
487 IF(geo(39)/=zero.AND.igeo( 9)== 0) igeo( 9)=nint(geo(39))
488 IF(geo(171)/=zero.AND.igeo(10)== 0) igeo(10)=nint(geo(171))
493 & 5x,
'INJECTOR PROPERTY SET (/PROP/INJECT2)'/,
494 & 5x,
'--------------------------------------',/,
495 & 5x,
'PROPERTY SET NUMBER . . . . . . . . . .=',i10,/,
496 & 5x,
'CONFIDENTIAL DATA'//)
505 & 5x,
'MIXTURE DEFINTION'/,
506 & 5x,
'NUMBER OF GASES . . . . . . . . . . . .=',i10,/)
508 & 5x,
'INITIAL CHARACTERISTICS OF MIXTURE',/,
509 & 5x,
'----------------------------------',/,
510 & 5x,
'MOLECULAR WEIGHT. . . . . . . . . . . .=',1pg20.13,/,
511 & 5x,
'STP GAMMA . . . . . . . . . . . . . . .=',1pg20.13,/,
512 & 5x,
'COEFFICIENT CPA . . . . . . . . . . . .=',1pg20.13,/,
513 & 5x,
'COEFFICIENT CPB . . . . . . . . . . . .=',1pg20.13,/,
514 & 5x,
'COEFFICIENT CPC . . . . . . . . . . . .=',1pg20.13,/,
515 & 5x,
'COEFFICIENT CPD . . . . . . . . . . . .=',1pg20.13,/,
516 & 5x,
'COEFFICIENT CPE . . . . . . . . . . . .=',1pg20.13,/,
517 & 5x,
'COEFFICIENT CPF . . . . . . . . . . . .=',1pg20.13,/)
519 & 5x,
'INJECTOR PROPERTY SET'/,
520 & 5x,
'PROPERTY SET NUMBER . . . . . . . . . .=',i10,/,
521 & 5x,
'INCOMING MASS FLAG FOR FUNCTIONS. . . .=',i10,/,
522 & 5x,
'(0:MASS/TIME, 1:MASS FLOW/TIME)',/,
523 & 5x,
'TIME FUNCTION FOR INCOMING MASS . . . .=',i10,/,
524 & 5x,
'TIME FUNCTION FOR INCOMING GAS TEMP . .=',i10,/,
525 & 5x,
'SCALE FACTOR FOR INCOMING MASS. . . . .=',1pg20.13,/,
526 & 5x,
'SCALE FACTOR FOR INCOMING GAS TEMP. . .=',1pg20.13,/,
527 & 5x,
'ABSCISSA SCALE FACTOR',/,
528 & 5x,
' FOR TIME BASED FUNCTIONS . . . . .=',1pg20.13,/)
530 & 10x,
'GAS NUMBER. . . . . . . . . . . . . . .=',i10,/,
531 & 10x,
'MOLAR FRACTION. . . . . . . . . . . . .=',1pg20.13,/,
532 & 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)