a simple version that just returns density
Type | Intent | Optional | Attributes | Name | ||
---|---|---|---|---|---|---|
real(kind=wp), | intent(in) | :: | Z | altitude in meters |
kg/m^3
function COESA_density(Z) result(density)
!! a simple version that just returns density
real(wp),intent(in) :: Z !! altitude in meters
real(wp) :: density !! kg/m^3
real(wp) :: H,M,T,P
if (Z < -5000.0_wp) then
error stop "altitude below lower bound of -5000 m"
else if (Z > 1000000.0_wp) then
error stop "altitude above upper bound of 1000000 m"
else if (Z < 86000.0_wp) then
H = geopotential_altitude(Z)
M = mean_molecular_weight_lower(Z)
T = temperature_lower(H, M)
P = pressure_lower(H)
else
T = temperature_upper(Z)
P = pressure_upper(Z)
M = mean_molecular_weight_upper(Z)
end if
density = P * M / (Rstar * T)
end function COESA_density