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
subroutine u_profile_neutral_val_func(z,u_val,z_val_in,z_pbl,z0,u,u_star0)implicit nonereal,intent(in)::z,u_val,z_val_in,z_pbl,z0real,intent(out)::u,u_star0real kappaparameter(kappa=0.4)real z_l,z_val!If the input height is above the boundary layer then set the height to pbl height and calculatez_val=min(z_val_in,z_pbl)z_l=0.4*z_pblu_star0=u_val*kappa/(log(z_val/z0)+kappa*z_val/z_l*(1-z_val/2./z_pbl)-z_val/z_pbl)u=u_star0/kappa*(log(z/z0)+kappa*z/z_l*(1-z/2./z_pbl)-z/z_pbl)end subroutine u_profile_neutral_val_func