cantera/samples/f77/isentropic.f
Ray Speth 2528df0f75 Reorganized source tree structure
These changes make it unnecessary to copy header files around during
the build process, which tends to confuse IDEs and debuggers. The
headers which comprise Cantera's external C++ interface are now in
the 'include' directory.

All of the samples and demos are now in the 'samples' subdirectory.
2012-02-12 02:27:14 +00:00

63 lines
1.5 KiB
Fortran

c
c Mach number vs. area for an isentropic flow. See also the Python
c version of this problem in the Python demos.
c
program isentropic
implicit double precision (a-h,o-z)
parameter (oneatm = 1.01325d5, NPTS = 200)
double precision a(NPTS), dmach(NPTS), t(NPTS),
$ ratio(NPTS)
call newIdealGasMix('gri30.cti','gri30','')
temp = 1200.d0
pres = 10.d0*oneatm
call setState_TPX_String(temp, pres,'H2:1, N2:0.1')
c stagnation state properties
s0 = entropy_mass()
h0 = enthalpy_mass()
p0 = pressure()
dmdot = 1.0d0
amin = 1.0d14
do n = 1, NPTS
p = p0*n/(NPTS+1)
call setState_SP(s0,p)
h = enthalpy_mass()
rho = density()
v2 = 2.0*(h0 - h)
v = sqrt(v2)
area = dmdot/(rho*v)
if (area .lt. amin) then
amin = area
end if
a(n) = area
dmach(n) = v/soundspeed()
t(n) = temperature()
ratio(n) = p/p0
end do
do n = 1, NPTS
a(n) = a(n)/amin
write(*,30) a(n), dmach(n), t(n), ratio(n)
30 format(4e16.5)
end do
stop
end
double precision function soundspeed()
implicit double precision (a-h,o-z)
double precision meanMolarMass
parameter (R = 8314.3d0)
gamma = cp_mass()/cv_mass()
soundspeed = sqrt(gamma * R * temperature()
$ / meanMolarMass())
return
end