The Intermediate Complexity Atmospheric Research model (ICAR)
A computationally efficient atmospheric model for downscaling.
|
Very simple radiation code modeled after the description in Finch and Best(2004?) of Reiff et al. 1984 shortwave and Idso and Jackson (1969) longwave. More...
Public Member Functions | |
subroutine | ra_simple_init (domain, options) |
real function, dimension(nx) | relative_humidity (t, qv, p, j, nx) |
real function, dimension(nx) | shortwave (day_frac, cloud_cover, solar_elevation, nx) |
real function, dimension(nx) | longwave (T_air, cloud_cover, nx) |
real function, dimension(nx) | cloudfrac (rh, qc, nx) |
real function, dimension(nx) | calc_solar_elevation (date, lon, j, nx, day_frac) |
subroutine | ra_simple (theta, pii, qv, qc, qs, qr, p, swdown, lwdown, cloud_cover, lat, lon, date, options, dt) |
Public Attributes | |
real, dimension(:,:), allocatable | cos_lat_m |
real, dimension(:,:), allocatable | sin_lat_m |
real, parameter | so =1367.0 |
real, parameter | qcmin =1e-5 |
real, parameter | minimum_rh =1e-10 |
Very simple radiation code modeled after the description in Finch and Best(2004?) of Reiff et al. 1984 shortwave and Idso and Jackson (1969) longwave.
Clearsky Shortwave radiation is calculated as a function of day of year and time of day. Cloudy Shortwave is calculated as clearsky SW * f(cloud cover) [0.25-1]
Cloud cover is calculated as in Xu and Randal (1996) as f(surface_RH, qc+qs+qr)
Clearsky Longwave radiation is calculated as f(Tair) Cloudy longwave is scaled up by a f(cloud cover) [1-1.2]
The entry point to the code is ra_simple.
Call tree graph : ra_simple-> [cloudfrac->], [shortwave->], [longwave->]
High level routine descriptions / purpose ra_simple - loops over X,Y grid cells, calls cloudfrac, shortwave,longwave on columns cloudfrac - calculates the cloud fraction following Xu and Randall (1996) shortwave - calculates shortwave at the surface following Reiff et al (1984) longwave - calculates longwave at the surface following Idso and Jackson (1969)
Driver inputs: p,th,pii,rho,qv,qc,qr,qs,rain,snow,dt,dz,nx,ny,nz p = pressure - 3D - input - Pa - (nx,nz,ny) th = potential temperature - 3D - in/out - K - (nx,nz,ny) pii = inverse exner function - 3D - input - [] - (nx,nz,ny) rho = air density - 3D - input - kg/m^3 - (nx,nz,ny) qv = specific humidity - 3D - input - kg/kg - (nx,nz,ny) qc = cloud water content - 3D - input - kg/kg - (nx,nz,ny) qr = rain water content - 3D - input - kg/kg - (nx,nz,ny) qs = snow water content - 3D - input - kg/kg - (nx,nz,ny) swdown = shortwave down at surface - 2D - output - W/m^2 - (nx,ny) lwdown = longwave down at surface - 2D - output - W/m^2 - (nx,ny) dt = time step - 0D - input - seconds - scalar
real function, dimension(nx) module_ra_simple::calc_solar_elevation | ( | double precision, intent(in) | date, |
real, dimension(:,:), intent(in) | lon, | ||
integer, intent(in) | j, | ||
integer, intent(in) | nx, | ||
real, dimension(:), intent(out) | day_frac | ||
) |
real function, dimension(nx) module_ra_simple::cloudfrac | ( | real, dimension(nx), intent(in) | rh, |
real, dimension(nx), intent(in) | qc, | ||
integer, intent(in) | nx | ||
) |
real function, dimension(nx) module_ra_simple::longwave | ( | real, dimension(nx), intent(in) | T_air, |
real, dimension(nx), intent(in) | cloud_cover, | ||
integer, intent(in) | nx | ||
) |
subroutine module_ra_simple::ra_simple | ( | real, dimension(:,:,:), intent(inout) | theta, |
real, dimension(:,:,:), intent(in) | pii, | ||
real, dimension(:,:,:), intent(in) | qv, | ||
real, dimension(:,:,:), intent(in) | qc, | ||
real, dimension(:,:,:), intent(in) | qs, | ||
real, dimension(:,:,:), intent(in) | qr, | ||
real, dimension(:,:,:), intent(in) | p, | ||
real, dimension(:,:), intent(out) | swdown, | ||
real, dimension(:,:), intent(out) | lwdown, | ||
real, dimension(:,:), intent(out) | cloud_cover, | ||
real, dimension(:,:), intent(in) | lat, | ||
real, dimension(:,:), intent(in) | lon, | ||
double precision, intent(in) | date, | ||
type(options_type), intent(in) | options, | ||
real, intent(in) | dt | ||
) |
subroutine module_ra_simple::ra_simple_init | ( | type(domain_type), intent(in) | domain, |
type(options_type), intent(in) | options | ||
) |
real function, dimension(nx) module_ra_simple::relative_humidity | ( | real, dimension(nx), intent(in) | t, |
real, dimension(:,:,:), intent(in) | qv, | ||
real, dimension(:,:,:), intent(in) | p, | ||
integer, intent(in) | j, | ||
integer, intent(in) | nx | ||
) |
real function, dimension(nx) module_ra_simple::shortwave | ( | real, dimension(nx), intent(in) | day_frac, |
real, dimension(nx), intent(in) | cloud_cover, | ||
real, dimension(nx), intent(in) | solar_elevation, | ||
integer, intent(in) | nx | ||
) |
real, dimension(:,:), allocatable module_ra_simple::cos_lat_m |
real, parameter module_ra_simple::minimum_rh =1e-10 |
real, parameter module_ra_simple::qcmin =1e-5 |
real, dimension(:,:), allocatable module_ra_simple::sin_lat_m |
real, parameter module_ra_simple::so =1367.0 |