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
microphysics Module Reference


This module provides a wrapper to call various microphysics models It sets up variables specific to the physics package to be used including history variables not currently stored in the domain level data structure More...

Public Member Functions

subroutine mp_init (options)
 

Initialize microphysical routines More...

 
subroutine distribute_precip (current_precip, last_precip, local_fraction)
 

Distribute the microphysics precipitation to neighboring grid cells More...

 
subroutine mp (domain, options, dt_in, model_time)
 

Microphysical driver More...

 
subroutine mp_finish (options)
 

Finalize microphysical routines More...

 

Public Attributes

integer update_interval
 
real *8 last_model_time
 
real, dimension(:,:), allocatable sr
 
real, dimension(:,:), allocatable last_rain
 
real, dimension(:,:), allocatable last_snow
 
real, dimension(:,:), allocatable this_precip
 
integer, parameter npoints =8
 
real, dimension(npointsdist_fraction = [ 0.1,0.15,0.1, 0.15,0.15, 0.1,0.15,0.1]
 
integer, dimension(npointsx_list = [ -1,0,1, -1,1, -1,0,1]
 
integer, dimension(npointsy_list = [ 1,1,1, 0,0, -1,-1,-1]
 

Detailed Description


This module provides a wrapper to call various microphysics models It sets up variables specific to the physics package to be used including history variables not currently stored in the domain level data structure

The main entry point to the code is mp(domain,options,dt)

 Call tree graph :
  mp_init->[ external initialization routines]
  mp->[   external microphysics routines]
  mp_finish
 High level routine descriptions / purpose
   mp_init            - allocates module data and initializes physics package
   mp                 - sets up and calls main physics package
   mp_finish          - deallocates module memory, place to do the same for physics
 Inputs: domain, options, dt
      domain,options  = as defined in data_structures
      dt              = time step (seconds)
 
Author
Ethan Gutmann (gutma.nosp@m.nn@u.nosp@m.car.e.nosp@m.du)

Member Function/Subroutine Documentation

subroutine microphysics::distribute_precip ( real, dimension(:,:), intent(inout)  current_precip,
real, dimension(:,:), intent(inout)  last_precip,
real, intent(in)  local_fraction 
)


Distribute the microphysics precipitation to neighboring grid cells

Because ICAR can be too aggressive at putting precip on mountain tops, this routine smooths out the precip by keeping only a fraction of it locally, and distributing the rest to the neighboring grid cells, weighted by distance.

Parameters
[in,out]accumulated model precip at this time step
[in]accumulated model precip prior to microphysics call
[in]fraction of precip to maintain in the local gridcell

Here is the caller graph for this function:

subroutine microphysics::mp ( type(domain_type), intent(inout)  domain,
type(options_type), intent(in)  options,
real, intent(in)  dt_in,
double precision, intent(in)  model_time 
)


Microphysical driver

This routine handles calling the individual microphysics routine specified, that includes creating and passing any temporary variables, and checking when to update the microphysics based on the specified update_interval.

Parameters
domainICAR model domain structure
optionsICAR model options structure
dt_inCurrent driving time step (this is the advection step)
model_timeCurrent model time (to check if it will exceed the update_interval)

Here is the call graph for this function:

Here is the caller graph for this function:

subroutine microphysics::mp_finish ( type(options_type), intent(in)  options)


Finalize microphysical routines

This routine will call the finalization routines (if any) for the specified microphysics packages. It also deallocates any module level variables, e.g. SR

Parameters
optionsICAR model options to specify required initializations
subroutine microphysics::mp_init ( type(options_type), intent(in)  options)


Initialize microphysical routines

This routine will call the initialization routines for the specified microphysics packages. It also initializes any module level variables, e.g. update_interval

Parameters
optionsICAR model options to specify required initializations

Here is the call graph for this function:

Here is the caller graph for this function:

Member Data Documentation

real, dimension(npoints) microphysics::dist_fraction = [ 0.1,0.15,0.1, 0.15,0.15, 0.1,0.15,0.1]
real*8 microphysics::last_model_time
real, dimension(:,:), allocatable microphysics::last_rain
real, dimension(:,:), allocatable microphysics::last_snow
integer, parameter microphysics::npoints =8
real, dimension(:,:), allocatable microphysics::sr
real, dimension(:,:), allocatable microphysics::this_precip
integer microphysics::update_interval
integer, dimension(npoints) microphysics::x_list = [ -1,0,1, -1,1, -1,0,1]
integer, dimension(npoints) microphysics::y_list = [ 1,1,1, 0,0, -1,-1,-1]

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