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


Model Initialization includes allocating memory for boundary and domain data structures. It reads all of the options from the namelist file (or files). It also reads in Lat/Lon and Terrain data. This module also sets up geographic (and vertical) look uptables for the forcing data Finally, there is a driver routine to initialize all model physics packages More...

Public Member Functions

subroutine, public init_model (options, domain, boundary)
 
subroutine, public init_physics (options, domain)
 

Private Member Functions

subroutine convert_longitudes (long_data)
 

Conver longitudes into a common format for geographic interpolation More...

 
subroutine remove_edges (domain, edgesize)
 
subroutine domain_allocation (domain, options, nx, nz, ny, nsoil)
 
subroutine copy_z (input, output, interpolate_dim)
 
subroutine init_domain_land (domain, options)
 
subroutine interpolate_in_x (data_in, data_out)
 

Interpolate a 2D data array in the "x" (first) dimension, extrapolate out one on edges More...

 
subroutine interpolate_in_y (data_in, data_out)
 

Interpolate a 2D data array in the "y" (second) dimension, extrapolate out one on edges More...

 
subroutine init_domain (options, domain)
 
subroutine boundary_allocate (boundary, nx, nz, ny)
 
subroutine init_bc_data (options, boundary, domain)
 
subroutine setup_extwinds (domain)
 
subroutine init_ext_winds (options, bc)
 
subroutine swap_z (bc)
 
subroutine move_lut (inputgeo, outputgeo)
 
subroutine destroy_lut (geolut)
 
subroutine init_bc (options, domain, boundary)
 

Detailed Description


Model Initialization includes allocating memory for boundary and domain data structures. It reads all of the options from the namelist file (or files). It also reads in Lat/Lon and Terrain data. This module also sets up geographic (and vertical) look uptables for the forcing data Finally, there is a driver routine to initialize all model physics packages

The module has been updated to allow arbitrary named variables this allows the use of e.g. ERAi, but still is not as flexible as it could be

The use of various python wrapper scripts in helpers/ makes it easy to add new datasets, and make them conform to the expectations of the current system. For now there are no plans to near term plans to substantially modify this.

Author
Ethan Gutmann (gutma.nosp@m.nn@u.nosp@m.car.e.nosp@m.du)

Member Function/Subroutine Documentation

subroutine init::boundary_allocate ( type(bc_type), intent(inout)  boundary,
integer, intent(in)  nx,
integer, intent(in)  nz,
integer, intent(in)  ny 
)
private

Here is the caller graph for this function:

subroutine init::convert_longitudes ( real, dimension(:,:), intent(inout)  long_data)
private


Conver longitudes into a common format for geographic interpolation

First convert longitudes that may be -180-180 into 0-360 range first. If data straddle the 0 degree longitude, convert back to -180-180 so interpolation will be smooth

Parameters
[in,out]long_data2D array of longitudes (either -180 - 180 or 0 - 360)

Here is the caller graph for this function:

subroutine init::copy_z ( class(interpolable_type), intent(in)  input,
class(interpolable_type), intent(inout)  output,
integer, intent(in)  interpolate_dim 
)
private

Here is the caller graph for this function:

subroutine init::destroy_lut ( type(geo_look_up_table), intent(inout)  geolut)
private

Here is the caller graph for this function:

subroutine init::domain_allocation ( type(domain_type), intent(inout)  domain,
type(options_type), intent(in)  options,
integer, intent(in)  nx,
integer, intent(in)  nz,
integer, intent(in)  ny,
integer, intent(in), optional  nsoil 
)
private

Here is the caller graph for this function:

subroutine init::init_bc ( type(options_type), intent(in)  options,
type(domain_type), intent(inout)  domain,
type(bc_type), intent(inout)  boundary 
)
private

Here is the call graph for this function:

Here is the caller graph for this function:

subroutine init::init_bc_data ( type(options_type), intent(in)  options,
type(bc_type), intent(inout)  boundary,
type(domain_type), intent(in)  domain 
)
private

Here is the call graph for this function:

Here is the caller graph for this function:

subroutine init::init_domain ( type(options_type), intent(in)  options,
type(domain_type), intent(inout)  domain 
)
private

Here is the call graph for this function:

Here is the caller graph for this function:

subroutine init::init_domain_land ( type(domain_type), intent(inout)  domain,
type(options_type), intent(in)  options 
)
private

Here is the call graph for this function:

Here is the caller graph for this function:

subroutine init::init_ext_winds ( type(options_type), intent(in)  options,
type(bc_type), intent(inout)  bc 
)
private

Here is the call graph for this function:

Here is the caller graph for this function:

subroutine, public init::init_model ( type(options_type), intent(inout)  options,
type(domain_type), intent(inout)  domain,
type(bc_type), intent(inout)  boundary 
)

Here is the call graph for this function:

Here is the caller graph for this function:

subroutine, public init::init_physics ( type(options_type), intent(in)  options,
type(domain_type), intent(inout)  domain 
)

Here is the call graph for this function:

Here is the caller graph for this function:

subroutine init::interpolate_in_x ( real, dimension(:,:), intent(in)  data_in,
real, dimension(:,:), intent(out), allocatable  data_out 
)
private


Interpolate a 2D data array in the "x" (first) dimension, extrapolate out one on edges

If data_out is not allocated, it will be allocated as (nx+1,ny). Then a simple average between grid cells computes a bilinear interpolation. Edge cells are extrapolated outwards using a similar method.

Parameters
[in]data_inreal 2D array to be interpolated
[out]data_outreal 2D allocatable array to store the interpolated output

Here is the caller graph for this function:

subroutine init::interpolate_in_y ( real, dimension(:,:), intent(in)  data_in,
real, dimension(:,:), intent(out), allocatable  data_out 
)
private


Interpolate a 2D data array in the "y" (second) dimension, extrapolate out one on edges

If data_out is not allocated, it will be allocated as (nx,ny+1). Then a simple average between grid cells computes a bilinear interpolation. Edge cells are extrapolated outwards using a similar method.

Parameters
[in]data_inreal 2D array to be interpolated
[out]data_outreal 2D allocatable array to store the interpolated output

Here is the caller graph for this function:

subroutine init::move_lut ( type(geo_look_up_table), intent(inout)  inputgeo,
type(geo_look_up_table), intent(inout)  outputgeo 
)
private

Here is the call graph for this function:

Here is the caller graph for this function:

subroutine init::remove_edges ( type(domain_type), intent(inout)  domain,
integer, intent(in)  edgesize 
)
private

Here is the caller graph for this function:

subroutine init::setup_extwinds ( type(wind_type), intent(inout)  domain)
private

Here is the caller graph for this function:

subroutine init::swap_z ( type(bc_type), intent(inout)  bc)
private

Here is the caller graph for this function:


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