The Intermediate Complexity Atmospheric Research model (ICAR)
A computationally efficient atmospheric model for downscaling.
 All Classes Files Functions Variables
Public Member Functions | Public Attributes | List of all members
module_ra_simple Module Reference


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
 

Detailed Description


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
 
Author
Ethan Gutmann (gutma.nosp@m.nn@u.nosp@m.car.e.nosp@m.du)

Member Function/Subroutine Documentation

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 
)

Here is the call graph for this function:

Here is the caller graph for this function:

real function, dimension(nx) module_ra_simple::cloudfrac ( real, dimension(nx), intent(in)  rh,
real, dimension(nx), intent(in)  qc,
integer, intent(in)  nx 
)

Here is the caller graph for this function:

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 
)

Here is the caller graph for this function:

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 
)

Here is the call graph for this function:

Here is the caller graph for this function:

subroutine module_ra_simple::ra_simple_init ( type(domain_type), intent(in)  domain,
type(options_type), intent(in)  options 
)

Here is the caller graph for this function:

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 
)

Here is the caller graph for this function:

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 
)

Here is the caller graph for this function:

Member Data Documentation

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

The documentation for this module was generated from the following file: