Compute shortwave radiative fluxes Contains a single routine to compute direct and diffuse fluxes of solar radiation given
It is the user's responsibility to ensure that boundary conditions (incident fluxes, surface albedos) are on the same spectral grid as the optical properties.
Final output is via user-extensible ty_fluxes (ty_fluxes in module mo_fluxes) which must reduce the detailed spectral fluxes to whatever summary the user needs
The routine does error checking and choses which lower-level kernel to invoke based on what kinds of optical properties are supplied
Type | Intent | Optional | Attributes | Name | ||
---|---|---|---|---|---|---|
class(ty_optical_props_arry), | intent(in) | :: | atmos | Optical properties provided as arrays |
||
logical, | intent(in) | :: | top_at_1 | Is the top of the domain at index 1? (if not, ordering is bottom-to-top) |
||
real(kind=wp), | intent(in), | dimension(:) | :: | mu0 | cosine of solar zenith angle (ncol) - will be assumed constant with height |
|
real(kind=wp), | intent(in), | dimension(:,:) | :: | inc_flux | incident flux at top of domain [W/m2] (ncol, ngpt) |
|
real(kind=wp), | intent(in), | dimension(:,:) | :: | sfc_alb_dir | surface albedo for direct and |
|
real(kind=wp), | intent(in), | dimension(:,:) | :: | sfc_alb_dif | diffuse radiation (nband, ncol) |
|
class(ty_fluxes), | intent(inout) | :: | fluxes | Class describing output calculations |
||
real(kind=wp), | intent(in), | optional | dimension(:,:), target | :: | inc_flux_dif | incident diffuse flux at top of domain [W/m2] (ncol, ngpt) |
If empty, calculation was successful
Type | Intent | Optional | Attributes | Name | ||
---|---|---|---|---|---|---|
class(ty_optical_props_arry), | intent(in) | :: | atmos | Optical properties provided as arrays |
||
logical, | intent(in) | :: | top_at_1 | Is the top of the domain at index 1? (if not, ordering is bottom-to-top) |
||
real(kind=wp), | intent(in), | dimension(:,:) | :: | mu0 | cosine of solar zenith angle (ncol, nlay) |
|
real(kind=wp), | intent(in), | dimension(:,:) | :: | inc_flux | incident flux at top of domain [W/m2] (ncol, ngpt) |
|
real(kind=wp), | intent(in), | dimension(:,:) | :: | sfc_alb_dir | surface albedo for direct and |
|
real(kind=wp), | intent(in), | dimension(:,:) | :: | sfc_alb_dif | diffuse radiation (nband, ncol) |
|
class(ty_fluxes), | intent(inout) | :: | fluxes | Class describing output calculations |
||
real(kind=wp), | intent(in), | optional | dimension(:,:), target | :: | inc_flux_dif | incident diffuse flux at top of domain [W/m2] (ncol, ngpt) |
If empty, calculation was successful