PHOTON USE
p;parphi
1 2.5 1 ;;;;
msg The grid. The z coordinate represents time
msg Press return for the pressure contours.
gr x 1;pause
gr off;red;gr ou x 1
msg pressure distribution. Press return for enthalpies
con p1 x 1 fi;0.1;pause;con off;red
msg enthalpy distribution. Press e to end, or type other command
con h1 x 1 fi;0.1
enduse
TEXT(1D Gas Oscillation; Various Cases
TITLE
DISPLAY
The default settings are for a pipe with closed ends, and with
initially uniform-pressure and -temperature gas in uniform motion.
A series of intersecting pressure waves results, with
corresponding variations of enthalpy.
Other cases involve the gas initially at rest, and the presence
of time-varying boundary conditions at one end of the pipe. In one
case the pressure is fixed at an intemediate point.
Ideal-gas properties are used.
PHOTON USE commands are provided.
ENDDIS
char(casename)
real(vin,win,tin,pin,gasconst,hin,cp,cv,gamma)
gasconst=1.0;gamma=1.4;cv=gasconst/(gamma-1.0);cp=cv*gamma
vin=0.5;win=1.0;tin=1.0;hin=cp*tin;pin=0.0;lstep=500
delay(100)
mesgm(This case OK? If not, press n
readvdu(ans,char,y)
integer(kase)
kase=0
if(:ans:.eq.n) then
mesga(Please choose from the following:-
mesg (1. Gas at rest. Sudden sustained entry from top.
mesg (2. Gas at rest. Intermittent entry from top.
mesg (3. As for 2, with pressure=press0 at ny/4
readvdu(kase,int,1)
mesg(Case number :kase: has been chosen
endif
if(kase.gt.0) then
vin=0.0
endif
steady=f
grdpwr(t,lstep,5.0,1.0)
GROUP 4. Y-direction grid specification
GRDPWR(Y,20,1.0,1.0)
LSTEP
NY
GROUP 7. Variables stored, solved & named
SOLVE(P1,V1,h1)
GROUP 9. Properties of the medium (or media)
RHO1=IDEALGAS;RHO1A=0.0;RHO1B=1.0;PRESS0=1.0;RHO1C=0.0
DRH1DP=RHO1B;TMP1=LINH;TMP1B=1.0/CP; CP1=CP
GROUP 11. Initialization of variable or porosity fields
FIINIT(P1)=PIN;FIINIT(V1)=VIN;FIINIT(H1)=HIN
GROUP 13. Boundary conditions and special sources
if(kase.gt.0) then
real(floin)
floin=0.5
patch(timn,north,1,1,ny,ny,1,1,1,lstep)
coval(timn,p1,fixflu,grnd1)
coval(timn,v1,onlyms,-floin)
coval(timn,h1,onlyms,4*hin)
itima=2*lstep
tima=floin
casename=Gas_at_rest._Sudden_sustained_entry_from_top
endif
if(kase.gt.1) then
floin=0.1
patch(timn,north,1,1,ny,ny,1,1,1,lstep)
mesg(Intermittent gas entry and withdrawal at top of pipe
mesg(according to...
mesgb(1. battlement ; 2. saw-tooth; 3. sine curve ? Insert number
integer(number);real(arg)
arg=grnd1
readvdu(number,int,1)
if(number.eq.2) then
+ arg=grnd2
endif
if(number.eq.3) then
+ arg=grnd3
endif
coval(timn,p1,fixflu,arg)
coval(timn,v1,onlyms,-floin)
coval(timn,h1,onlyms,4*hin)
tima=floin
casename=Gas_at_rest._Intermittent_entry_from_top
itima=lstep/4;itimc=lstep
endif
if(kase.gt.2) then
casename=pressure_fixed_at_quarter_height
patch(pfix,cell,1,1,ny/4,ny/4,1,nz,1,lstep)
coval(pfix,p1,fixval,0.0)
coval(pfix,v1,onlyms,0.0)
coval(pfix,h1,onlyms,hin)
endif
GROUP 16. Termination of iterations
LSWEEP=10
SELREF=T;RESFAC=1.E-3
VARMIN(H1)=0.5
GROUP 21. Print-out of variables
GROUP 22. Spot-value print-out
IXMON=1;IYMON=1
GROUP 23. Field print-out and plot control
TSTSWP=LSWEEP
ITABL=1;NYPRIN=1;NTPRIN=LSTEP/4
IDISPA=10;IDISPB=1;IDISPC=LSTEP
PATCH(PROFILES,PROFIL,1,1,NY/2,NY/2,1,1,1,LSTEP)
PLOT(PROFILES,P1,0.0,0.0)
PLOT(PROFILES,V1,0.0,0.0)
text(:casename: