Nodes of different colours represent the following:
Solid arrows point from a procedure to one which it calls. Dashed
arrows point from an interface to procedures which implement that interface.
This could include the module procedures in a generic interface or the
implementation in a submodule of an interface in a parent module.
Source Code
function COESA_atmosphere(Z)result(s)real(wp),intent(in)::Z! altitude in meterstype(state)::sreal(wp)::H,M,T,P,cif(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)thenH=geopotential_altitude(Z)M=mean_molecular_weight_lower(Z)T=temperature_lower(H,M)P=pressure_lower(H)c=speed_of_sound_lower(T,M)elseT=temperature_upper(Z)P=pressure_upper(Z)M=mean_molecular_weight_upper(Z)c=speed_of_sound_86km()end ifs=State(M,T,P,c)end function COESA_atmosphere