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...
|
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) |
|
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)
subroutine init::boundary_allocate |
( |
type(bc_type), intent(inout) |
boundary, |
|
|
integer, intent(in) |
nx, |
|
|
integer, intent(in) |
nz, |
|
|
integer, intent(in) |
ny |
|
) |
| |
|
private |
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_data | 2D array of longitudes (either -180 - 180 or 0 - 360)
|
subroutine init::copy_z |
( |
class(interpolable_type), intent(in) |
input, |
|
|
class(interpolable_type), intent(inout) |
output, |
|
|
integer, intent(in) |
interpolate_dim |
|
) |
| |
|
private |
subroutine init::destroy_lut |
( |
type(geo_look_up_table), intent(inout) |
geolut | ) |
|
|
private |
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 |
subroutine init::init_bc |
( |
type(options_type), intent(in) |
options, |
|
|
type(domain_type), intent(inout) |
domain, |
|
|
type(bc_type), intent(inout) |
boundary |
|
) |
| |
|
private |
subroutine init::init_bc_data |
( |
type(options_type), intent(in) |
options, |
|
|
type(bc_type), intent(inout) |
boundary, |
|
|
type(domain_type), intent(in) |
domain |
|
) |
| |
|
private |
subroutine init::init_domain |
( |
type(options_type), intent(in) |
options, |
|
|
type(domain_type), intent(inout) |
domain |
|
) |
| |
|
private |
subroutine init::init_domain_land |
( |
type(domain_type), intent(inout) |
domain, |
|
|
type(options_type), intent(in) |
options |
|
) |
| |
|
private |
subroutine init::init_ext_winds |
( |
type(options_type), intent(in) |
options, |
|
|
type(bc_type), intent(inout) |
bc |
|
) |
| |
|
private |
subroutine, public init::init_model |
( |
type(options_type), intent(inout) |
options, |
|
|
type(domain_type), intent(inout) |
domain, |
|
|
type(bc_type), intent(inout) |
boundary |
|
) |
| |
subroutine, public init::init_physics |
( |
type(options_type), intent(in) |
options, |
|
|
type(domain_type), intent(inout) |
domain |
|
) |
| |
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_in | real 2D array to be interpolated |
[out] | data_out | real 2D allocatable array to store the interpolated output
|
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_in | real 2D array to be interpolated |
[out] | data_out | real 2D allocatable array to store the interpolated output
|
subroutine init::move_lut |
( |
type(geo_look_up_table), intent(inout) |
inputgeo, |
|
|
type(geo_look_up_table), intent(inout) |
outputgeo |
|
) |
| |
|
private |
subroutine init::remove_edges |
( |
type(domain_type), intent(inout) |
domain, |
|
|
integer, intent(in) |
edgesize |
|
) |
| |
|
private |
subroutine init::setup_extwinds |
( |
type(wind_type), intent(inout) |
domain | ) |
|
|
private |
subroutine init::swap_z |
( |
type(bc_type), intent(inout) |
bc | ) |
|
|
private |
The documentation for this module was generated from the following file: