diff --git a/chgres_cube/annotated_dup.js b/chgres_cube/annotated_dup.js new file mode 100644 index 000000000..4979e35d1 --- /dev/null +++ b/chgres_cube/annotated_dup.js @@ -0,0 +1,4 @@ +var annotated_dup = +[ + [ "surface", "namespacesurface.html", "namespacesurface" ] +]; \ No newline at end of file diff --git a/chgres_cube/atm__input__data_8F90.js b/chgres_cube/atm__input__data_8F90.js new file mode 100644 index 000000000..04d099d11 --- /dev/null +++ b/chgres_cube/atm__input__data_8F90.js @@ -0,0 +1,29 @@ +var atm__input__data_8F90 = +[ + [ "calcalpha_rotlatlon", "atm__input__data_8F90.html#a51cca8f975601a1b1150c2f4d18847aa", null ], + [ "cleanup_input_atm_data", "atm__input__data_8F90.html#a9cb9a7c1cc8d4adfb3607fcc42e68e8c", null ], + [ "convert_winds_to_xyz", "atm__input__data_8F90.html#a538a770a36fda1271efee63a5e29a510", null ], + [ "gridrot", "atm__input__data_8F90.html#a955d043afabaa621cebd6e0bb1851f48", null ], + [ "init_atm_esmf_fields", "atm__input__data_8F90.html#a5f7d910189f475a311bcbaa9e9c0a400", null ], + [ "read_input_atm_data", "atm__input__data_8F90.html#ae81beb7035413010a27c9cd30c1599ab", null ], + [ "read_input_atm_gaussian_netcdf_file", "atm__input__data_8F90.html#af0df614e570fb2d35809a47db2db9d77", null ], + [ "read_input_atm_grib2_file", "atm__input__data_8F90.html#a48943f2cba1d578cd67bc1c975e33c09", null ], + [ "read_input_atm_restart_file", "atm__input__data_8F90.html#ad9722b22f0f8e0cbc6ab9bf8f1769399", null ], + [ "read_input_atm_tiled_history_file", "atm__input__data_8F90.html#aa7e9e23821a9f812b7739efc01bb47fe", null ], + [ "read_winds", "atm__input__data_8F90.html#a545b9ea8ac234861f75db0313b3e151e", null ], + [ "dpres_input_grid", "atm__input__data_8F90.html#a95498f5c7bceb0be3f4935f54c19800a", null ], + [ "dzdt_input_grid", "atm__input__data_8F90.html#a56de20f783cf67f2ce935c72c6df08a2", null ], + [ "lev_input", "atm__input__data_8F90.html#aab8e581b6cbf6f84d4b694286f9f405d", null ], + [ "levp1_input", "atm__input__data_8F90.html#ad6467da1897e2226ad31f66fa89eaf8f", null ], + [ "pres_input_grid", "atm__input__data_8F90.html#a5f44924ecec3e08a8660aef4d1b2072b", null ], + [ "ps_input_grid", "atm__input__data_8F90.html#a8d85e121cb4ddeb66179cad680156d96", null ], + [ "slevs", "atm__input__data_8F90.html#ae4e241c9343c9c48bff785779aaa579e", null ], + [ "temp_input_grid", "atm__input__data_8F90.html#a2fd9eb8eca479332cb88f6bec5bd2219", null ], + [ "terrain_input_grid", "atm__input__data_8F90.html#a4fa1ba60b3ab9f4585eff220de7f7237", null ], + [ "tracers_input_grid", "atm__input__data_8F90.html#a756505eb6868536f71558fdbb1c4fb77", null ], + [ "u_input_grid", "atm__input__data_8F90.html#a51d4d356554796e850432af8ca90b1f0", null ], + [ "v_input_grid", "atm__input__data_8F90.html#aaa4196ca1738565c877f41c551bf581d", null ], + [ "xwind_input_grid", "atm__input__data_8F90.html#a542b1160c5f872263938bacfee0b7361", null ], + [ "ywind_input_grid", "atm__input__data_8F90.html#aad0fa7d30aed9c516b94914bcd2d7801", null ], + [ "zwind_input_grid", "atm__input__data_8F90.html#a34e522f4cea6c96e6a9bd2b89355494d", null ] +]; \ No newline at end of file diff --git a/chgres_cube/atmosphere_8F90.js b/chgres_cube/atmosphere_8F90.js new file mode 100644 index 000000000..f14f311a7 --- /dev/null +++ b/chgres_cube/atmosphere_8F90.js @@ -0,0 +1,41 @@ +var atmosphere_8F90 = +[ + [ "atmosphere_driver", "atmosphere_8F90.html#a79bac062052ba98de5baa9ea854410fe", null ], + [ "cleanup_all_target_atm_data", "atmosphere_8F90.html#aef1da0871469093e31a1e0d7a2174151", null ], + [ "cleanup_target_atm_b4adj_data", "atmosphere_8F90.html#a5c8ce1e6155790ac7638002aa96a6076", null ], + [ "compute_zh", "atmosphere_8F90.html#a70694e8d634701fdfea61d171f1204e3", null ], + [ "convert_winds_to_uv", "atmosphere_8F90.html#ad92390d2e15b6f6ae0fed71aec81d59b", null ], + [ "create_atm_b4adj_esmf_fields", "atmosphere_8F90.html#a67a8ac36ae3346e7697cc649ce6d7c8c", null ], + [ "create_atm_esmf_fields", "atmosphere_8F90.html#a02995fb2860e5b1df218feea4a8d3534", null ], + [ "horiz_interp_thomp_mp_climo", "atmosphere_8F90.html#a38c65833316fd634cb4c3a20daf1d42a", null ], + [ "newpr1", "atmosphere_8F90.html#a449da9a0abe3032a16345f130761b9d2", null ], + [ "newps", "atmosphere_8F90.html#a5b202a3c172ff40138e91a1bf3194c75", null ], + [ "read_vcoord_info", "atmosphere_8F90.html#a599eba98c80c6385ff414a999f90e58c", null ], + [ "rsearch", "atmosphere_8F90.html#aaa24ebe3a052a09f6c56de4af72f55d5", null ], + [ "terp3", "atmosphere_8F90.html#acc4e65688bda454688a6f571d6939ae7", null ], + [ "vintg", "atmosphere_8F90.html#ac2e8e7011d742763f5e4a790de675e61", null ], + [ "vintg_thomp_mp_climo", "atmosphere_8F90.html#a528c56e9ed17885c9f73216673b0e0a4", null ], + [ "vintg_wam", "atmosphere_8F90.html#ad8e993d76c65e4183ed3dbdd74bd0125", null ], + [ "dzdt_b4adj_target_grid", "atmosphere_8F90.html#aa2ebcdf275c5929227a4ab39e5580b34", null ], + [ "pres_b4adj_target_grid", "atmosphere_8F90.html#a429afd90f6a61146dbbf51b325d2eb2c", null ], + [ "pres_target_grid", "atmosphere_8F90.html#a3dc2d3c32b33b6ade7deb0cc4b16cbb9", null ], + [ "ps_b4adj_target_grid", "atmosphere_8F90.html#a7059de7ec72c92d6ef0ca8ff0aef56d3", null ], + [ "qnifa_climo_b4adj_target_grid", "atmosphere_8F90.html#ae32652c7830afbfd567ea5e2c52038fe", null ], + [ "qnwfa_climo_b4adj_target_grid", "atmosphere_8F90.html#aea2936574cdb0e6bc6e29d8c6c420c51", null ], + [ "temp_b4adj_target_grid", "atmosphere_8F90.html#a55d40bda2f827e9ed21c40d4e676e85a", null ], + [ "terrain_interp_to_target_grid", "atmosphere_8F90.html#a5f58f056700160a14d63f714f159d602", null ], + [ "thomp_pres_climo_b4adj_target_grid", "atmosphere_8F90.html#aafe6ca3fd7ee7dc74023c56c7e2f4e07", null ], + [ "tracers_b4adj_target_grid", "atmosphere_8F90.html#ad1b787f0c8c092265db64ea501ee1015", null ], + [ "xwind_b4adj_target_grid", "atmosphere_8F90.html#a35d8e90b1cd9cf4fc607c8f6b99c7d7a", null ], + [ "xwind_s_target_grid", "atmosphere_8F90.html#a60f36fb1ec55f30a6394f68c94b21f08", null ], + [ "xwind_target_grid", "atmosphere_8F90.html#aa95032cc53053d34f7ab0f9c46f7714c", null ], + [ "xwind_w_target_grid", "atmosphere_8F90.html#a8761cafd77d853c4452ab9778ab695c8", null ], + [ "ywind_b4adj_target_grid", "atmosphere_8F90.html#a31ecc77bf689378ffc10a4c7024fcbb7", null ], + [ "ywind_s_target_grid", "atmosphere_8F90.html#a0fcd709b3b967ed1ab970754d2eb25b8", null ], + [ "ywind_target_grid", "atmosphere_8F90.html#a61fb3af50dce106e4bd077286d4d286c", null ], + [ "ywind_w_target_grid", "atmosphere_8F90.html#a284051984d4daa275f0b9c1181389704", null ], + [ "zwind_b4adj_target_grid", "atmosphere_8F90.html#ab0b883e8e5652f0c85cc713f9c40c20f", null ], + [ "zwind_s_target_grid", "atmosphere_8F90.html#a1893b4f281a29f1e0bfc5ba8c2100473", null ], + [ "zwind_target_grid", "atmosphere_8F90.html#a01f02494455b087d89f35b7050952384", null ], + [ "zwind_w_target_grid", "atmosphere_8F90.html#ac3eb0927b891b8f20681fc713f0b8061", null ] +]; \ No newline at end of file diff --git a/chgres_cube/atmosphere__target__data_8F90.js b/chgres_cube/atmosphere__target__data_8F90.js new file mode 100644 index 000000000..36b716045 --- /dev/null +++ b/chgres_cube/atmosphere__target__data_8F90.js @@ -0,0 +1,20 @@ +var atmosphere__target__data_8F90 = +[ + [ "cleanup_atmosphere_target_data", "atmosphere__target__data_8F90.html#a0e92ff8cac8681bc267468783024ba95", null ], + [ "delp_target_grid", "atmosphere__target__data_8F90.html#ad2b54e148600b9347a98a105640be5ed", null ], + [ "dzdt_target_grid", "atmosphere__target__data_8F90.html#a73a8de0a94f2eb3bcbc7f21da0f990f2", null ], + [ "lev_target", "atmosphere__target__data_8F90.html#ab08174d64f085a53ab9c20978ed1d108", null ], + [ "levp1_target", "atmosphere__target__data_8F90.html#a87edc87067aacbcf6ee67168646404fb", null ], + [ "nvcoord_target", "atmosphere__target__data_8F90.html#a9948156fdd760009a18825699e798d17", null ], + [ "ps_target_grid", "atmosphere__target__data_8F90.html#a605db1d33dbfc96bd51c360fe1201e29", null ], + [ "qnifa_climo_target_grid", "atmosphere__target__data_8F90.html#ababa05266975d9c3a42e98fd79e2bc18", null ], + [ "qnwfa_climo_target_grid", "atmosphere__target__data_8F90.html#ab4c66671eb081387995e185351612f19", null ], + [ "temp_target_grid", "atmosphere__target__data_8F90.html#aa39186f2a0ad85ae3f028b627da49b70", null ], + [ "tracers_target_grid", "atmosphere__target__data_8F90.html#aa49b6bf6d3ecc231d11a3937180c785a", null ], + [ "u_s_target_grid", "atmosphere__target__data_8F90.html#a28e45bf409f3c513650629f0286f74fd", null ], + [ "u_w_target_grid", "atmosphere__target__data_8F90.html#a9ed417f30cf022e3d7e5e54a94b1a46d", null ], + [ "v_s_target_grid", "atmosphere__target__data_8F90.html#a7367b2dd6da625d0e9a1a4f2d527b556", null ], + [ "v_w_target_grid", "atmosphere__target__data_8F90.html#ae8edaa88be7b0f1954d64d53abd608d0", null ], + [ "vcoord_target", "atmosphere__target__data_8F90.html#afc618635f7de13c229fb2b45c1f5c89c", null ], + [ "zh_target_grid", "atmosphere__target__data_8F90.html#a9587b2eb709966d8651640ba404fb4da", null ] +]; \ No newline at end of file diff --git a/chgres_cube/doc.png b/chgres_cube/doc.png new file mode 100644 index 000000000..17edabff9 Binary files /dev/null and b/chgres_cube/doc.png differ diff --git a/chgres_cube/files_dup.js b/chgres_cube/files_dup.js new file mode 100644 index 000000000..082f56c87 --- /dev/null +++ b/chgres_cube/files_dup.js @@ -0,0 +1,4 @@ +var files_dup = +[ + [ "sorc", "dir_d8b772108138bf796aaa3f7fe4e09294.html", "dir_d8b772108138bf796aaa3f7fe4e09294" ] +]; \ No newline at end of file diff --git a/chgres_cube/folderclosed.png b/chgres_cube/folderclosed.png new file mode 100644 index 000000000..bb8ab35ed Binary files /dev/null and b/chgres_cube/folderclosed.png differ diff --git a/chgres_cube/folderopen.png b/chgres_cube/folderopen.png new file mode 100644 index 000000000..d6c7f676a Binary files /dev/null and b/chgres_cube/folderopen.png differ diff --git a/chgres_cube/grib2__util_8F90.js b/chgres_cube/grib2__util_8F90.js new file mode 100644 index 000000000..f15c9a538 --- /dev/null +++ b/chgres_cube/grib2__util_8F90.js @@ -0,0 +1,7 @@ +var grib2__util_8F90 = +[ + [ "convert_omega", "grib2__util_8F90.html#ab6b929a42b20e3a5dbef3b30024f1c43", null ], + [ "fpvsnew", "grib2__util_8F90.html#a014ba8acc9b41fc25ccb40c9bd2900d3", null ], + [ "rh2spfh", "grib2__util_8F90.html#ab4a2b2171e318712bd819dffa1648fa0", null ], + [ "rh2spfh_gfs", "grib2__util_8F90.html#ac4d873e3a137ec2abcaeb7f735b021ae", null ] +]; \ No newline at end of file diff --git a/chgres_cube/man/man3/ice_temp_target_grid.3 b/chgres_cube/man/man3/ice_temp_target_grid.3 new file mode 100644 index 000000000..53d712106 --- /dev/null +++ b/chgres_cube/man/man3/ice_temp_target_grid.3 @@ -0,0 +1 @@ +.so man3/surface_target_data.3 diff --git a/chgres_cube/man/man3/land_frac_target_grid.3 b/chgres_cube/man/man3/land_frac_target_grid.3 new file mode 100644 index 000000000..a3fee5438 --- /dev/null +++ b/chgres_cube/man/man3/land_frac_target_grid.3 @@ -0,0 +1 @@ +.so man3/model_grid.3 diff --git a/chgres_cube/man/man3/missing.3 b/chgres_cube/man/man3/missing.3 new file mode 100644 index 000000000..d945fc72a --- /dev/null +++ b/chgres_cube/man/man3/missing.3 @@ -0,0 +1 @@ +.so man3/surface.3 diff --git a/chgres_cube/man/man3/snow_depth_at_ice_target_grid.3 b/chgres_cube/man/man3/snow_depth_at_ice_target_grid.3 new file mode 100644 index 000000000..53d712106 --- /dev/null +++ b/chgres_cube/man/man3/snow_depth_at_ice_target_grid.3 @@ -0,0 +1 @@ +.so man3/surface_target_data.3 diff --git a/chgres_cube/man/man3/snow_liq_equiv_at_ice_target_grid.3 b/chgres_cube/man/man3/snow_liq_equiv_at_ice_target_grid.3 new file mode 100644 index 000000000..53d712106 --- /dev/null +++ b/chgres_cube/man/man3/snow_liq_equiv_at_ice_target_grid.3 @@ -0,0 +1 @@ +.so man3/surface_target_data.3 diff --git a/chgres_cube/man/man3/sst_target_grid.3 b/chgres_cube/man/man3/sst_target_grid.3 new file mode 100644 index 000000000..53d712106 --- /dev/null +++ b/chgres_cube/man/man3/sst_target_grid.3 @@ -0,0 +1 @@ +.so man3/surface_target_data.3 diff --git a/chgres_cube/man/man3/update_landmask.3 b/chgres_cube/man/man3/update_landmask.3 new file mode 100644 index 000000000..d945fc72a --- /dev/null +++ b/chgres_cube/man/man3/update_landmask.3 @@ -0,0 +1 @@ +.so man3/surface.3 diff --git a/chgres_cube/man/man3/z0_ice_target_grid.3 b/chgres_cube/man/man3/z0_ice_target_grid.3 new file mode 100644 index 000000000..53d712106 --- /dev/null +++ b/chgres_cube/man/man3/z0_ice_target_grid.3 @@ -0,0 +1 @@ +.so man3/surface_target_data.3 diff --git a/chgres_cube/man/man3/z0_water_target_grid.3 b/chgres_cube/man/man3/z0_water_target_grid.3 new file mode 100644 index 000000000..53d712106 --- /dev/null +++ b/chgres_cube/man/man3/z0_water_target_grid.3 @@ -0,0 +1 @@ +.so man3/surface_target_data.3 diff --git a/chgres_cube/menu.js b/chgres_cube/menu.js new file mode 100644 index 000000000..89aaf575c --- /dev/null +++ b/chgres_cube/menu.js @@ -0,0 +1,50 @@ +/* + @licstart The following is the entire license notice for the + JavaScript code in this file. + + Copyright (C) 1997-2017 by Dimitri van Heesch + + This program is free software; you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation; either version 2 of the License, or + (at your option) any later version. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License along + with this program; if not, write to the Free Software Foundation, Inc., + 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. + + @licend The above is the entire license notice + for the JavaScript code in this file + */ +function initMenu(relPath,searchEnabled,serverSide,searchPage,search) { + function makeTree(data,relPath) { + var result=''; + if ('children' in data) { + result+='
+ chgres_cube
+ 1.13.0
+
+ |
+
Read atmospheric data on the input grid. +More...
++Functions/Subroutines | |
subroutine | calcalpha_rotlatlon (latgrid, longrid, cenlat, cenlon, alpha) |
Calculate rotation angle for rotated latlon grids. More... | |
subroutine, public | cleanup_input_atm_data |
Free up memory associated with atm data. More... | |
subroutine, public | convert_winds_to_xyz |
Convert winds from 2-d to 3-d components. More... | |
subroutine | gridrot (lov, latin1, latin2, lon, rot) |
Compute grid rotation angle for non-latlon grids. More... | |
subroutine | init_atm_esmf_fields |
Create atmospheric esmf fields. More... | |
subroutine, public | read_input_atm_data (localpet) |
Read input grid atmospheric data driver. More... | |
subroutine | read_input_atm_gaussian_netcdf_file (localpet) |
Read fv3 netcdf gaussian history file. More... | |
subroutine | read_input_atm_grib2_file (localpet) |
Read input grid atmospheric fv3gfs grib2 files. More... | |
subroutine | read_input_atm_restart_file (localpet) |
Read input grid fv3 atmospheric data 'warm' restart files. More... | |
subroutine | read_input_atm_tiled_history_file (localpet) |
Read input grid fv3 atmospheric tiled history files in netcdf format. More... | |
subroutine | read_winds (u, v, localpet, octet_23, rlevs, lugb, pdt_num) |
Read winds from a grib2 file. More... | |
+Variables | |
type(esmf_field) | dpres_input_grid |
pressure thickness More... | |
type(esmf_field), public | dzdt_input_grid |
vert velocity More... | |
integer, public | lev_input |
number of atmospheric layers More... | |
integer, public | levp1_input |
number of atmos layer interfaces More... | |
type(esmf_field), public | pres_input_grid |
3-d pressure More... | |
type(esmf_field), public | ps_input_grid |
surface pressure More... | |
character(len=50), dimension(:), allocatable, private | slevs |
The atmospheric levels in the GRIB2 input file. More... | |
type(esmf_field), public | temp_input_grid |
temperature More... | |
type(esmf_field), public | terrain_input_grid |
terrain height More... | |
type(esmf_field), dimension(:), allocatable, public | tracers_input_grid |
tracers More... | |
type(esmf_field), public | u_input_grid |
u/v wind at grid More... | |
type(esmf_field), public | v_input_grid |
box center More... | |
type(esmf_field), public | xwind_input_grid |
x-component wind More... | |
type(esmf_field), public | ywind_input_grid |
y-component wind More... | |
type(esmf_field), public | zwind_input_grid |
z-component wind More... | |
Read atmospheric data on the input grid.
+Supported formats include fv3 tiled 'restart' files, fv3 tiled 'history' files, fv3 gaussian history files, spectral gfs gaussian nemsio files, and spectral gfs sigio/sfcio files.
+Public variables are defined below: "input" indicates field associated with the input grid.
+ +subroutine atm_input_data::calcalpha_rotlatlon | +( | +real(esmf_kind_r8), dimension(i_input,j_input), intent(in) | +latgrid, | +
+ | + | real(esmf_kind_r8), dimension(i_input,j_input), intent(in) | +longrid, | +
+ | + | real(esmf_kind_r4), intent(in) | +cenlat, | +
+ | + | real(esmf_kind_r4), intent(in) | +cenlon, | +
+ | + | real(esmf_kind_r4), dimension(i_input,j_input), intent(out) | +alpha | +
+ | ) | ++ |
Calculate rotation angle for rotated latlon grids.
+Needed to convert to earth-relative winds.
+[in] | latgrid | grid latitudes |
[in] | longrid | grid longitudes |
[in] | cenlat | center latitude |
[in] | cenlon | center longitude |
[out] | alpha | grid rotation angle |
Definition at line 3264 of file atm_input_data.F90.
+ +References model_grid::i_input, and model_grid::j_input.
+ +Referenced by read_winds().
+ +subroutine, public atm_input_data::cleanup_input_atm_data | +( | +) | ++ |
Free up memory associated with atm data.
+ + +Definition at line 3303 of file atm_input_data.F90.
+ +References dzdt_input_grid, program_setup::num_tracers_input, pres_input_grid, ps_input_grid, temp_input_grid, terrain_input_grid, tracers_input_grid, xwind_input_grid, ywind_input_grid, and zwind_input_grid.
+ +Referenced by atmosphere::atmosphere_driver().
+ +subroutine, public atm_input_data::convert_winds_to_xyz | +( | +) | ++ |
Convert winds from 2-d to 3-d components.
+ + +Definition at line 3133 of file atm_input_data.F90.
+ +References model_grid::latitude_input_grid, model_grid::longitude_input_grid, u_input_grid, v_input_grid, xwind_input_grid, ywind_input_grid, and zwind_input_grid.
+ +Referenced by init_atm_esmf_fields(), read_input_atm_gaussian_netcdf_file(), read_input_atm_grib2_file(), read_input_atm_restart_file(), and read_input_atm_tiled_history_file().
+ +
+
|
+ +private | +
Compute grid rotation angle for non-latlon grids.
+[in] | lov | orientation angle |
[in] | latin1 | first tangent latitude |
[in] | latin2 | second tangent latitude |
[in] | lon | longitude |
[in,out] | rot | rotation angle |
Definition at line 3223 of file atm_input_data.F90.
+ +References model_grid::i_input, and model_grid::j_input.
+ +Referenced by read_winds().
+ +
+
|
+ +private | +
Create atmospheric esmf fields.
+ + +Definition at line 152 of file atm_input_data.F90.
+ +References program_setup::atm_files_input_grid, convert_winds_to_xyz(), program_setup::data_dir_input_grid, dpres_input_grid, dzdt_input_grid, model_grid::i_input, model_grid::input_grid, model_grid::j_input, lev_input, levp1_input, program_setup::num_tracers_input, pres_input_grid, ps_input_grid, temp_input_grid, terrain_input_grid, program_setup::tracers_input, tracers_input_grid, u_input_grid, v_input_grid, xwind_input_grid, ywind_input_grid, and zwind_input_grid.
+ +Referenced by read_input_atm_gaussian_netcdf_file(), read_input_atm_grib2_file(), read_input_atm_restart_file(), and read_input_atm_tiled_history_file().
+ +subroutine, public atm_input_data::read_input_atm_data | +( | +integer, intent(in) | +localpet | ) | ++ |
Read input grid atmospheric data driver.
+[in] | localpet | ESMF local persistent execution thread |
Definition at line 80 of file atm_input_data.F90.
+ +References program_setup::input_type, read_input_atm_gaussian_netcdf_file(), read_input_atm_grib2_file(), read_input_atm_restart_file(), and read_input_atm_tiled_history_file().
+ +Referenced by atmosphere::atmosphere_driver().
+ +
+
|
+ +private | +
Read fv3 netcdf gaussian history file.
+Each task reads a horizontal slice.
+[in] | localpet | ESMF local persistent execution thread |
Definition at line 1308 of file atm_input_data.F90.
+ +References program_setup::atm_files_input_grid, convert_winds_to_xyz(), program_setup::data_dir_input_grid, dpres_input_grid, dzdt_input_grid, model_grid::i_input, init_atm_esmf_fields(), model_grid::input_grid, model_grid::j_input, lev_input, levp1_input, program_setup::num_tracers_input, pres_input_grid, ps_input_grid, temp_input_grid, terrain_input_grid, program_setup::tracers_input, tracers_input_grid, u_input_grid, and v_input_grid.
+ +Referenced by read_input_atm_data().
+ +subroutine atm_input_data::read_input_atm_grib2_file | +( | +integer, intent(in) | +localpet | ) | ++ |
Read input grid atmospheric fv3gfs grib2 files.
+[in] | localpet | ESMF local persistent execution thread |
Definition at line 1983 of file atm_input_data.F90.
+ +References grib2_util::convert_omega(), convert_winds_to_xyz(), program_setup::data_dir_input_grid, dzdt_input_grid, program_setup::external_model, program_setup::get_var_cond(), program_setup::grib2_file_input_grid, model_grid::i_input, init_atm_esmf_fields(), model_grid::j_input, lev_input, levp1_input, pres_input_grid, ps_input_grid, program_setup::read_from_input, read_winds(), grib2_util::rh2spfh(), grib2_util::rh2spfh_gfs(), slevs, temp_input_grid, terrain_input_grid, program_setup::tracers, program_setup::tracers_input, tracers_input_grid, u_input_grid, and v_input_grid.
+ +Referenced by read_input_atm_data().
+ +
+
|
+ +private | +
Read input grid fv3 atmospheric data 'warm' restart files.
+[in] | localpet | ESMF local persistent execution thread |
Definition at line 1049 of file atm_input_data.F90.
+ +References program_setup::atm_core_files_input_grid, program_setup::atm_tracer_files_input_grid, convert_winds_to_xyz(), program_setup::data_dir_input_grid, dpres_input_grid, dzdt_input_grid, model_grid::i_input, init_atm_esmf_fields(), model_grid::input_grid, model_grid::j_input, lev_input, levp1_input, model_grid::num_tiles_input_grid, program_setup::num_tracers_input, pres_input_grid, ps_input_grid, temp_input_grid, terrain_input_grid, program_setup::tracers_input, tracers_input_grid, u_input_grid, and v_input_grid.
+ +Referenced by read_input_atm_data().
+ +subroutine atm_input_data::read_input_atm_tiled_history_file | +( | +integer, intent(in) | +localpet | ) | ++ |
Read input grid fv3 atmospheric tiled history files in netcdf format.
+[in] | localpet | ESMF local persistent execution thread |
Definition at line 1692 of file atm_input_data.F90.
+ +References program_setup::atm_files_input_grid, convert_winds_to_xyz(), program_setup::data_dir_input_grid, dpres_input_grid, dzdt_input_grid, model_grid::i_input, init_atm_esmf_fields(), model_grid::input_grid, model_grid::j_input, lev_input, levp1_input, model_grid::num_tiles_input_grid, program_setup::num_tracers_input, pres_input_grid, ps_input_grid, temp_input_grid, terrain_input_grid, program_setup::tracers_input, tracers_input_grid, u_input_grid, and v_input_grid.
+ +Referenced by read_input_atm_data().
+ +subroutine atm_input_data::read_winds | +( | +real(esmf_kind_r8), dimension(:,:,:), intent(inout), allocatable | +u, | +
+ | + | real(esmf_kind_r8), dimension(:,:,:), intent(inout), allocatable | +v, | +
+ | + | integer, intent(in) | +localpet, | +
+ | + | integer, intent(in) | +octet_23, | +
+ | + | real(esmf_kind_r8), dimension(lev_input), intent(in) | +rlevs, | +
+ | + | integer, intent(in) | +lugb, | +
+ | + | integer, intent(in) | +pdt_num | +
+ | ) | ++ |
Read winds from a grib2 file.
+Rotate winds to be earth relative if necessary.
+[in,out] | u | u-component wind |
[in,out] | v | v-component wind |
[in] | localpet | ESMF local persistent execution thread |
[in] | octet_23 | Section 4/Octet 23 - Type of first fixed surface. |
[in] | rlevs | Array of atmospheric level values |
[in] | lugb | Logical unit number of GRIB2 file. |
[in] | pdt_num | Product definition template number. |
Definition at line 2950 of file atm_input_data.F90.
+ +References calcalpha_rotlatlon(), program_setup::get_var_cond(), gridrot(), model_grid::i_input, model_grid::j_input, model_grid::jp1_input, model_grid::latitude_input_grid, lev_input, model_grid::longitude_input_grid, and slevs.
+ +Referenced by read_input_atm_grib2_file().
+ +
+
|
+ +private | +
pressure thickness
+ +Definition at line 51 of file atm_input_data.F90.
+ +Referenced by init_atm_esmf_fields(), read_input_atm_gaussian_netcdf_file(), read_input_atm_restart_file(), and read_input_atm_tiled_history_file().
+ +type(esmf_field), public atm_input_data::dzdt_input_grid | +
vert velocity
+ +Definition at line 50 of file atm_input_data.F90.
+ +Referenced by atmosphere::atmosphere_driver(), cleanup_input_atm_data(), init_atm_esmf_fields(), read_input_atm_gaussian_netcdf_file(), read_input_atm_grib2_file(), read_input_atm_restart_file(), and read_input_atm_tiled_history_file().
+ +integer, public atm_input_data::lev_input | +
number of atmospheric layers
+ +Definition at line 64 of file atm_input_data.F90.
+ +Referenced by atmosphere::create_atm_b4adj_esmf_fields(), init_atm_esmf_fields(), read_input_atm_gaussian_netcdf_file(), read_input_atm_grib2_file(), read_input_atm_restart_file(), read_input_atm_tiled_history_file(), read_winds(), atmosphere::vintg(), and atmosphere::vintg_wam().
+ +integer, public atm_input_data::levp1_input | +
number of atmos layer interfaces
+ +Definition at line 65 of file atm_input_data.F90.
+ +Referenced by init_atm_esmf_fields(), read_input_atm_gaussian_netcdf_file(), read_input_atm_grib2_file(), read_input_atm_restart_file(), and read_input_atm_tiled_history_file().
+ +type(esmf_field), public atm_input_data::pres_input_grid | +
3-d pressure
+ +Definition at line 52 of file atm_input_data.F90.
+ +Referenced by atmosphere::atmosphere_driver(), cleanup_input_atm_data(), init_atm_esmf_fields(), read_input_atm_gaussian_netcdf_file(), read_input_atm_grib2_file(), read_input_atm_restart_file(), and read_input_atm_tiled_history_file().
+ +type(esmf_field), public atm_input_data::ps_input_grid | +
surface pressure
+ +Definition at line 53 of file atm_input_data.F90.
+ +Referenced by atmosphere::atmosphere_driver(), cleanup_input_atm_data(), init_atm_esmf_fields(), read_input_atm_gaussian_netcdf_file(), read_input_atm_grib2_file(), read_input_atm_restart_file(), and read_input_atm_tiled_history_file().
+ +
+
|
+ +private | +
The atmospheric levels in the GRIB2 input file.
+ +Definition at line 67 of file atm_input_data.F90.
+ +Referenced by read_input_atm_grib2_file(), and read_winds().
+ +type(esmf_field), public atm_input_data::temp_input_grid | +
temperature
+ +Definition at line 55 of file atm_input_data.F90.
+ +Referenced by atmosphere::atmosphere_driver(), cleanup_input_atm_data(), init_atm_esmf_fields(), read_input_atm_gaussian_netcdf_file(), read_input_atm_grib2_file(), read_input_atm_restart_file(), and read_input_atm_tiled_history_file().
+ +type(esmf_field), public atm_input_data::terrain_input_grid | +
terrain height
+ +Definition at line 54 of file atm_input_data.F90.
+ +Referenced by atmosphere::atmosphere_driver(), cleanup_input_atm_data(), sfc_input_data::cleanup_input_sfc_data(), init_atm_esmf_fields(), sfc_input_data::init_sfc_esmf_fields(), surface::interp(), read_input_atm_gaussian_netcdf_file(), read_input_atm_grib2_file(), read_input_atm_restart_file(), read_input_atm_tiled_history_file(), sfc_input_data::read_input_sfc_data(), sfc_input_data::read_input_sfc_grib2_file(), sfc_input_data::read_input_sfc_netcdf_file(), and sfc_input_data::read_input_sfc_restart_file().
+ +type(esmf_field), dimension(:), allocatable, public atm_input_data::tracers_input_grid | +
tracers
+ +Definition at line 62 of file atm_input_data.F90.
+ +Referenced by atmosphere::atmosphere_driver(), cleanup_input_atm_data(), init_atm_esmf_fields(), read_input_atm_gaussian_netcdf_file(), read_input_atm_grib2_file(), read_input_atm_restart_file(), and read_input_atm_tiled_history_file().
+ +type(esmf_field), public atm_input_data::u_input_grid | +
u/v wind at grid
+ +Definition at line 57 of file atm_input_data.F90.
+ +Referenced by convert_winds_to_xyz(), init_atm_esmf_fields(), read_input_atm_gaussian_netcdf_file(), read_input_atm_grib2_file(), read_input_atm_restart_file(), and read_input_atm_tiled_history_file().
+ +type(esmf_field), public atm_input_data::v_input_grid | +
box center
+ +Definition at line 58 of file atm_input_data.F90.
+ +Referenced by convert_winds_to_xyz(), init_atm_esmf_fields(), read_input_atm_gaussian_netcdf_file(), read_input_atm_grib2_file(), read_input_atm_restart_file(), and read_input_atm_tiled_history_file().
+ +type(esmf_field), public atm_input_data::xwind_input_grid | +
x-component wind
+ +Definition at line 59 of file atm_input_data.F90.
+ +Referenced by atmosphere::atmosphere_driver(), cleanup_input_atm_data(), convert_winds_to_xyz(), and init_atm_esmf_fields().
+ +type(esmf_field), public atm_input_data::ywind_input_grid | +
y-component wind
+ +Definition at line 60 of file atm_input_data.F90.
+ +Referenced by atmosphere::atmosphere_driver(), cleanup_input_atm_data(), convert_winds_to_xyz(), and init_atm_esmf_fields().
+ +type(esmf_field), public atm_input_data::zwind_input_grid | +
z-component wind
+ +Definition at line 61 of file atm_input_data.F90.
+ +Referenced by atmosphere::atmosphere_driver(), cleanup_input_atm_data(), convert_winds_to_xyz(), and init_atm_esmf_fields().
+ +
+ chgres_cube
+ 1.13.0
+
+ |
+
Process atmospheric fields. +More...
++Functions/Subroutines | |
subroutine, public | atmosphere_driver (localpet) |
Driver routine to process for atmospheric fields. More... | |
subroutine | cleanup_all_target_atm_data |
Cleanup target grid atmospheric field objects. More... | |
subroutine | cleanup_target_atm_b4adj_data |
Cleanup atmospheric field (before adjustment) objects. More... | |
subroutine | compute_zh |
Compute vertical level height. More... | |
subroutine | convert_winds_to_uv |
Convert 3-d component winds to u and v. More... | |
subroutine | create_atm_b4adj_esmf_fields |
Create target grid field objects to hold data before vertical interpolation. More... | |
subroutine | create_atm_esmf_fields |
Create target grid field objects. More... | |
subroutine | horiz_interp_thomp_mp_climo |
Horizontally interpolate thompson microphysics data to the target model grid. More... | |
subroutine | newpr1 (localpet) |
Computes 3-D pressure given an adjusted surface pressure. More... | |
subroutine | newps (localpet) |
Computes adjusted surface pressure given a new terrain height. More... | |
subroutine, public | read_vcoord_info |
Reads model vertical coordinate definition file (as specified by namelist variable vcoord_file_target_grid). More... | |
subroutine | rsearch (IM, KM1, IXZ1, KXZ1, Z1, KM2, IXZ2, KXZ2, Z2, IXL2, KXL2, L2) |
Search for a surrounding real interval. More... | |
subroutine | terp3 (IM, IXZ1, IXQ1, IXZ2, IXQ2, NM, NXQ1, NXQ2, KM1, KXZ1, KXQ1, Z1, Q1, KM2, KXZ2, KXQ2, Z2, Q2) |
Cubically interpolate in one dimension. More... | |
subroutine | vintg |
Vertically interpolate upper-air fields. More... | |
subroutine | vintg_thomp_mp_climo |
Vertically interpolate atmospheric fields to target FV3 grid. More... | |
subroutine | vintg_wam (YEAR, MONTH, DAY, HOUR, PF) |
Vertically extend model top into thermosphere for whole atmosphere model. More... | |
+Variables | |
type(esmf_field) | dzdt_b4adj_target_grid |
vertical vel before vert adj More... | |
type(esmf_field) | pres_b4adj_target_grid |
3-d pres before terrain adj More... | |
type(esmf_field) | pres_target_grid |
3-d pressure More... | |
type(esmf_field) | ps_b4adj_target_grid |
sfc pres before terrain adj More... | |
type(esmf_field) | qnifa_climo_b4adj_target_grid |
number concentration of ice friendly aerosols before vert adj More... | |
type(esmf_field) | qnwfa_climo_b4adj_target_grid |
number concentration of water friendly aerosols before vert adj More... | |
type(esmf_field) | temp_b4adj_target_grid |
temp before vert adj More... | |
type(esmf_field) | terrain_interp_to_target_grid |
Input grid terrain interpolated to target grid. More... | |
type(esmf_field) | thomp_pres_climo_b4adj_target_grid |
pressure of each level on target grid More... | |
type(esmf_field), dimension(:), allocatable | tracers_b4adj_target_grid |
tracers before vert adj More... | |
type(esmf_field) | xwind_b4adj_target_grid |
x-component wind, before vert adj More... | |
type(esmf_field) | xwind_s_target_grid |
x-component wind, 'south' edge More... | |
type(esmf_field) | xwind_target_grid |
x-component wind, grid box center More... | |
type(esmf_field) | xwind_w_target_grid |
x-component wind, 'west' edge More... | |
type(esmf_field) | ywind_b4adj_target_grid |
y-component wind, before vert adj More... | |
type(esmf_field) | ywind_s_target_grid |
y-component wind, 'south' edge More... | |
type(esmf_field) | ywind_target_grid |
y-component wind, grid box center More... | |
type(esmf_field) | ywind_w_target_grid |
y-component wind, 'west' edge More... | |
type(esmf_field) | zwind_b4adj_target_grid |
z-component wind, before vert adj More... | |
type(esmf_field) | zwind_s_target_grid |
z-component wind, 'south' edge More... | |
type(esmf_field) | zwind_target_grid |
z-component wind, grid box center More... | |
type(esmf_field) | zwind_w_target_grid |
z-component wind, 'west' edge More... | |
Process atmospheric fields.
+Horizontally interpolate from input to target FV3 grid using ESMF regridding. Adjust surface pressure according to terrain differences between input and target grid. Vertically interpolate to target FV3 grid vertical levels. Processing based on the spectral GFS version of CHGRES.
+For variables "b4adj" indicates fields on the target grid before vertical adjustment. "target" indicates data on target grid. "input" indicates data on input grid. "_s" indicates fields on the 'south' edge of the grid box. "_w" indicate fields on the 'west' edge of the grid box. Otherwise, fields are at the center of the grid box.
+ +subroutine, public atmosphere::atmosphere_driver | +( | +integer, intent(in) | +localpet | ) | ++ |
Driver routine to process for atmospheric fields.
+[in] | localpet | ESMF local persistent execution thread |
Definition at line 119 of file atmosphere.F90.
+ +References program_setup::atm_weight_file, cleanup_all_target_atm_data(), atm_input_data::cleanup_input_atm_data(), cleanup_target_atm_b4adj_data(), compute_zh(), convert_winds_to_uv(), create_atm_b4adj_esmf_fields(), create_atm_esmf_fields(), program_setup::cycle_day, program_setup::cycle_hour, program_setup::cycle_mon, program_setup::cycle_year, dzdt_b4adj_target_grid, atm_input_data::dzdt_input_grid, horiz_interp_thomp_mp_climo(), newpr1(), newps(), program_setup::num_tracers_input, pres_b4adj_target_grid, atm_input_data::pres_input_grid, ps_b4adj_target_grid, atm_input_data::ps_input_grid, atm_input_data::read_input_atm_data(), thompson_mp_climo_data::read_thomp_mp_climo_data(), read_vcoord_info(), program_setup::regional, temp_b4adj_target_grid, atm_input_data::temp_input_grid, atm_input_data::terrain_input_grid, terrain_interp_to_target_grid, program_setup::tracers, tracers_b4adj_target_grid, atm_input_data::tracers_input_grid, program_setup::use_thomp_mp_climo, vintg(), vintg_thomp_mp_climo(), vintg_wam(), program_setup::wam_cold_start, program_setup::wam_parm_file, xwind_b4adj_target_grid, atm_input_data::xwind_input_grid, xwind_s_target_grid, xwind_target_grid, xwind_w_target_grid, ywind_b4adj_target_grid, atm_input_data::ywind_input_grid, ywind_s_target_grid, ywind_target_grid, ywind_w_target_grid, zwind_b4adj_target_grid, atm_input_data::zwind_input_grid, zwind_s_target_grid, zwind_target_grid, and zwind_w_target_grid.
+ +Referenced by chgres().
+ +
+
|
+ +private | +
Cleanup target grid atmospheric field objects.
+ + +Definition at line 2386 of file atmosphere.F90.
+ +References atmosphere_target_data::cleanup_atmosphere_target_data(), pres_target_grid, xwind_s_target_grid, xwind_target_grid, xwind_w_target_grid, ywind_s_target_grid, ywind_target_grid, ywind_w_target_grid, zwind_s_target_grid, zwind_target_grid, and zwind_w_target_grid.
+ +Referenced by atmosphere_driver().
+ +
+
|
+ +private | +
Cleanup atmospheric field (before adjustment) objects.
+ + +Definition at line 2359 of file atmosphere.F90.
+ +References dzdt_b4adj_target_grid, program_setup::num_tracers_input, pres_b4adj_target_grid, ps_b4adj_target_grid, temp_b4adj_target_grid, terrain_interp_to_target_grid, tracers_b4adj_target_grid, xwind_b4adj_target_grid, ywind_b4adj_target_grid, and zwind_b4adj_target_grid.
+ +Referenced by atmosphere_driver().
+ +
+
|
+ +private | +
Compute vertical level height.
+ + +Definition at line 2269 of file atmosphere.F90.
+ +References atmosphere_target_data::levp1_target, program_setup::num_tracers, atmosphere_target_data::ps_target_grid, atmosphere_target_data::temp_target_grid, model_grid::terrain_target_grid, program_setup::tracers, atmosphere_target_data::tracers_target_grid, atmosphere_target_data::vcoord_target, and atmosphere_target_data::zh_target_grid.
+ +Referenced by atmosphere_driver().
+ +
+
|
+ +private | +
Convert 3-d component winds to u and v.
+ + +Definition at line 780 of file atmosphere.F90.
+ +References model_grid::latitude_s_target_grid, model_grid::latitude_w_target_grid, model_grid::longitude_s_target_grid, model_grid::longitude_w_target_grid, atmosphere_target_data::u_s_target_grid, atmosphere_target_data::u_w_target_grid, atmosphere_target_data::v_s_target_grid, atmosphere_target_data::v_w_target_grid, xwind_s_target_grid, xwind_w_target_grid, ywind_s_target_grid, ywind_w_target_grid, zwind_s_target_grid, and zwind_w_target_grid.
+ +Referenced by atmosphere_driver().
+ +subroutine atmosphere::create_atm_b4adj_esmf_fields | +( | +) | ++ |
Create target grid field objects to hold data before vertical interpolation.
+These will be defined with the same number of vertical levels as the input grid.
+ + +Definition at line 495 of file atmosphere.F90.
+ +References dzdt_b4adj_target_grid, atm_input_data::lev_input, program_setup::num_tracers_input, pres_b4adj_target_grid, ps_b4adj_target_grid, model_grid::target_grid, temp_b4adj_target_grid, terrain_interp_to_target_grid, program_setup::tracers, tracers_b4adj_target_grid, xwind_b4adj_target_grid, ywind_b4adj_target_grid, and zwind_b4adj_target_grid.
+ +Referenced by atmosphere_driver().
+ +
+
|
+ +private | +
Create target grid field objects.
+ + +Definition at line 587 of file atmosphere.F90.
+ +References atmosphere_target_data::delp_target_grid, atmosphere_target_data::dzdt_target_grid, atmosphere_target_data::lev_target, atmosphere_target_data::levp1_target, program_setup::num_tracers, pres_target_grid, atmosphere_target_data::ps_target_grid, model_grid::target_grid, atmosphere_target_data::temp_target_grid, program_setup::tracers, atmosphere_target_data::tracers_target_grid, atmosphere_target_data::u_s_target_grid, atmosphere_target_data::u_w_target_grid, atmosphere_target_data::v_s_target_grid, atmosphere_target_data::v_w_target_grid, xwind_s_target_grid, xwind_target_grid, xwind_w_target_grid, ywind_s_target_grid, ywind_target_grid, ywind_w_target_grid, atmosphere_target_data::zh_target_grid, zwind_s_target_grid, zwind_target_grid, and zwind_w_target_grid.
+ +Referenced by atmosphere_driver().
+ +
+
|
+ +private | +
Horizontally interpolate thompson microphysics data to the target model grid.
+ + +Definition at line 1292 of file atmosphere.F90.
+ +References thompson_mp_climo_data::cleanup_thomp_mp_climo_input_data(), atmosphere_target_data::lev_target, thompson_mp_climo_data::lev_thomp_mp_climo, qnifa_climo_b4adj_target_grid, thompson_mp_climo_data::qnifa_climo_input_grid, atmosphere_target_data::qnifa_climo_target_grid, qnwfa_climo_b4adj_target_grid, thompson_mp_climo_data::qnwfa_climo_input_grid, atmosphere_target_data::qnwfa_climo_target_grid, model_grid::target_grid, thomp_pres_climo_b4adj_target_grid, and thompson_mp_climo_data::thomp_pres_climo_input_grid.
+ +Referenced by atmosphere_driver().
+ +
+
|
+ +private | +
Computes 3-D pressure given an adjusted surface pressure.
+program history log:
+ 2005-04-11 Hann-Ming Henry Juang hybrid sigma, sigma-p, and sigma-
[in] | localpet | ESMF local persistent execution thread + |
Definition at line 949 of file atmosphere.F90.
+ +References atmosphere_target_data::delp_target_grid, atmosphere_target_data::lev_target, atmosphere_target_data::levp1_target, pres_target_grid, atmosphere_target_data::ps_target_grid, and atmosphere_target_data::vcoord_target.
+ +Referenced by atmosphere_driver().
+ +
+
|
+ +private | +
Computes adjusted surface pressure given a new terrain height.
+Computes a new surface pressure given a new orography. The new pressure is computed assuming a hydrostatic balance and a constant temperature lapse rate. Below ground, the lapse rate is assumed to be -6.5 k/km.
+program history log:
[in] | localpet | ESMF local persistent execution thread |
Definition at line 1060 of file atmosphere.F90.
+ +References program_setup::num_tracers, pres_b4adj_target_grid, ps_b4adj_target_grid, atmosphere_target_data::ps_target_grid, temp_b4adj_target_grid, terrain_interp_to_target_grid, model_grid::terrain_target_grid, program_setup::tracers, and tracers_b4adj_target_grid.
+ +Referenced by atmosphere_driver().
+ +subroutine, public atmosphere::read_vcoord_info | +( | +) | ++ |
Reads model vertical coordinate definition file (as specified by namelist variable vcoord_file_target_grid).
+ + +Definition at line 1257 of file atmosphere.F90.
+ +References atmosphere_target_data::lev_target, atmosphere_target_data::levp1_target, atmosphere_target_data::nvcoord_target, program_setup::vcoord_file_target_grid, and atmosphere_target_data::vcoord_target.
+ +Referenced by atmosphere_driver().
+ +
+
|
+ +private | +
Search for a surrounding real interval.
+This subprogram searches monotonic sequences of real numbers for intervals that surround a given search set of real numbers. The sequences may be monotonic in either direction; the real numbers may be single or double precision; the input sequences and sets and the output locations may be arbitrarily dimensioned.
+If the array z1 is dimensioned (im,km1), then the skip numbers are ixz1=1 and kxz1=im; if it is dimensioned (km1,im), then the skip numbers are ixz1=km1 and kxz1=1; if it is dimensioned (im,jm,km1), then the skip numbers are ixz1=1 and kxz1=im*jm; etcetera. Similar examples apply to the skip numbers for z2 and l2.
+Returned values of 0 or km1 indicate that the given search value
+ is outside the range of the sequence.
If a search value is identical to one of the sequence values then the location returned points to the identical value. If the sequence is not strictly monotonic and a search value is identical to more than one of the sequence values, then the location returned may point to any of the identical values.
+to be exact, for each i from 1 to im and for each k from 1 to km2, z=z2(1+(i-1)*ixz2+(k-1)*kxz2) is the search value and l=l2(1+(i-1)*ixl2+(k-1)*kxl2) is the location returned. if l=0, then z is less than the start point z1(1+(i-1)*ixz1) for ascending sequences (or greater than for descending sequences). if l=km1, then z is greater than or equal to the end point z1(1+(i-1)*ixz1+(km1-1)*kxz1) for ascending sequences (or less than or equal to for descending sequences). otherwise z is between the values z1(1+(i-1)*ixz1+(l-1)*kxz1) and z1(1+(i-1)*ixz1+(l-0)*kxz1) and may equal the former.
+[in] | im | integer number of sequences to search + |
[in] | km1 | integer number of points in each sequence + |
[in] | ixz1 | integer sequence skip number for z1 + |
[in] | kxz1 | integer point skip number for z1 + |
[in] | z1 | real (1+(im-1)*ixz1+(km1-1)*kxz1) + sequence values to search + (z1 must be monotonic in either direction) + |
[in] | km2 | integer number of points to search for + in each respective sequence + |
[in] | ixz2 | integer sequence skip number for z2 + |
[in] | kxz2 | integer point skip number for z2 + |
[in] | z2 | real (1+(im-1)*ixz2+(km2-1)*kxz2) + set of values to search for + (z2 need not be monotonic) + |
[in] | ixl2 | integer sequence skip number for l2 + |
[in] | kxl2 | integer point skip number for l2 + |
[out] | l2 | integer (1+(im-1)*ixl2+(km2-1)*kxl2) + interval locations having values from 0 to km1 + (z2 will be between z1(l2) and z1(l2+1)) + |
Definition at line 2221 of file atmosphere.F90.
+ +Referenced by terp3().
+ +subroutine atmosphere::terp3 | +( | +integer | +IM, | +
+ | + | integer | +IXZ1, | +
+ | + | integer | +IXQ1, | +
+ | + | integer | +IXZ2, | +
+ | + | integer | +IXQ2, | +
+ | + | integer | +NM, | +
+ | + | integer | +NXQ1, | +
+ | + | integer | +NXQ2, | +
+ | + | integer | +KM1, | +
+ | + | integer | +KXZ1, | +
+ | + | integer | +KXQ1, | +
+ | + | real(esmf_kind_r8), dimension(1+(im-1)*ixz1+(km1-1)*kxz1) | +Z1, | +
+ | + | real(esmf_kind_r8), dimension(1+(im-1)*ixq1+(km1-1)*kxq1+(nm-1)*nxq1) | +Q1, | +
+ | + | integer | +KM2, | +
+ | + | integer | +KXZ2, | +
+ | + | integer | +KXQ2, | +
+ | + | real(esmf_kind_r8), dimension(1+(im-1)*ixz2+(km2-1)*kxz2) | +Z2, | +
+ | + | real(esmf_kind_r8), dimension(1+(im-1)*ixq2+(km2-1)*kxq2+(nm-1)*nxq2) | +Q2 | +
+ | ) | ++ |
Cubically interpolate in one dimension.
+Interpolate field(s) in one dimension along the column(s). The interpolation is cubic lagrangian with a monotonic constraint in the center of the domain. In the outer intervals it is linear. Outside the domain, fields are held constant.
+PROGRAM HISTORY LOG:
+ - 98-05-01 MARK IREDELL
+ - 1999-01-04 IREDELL USE ESSL SEARCH
+
[in] | im | integer number of columns + |
[in] | ixz1 | integer column skip number for z1 + |
[in] | ixq1 | integer column skip number for q1 + |
[in] | ixz2 | integer column skip number for z2 + |
[in] | ixq2 | integer column skip number for q2 + |
[in] | nm | integer number of fields per column + |
[in] | nxq1 | integer field skip number for q1 + |
[in] | nxq2 | integer field skip number for q2 + |
[in] | km1 | integer number of input points + |
[in] | kxz1 | integer point skip number for z1 + |
[in] | kxq1 | integer point skip number for q1 + |
[in] | z1 | real (1+(im-1)*ixz1+(km1-1)*kxz1) + input coordinate values in which to interpolate + (z1 must be strictly monotonic in either direction) + |
[in] | q1 | real (1+(im-1)*ixq1+(km1-1)*kxq1+(nm-1)*nxq1) + input fields to interpolate + |
[in] | km2 | integer number of output points + |
[in] | kxz2 | integer point skip number for z2 + |
[in] | kxq2 | integer point skip number for q2 + |
[in] | z2 | real (1+(im-1)*ixz2+(km2-1)*kxz2) + output coordinate values to which to interpolate + (z2 need not be monotonic) + |
[out] | q2 | real (1+(im-1)*ixq2+(km2-1)*kxq2+(nm-1)*nxq2) + output interpolated fields + |
Definition at line 2028 of file atmosphere.F90.
+ +References rsearch().
+ +Referenced by vintg(), and vintg_thomp_mp_climo().
+ +
+
|
+ +private | +
Vertically interpolate upper-air fields.
+Vertically interpolate upper-air fields. Wind, temperature, humidity and other tracers are interpolated. The interpolation is cubic lagrangian in log pressure with a monotonic constraint in the center of the domain. In the outer intervals it is linear in log pressure. Outside the domain, fields are generally held constant, except for temperature and humidity below the input domain, where the temperature lapse rate is held fixed at -6.5 k/km and the relative humidity is held constant. This routine expects fields ordered from bottom to top of atmosphere.
+ +Definition at line 1764 of file atmosphere.F90.
+ +References dzdt_b4adj_target_grid, atmosphere_target_data::dzdt_target_grid, atm_input_data::lev_input, atmosphere_target_data::lev_target, program_setup::num_tracers_input, pres_b4adj_target_grid, pres_target_grid, temp_b4adj_target_grid, atmosphere_target_data::temp_target_grid, terp3(), program_setup::tracers, tracers_b4adj_target_grid, atmosphere_target_data::tracers_target_grid, xwind_b4adj_target_grid, xwind_target_grid, ywind_b4adj_target_grid, ywind_target_grid, zwind_b4adj_target_grid, and zwind_target_grid.
+ +Referenced by atmosphere_driver().
+ +
+
|
+ +private | +
Vertically interpolate atmospheric fields to target FV3 grid.
+Vertically interpolate thompson microphysics climo tracers to the target model levels.
+ + +Definition at line 1404 of file atmosphere.F90.
+ +References atmosphere_target_data::lev_target, thompson_mp_climo_data::lev_thomp_mp_climo, pres_target_grid, qnifa_climo_b4adj_target_grid, atmosphere_target_data::qnifa_climo_target_grid, qnwfa_climo_b4adj_target_grid, atmosphere_target_data::qnwfa_climo_target_grid, terp3(), and thomp_pres_climo_b4adj_target_grid.
+ +Referenced by atmosphere_driver().
+ +
+
|
+ +private | +
Vertically extend model top into thermosphere for whole atmosphere model.
+Use climatological data to extent model top into thermosphere for temperature and consoder primary compositions of neutral atmosphere in term of specific values of oxygen, single oxygen, and ozone.
+[in] | year | initial year |
[in] | month | initial month |
[in] | day | initial day |
[in] | hour | initial hour |
[in] | pf | path to MSIS2.1 parm file |
Definition at line 1528 of file atmosphere.F90.
+ +References atmosphere_target_data::dzdt_target_grid, gettemp(), model_grid::latitude_s_target_grid, atm_input_data::lev_input, atmosphere_target_data::lev_target, program_setup::num_tracers, pres_b4adj_target_grid, pres_target_grid, atmosphere_target_data::temp_target_grid, program_setup::tracers, atmosphere_target_data::tracers_target_grid, xwind_target_grid, ywind_target_grid, and zwind_target_grid.
+ +Referenced by atmosphere_driver().
+ +
+
|
+ +private | +
vertical vel before vert adj
+ +Definition at line 80 of file atmosphere.F90.
+ +Referenced by atmosphere_driver(), cleanup_target_atm_b4adj_data(), create_atm_b4adj_esmf_fields(), and vintg().
+ +
+
|
+ +private | +
3-d pres before terrain adj
+ +Definition at line 84 of file atmosphere.F90.
+ +Referenced by atmosphere_driver(), cleanup_target_atm_b4adj_data(), create_atm_b4adj_esmf_fields(), newps(), vintg(), and vintg_wam().
+ +
+
|
+ +private | +
3-d pressure
+ +Definition at line 83 of file atmosphere.F90.
+ +Referenced by cleanup_all_target_atm_data(), create_atm_esmf_fields(), newpr1(), vintg(), vintg_thomp_mp_climo(), and vintg_wam().
+ +
+
|
+ +private | +
sfc pres before terrain adj
+ +Definition at line 82 of file atmosphere.F90.
+ +Referenced by atmosphere_driver(), cleanup_target_atm_b4adj_data(), create_atm_b4adj_esmf_fields(), and newps().
+ +
+
|
+ +private | +
number concentration of ice friendly aerosols before vert adj
+ +Definition at line 102 of file atmosphere.F90.
+ +Referenced by horiz_interp_thomp_mp_climo(), and vintg_thomp_mp_climo().
+ +
+
|
+ +private | +
number concentration of water friendly aerosols before vert adj
+ +Definition at line 104 of file atmosphere.F90.
+ +Referenced by horiz_interp_thomp_mp_climo(), and vintg_thomp_mp_climo().
+ +
+
|
+ +private | +
temp before vert adj
+ +Definition at line 85 of file atmosphere.F90.
+ +Referenced by atmosphere_driver(), cleanup_target_atm_b4adj_data(), create_atm_b4adj_esmf_fields(), newps(), and vintg().
+ +
+
|
+ +private | +
Input grid terrain interpolated to target grid.
+ +Definition at line 86 of file atmosphere.F90.
+ +Referenced by atmosphere_driver(), cleanup_target_atm_b4adj_data(), create_atm_b4adj_esmf_fields(), and newps().
+ +
+
|
+ +private | +
pressure of each level on target grid
+ +Definition at line 106 of file atmosphere.F90.
+ +Referenced by horiz_interp_thomp_mp_climo(), and vintg_thomp_mp_climo().
+ +
+
|
+ +private | +
tracers before vert adj
+ +Definition at line 81 of file atmosphere.F90.
+ +Referenced by atmosphere_driver(), cleanup_target_atm_b4adj_data(), create_atm_b4adj_esmf_fields(), newps(), and vintg().
+ +
+
|
+ +private | +
x-component wind, before vert adj
+ +Definition at line 90 of file atmosphere.F90.
+ +Referenced by atmosphere_driver(), cleanup_target_atm_b4adj_data(), create_atm_b4adj_esmf_fields(), and vintg().
+ +
+
|
+ +private | +
x-component wind, 'south' edge
+ +Definition at line 93 of file atmosphere.F90.
+ +Referenced by atmosphere_driver(), cleanup_all_target_atm_data(), convert_winds_to_uv(), and create_atm_esmf_fields().
+ +
+
|
+ +private | +
x-component wind, grid box center
+ +Definition at line 87 of file atmosphere.F90.
+ +Referenced by atmosphere_driver(), cleanup_all_target_atm_data(), create_atm_esmf_fields(), vintg(), and vintg_wam().
+ +
+
|
+ +private | +
x-component wind, 'west' edge
+ +Definition at line 96 of file atmosphere.F90.
+ +Referenced by atmosphere_driver(), cleanup_all_target_atm_data(), convert_winds_to_uv(), and create_atm_esmf_fields().
+ +
+
|
+ +private | +
y-component wind, before vert adj
+ +Definition at line 91 of file atmosphere.F90.
+ +Referenced by atmosphere_driver(), cleanup_target_atm_b4adj_data(), create_atm_b4adj_esmf_fields(), and vintg().
+ +
+
|
+ +private | +
y-component wind, 'south' edge
+ +Definition at line 94 of file atmosphere.F90.
+ +Referenced by atmosphere_driver(), cleanup_all_target_atm_data(), convert_winds_to_uv(), and create_atm_esmf_fields().
+ +
+
|
+ +private | +
y-component wind, grid box center
+ +Definition at line 88 of file atmosphere.F90.
+ +Referenced by atmosphere_driver(), cleanup_all_target_atm_data(), create_atm_esmf_fields(), vintg(), and vintg_wam().
+ +
+
|
+ +private | +
y-component wind, 'west' edge
+ +Definition at line 97 of file atmosphere.F90.
+ +Referenced by atmosphere_driver(), cleanup_all_target_atm_data(), convert_winds_to_uv(), and create_atm_esmf_fields().
+ +
+
|
+ +private | +
z-component wind, before vert adj
+ +Definition at line 92 of file atmosphere.F90.
+ +Referenced by atmosphere_driver(), cleanup_target_atm_b4adj_data(), create_atm_b4adj_esmf_fields(), and vintg().
+ +
+
|
+ +private | +
z-component wind, 'south' edge
+ +Definition at line 95 of file atmosphere.F90.
+ +Referenced by atmosphere_driver(), cleanup_all_target_atm_data(), convert_winds_to_uv(), and create_atm_esmf_fields().
+ +
+
|
+ +private | +
z-component wind, grid box center
+ +Definition at line 89 of file atmosphere.F90.
+ +Referenced by atmosphere_driver(), cleanup_all_target_atm_data(), create_atm_esmf_fields(), vintg(), and vintg_wam().
+ +
+
|
+ +private | +
z-component wind, 'west' edge
+ +Definition at line 98 of file atmosphere.F90.
+ +Referenced by atmosphere_driver(), cleanup_all_target_atm_data(), convert_winds_to_uv(), and create_atm_esmf_fields().
+ +
+ chgres_cube
+ 1.13.0
+
+ |
+
Module to hold variables and ESMF fields associated with the target grid atmospheric data. +More...
++Functions/Subroutines | |
subroutine, public | cleanup_atmosphere_target_data |
Free up memory for fields and variables in this module. More... | |
+Variables | |
type(esmf_field), public | delp_target_grid |
Pressure thickness. More... | |
type(esmf_field), public | dzdt_target_grid |
Vertical velocity. More... | |
integer, public | lev_target |
Number of vertical levels. More... | |
integer, public | levp1_target |
Number of vertical levels plus 1. More... | |
integer, public | nvcoord_target |
Number of vertical coordinate variables. More... | |
type(esmf_field), public | ps_target_grid |
Surface pressure. More... | |
type(esmf_field), public | qnifa_climo_target_grid |
Number concentration of ice friendly aerosols. More... | |
type(esmf_field), public | qnwfa_climo_target_grid |
Number concentration of water friendly aerosols. More... | |
type(esmf_field), public | temp_target_grid |
Temperautre. More... | |
type(esmf_field), dimension(:), allocatable, public | tracers_target_grid |
Tracers. More... | |
type(esmf_field), public | u_s_target_grid |
U-wind, 'south' edge of grid cell. More... | |
type(esmf_field), public | u_w_target_grid |
U-wind, 'west' edge of grid cell. More... | |
type(esmf_field), public | v_s_target_grid |
V-wind, 'south' edge of grid cell. More... | |
type(esmf_field), public | v_w_target_grid |
V-wind, 'west' edge of grid cell. More... | |
real(esmf_kind_r8), dimension(:,:), allocatable, public | vcoord_target |
Vertical coordinate. More... | |
type(esmf_field), public | zh_target_grid |
3-d height. More... | |
Module to hold variables and ESMF fields associated with the target grid atmospheric data.
+ +subroutine, public atmosphere_target_data::cleanup_atmosphere_target_data | +( | +) | ++ |
Free up memory for fields and variables in this module.
+ + +Definition at line 46 of file atmosphere_target_data.F90.
+ +References delp_target_grid, dzdt_target_grid, program_setup::num_tracers, ps_target_grid, qnifa_climo_target_grid, qnwfa_climo_target_grid, temp_target_grid, tracers_target_grid, u_s_target_grid, u_w_target_grid, v_s_target_grid, v_w_target_grid, vcoord_target, and zh_target_grid.
+ +Referenced by atmosphere::cleanup_all_target_atm_data().
+ +type(esmf_field), public atmosphere_target_data::delp_target_grid | +
Pressure thickness.
+ +Definition at line 23 of file atmosphere_target_data.F90.
+ +Referenced by cleanup_atmosphere_target_data(), atmosphere::create_atm_esmf_fields(), atmosphere::newpr1(), and write_data::write_fv3_atm_data_netcdf().
+ +type(esmf_field), public atmosphere_target_data::dzdt_target_grid | +
Vertical velocity.
+ +Definition at line 24 of file atmosphere_target_data.F90.
+ +Referenced by cleanup_atmosphere_target_data(), atmosphere::create_atm_esmf_fields(), atmosphere::vintg(), atmosphere::vintg_wam(), write_data::write_fv3_atm_bndy_data_netcdf(), and write_data::write_fv3_atm_data_netcdf().
+ +integer, public atmosphere_target_data::lev_target | +
Number of vertical levels.
+ +Definition at line 17 of file atmosphere_target_data.F90.
+ +Referenced by atmosphere::create_atm_esmf_fields(), atmosphere::horiz_interp_thomp_mp_climo(), atmosphere::newpr1(), atmosphere::read_vcoord_info(), atmosphere::vintg(), atmosphere::vintg_thomp_mp_climo(), atmosphere::vintg_wam(), write_data::write_fv3_atm_bndy_data_netcdf(), and write_data::write_fv3_atm_data_netcdf().
+ +integer, public atmosphere_target_data::levp1_target | +
Number of vertical levels plus 1.
+ +Definition at line 18 of file atmosphere_target_data.F90.
+ +Referenced by atmosphere::compute_zh(), atmosphere::create_atm_esmf_fields(), atmosphere::newpr1(), atmosphere::read_vcoord_info(), write_data::write_fv3_atm_bndy_data_netcdf(), write_data::write_fv3_atm_data_netcdf(), and write_data::write_fv3_atm_header_netcdf().
+ +integer, public atmosphere_target_data::nvcoord_target | +
Number of vertical coordinate variables.
+ +Definition at line 19 of file atmosphere_target_data.F90.
+ +Referenced by atmosphere::read_vcoord_info(), and write_data::write_fv3_atm_header_netcdf().
+ +type(esmf_field), public atmosphere_target_data::ps_target_grid | +
Surface pressure.
+ +Definition at line 25 of file atmosphere_target_data.F90.
+ +Referenced by cleanup_atmosphere_target_data(), atmosphere::compute_zh(), atmosphere::create_atm_esmf_fields(), atmosphere::newpr1(), atmosphere::newps(), write_data::write_fv3_atm_bndy_data_netcdf(), and write_data::write_fv3_atm_data_netcdf().
+ +type(esmf_field), public atmosphere_target_data::qnifa_climo_target_grid | +
Number concentration of ice friendly aerosols.
+ +Definition at line 33 of file atmosphere_target_data.F90.
+ +Referenced by cleanup_atmosphere_target_data(), atmosphere::horiz_interp_thomp_mp_climo(), atmosphere::vintg_thomp_mp_climo(), write_data::write_fv3_atm_bndy_data_netcdf(), and write_data::write_fv3_atm_data_netcdf().
+ +type(esmf_field), public atmosphere_target_data::qnwfa_climo_target_grid | +
Number concentration of water friendly aerosols.
+ +Definition at line 35 of file atmosphere_target_data.F90.
+ +Referenced by cleanup_atmosphere_target_data(), atmosphere::horiz_interp_thomp_mp_climo(), atmosphere::vintg_thomp_mp_climo(), write_data::write_fv3_atm_bndy_data_netcdf(), and write_data::write_fv3_atm_data_netcdf().
+ +type(esmf_field), public atmosphere_target_data::temp_target_grid | +
Temperautre.
+ +Definition at line 26 of file atmosphere_target_data.F90.
+ +Referenced by cleanup_atmosphere_target_data(), atmosphere::compute_zh(), atmosphere::create_atm_esmf_fields(), atmosphere::vintg(), atmosphere::vintg_wam(), write_data::write_fv3_atm_bndy_data_netcdf(), and write_data::write_fv3_atm_data_netcdf().
+ +type(esmf_field), dimension(:), allocatable, public atmosphere_target_data::tracers_target_grid | +
Tracers.
+ +Definition at line 27 of file atmosphere_target_data.F90.
+ +Referenced by cleanup_atmosphere_target_data(), atmosphere::compute_zh(), atmosphere::create_atm_esmf_fields(), atmosphere::vintg(), atmosphere::vintg_wam(), write_data::write_fv3_atm_bndy_data_netcdf(), and write_data::write_fv3_atm_data_netcdf().
+ +type(esmf_field), public atmosphere_target_data::u_s_target_grid | +
U-wind, 'south' edge of grid cell.
+ +Definition at line 28 of file atmosphere_target_data.F90.
+ +Referenced by cleanup_atmosphere_target_data(), atmosphere::convert_winds_to_uv(), atmosphere::create_atm_esmf_fields(), write_data::write_fv3_atm_bndy_data_netcdf(), and write_data::write_fv3_atm_data_netcdf().
+ +type(esmf_field), public atmosphere_target_data::u_w_target_grid | +
U-wind, 'west' edge of grid cell.
+ +Definition at line 30 of file atmosphere_target_data.F90.
+ +Referenced by cleanup_atmosphere_target_data(), atmosphere::convert_winds_to_uv(), atmosphere::create_atm_esmf_fields(), write_data::write_fv3_atm_bndy_data_netcdf(), and write_data::write_fv3_atm_data_netcdf().
+ +type(esmf_field), public atmosphere_target_data::v_s_target_grid | +
V-wind, 'south' edge of grid cell.
+ +Definition at line 29 of file atmosphere_target_data.F90.
+ +Referenced by cleanup_atmosphere_target_data(), atmosphere::convert_winds_to_uv(), atmosphere::create_atm_esmf_fields(), write_data::write_fv3_atm_bndy_data_netcdf(), and write_data::write_fv3_atm_data_netcdf().
+ +type(esmf_field), public atmosphere_target_data::v_w_target_grid | +
V-wind, 'west' edge of grid cell.
+ +Definition at line 31 of file atmosphere_target_data.F90.
+ +Referenced by cleanup_atmosphere_target_data(), atmosphere::convert_winds_to_uv(), atmosphere::create_atm_esmf_fields(), write_data::write_fv3_atm_bndy_data_netcdf(), and write_data::write_fv3_atm_data_netcdf().
+ +real(esmf_kind_r8), dimension(:,:), allocatable, public atmosphere_target_data::vcoord_target | +
Vertical coordinate.
+ +Definition at line 21 of file atmosphere_target_data.F90.
+ +Referenced by cleanup_atmosphere_target_data(), atmosphere::compute_zh(), atmosphere::newpr1(), atmosphere::read_vcoord_info(), and write_data::write_fv3_atm_header_netcdf().
+ +type(esmf_field), public atmosphere_target_data::zh_target_grid | +
3-d height.
+ +Definition at line 32 of file atmosphere_target_data.F90.
+ +Referenced by cleanup_atmosphere_target_data(), atmosphere::compute_zh(), atmosphere::create_atm_esmf_fields(), write_data::write_fv3_atm_bndy_data_netcdf(), and write_data::write_fv3_atm_data_netcdf().
+ +
+ chgres_cube
+ 1.13.0
+
+ |
+
Utilities for use when reading grib2 data. +More...
++Functions/Subroutines | |
subroutine, public | convert_omega (omega, p, t, q, clb, cub) |
Convert omega to vertical velocity. More... | |
elemental real function, public | fpvsnew (t) |
Compute saturation vapor pressure. More... | |
subroutine, public | rh2spfh (rh_sphum, p, t) |
Convert relative humidity to specific humidity. More... | |
subroutine, public | rh2spfh_gfs (rh_sphum, p, t) |
Convert relative humidity to specific humidity (GFS formula) Calculation of saturation water vapor pressure is based on GFS function fvpsnew (Phillips 1982). More... | |
Utilities for use when reading grib2 data.
+This module contains routines to:
George Gayno NCEP/EMC
+subroutine, public grib2_util::convert_omega | +( | +real(esmf_kind_r8), dimension(:,:,:), pointer | +omega, | +
+ | + | real(esmf_kind_r8), dimension(:,:,:), pointer | +p, | +
+ | + | real(esmf_kind_r8), dimension(:,:,:), pointer | +t, | +
+ | + | real(esmf_kind_r8), dimension(:,:,:), pointer | +q, | +
+ | + | integer, dimension(3) | +clb, | +
+ | + | integer, dimension(3) | +cub | +
+ | ) | ++ |
Convert omega to vertical velocity.
+[in,out] | omega | on input, vertical velocity on output |
[in] | p | pressure |
[in] | t | temperature |
[in] | q | specific humidity |
[in] | clb | lower bounds of indices processed by this mpi task |
[in] | cub | upper bounds of indices processed by this mpi task |
Definition at line 218 of file grib2_util.F90.
+ +Referenced by atm_input_data::read_input_atm_grib2_file().
+ +elemental real function, public grib2_util::fpvsnew | +( | +real(esmf_kind_r8), intent(in) | +t | ) | ++ |
Compute saturation vapor pressure.
+[in] | t | temperature in Kelvin |
Definition at line 136 of file grib2_util.F90.
+ +Referenced by rh2spfh_gfs().
+ +subroutine, public grib2_util::rh2spfh | +( | +real(esmf_kind_r4), dimension(i_input,j_input), intent(inout) | +rh_sphum, | +
+ | + | real(esmf_kind_r8), intent(in) | +p, | +
+ | + | real(esmf_kind_r8), dimension(i_input,j_input), intent(in) | +t | +
+ | ) | ++ |
Convert relative humidity to specific humidity.
+Calculation of saturation water vapor pressure is based on Brock and Richardson 2001 (Meterological Measurement Systems, p. 86, equation 5.1)
+[in,out] | rh_sphum | rel humidity (%) on input. spec hum (kg/kg) on output. |
[in] | p | pressure in Pa |
[in] | t | temperature |
Definition at line 38 of file grib2_util.F90.
+ +Referenced by atm_input_data::read_input_atm_grib2_file().
+ +subroutine, public grib2_util::rh2spfh_gfs | +( | +real(esmf_kind_r4), dimension(i_input,j_input), intent(inout) | +rh_sphum, | +
+ | + | real(esmf_kind_r8), intent(in) | +p, | +
+ | + | real(esmf_kind_r8), dimension(i_input,j_input), intent(in) | +t | +
+ | ) | ++ |
Convert relative humidity to specific humidity (GFS formula) Calculation of saturation water vapor pressure is based on GFS function fvpsnew (Phillips 1982).
+The model does account for the variation of the latent heat of condensation with temperature. A linear interpolation is done between values in a calculated lookup table. Ice and water are considered separately. This option provides a consistent conversion for GFS grib2 data to be ingested.
+[in,out] | rh_sphum | rel humidity on input. spec hum on output. |
[in] | p | pressure in Pa |
[in] | t | temperature |
Definition at line 81 of file grib2_util.F90.
+ +References fpvsnew(), model_grid::i_input, and model_grid::j_input.
+ +Referenced by atm_input_data::read_input_atm_grib2_file().
+ +
+ chgres_cube
+ 1.13.0
+
+ |
+
+ chgres_cube
+ 1.13.0
+
+ |
+
+ chgres_cube
+ 1.13.0
+
+ |
+
+ chgres_cube
+ 1.13.0
+
+ |
+
+ chgres_cube
+ 1.13.0
+
+ |
+
+ chgres_cube
+ 1.13.0
+
+ |
+
+ chgres_cube
+ 1.13.0
+
+ |
+
+ chgres_cube
+ 1.13.0
+
+ |
+
+ chgres_cube
+ 1.13.0
+
+ |
+
+ chgres_cube
+ 1.13.0
+
+ |
+
+ chgres_cube
+ 1.13.0
+
+ |
+
+ chgres_cube
+ 1.13.0
+
+ |
+
+ chgres_cube
+ 1.13.0
+
+ |
+
+ chgres_cube
+ 1.13.0
+
+ |
+
+ chgres_cube
+ 1.13.0
+
+ |
+
+ chgres_cube
+ 1.13.0
+
+ |
+
+ chgres_cube
+ 1.13.0
+
+ |
+
+ chgres_cube
+ 1.13.0
+
+ |
+
+ chgres_cube
+ 1.13.0
+
+ |
+
+ chgres_cube
+ 1.13.0
+
+ |
+
+ chgres_cube
+ 1.13.0
+
+ |
+
+ chgres_cube
+ 1.13.0
+
+ |
+
+ chgres_cube
+ 1.13.0
+
+ |
+
+ chgres_cube
+ 1.13.0
+
+ |
+
+ chgres_cube
+ 1.13.0
+
+ |
+
+ chgres_cube
+ 1.13.0
+
+ |
+
+ chgres_cube
+ 1.13.0
+
+ |
+
+ chgres_cube
+ 1.13.0
+
+ |
+
+ chgres_cube
+ 1.13.0
+
+ |
+
+ chgres_cube
+ 1.13.0
+
+ |
+
+ chgres_cube
+ 1.13.0
+
+ |
+
+ chgres_cube
+ 1.13.0
+
+ |
+
+ chgres_cube
+ 1.13.0
+
+ |
+
+ chgres_cube
+ 1.13.0
+
+ |
+
+ chgres_cube
+ 1.13.0
+
+ |
+
+ chgres_cube
+ 1.13.0
+
+ |
+
+ chgres_cube
+ 1.13.0
+
+ |
+
+ chgres_cube
+ 1.13.0
+
+ |
+
+ chgres_cube
+ 1.13.0
+
+ |
+
+ chgres_cube
+ 1.13.0
+
+ |
+
+ chgres_cube
+ 1.13.0
+
+ |
+
+ chgres_cube
+ 1.13.0
+
+ |
+
+ chgres_cube
+ 1.13.0
+
+ |
+
+ chgres_cube
+ 1.13.0
+
+ |
+
+ chgres_cube
+ 1.13.0
+
+ |
+
+ chgres_cube
+ 1.13.0
+
+ |
+
+ chgres_cube
+ 1.13.0
+
+ |
+
+ chgres_cube
+ 1.13.0
+
+ |
+
+ chgres_cube
+ 1.13.0
+
+ |
+
+ chgres_cube
+ 1.13.0
+
+ |
+
+ chgres_cube
+ 1.13.0
+
+ |
+
+ chgres_cube
+ 1.13.0
+
+ |
+
Sets up the ESMF grid objects for the input data grid and target FV3 grid. +More...
++Functions/Subroutines | |
subroutine, public | cleanup_input_target_grid_data |
Deallocate all esmf grid objects. More... | |
subroutine, public | define_input_grid (localpet, npets) |
Driver routine to setup the esmf grid object for the input grid. More... | |
subroutine | define_input_grid_gaussian (npets) |
Define grid object for input data on global gaussian grids. More... | |
subroutine | define_input_grid_grib2 (npets) |
Define input grid object for grib2 input data. More... | |
subroutine | define_input_grid_mosaic (localpet, npets) |
Define input grid for tiled data using the 'mosaic', 'grid' and orography files. More... | |
subroutine, public | define_target_grid (localpet, npets) |
Setup the esmf grid object for the target grid. More... | |
subroutine | gdt_to_gds (igdtnum, igdstmpl, igdtlen, kgds, ni, nj, res) |
Convert the GRIB2 grid description template to to the GRIB1 grid description section. More... | |
subroutine | get_model_latlons (mosaic_file, orog_dir, num_tiles, tile, i_tile, j_tile, ip1_tile, jp1_tile, latitude, latitude_s, latitude_w, longitude, longitude_s, longitude_w) |
Read model lat/lons for a single tile from the "grid" specificaton file. More... | |
subroutine | get_model_mask_terrain (orog_file, idim, jdim, mask, terrain, land_frac) |
Read the model land mask and terrain for a single tile from the orography file. More... | |
+Variables | |
integer, public | i_input |
i-dimension of input grid (or of each global tile) More... | |
integer, public | i_target |
i dimension of each global tile, or of a nest, target grid. More... | |
type(esmf_grid), public | input_grid |
input grid esmf grid object More... | |
character(len=50), public | input_grid_type = "latlon" |
map projection of input grid More... | |
integer, public | ip1_input |
i_input plus 1 More... | |
integer, public | ip1_target |
ip1_target plus 1 More... | |
integer, public | j_input |
j-dimension of input grid (or of each global tile) More... | |
integer, public | j_target |
j dimension of each global tile, or of a nest, target grid. More... | |
integer, public | jp1_input |
j_input plus 1 More... | |
integer, public | jp1_target |
jp1_target plus 1 More... | |
type(esmf_field), public | land_frac_target_grid |
land fraction, target grid More... | |
type(esmf_field), public | landmask_target_grid |
land mask target grid - '1' some or all land; '0' all non-land More... | |
type(esmf_field), public | latitude_input_grid |
latitude of grid center, input grid More... | |
type(esmf_field), public | latitude_s_input_grid |
latitude of 'south' edge of grid box, input grid More... | |
type(esmf_field), public | latitude_s_target_grid |
latitude of 'south' edge of grid box, target grid More... | |
type(esmf_field), public | latitude_target_grid |
latitude of grid center, target grid More... | |
type(esmf_field), public | latitude_w_input_grid |
latitude of 'west' edge of grid box, input grid More... | |
type(esmf_field), public | latitude_w_target_grid |
latitude of 'west' edge of grid box, target grid More... | |
type(esmf_field), public | longitude_input_grid |
longitude of grid center, input grid More... | |
type(esmf_field), public | longitude_s_input_grid |
longitude of 'south' edge of grid box, input grid More... | |
type(esmf_field), public | longitude_s_target_grid |
longitude of 'south' edge of grid box, target grid More... | |
type(esmf_field), public | longitude_target_grid |
longitude of grid center, target grid More... | |
type(esmf_field), public | longitude_w_input_grid |
longitude of 'west' edge of grid box, input grid More... | |
type(esmf_field), public | longitude_w_target_grid |
longitude of 'west' edge of grid box, target grid More... | |
integer, public | lsoil_target = 4 |
Number of soil layers, target grid. More... | |
integer, public | num_tiles_input_grid |
Number of tiles, input grid. More... | |
integer, public | num_tiles_target_grid |
Number of tiles, target grid. More... | |
type(esmf_field), public | seamask_target_grid |
sea mask target grid - '1' some or all non-land; '0' all land More... | |
type(esmf_grid), public | target_grid |
target grid esmf grid object. More... | |
type(esmf_field), public | terrain_target_grid |
terrain height target grid More... | |
character(len=5), dimension(:), allocatable, public | tiles_target_grid |
Tile names of target grid. More... | |
Sets up the ESMF grid objects for the input data grid and target FV3 grid.
+ +subroutine, public model_grid::cleanup_input_target_grid_data | +( | +) | ++ |
Deallocate all esmf grid objects.
+ + +Definition at line 1431 of file model_grid.F90.
+ +References input_grid, land_frac_target_grid, landmask_target_grid, latitude_input_grid, latitude_s_input_grid, latitude_s_target_grid, latitude_target_grid, latitude_w_input_grid, latitude_w_target_grid, longitude_input_grid, longitude_s_input_grid, longitude_s_target_grid, longitude_target_grid, longitude_w_input_grid, longitude_w_target_grid, seamask_target_grid, target_grid, and terrain_target_grid.
+ +Referenced by chgres().
+ +subroutine, public model_grid::define_input_grid | +( | +integer, intent(in) | +localpet, | +
+ | + | integer, intent(in) | +npets | +
+ | ) | ++ |
Driver routine to setup the esmf grid object for the input grid.
+If the input source is tiled fv3 restart or history data, the grid is created by reading the mosaic and grid files. If the input source is fv3 global gaussian nemsio, spectral gfs global gaussian nemsio, or spectral gfs global gaussian sigio/sfcio, the grid is setup by computing lat/lons using the sp library.
+[in] | localpet | ESMF local persistent execution thread |
[in] | npets | Number of persistent execution threads |
Definition at line 118 of file model_grid.F90.
+ +References define_input_grid_gaussian(), define_input_grid_grib2(), define_input_grid_mosaic(), and program_setup::input_type.
+ +Referenced by chgres().
+ +subroutine model_grid::define_input_grid_gaussian | +( | +integer, intent(in) | +npets | ) | ++ |
Define grid object for input data on global gaussian grids.
+Recognized file formats:
[in] | npets | Number of persistent execution threads. |
Definition at line 149 of file model_grid.F90.
+ +References program_setup::atm_files_input_grid, program_setup::convert_atm, program_setup::convert_sfc, program_setup::data_dir_input_grid, i_input, input_grid, program_setup::input_type, ip1_input, j_input, jp1_input, latitude_input_grid, longitude_input_grid, num_tiles_input_grid, and program_setup::sfc_files_input_grid.
+ +Referenced by define_input_grid().
+ +subroutine model_grid::define_input_grid_grib2 | +( | +integer, intent(in) | +npets | ) | ++ |
Define input grid object for grib2 input data.
+[in] | npets | Number of persistent execution threads |
Definition at line 623 of file model_grid.F90.
+ +References program_setup::data_dir_input_grid, gdt_to_gds(), program_setup::grib2_file_input_grid, i_input, input_grid, input_grid_type, ip1_input, j_input, jp1_input, latitude_input_grid, and longitude_input_grid.
+ +Referenced by define_input_grid().
+ +subroutine model_grid::define_input_grid_mosaic | +( | +integer, intent(in) | +localpet, | +
+ | + | integer, intent(in) | +npets | +
+ | ) | ++ |
Define input grid for tiled data using the 'mosaic', 'grid' and orography files.
+localpet | ESMF local persistent execution thread |
npets | Total number of persistent execution threads |
Definition at line 415 of file model_grid.F90.
+ +References get_model_latlons(), i_input, input_grid, ip1_input, j_input, jp1_input, latitude_input_grid, latitude_s_input_grid, latitude_w_input_grid, longitude_input_grid, longitude_s_input_grid, longitude_w_input_grid, program_setup::mosaic_file_input_grid, num_tiles_input_grid, program_setup::orog_dir_input_grid, and program_setup::orog_files_input_grid.
+ +Referenced by define_input_grid().
+ +subroutine, public model_grid::define_target_grid | +( | +integer, intent(in) | +localpet, | +
+ | + | integer, intent(in) | +npets | +
+ | ) | ++ |
Setup the esmf grid object for the target grid.
+[in] | localpet | ESMF local persistent execution thread |
[in] | npets | Number of persistent execution threads |
Definition at line 896 of file model_grid.F90.
+ +References get_model_latlons(), get_model_mask_terrain(), i_target, ip1_target, j_target, jp1_target, land_frac_target_grid, landmask_target_grid, latitude_s_target_grid, latitude_target_grid, latitude_w_target_grid, longitude_s_target_grid, longitude_target_grid, longitude_w_target_grid, lsoil_target, program_setup::mosaic_file_target_grid, program_setup::nsoill_out, num_tiles_target_grid, program_setup::orog_dir_target_grid, program_setup::orog_files_target_grid, seamask_target_grid, target_grid, terrain_target_grid, and tiles_target_grid.
+ +Referenced by chgres().
+ +
+
|
+ +private | +
Convert the GRIB2 grid description template to to the GRIB1 grid description section.
+[in] | igdtnum | GRIB2 grid description template number. |
[in] | igdstmpl | Length of grib2 grid description template. |
[in] | igdtlen | Array of GRIB2 grid description template octets. |
[out] | kgds | Array of GRIB1 grid description octets. |
[out] | ni | I-dimension of grid. |
[out] | nj | J-dimension of grid. |
[out] | res | Resolution of grid in km. |
Definition at line 1487 of file model_grid.F90.
+ +Referenced by define_input_grid_grib2().
+ +subroutine model_grid::get_model_latlons | +( | +character(len=*), intent(in) | +mosaic_file, | +
+ | + | character(len=*), intent(in) | +orog_dir, | +
+ | + | integer, intent(in) | +num_tiles, | +
+ | + | integer, intent(in) | +tile, | +
+ | + | integer, intent(in) | +i_tile, | +
+ | + | integer, intent(in) | +j_tile, | +
+ | + | integer, intent(in) | +ip1_tile, | +
+ | + | integer, intent(in) | +jp1_tile, | +
+ | + | real(esmf_kind_r8), dimension(i_tile, j_tile), intent(out) | +latitude, | +
+ | + | real(esmf_kind_r8), dimension(i_tile, jp1_tile), intent(out) | +latitude_s, | +
+ | + | real(esmf_kind_r8), dimension(ip1_tile, j_tile), intent(out) | +latitude_w, | +
+ | + | real(esmf_kind_r8), dimension(i_tile, j_tile), intent(out) | +longitude, | +
+ | + | real(esmf_kind_r8), dimension(i_tile, jp1_tile), intent(out) | +longitude_s, | +
+ | + | real(esmf_kind_r8), dimension(ip1_tile, j_tile), intent(out) | +longitude_w | +
+ | ) | ++ |
Read model lat/lons for a single tile from the "grid" specificaton file.
+[in] | mosaic_file | The mosaic file associated with the 'grid' files. |
[in] | orog_dir | Directory containing the 'grid' and orography files. |
[in] | num_tiles | Total number of tiles |
[in] | tile | Tile number to be read |
[in] | i_tile | "i" dimension of the tile |
[in] | j_tile | "j" dimension of the tile |
[in] | ip1_tile | "i" dimension of the tile plus 1 |
[in] | jp1_tile | "j" dimension of the tile plus 1 |
[out] | latitude | grid box center latitude |
[out] | latitude_s | latitude of 'south' edge of grid box |
[out] | latitude_w | latitude of 'west' edge of grid box |
[out] | longitude | grid box center longitude |
[out] | longitude_s | longitude of 'south' edge of grid box |
[out] | longitude_w | longitude of 'west' edge of grid box |
Definition at line 1207 of file model_grid.F90.
+ +Referenced by define_input_grid_mosaic(), and define_target_grid().
+ +subroutine model_grid::get_model_mask_terrain | +( | +character(len=*), intent(in) | +orog_file, | +
+ | + | integer, intent(in) | +idim, | +
+ | + | integer, intent(in) | +jdim, | +
+ | + | integer(esmf_kind_i8), dimension(idim,jdim), intent(out) | +mask, | +
+ | + | real(esmf_kind_i8), dimension(idim,jdim), intent(out) | +terrain, | +
+ | + | real(esmf_kind_i8), dimension(idim,jdim), intent(out) | +land_frac | +
+ | ) | ++ |
Read the model land mask and terrain for a single tile from the orography file.
+[in] | orog_file | Path/name of orography file |
[in] | idim | "i" dimension of tile |
[in] | jdim | "j" dimension of tile |
[out] | mask | land mask of tile |
[out] | terrain | terrain height of tile |
[out] | land_frac | The fraction of the grid point that is land. |
Definition at line 1356 of file model_grid.F90.
+ +Referenced by define_target_grid().
+ +integer, public model_grid::i_input | +
i-dimension of input grid (or of each global tile)
+ +Definition at line 27 of file model_grid.F90.
+ +Referenced by surface::adjust_soil_levels(), atm_input_data::calcalpha_rotlatlon(), define_input_grid_gaussian(), define_input_grid_grib2(), define_input_grid_mosaic(), atm_input_data::gridrot(), atm_input_data::init_atm_esmf_fields(), sfc_input_data::read_grib_soil(), atm_input_data::read_input_atm_gaussian_netcdf_file(), atm_input_data::read_input_atm_grib2_file(), atm_input_data::read_input_atm_restart_file(), atm_input_data::read_input_atm_tiled_history_file(), nst_input_data::read_input_nst_netcdf_file(), sfc_input_data::read_input_sfc_data(), sfc_input_data::read_input_sfc_netcdf_file(), sfc_input_data::read_input_sfc_restart_file(), atm_input_data::read_winds(), and grib2_util::rh2spfh_gfs().
+ +integer, public model_grid::i_target | +
i dimension of each global tile, or of a nest, target grid.
+ +Definition at line 37 of file model_grid.F90.
+ +Referenced by define_target_grid(), static_data::get_static_fields(), surface::interp(), surface::regrid_many(), surface::search_many(), write_data::write_fv3_atm_bndy_data_netcdf(), write_data::write_fv3_atm_data_netcdf(), and write_data::write_fv3_sfc_data_netcdf().
+ +type(esmf_grid), public model_grid::input_grid | +
input grid esmf grid object
+ +Definition at line 52 of file model_grid.F90.
+ +Referenced by surface::adjust_soil_levels(), cleanup_input_target_grid_data(), define_input_grid_gaussian(), define_input_grid_grib2(), define_input_grid_mosaic(), atm_input_data::init_atm_esmf_fields(), sfc_input_data::init_sfc_esmf_fields(), surface::interp(), atm_input_data::read_input_atm_gaussian_netcdf_file(), atm_input_data::read_input_atm_restart_file(), atm_input_data::read_input_atm_tiled_history_file(), and nst_input_data::read_input_nst_data().
+ +character(len=50), public model_grid::input_grid_type = "latlon" | +
map projection of input grid
+ +Definition at line 21 of file model_grid.F90.
+ +Referenced by define_input_grid_grib2(), and sfc_input_data::read_input_sfc_grib2_file().
+ +integer, public model_grid::ip1_input | +
i_input plus 1
+ +Definition at line 33 of file model_grid.F90.
+ +Referenced by define_input_grid_gaussian(), define_input_grid_grib2(), and define_input_grid_mosaic().
+ +integer, public model_grid::ip1_target | +
ip1_target plus 1
+ +Definition at line 43 of file model_grid.F90.
+ +Referenced by define_target_grid(), write_data::write_fv3_atm_bndy_data_netcdf(), and write_data::write_fv3_atm_data_netcdf().
+ +integer, public model_grid::j_input | +
j-dimension of input grid (or of each global tile)
+ +Definition at line 30 of file model_grid.F90.
+ +Referenced by surface::adjust_soil_levels(), atm_input_data::calcalpha_rotlatlon(), define_input_grid_gaussian(), define_input_grid_grib2(), define_input_grid_mosaic(), atm_input_data::gridrot(), atm_input_data::init_atm_esmf_fields(), sfc_input_data::read_grib_soil(), atm_input_data::read_input_atm_gaussian_netcdf_file(), atm_input_data::read_input_atm_grib2_file(), atm_input_data::read_input_atm_restart_file(), atm_input_data::read_input_atm_tiled_history_file(), nst_input_data::read_input_nst_netcdf_file(), sfc_input_data::read_input_sfc_data(), sfc_input_data::read_input_sfc_netcdf_file(), sfc_input_data::read_input_sfc_restart_file(), atm_input_data::read_winds(), and grib2_util::rh2spfh_gfs().
+ +integer, public model_grid::j_target | +
j dimension of each global tile, or of a nest, target grid.
+ +Definition at line 40 of file model_grid.F90.
+ +Referenced by define_target_grid(), static_data::get_static_fields(), surface::interp(), surface::regrid_many(), surface::search_many(), write_data::write_fv3_atm_bndy_data_netcdf(), write_data::write_fv3_atm_data_netcdf(), and write_data::write_fv3_sfc_data_netcdf().
+ +integer, public model_grid::jp1_input | +
j_input plus 1
+ +Definition at line 35 of file model_grid.F90.
+ +Referenced by define_input_grid_gaussian(), define_input_grid_grib2(), define_input_grid_mosaic(), and atm_input_data::read_winds().
+ +integer, public model_grid::jp1_target | +
jp1_target plus 1
+ +Definition at line 45 of file model_grid.F90.
+ +Referenced by define_target_grid(), write_data::write_fv3_atm_bndy_data_netcdf(), and write_data::write_fv3_atm_data_netcdf().
+ +type(esmf_field), public model_grid::land_frac_target_grid | +
land fraction, target grid
+ +Definition at line 76 of file model_grid.F90.
+ +Referenced by cleanup_input_target_grid_data(), define_target_grid(), static_data::get_static_fields(), and surface::update_landmask().
+ +type(esmf_field), public model_grid::landmask_target_grid | +
land mask target grid - '1' some or all land; '0' all non-land
+ +Definition at line 73 of file model_grid.F90.
+ +Referenced by surface::adjust_soilt_for_terrain(), surface::calc_liq_soil_moisture(), cleanup_input_target_grid_data(), define_target_grid(), surface::interp(), surface::qc_check(), surface::rescale_soil_moisture(), surface::roughness(), surface::update_landmask(), and write_data::write_fv3_sfc_data_netcdf().
+ +type(esmf_field), public model_grid::latitude_input_grid | +
latitude of grid center, input grid
+ +Definition at line 57 of file model_grid.F90.
+ +Referenced by cleanup_input_target_grid_data(), atm_input_data::convert_winds_to_xyz(), define_input_grid_gaussian(), define_input_grid_grib2(), define_input_grid_mosaic(), and atm_input_data::read_winds().
+ +type(esmf_field), public model_grid::latitude_s_input_grid | +
latitude of 'south' edge of grid box, input grid
+ +Definition at line 61 of file model_grid.F90.
+ +Referenced by cleanup_input_target_grid_data(), and define_input_grid_mosaic().
+ +type(esmf_field), public model_grid::latitude_s_target_grid | +
latitude of 'south' edge of grid box, target grid
+ +Definition at line 80 of file model_grid.F90.
+ +Referenced by cleanup_input_target_grid_data(), atmosphere::convert_winds_to_uv(), define_target_grid(), atmosphere::vintg_wam(), and write_data::write_fv3_atm_data_netcdf().
+ +type(esmf_field), public model_grid::latitude_target_grid | +
latitude of grid center, target grid
+ +Definition at line 78 of file model_grid.F90.
+ +Referenced by cleanup_input_target_grid_data(), define_target_grid(), surface::interp(), write_data::write_fv3_atm_data_netcdf(), and write_data::write_fv3_sfc_data_netcdf().
+ +type(esmf_field), public model_grid::latitude_w_input_grid | +
latitude of 'west' edge of grid box, input grid
+ +Definition at line 67 of file model_grid.F90.
+ +Referenced by cleanup_input_target_grid_data(), and define_input_grid_mosaic().
+ +type(esmf_field), public model_grid::latitude_w_target_grid | +
latitude of 'west' edge of grid box, target grid
+ +Definition at line 83 of file model_grid.F90.
+ +Referenced by cleanup_input_target_grid_data(), atmosphere::convert_winds_to_uv(), define_target_grid(), and write_data::write_fv3_atm_data_netcdf().
+ +type(esmf_field), public model_grid::longitude_input_grid | +
longitude of grid center, input grid
+ +Definition at line 59 of file model_grid.F90.
+ +Referenced by cleanup_input_target_grid_data(), atm_input_data::convert_winds_to_xyz(), define_input_grid_gaussian(), define_input_grid_grib2(), define_input_grid_mosaic(), and atm_input_data::read_winds().
+ +type(esmf_field), public model_grid::longitude_s_input_grid | +
longitude of 'south' edge of grid box, input grid
+ +Definition at line 64 of file model_grid.F90.
+ +Referenced by cleanup_input_target_grid_data(), and define_input_grid_mosaic().
+ +type(esmf_field), public model_grid::longitude_s_target_grid | +
longitude of 'south' edge of grid box, target grid
+ +Definition at line 88 of file model_grid.F90.
+ +Referenced by cleanup_input_target_grid_data(), atmosphere::convert_winds_to_uv(), define_target_grid(), and write_data::write_fv3_atm_data_netcdf().
+ +type(esmf_field), public model_grid::longitude_target_grid | +
longitude of grid center, target grid
+ +Definition at line 86 of file model_grid.F90.
+ +Referenced by cleanup_input_target_grid_data(), define_target_grid(), write_data::write_fv3_atm_data_netcdf(), and write_data::write_fv3_sfc_data_netcdf().
+ +type(esmf_field), public model_grid::longitude_w_input_grid | +
longitude of 'west' edge of grid box, input grid
+ +Definition at line 70 of file model_grid.F90.
+ +Referenced by cleanup_input_target_grid_data(), and define_input_grid_mosaic().
+ +type(esmf_field), public model_grid::longitude_w_target_grid | +
longitude of 'west' edge of grid box, target grid
+ +Definition at line 91 of file model_grid.F90.
+ +Referenced by cleanup_input_target_grid_data(), atmosphere::convert_winds_to_uv(), define_target_grid(), and write_data::write_fv3_atm_data_netcdf().
+ +integer, public model_grid::lsoil_target = 4 | +
Number of soil layers, target grid.
+ +Definition at line 25 of file model_grid.F90.
+ +Referenced by surface::adjust_soil_levels(), surface::create_surface_esmf_fields(), define_target_grid(), surface::interp(), surface::search_many(), and write_data::write_fv3_sfc_data_netcdf().
+ +integer, public model_grid::num_tiles_input_grid | +
Number of tiles, input grid.
+ +Definition at line 47 of file model_grid.F90.
+ +Referenced by define_input_grid_gaussian(), define_input_grid_mosaic(), atm_input_data::read_input_atm_restart_file(), atm_input_data::read_input_atm_tiled_history_file(), nst_input_data::read_input_nst_netcdf_file(), sfc_input_data::read_input_sfc_netcdf_file(), and sfc_input_data::read_input_sfc_restart_file().
+ +integer, public model_grid::num_tiles_target_grid | +
Number of tiles, target grid.
+ +Definition at line 49 of file model_grid.F90.
+ +Referenced by define_target_grid(), static_data::get_static_fields(), surface::interp(), write_data::write_fv3_atm_data_netcdf(), and write_data::write_fv3_sfc_data_netcdf().
+ +type(esmf_field), public model_grid::seamask_target_grid | +
sea mask target grid - '1' some or all non-land; '0' all land
+ +Definition at line 94 of file model_grid.F90.
+ +Referenced by cleanup_input_target_grid_data(), define_target_grid(), surface::interp(), surface::nst_land_fill(), surface::qc_check(), and surface::roughness().
+ +type(esmf_grid), public model_grid::target_grid | +
target grid esmf grid object.
+ +Definition at line 54 of file model_grid.F90.
+ +Referenced by cleanup_input_target_grid_data(), atmosphere::create_atm_b4adj_esmf_fields(), atmosphere::create_atm_esmf_fields(), surface::create_nst_esmf_fields(), static_data::create_static_fields(), surface::create_surface_esmf_fields(), define_target_grid(), atmosphere::horiz_interp_thomp_mp_climo(), and surface::interp().
+ +type(esmf_field), public model_grid::terrain_target_grid | +
terrain height target grid
+ +Definition at line 97 of file model_grid.F90.
+ +Referenced by surface::adjust_soilt_for_terrain(), cleanup_input_target_grid_data(), atmosphere::compute_zh(), define_target_grid(), and atmosphere::newps().
+ +character(len=5), dimension(:), allocatable, public model_grid::tiles_target_grid | +
Tile names of target grid.
+ +Definition at line 19 of file model_grid.F90.
+ +Referenced by define_target_grid(), and static_data::read_static_file().
+ +
+ chgres_cube
+ 1.13.0
+
+ |
+
This module contains code to read the setup namelist file, handle the varmap file for GRIB2 data, and calculate the soil parameters. +More...
++Functions/Subroutines | |
subroutine | calc_soil_params (num_soil_cats, smlow, smhigh, satdk, maxsmc, bb, satpsi, satdw, refsmc, drysmc, wltsmc) |
Compute soil parameters. More... | |
subroutine, public | calc_soil_params_driver (localpet) |
Driver routine to compute soil parameters for each soil type. More... | |
subroutine, public | get_var_cond (var_name, this_miss_var_method, this_miss_var_value, this_field_var_name, loc) |
Search the variable mapping table to find conditions for handling missing variables. More... | |
subroutine, public | read_setup_namelist (filename) |
Reads program configuration namelist. More... | |
subroutine, public | read_varmap |
Reads the variable mapping table, which is required for initializing with GRIB2 data. More... | |
+Variables | |
character(len=500), dimension(7), public | atm_core_files_input_grid = "NULL" |
File names of input atmospheric restart core files. More... | |
character(len=500), dimension(6), public | atm_files_input_grid = "NULL" |
File names of input atmospheric data. More... | |
character(len=500), dimension(6), public | atm_tracer_files_input_grid = "NULL" |
File names of input atmospheric restart tracer files. More... | |
character(len=500), public | atm_weight_file ="NULL" |
File containing pre-computed weights to horizontally interpolate atmospheric fields. More... | |
real, dimension(:), allocatable, public | bb_target |
Soil 'b' parameter, target grid. More... | |
character(len=20), dimension(:), allocatable, public | chgres_var_names |
Varmap table variable name as recognized by this program. More... | |
logical, public | convert_atm = .false. |
Convert atmospheric data when true. More... | |
logical, public | convert_nst = .false. |
Convert nst data when true. More... | |
logical, public | convert_sfc = .false. |
Convert sfc data when true. More... | |
character(len=15), public | cres_target_grid = "NULL" |
Target grid resolution, i.e., C768. More... | |
integer, public | cycle_day = -999 |
Cycle day. More... | |
integer, public | cycle_hour = -999 |
Cycle hour. More... | |
integer, public | cycle_mon = -999 |
Cycle month. More... | |
integer, public | cycle_year = -999 |
Cycle year. More... | |
character(len=500), public | data_dir_input_grid = "NULL" |
Directory containing input atm or sfc files. More... | |
real, dimension(:), allocatable, public | drysmc_input |
Air dry soil moisture content input grid. More... | |
real, dimension(:), allocatable, public | drysmc_target |
Air dry soil moisture content target grid. More... | |
character(len=20), public | external_model ="GFS" |
The model that the input data is derived from. More... | |
character(len=20), dimension(:), allocatable, public | field_var_names |
The GRIB2 variable name in the varmap table. More... | |
character(len=500), public | fix_dir_target_grid = "NULL" |
Directory containing target grid pre-computed fixed data (ex: soil type). More... | |
character(len=500), public | geogrid_file_input_grid = "NULL" |
Name of "geogrid" file, which contains static surface fields on the input grid. More... | |
character(len=500), public | grib2_file_input_grid = "NULL" |
REQUIRED. More... | |
integer, public | halo_blend = 0 |
Number of row/cols of blending halo, where model tendencies and lateral boundary tendencies are applied. More... | |
integer, public | halo_bndy = 0 |
Number of row/cols of lateral halo, where pure lateral bndy conditions are applied (regional target grids). More... | |
character(len=25), public | input_type ="restart" |
Input data type: More... | |
logical, public | lai_from_climo = .true. |
If false, interpolate leaf area index from the input data to the target grid instead of using data from static data. More... | |
integer, parameter, public | max_tracers =100 |
Maximum number of atmospheric tracers processed. More... | |
real, dimension(:), allocatable, public | maxsmc_input |
Maximum soil moisture content input grid. More... | |
real, dimension(:), allocatable, public | maxsmc_target |
Maximum soil moisture content target grid. More... | |
logical, public | minmax_vgfrc_from_climo = .true. |
If false, interpolate min/max vegetation fraction from the input data to the target grid instead of using data from static data. More... | |
character(len=20), dimension(:), allocatable, public | missing_var_methods |
Method to replace missing GRIB2 input records. More... | |
real(kind=esmf_kind_r4), dimension(:), allocatable, public | missing_var_values |
If input GRIB2 record is missing, the variable is set to this value. More... | |
character(len=500), public | mosaic_file_input_grid = "NULL" |
Input grid mosaic file. More... | |
character(len=500), public | mosaic_file_target_grid = "NULL" |
Target grid mosaic file. More... | |
integer, public | nsoill_out = 4 |
Number of soil levels desired in the output data. More... | |
character(len=500), public | nst_files_input_grid = "NULL" |
File name of input nst data. More... | |
integer, public | num_tracers |
Number of atmospheric tracers to be processed. More... | |
integer, public | num_tracers_input |
Number of atmospheric tracers in input file. More... | |
character(len=500), public | orog_dir_input_grid = "NULL" |
Directory containing the input grid orography files. More... | |
character(len=500), public | orog_dir_target_grid = "NULL" |
Directory containing the target grid orography files. More... | |
character(len=500), dimension(6), public | orog_files_input_grid = "NULL" |
Input grid orography files. More... | |
character(len=500), dimension(6), public | orog_files_target_grid = "NULL" |
Target grid orography files. More... | |
logical, dimension(:), allocatable, public | read_from_input |
When false, variable was not read from GRIB2 input file. More... | |
real, dimension(:), allocatable, public | refsmc_input |
Reference soil moisture content input grid (onset of soil moisture stress). More... | |
real, dimension(:), allocatable, public | refsmc_target |
Reference soil moisture content target grid (onset of soil moisture stress). More... | |
integer, public | regional = 0 |
For regional target grids. More... | |
real, dimension(:), allocatable, public | satpsi_target |
Saturated soil potential, target grid. More... | |
character(len=500), dimension(6), public | sfc_files_input_grid = "NULL" |
File names containing input surface data. More... | |
logical, public | sotyp_from_climo = .true. |
If false, interpolate soil type from the input data to the target grid instead of using data from static data. More... | |
logical, public | tg3_from_soil = .false. |
If false, use lowest level soil temperature for the base soil temperature instead of using data from static data. More... | |
character(len=500), public | thomp_mp_climo_file = "NULL" |
Path/name to the Thompson MP climatology file. More... | |
character(len=20), dimension(max_tracers), public | tracers ="NULL" |
Name of each atmos tracer to be processed. More... | |
character(len=20), dimension(max_tracers), public | tracers_input ="NULL" |
Name of each atmos tracer record in the input file. More... | |
logical, public | use_thomp_mp_climo =.false. |
When true, read and process Thompson MP climatological tracers. More... | |
character(len=500), public | varmap_file = "NULL" |
REQUIRED. More... | |
character(len=500), public | vcoord_file_target_grid = "NULL" |
Vertical coordinate definition file. More... | |
logical, public | vgfrc_from_climo = .true. |
If false, interpolate vegetation fraction from the input data to the target grid instead of using data from static data. More... | |
logical, public | vgtyp_from_climo = .true. |
If false, interpolate vegetation type from the input data to the target grid instead of using data from static data. More... | |
logical, public | wam_cold_start = .false. |
When true, cold start for whole atmosphere model. More... | |
character(len=500), public | wam_parm_file ="msis21.parm" |
Full path to msis21.parm for WAM initialization. More... | |
real, dimension(:), allocatable, public | wltsmc_input |
Plant wilting point soil moisture content input grid. More... | |
real, dimension(:), allocatable, public | wltsmc_target |
Plant wilting point soil moisture content target grid. More... | |
This module contains code to read the setup namelist file, handle the varmap file for GRIB2 data, and calculate the soil parameters.
+ +
+
|
+ +private | +
Compute soil parameters.
+These will be used to rescale soil moisture differences in soil type between the input grid and target model grid.
+[in] | num_soil_cats | number of soil type categories |
[in] | smlow | reference parameter for wltsmc |
[in] | smhigh | reference parameter for refsmc |
[in] | satdk | saturated soil moisture hydraulic conductivity |
[in] | maxsmc | maximum soil moisture (porosity) |
[in] | bb | soil 'b' parameter |
[in] | satpsi | saturated soil potential |
[out] | satdw | saturated soil diffusivity/conductivity coefficient |
[out] | refsmc | onset of soil moisture stress (field capacity) |
[out] | drysmc | air dry soil moisture limit |
[out] | wltsmc | plant soil moisture wilting point |
Definition at line 681 of file program_setup.F90.
+ +Referenced by calc_soil_params_driver().
+ +subroutine, public program_setup::calc_soil_params_driver | +( | +integer, intent(in) | +localpet | ) | ++ |
Driver routine to compute soil parameters for each soil type.
+Works for Zobler and STATSGO soil categories.
+The calculations are those used in the Noah Land Surface Model. For more information see Implementation of Noah land surface model advances in the National Centers for Environmental Prediction operational mesoscale Eta model.
+For more details about the soil parameters/properties see Coupling an Advanced Land Surface–Hydrology Model with the Penn State–NCAR MM5 Modeling System. Part I: Model Implementation and Sensitivity.
+The original source for soil properties is here:
+Cosby, B. J., G. M. Hornberger, R. B. Clapp, and T. R. Ginn, 1984: A statistical exploration of the relationships of soil moisture characteristics to the physical properties of soils. Water Resour. Res.,20, 682–690.
+The parameters in this subroutine were copied from https://github.com/HelinWei-NOAA/ccpp-physics/blob/master/physics/set_soilveg.f values need to be kept in sync with set_soilveg.f.
+For more information about these parameters see https://github.com/HelinWei-NOAA/ccpp-physics/blob/master/physics/sflx.f.
+[in] | localpet | ESMF local persistent execution thread |
Definition at line 520 of file program_setup.F90.
+ +References bb_target, calc_soil_params(), drysmc_input, drysmc_target, input_type, maxsmc_input, maxsmc_target, refsmc_input, refsmc_target, satpsi_target, wltsmc_input, and wltsmc_target.
+ +Referenced by surface::surface_driver().
+ +subroutine, public program_setup::get_var_cond | +( | +character(len=20), intent(in) | +var_name, | +
+ | + | character(len=20), intent(out), optional | +this_miss_var_method, | +
+ | + | real(esmf_kind_r4), intent(out), optional | +this_miss_var_value, | +
+ | + | character(len=20), intent(out), optional | +this_field_var_name, | +
+ | + | integer, intent(out), optional | +loc | +
+ | ) | ++ |
Search the variable mapping table to find conditions for handling missing variables.
+Only applicable when using GRIB2 data as input.
+[in] | var_name | table variable name to search for |
[out] | this_miss_var_method | the method used to replace missing data |
[out] | this_miss_var_value | the value used to replace missing data |
[out] | this_field_var_name | name of variable in output file. not currently implemented. |
[out] | loc | variable table location index |
Definition at line 450 of file program_setup.F90.
+ +References chgres_var_names, field_var_names, missing_var_methods, and missing_var_values.
+ +Referenced by sfc_input_data::read_grib_soil(), atm_input_data::read_input_atm_grib2_file(), and atm_input_data::read_winds().
+ +subroutine, public program_setup::read_setup_namelist | +( | +character(len=*), intent(in), optional | +filename | ) | ++ |
Reads program configuration namelist.
+filename | The name of the configuration file (defaults to ./fort.41). |
Definition at line 156 of file program_setup.F90.
+ +References atm_core_files_input_grid, atm_files_input_grid, atm_tracer_files_input_grid, atm_weight_file, convert_atm, convert_nst, convert_sfc, cres_target_grid, cycle_day, cycle_hour, cycle_mon, cycle_year, data_dir_input_grid, external_model, fix_dir_target_grid, geogrid_file_input_grid, grib2_file_input_grid, halo_blend, halo_bndy, input_type, lai_from_climo, max_tracers, minmax_vgfrc_from_climo, mosaic_file_input_grid, mosaic_file_target_grid, nsoill_out, nst_files_input_grid, num_tracers, num_tracers_input, orog_dir_input_grid, orog_dir_target_grid, orog_files_input_grid, orog_files_target_grid, regional, sfc_files_input_grid, sotyp_from_climo, tg3_from_soil, thomp_mp_climo_file, tracers, tracers_input, use_thomp_mp_climo, varmap_file, vcoord_file_target_grid, vgfrc_from_climo, vgtyp_from_climo, wam_cold_start, and wam_parm_file.
+ +Referenced by chgres().
+ +subroutine, public program_setup::read_varmap | +( | +) | ++ |
Reads the variable mapping table, which is required for initializing with GRIB2 data.
+The varmap files has entries that look like this:
+dzdt dzdt set_to_fill 0 D
These are the chgres_var_name, field_var_name, missing_var_method, missing_var_value, var_type.
+The missing_var_method is one of:
The var_type is one of:
Definition at line 379 of file program_setup.F90.
+ +References chgres_var_names, field_var_names, input_type, missing_var_methods, missing_var_values, num_tracers, num_tracers_input, read_from_input, thomp_mp_climo_file, tracers_input, and varmap_file.
+ +Referenced by chgres().
+ +character(len=500), dimension(7), public program_setup::atm_core_files_input_grid = "NULL" | +
File names of input atmospheric restart core files.
+Only used for 'restart' input type.
+ +Definition at line 23 of file program_setup.F90.
+ +Referenced by atm_input_data::read_input_atm_restart_file(), and read_setup_namelist().
+ +character(len=500), dimension(6), public program_setup::atm_files_input_grid = "NULL" | +
File names of input atmospheric data.
+Not used for "grib2" or "restart" input types.
+ +Definition at line 19 of file program_setup.F90.
+ +Referenced by model_grid::define_input_grid_gaussian(), atm_input_data::init_atm_esmf_fields(), atm_input_data::read_input_atm_gaussian_netcdf_file(), atm_input_data::read_input_atm_tiled_history_file(), and read_setup_namelist().
+ +character(len=500), dimension(6), public program_setup::atm_tracer_files_input_grid = "NULL" | +
File names of input atmospheric restart tracer files.
+Only used for 'restart' input type.
+ +Definition at line 24 of file program_setup.F90.
+ +Referenced by atm_input_data::read_input_atm_restart_file(), and read_setup_namelist().
+ +character(len=500), public program_setup::atm_weight_file ="NULL" | +
File containing pre-computed weights to horizontally interpolate atmospheric fields.
+ +Definition at line 42 of file program_setup.F90.
+ +Referenced by atmosphere::atmosphere_driver(), and read_setup_namelist().
+ +real, dimension(:), allocatable, public program_setup::bb_target | +
Soil 'b' parameter, target grid.
+ +Definition at line 138 of file program_setup.F90.
+ +Referenced by surface::calc_liq_soil_moisture(), and calc_soil_params_driver().
+ +character(len=20), dimension(:), allocatable, public program_setup::chgres_var_names | +
Varmap table variable name as recognized by this program.
+ +Definition at line 79 of file program_setup.F90.
+ +Referenced by get_var_cond(), and read_varmap().
+ +logical, public program_setup::convert_atm = .false. | +
Convert atmospheric data when true.
+ +Definition at line 97 of file program_setup.F90.
+ +Referenced by chgres(), model_grid::define_input_grid_gaussian(), and read_setup_namelist().
+ +logical, public program_setup::convert_nst = .false. | +
Convert nst data when true.
+ +Definition at line 98 of file program_setup.F90.
+ +Referenced by sfc_input_data::cleanup_input_sfc_data(), surface::interp(), read_setup_namelist(), surface::regrid_many(), surface::surface_driver(), and write_data::write_fv3_sfc_data_netcdf().
+ +logical, public program_setup::convert_sfc = .false. | +
Convert sfc data when true.
+ +Definition at line 99 of file program_setup.F90.
+ +Referenced by chgres(), model_grid::define_input_grid_gaussian(), and read_setup_namelist().
+ +character(len=15), public program_setup::cres_target_grid = "NULL" | +
Target grid resolution, i.e., C768.
+ +Definition at line 41 of file program_setup.F90.
+ +Referenced by read_setup_namelist(), and static_data::read_static_file().
+ +integer, public program_setup::cycle_day = -999 | +
Cycle day.
+ +Definition at line 87 of file program_setup.F90.
+ +Referenced by atmosphere::atmosphere_driver(), read_setup_namelist(), static_data::read_static_file(), and thompson_mp_climo_data::read_thomp_mp_climo_data().
+ +integer, public program_setup::cycle_hour = -999 | +
Cycle hour.
+ +Definition at line 88 of file program_setup.F90.
+ +Referenced by atmosphere::atmosphere_driver(), read_setup_namelist(), static_data::read_static_file(), and thompson_mp_climo_data::read_thomp_mp_climo_data().
+ +integer, public program_setup::cycle_mon = -999 | +
Cycle month.
+ +Definition at line 86 of file program_setup.F90.
+ +Referenced by atmosphere::atmosphere_driver(), read_setup_namelist(), static_data::read_static_file(), and thompson_mp_climo_data::read_thomp_mp_climo_data().
+ +integer, public program_setup::cycle_year = -999 | +
Cycle year.
+ +Definition at line 85 of file program_setup.F90.
+ +Referenced by atmosphere::atmosphere_driver(), and read_setup_namelist().
+ +character(len=500), public program_setup::data_dir_input_grid = "NULL" | +
Directory containing input atm or sfc files.
+ +Definition at line 25 of file program_setup.F90.
+ +Referenced by model_grid::define_input_grid_gaussian(), model_grid::define_input_grid_grib2(), atm_input_data::init_atm_esmf_fields(), sfc_input_data::read_fv3_grid_data_netcdf(), atm_input_data::read_input_atm_gaussian_netcdf_file(), atm_input_data::read_input_atm_grib2_file(), atm_input_data::read_input_atm_restart_file(), atm_input_data::read_input_atm_tiled_history_file(), nst_input_data::read_input_nst_netcdf_file(), sfc_input_data::read_input_sfc_data(), sfc_input_data::read_input_sfc_netcdf_file(), sfc_input_data::read_input_sfc_restart_file(), and read_setup_namelist().
+ +real, dimension(:), allocatable, public program_setup::drysmc_input | +
Air dry soil moisture content input grid.
+ +Definition at line 130 of file program_setup.F90.
+ +Referenced by calc_soil_params_driver(), and surface::rescale_soil_moisture().
+ +real, dimension(:), allocatable, public program_setup::drysmc_target | +
Air dry soil moisture content target grid.
+ +Definition at line 131 of file program_setup.F90.
+ +Referenced by calc_soil_params_driver(), and surface::rescale_soil_moisture().
+ +character(len=20), public program_setup::external_model ="GFS" | +
The model that the input data is derived from.
+Current supported options are: "GFS", "HRRR", "NAM", "RAP", "RRFS". Default: "GFS"
+ +Definition at line 57 of file program_setup.F90.
+ +Referenced by atm_input_data::read_input_atm_grib2_file(), read_setup_namelist(), and surface::search_many().
+ +character(len=20), dimension(:), allocatable, public program_setup::field_var_names | +
The GRIB2 variable name in the varmap table.
+ +Definition at line 81 of file program_setup.F90.
+ +Referenced by get_var_cond(), and read_varmap().
+ +character(len=500), public program_setup::fix_dir_target_grid = "NULL" | +
Directory containing target grid pre-computed fixed data (ex: soil type).
+ +Definition at line 26 of file program_setup.F90.
+ +Referenced by read_setup_namelist(), and static_data::read_static_file().
+ +character(len=500), public program_setup::geogrid_file_input_grid = "NULL" | +
Name of "geogrid" file, which contains static surface fields on the input grid.
+GRIB2 option only.
+ +Definition at line 31 of file program_setup.F90.
+ +Referenced by read_setup_namelist().
+ +character(len=500), public program_setup::grib2_file_input_grid = "NULL" | +
REQUIRED.
+File name of grib2 input data. Assumes atmospheric and surface data are in a single file.
+ +Definition at line 30 of file program_setup.F90.
+ +Referenced by model_grid::define_input_grid_grib2(), atm_input_data::read_input_atm_grib2_file(), and read_setup_namelist().
+ +integer, public program_setup::halo_blend = 0 | +
Number of row/cols of blending halo, where model tendencies and lateral boundary tendencies are applied.
+Regional target grids only.
+ +Definition at line 92 of file program_setup.F90.
+ +Referenced by read_setup_namelist(), and write_data::write_fv3_atm_bndy_data_netcdf().
+ +integer, public program_setup::halo_bndy = 0 | +
Number of row/cols of lateral halo, where pure lateral bndy conditions are applied (regional target grids).
+ +Definition at line 91 of file program_setup.F90.
+ +Referenced by read_setup_namelist(), write_data::write_fv3_atm_bndy_data_netcdf(), write_data::write_fv3_atm_data_netcdf(), and write_data::write_fv3_sfc_data_netcdf().
+ +character(len=25), public program_setup::input_type ="restart" | +
Input data type:
+Definition at line 43 of file program_setup.F90.
+ +Referenced by calc_soil_params_driver(), model_grid::define_input_grid(), model_grid::define_input_grid_gaussian(), atm_input_data::read_input_atm_data(), nst_input_data::read_input_nst_data(), nst_input_data::read_input_nst_netcdf_file(), sfc_input_data::read_input_sfc_data(), sfc_input_data::read_input_sfc_netcdf_file(), read_setup_namelist(), read_varmap(), surface::search_many(), write_data::write_fv3_atm_bndy_data_netcdf(), and write_data::write_fv3_atm_data_netcdf().
+ +logical, public program_setup::lai_from_climo = .true. | +
If false, interpolate leaf area index from the input data to the target grid instead of using data from static data.
+Default: True.
+ +Definition at line 122 of file program_setup.F90.
+ +Referenced by sfc_input_data::cleanup_input_sfc_data(), sfc_input_data::init_sfc_esmf_fields(), surface::interp(), read_setup_namelist(), and write_data::write_fv3_sfc_data_netcdf().
+ +integer, parameter, public program_setup::max_tracers =100 | +
Maximum number of atmospheric tracers processed.
+ +Definition at line 59 of file program_setup.F90.
+ +Referenced by read_setup_namelist().
+ +real, dimension(:), allocatable, public program_setup::maxsmc_input | +
Maximum soil moisture content input grid.
+ +Definition at line 132 of file program_setup.F90.
+ +Referenced by calc_soil_params_driver(), and surface::rescale_soil_moisture().
+ +real, dimension(:), allocatable, public program_setup::maxsmc_target | +
Maximum soil moisture content target grid.
+ +Definition at line 133 of file program_setup.F90.
+ +Referenced by surface::calc_liq_soil_moisture(), calc_soil_params_driver(), and surface::rescale_soil_moisture().
+ +logical, public program_setup::minmax_vgfrc_from_climo = .true. | +
If false, interpolate min/max vegetation fraction from the input data to the target grid instead of using data from static data.
+Use with caution as vegetation categories can vary. Default: True.
+ +Definition at line 118 of file program_setup.F90.
+ +Referenced by sfc_input_data::cleanup_input_sfc_data(), sfc_input_data::init_sfc_esmf_fields(), surface::interp(), and read_setup_namelist().
+ +character(len=20), dimension(:), allocatable, public program_setup::missing_var_methods | +
Method to replace missing GRIB2 input records.
+ +Definition at line 77 of file program_setup.F90.
+ +Referenced by get_var_cond(), and read_varmap().
+ +real(kind=esmf_kind_r4), dimension(:), allocatable, public program_setup::missing_var_values | +
If input GRIB2 record is missing, the variable is set to this value.
+ +Definition at line 140 of file program_setup.F90.
+ +Referenced by get_var_cond(), and read_varmap().
+ +character(len=500), public program_setup::mosaic_file_input_grid = "NULL" | +
Input grid mosaic file.
+Only used for "restart" or "history" input type.
+ +Definition at line 27 of file program_setup.F90.
+ +Referenced by model_grid::define_input_grid_mosaic(), and read_setup_namelist().
+ +character(len=500), public program_setup::mosaic_file_target_grid = "NULL" | +
Target grid mosaic file.
+ +Definition at line 28 of file program_setup.F90.
+ +Referenced by model_grid::define_target_grid(), and read_setup_namelist().
+ +integer, public program_setup::nsoill_out = 4 | +
Number of soil levels desired in the output data.
+chgres_cube can interpolate from 9 input to 4 output levels. DEFAULT: 4.
+ +Definition at line 94 of file program_setup.F90.
+ +Referenced by model_grid::define_target_grid(), and read_setup_namelist().
+ +character(len=500), public program_setup::nst_files_input_grid = "NULL" | +
File name of input nst data.
+Only used for input_type "gfs_gaussian_nemsio".
+ +Definition at line 29 of file program_setup.F90.
+ +Referenced by nst_input_data::read_input_nst_netcdf_file(), and read_setup_namelist().
+ +integer, public program_setup::num_tracers | +
Number of atmospheric tracers to be processed.
+ +Definition at line 60 of file program_setup.F90.
+ +Referenced by atmosphere_target_data::cleanup_atmosphere_target_data(), atmosphere::compute_zh(), atmosphere::create_atm_esmf_fields(), atmosphere::newps(), read_setup_namelist(), read_varmap(), atmosphere::vintg_wam(), write_data::write_fv3_atm_bndy_data_netcdf(), write_data::write_fv3_atm_data_netcdf(), and write_data::write_fv3_atm_header_netcdf().
+ +integer, public program_setup::num_tracers_input | +
Number of atmospheric tracers in input file.
+ +Definition at line 61 of file program_setup.F90.
+ +Referenced by atmosphere::atmosphere_driver(), atm_input_data::cleanup_input_atm_data(), atmosphere::cleanup_target_atm_b4adj_data(), atmosphere::create_atm_b4adj_esmf_fields(), atm_input_data::init_atm_esmf_fields(), atm_input_data::read_input_atm_gaussian_netcdf_file(), atm_input_data::read_input_atm_restart_file(), atm_input_data::read_input_atm_tiled_history_file(), read_setup_namelist(), read_varmap(), and atmosphere::vintg().
+ +character(len=500), public program_setup::orog_dir_input_grid = "NULL" | +
Directory containing the input grid orography files.
+Only used for "restart" or "history" input types.
+ +Definition at line 34 of file program_setup.F90.
+ +Referenced by model_grid::define_input_grid_mosaic(), sfc_input_data::read_input_sfc_netcdf_file(), sfc_input_data::read_input_sfc_restart_file(), and read_setup_namelist().
+ +character(len=500), public program_setup::orog_dir_target_grid = "NULL" | +
Directory containing the target grid orography files.
+ +Definition at line 36 of file program_setup.F90.
+ +Referenced by model_grid::define_target_grid(), and read_setup_namelist().
+ +character(len=500), dimension(6), public program_setup::orog_files_input_grid = "NULL" | +
Input grid orography files.
+Only used for "restart" or "history" input types.
+ +Definition at line 35 of file program_setup.F90.
+ +Referenced by model_grid::define_input_grid_mosaic(), sfc_input_data::read_input_sfc_netcdf_file(), sfc_input_data::read_input_sfc_restart_file(), and read_setup_namelist().
+ +character(len=500), dimension(6), public program_setup::orog_files_target_grid = "NULL" | +
Target grid orography files.
+ +Definition at line 37 of file program_setup.F90.
+ +Referenced by model_grid::define_target_grid(), and read_setup_namelist().
+ +logical, dimension(:), allocatable, public program_setup::read_from_input | +
When false, variable was not read from GRIB2 input file.
+ +Definition at line 63 of file program_setup.F90.
+ +Referenced by sfc_input_data::read_grib_soil(), atm_input_data::read_input_atm_grib2_file(), and read_varmap().
+ +real, dimension(:), allocatable, public program_setup::refsmc_input | +
Reference soil moisture content input grid (onset of soil moisture stress).
+ +Definition at line 134 of file program_setup.F90.
+ +Referenced by calc_soil_params_driver(), and surface::rescale_soil_moisture().
+ +real, dimension(:), allocatable, public program_setup::refsmc_target | +
Reference soil moisture content target grid (onset of soil moisture stress).
+ +Definition at line 135 of file program_setup.F90.
+ +Referenced by calc_soil_params_driver(), and surface::rescale_soil_moisture().
+ +integer, public program_setup::regional = 0 | +
For regional target grids.
+When '1' remove boundary halo region from atmospheric/surface data and output atmospheric boundary file. When '2' output boundary file only. Default is '0' (global grids).
+ +Definition at line 89 of file program_setup.F90.
+ +Referenced by atmosphere::atmosphere_driver(), read_setup_namelist(), write_data::write_fv3_atm_data_netcdf(), and write_data::write_fv3_sfc_data_netcdf().
+ +real, dimension(:), allocatable, public program_setup::satpsi_target | +
Saturated soil potential, target grid.
+ +Definition at line 139 of file program_setup.F90.
+ +Referenced by surface::calc_liq_soil_moisture(), and calc_soil_params_driver().
+ +character(len=500), dimension(6), public program_setup::sfc_files_input_grid = "NULL" | +
File names containing input surface data.
+Not used for 'grib2' input type.
+ +Definition at line 38 of file program_setup.F90.
+ +Referenced by model_grid::define_input_grid_gaussian(), sfc_input_data::read_fv3_grid_data_netcdf(), nst_input_data::read_input_nst_netcdf_file(), sfc_input_data::read_input_sfc_data(), sfc_input_data::read_input_sfc_netcdf_file(), sfc_input_data::read_input_sfc_restart_file(), and read_setup_namelist().
+ +logical, public program_setup::sotyp_from_climo = .true. | +
If false, interpolate soil type from the input data to the target grid instead of using data from static data.
+Use with caution as the code assumes input soil type use STATSGO soil categories. Default: True.
+ +Definition at line 108 of file program_setup.F90.
+ +Referenced by surface::interp(), sfc_input_data::read_input_sfc_grib2_file(), and read_setup_namelist().
+ +logical, public program_setup::tg3_from_soil = .false. | +
If false, use lowest level soil temperature for the base soil temperature instead of using data from static data.
+Default: False.
+ +Definition at line 125 of file program_setup.F90.
+ +Referenced by surface::interp(), and read_setup_namelist().
+ +character(len=500), public program_setup::thomp_mp_climo_file = "NULL" | +
Path/name to the Thompson MP climatology file.
+ +Definition at line 40 of file program_setup.F90.
+ +Referenced by read_setup_namelist(), thompson_mp_climo_data::read_thomp_mp_climo_data(), and read_varmap().
+ +character(len=20), dimension(max_tracers), public program_setup::tracers ="NULL" | +
Name of each atmos tracer to be processed.
+These names will be used to identify the tracer records in the output files. Follows the convention in the field table. FOR GRIB2 FILES: Not used. Tracers instead taken from the varmap file.
+ +Definition at line 66 of file program_setup.F90.
+ +Referenced by atmosphere::atmosphere_driver(), atmosphere::compute_zh(), atmosphere::create_atm_b4adj_esmf_fields(), atmosphere::create_atm_esmf_fields(), atmosphere::newps(), atm_input_data::read_input_atm_grib2_file(), read_setup_namelist(), atmosphere::vintg(), atmosphere::vintg_wam(), write_data::write_fv3_atm_bndy_data_netcdf(), and write_data::write_fv3_atm_data_netcdf().
+ +character(len=20), dimension(max_tracers), public program_setup::tracers_input ="NULL" | +
Name of each atmos tracer record in the input file.
+May be different from value in 'tracers'. FOR GRIB2 FILES: Not used. Tracers instead taken from the varmap file.
+ +Definition at line 72 of file program_setup.F90.
+ +Referenced by atm_input_data::init_atm_esmf_fields(), atm_input_data::read_input_atm_gaussian_netcdf_file(), atm_input_data::read_input_atm_grib2_file(), atm_input_data::read_input_atm_restart_file(), atm_input_data::read_input_atm_tiled_history_file(), read_setup_namelist(), and read_varmap().
+ +logical, public program_setup::use_thomp_mp_climo =.false. | +
When true, read and process Thompson MP climatological tracers.
+False, when 'thomp_mp_climo_file' is NULL.
+ +Definition at line 128 of file program_setup.F90.
+ +Referenced by atmosphere::atmosphere_driver(), read_setup_namelist(), write_data::write_fv3_atm_bndy_data_netcdf(), write_data::write_fv3_atm_data_netcdf(), and write_data::write_fv3_atm_header_netcdf().
+ +character(len=500), public program_setup::varmap_file = "NULL" | +
REQUIRED.
+Full path of the relevant varmap file.
+ +Definition at line 18 of file program_setup.F90.
+ +Referenced by read_setup_namelist(), and read_varmap().
+ +character(len=500), public program_setup::vcoord_file_target_grid = "NULL" | +
Vertical coordinate definition file.
+ +Definition at line 39 of file program_setup.F90.
+ +Referenced by read_setup_namelist(), and atmosphere::read_vcoord_info().
+ +logical, public program_setup::vgfrc_from_climo = .true. | +
If false, interpolate vegetation fraction from the input data to the target grid instead of using data from static data.
+Use with caution as vegetation categories can vary. Default: True.
+ +Definition at line 113 of file program_setup.F90.
+ +Referenced by sfc_input_data::cleanup_input_sfc_data(), sfc_input_data::init_sfc_esmf_fields(), surface::interp(), and read_setup_namelist().
+ +logical, public program_setup::vgtyp_from_climo = .true. | +
If false, interpolate vegetation type from the input data to the target grid instead of using data from static data.
+Use with caution as vegetation categories can vary. Default: True.
+ +Definition at line 104 of file program_setup.F90.
+ +Referenced by surface::interp(), sfc_input_data::read_input_sfc_grib2_file(), and read_setup_namelist().
+ +logical, public program_setup::wam_cold_start = .false. | +
When true, cold start for whole atmosphere model.
+ +Definition at line 100 of file program_setup.F90.
+ +Referenced by atmosphere::atmosphere_driver(), and read_setup_namelist().
+ +character(len=500), public program_setup::wam_parm_file ="msis21.parm" | +
Full path to msis21.parm for WAM initialization.
+ +Definition at line 83 of file program_setup.F90.
+ +Referenced by atmosphere::atmosphere_driver(), and read_setup_namelist().
+ +real, dimension(:), allocatable, public program_setup::wltsmc_input | +
Plant wilting point soil moisture content input grid.
+ +Definition at line 136 of file program_setup.F90.
+ +Referenced by calc_soil_params_driver(), and surface::rescale_soil_moisture().
+ +real, dimension(:), allocatable, public program_setup::wltsmc_target | +
Plant wilting point soil moisture content target grid.
+ +Definition at line 137 of file program_setup.F90.
+ +Referenced by calc_soil_params_driver(), and surface::rescale_soil_moisture().
+ +
+ chgres_cube
+ 1.13.0
+
+ |
+
Natm_input_data | Read atmospheric data on the input grid |
Natmosphere | Process atmospheric fields |
Natmosphere_target_data | Module to hold variables and ESMF fields associated with the target grid atmospheric data |
Ngrib2_util | Utilities for use when reading grib2 data |
Nmodel_grid | Sets up the ESMF grid objects for the input data grid and target FV3 grid |
Nprogram_setup | This module contains code to read the setup namelist file, handle the varmap file for GRIB2 data, and calculate the soil parameters |
Nsearch_util | Replace undefined values with a valid value |
Nstatic_data | Reads static surface climatological data for the target FV3 grid (such as soil type and vegetation type) |
Nsurface | Process surface and nst fields |
Nsurface_target_data | Module to hold ESMF fields associated with the target grid surface data |
Nthompson_mp_climo_data | Module to read the Thompson climatological MP data file and set up the associated esmf field and grid objects |
+ chgres_cube
+ 1.13.0
+
+ |
+
Replace undefined values with a valid value. +More...
++Functions/Subroutines | |
subroutine, public | search (field, mask, idim, jdim, tile, field_num, latitude, terrain_land, soilt_climo) |
Replace undefined surface values. More... | |
subroutine | sst_guess (latitude, sst) |
Set default Sea Surface Temperature (SST) based on latitude. More... | |
Replace undefined values with a valid value.
+This can happen for an isolated lake or island that is unresolved by the input grid.
+Searches for the nearest valid land/non-land data where the input and target fv3 land-mask differ. Example: when the target FV3 grid depicts an island that is not resolved by the input data. If nearby valid data is not found, a default value is used.
+ +subroutine, public search_util::search | +( | +real(esmf_kind_r8), dimension(idim,jdim), intent(inout) | +field, | +
+ | + | integer(esmf_kind_i8), dimension(idim,jdim), intent(in) | +mask, | +
+ | + | integer, intent(in) | +idim, | +
+ | + | integer, intent(in) | +jdim, | +
+ | + | integer, intent(in) | +tile, | +
+ | + | integer, intent(in) | +field_num, | +
+ | + | real(esmf_kind_r8), dimension(idim,jdim), intent(in), optional | +latitude, | +
+ | + | real(esmf_kind_r8), dimension(idim,jdim), intent(in), optional | +terrain_land, | +
+ | + | real(esmf_kind_r8), dimension(idim,jdim), intent(in), optional | +soilt_climo | +
+ | ) | ++ |
Replace undefined surface values.
+Replace undefined values on the model grid with a valid value at a nearby neighbor. Undefined values are typically associated with isolated islands where there is no source data.
+Routine searches a neighborhood with a radius of 100 grid points. If no valid value is found, a default value is used.
+This routine works for one tile of a cubed sphere grid. It does not consider valid values at adjacent faces. That is a future upgrade.
+[in,out] | field | On input/output, surface data with undefined/no undefined values. |
[in] | mask | land-mask of surface data. |
[in] | idim | 'i' dimension of tile |
[in] | jdim | 'j' dimension of tile |
[in] | tile | tile number |
[in] | field_num | surface field number |
[in] | latitude | latitude of the surface data |
[in] | terrain_land | terrain height |
[in] | soilt_climo | climatological soil type |
Definition at line 47 of file search_util.F90.
+ +References sst_guess().
+ +Referenced by surface::interp(), sfc_input_data::read_input_sfc_grib2_file(), and surface::search_many().
+ +subroutine search_util::sst_guess | +( | +real(esmf_kind_r8), intent(in) | +latitude, | +
+ | + | real(esmf_kind_r8), intent(out) | +sst | +
+ | ) | ++ |
Set default Sea Surface Temperature (SST) based on latitude.
+Based loosely on the average annual SST values from ./am/cfs_oi2sst1x1monclim19822001.grb
+The temperature in the polar and tropical regions is set to 273.16 and 300.0 Kelvin respectively. Polar regions are poleward of 60 degrees. Tropical regions are within 30 degrees of the equator. In mid-latitudes, a linear change with latitude is used.
+[in] | latitude | Latitude in decimal degrees |
[out] | sst | Default SST in Kelvin |
Definition at line 235 of file search_util.F90.
+ +Referenced by search().
+ +
+ chgres_cube
+ 1.13.0
+
+ |
+
Reads static surface climatological data for the target FV3 grid (such as soil type and vegetation type). +More...
++Functions/Subroutines | |
subroutine, public | cleanup_static_fields |
Free up memory for fields in this module. More... | |
subroutine, public | create_static_fields |
Create ESMF fields for static target grid data. More... | |
subroutine, public | get_static_fields (localpet) |
Driver routine to read/time interpolate static/climo fields on the fv3 target grid. More... | |
subroutine | read_static_file (field, i_target, j_target, tile, data_one_tile, land_frac, max_data_one_tile, min_data_one_tile) |
Read static climatological data file. More... | |
+Variables | |
type(esmf_field), public | alnsf_target_grid |
near ir black sky albedo More... | |
type(esmf_field), public | alnwf_target_grid |
near ir white sky albedo More... | |
type(esmf_field), public | alvsf_target_grid |
visible black sky albedo More... | |
type(esmf_field), public | alvwf_target_grid |
visible white sky albedo More... | |
type(esmf_field), public | facsf_target_grid |
fractional coverage for strong zenith angle dependent albedo More... | |
type(esmf_field), public | facwf_target_grid |
fractional coverage for weak zenith angle dependent albedo More... | |
type(esmf_field), public | max_veg_greenness_target_grid |
maximum annual greenness fraction More... | |
type(esmf_field), public | min_veg_greenness_target_grid |
minimum annual greenness fraction More... | |
type(esmf_field), public | mxsno_albedo_target_grid |
maximum snow albedo More... | |
type(esmf_field), public | slope_type_target_grid |
slope type More... | |
type(esmf_field), public | soil_type_target_grid |
soil type More... | |
type(esmf_field), public | substrate_temp_target_grid |
soil subtrate temperature More... | |
type(esmf_field), public | veg_greenness_target_grid |
vegetation greenness fraction More... | |
type(esmf_field), public | veg_type_target_grid |
vegetation type More... | |
Reads static surface climatological data for the target FV3 grid (such as soil type and vegetation type).
+Time interpolates time-varying fields, such as monthly plant greenness, to the model run time. Data for each target FV3 resolution resides in the ‘fixed’ directory. Set path via the fix_dir_target_grid namelist variable.
+ +subroutine, public static_data::cleanup_static_fields | +( | +) | ++ |
Free up memory for fields in this module.
+ + +Definition at line 555 of file static_data.F90.
+ +References alnsf_target_grid, alnwf_target_grid, alvsf_target_grid, alvwf_target_grid, facsf_target_grid, facwf_target_grid, max_veg_greenness_target_grid, min_veg_greenness_target_grid, mxsno_albedo_target_grid, slope_type_target_grid, soil_type_target_grid, substrate_temp_target_grid, veg_greenness_target_grid, and veg_type_target_grid.
+ +Referenced by surface::surface_driver().
+ +subroutine, public static_data::create_static_fields | +( | +) | ++ |
Create ESMF fields for static target grid data.
+ + +Definition at line 444 of file static_data.F90.
+ +References alnsf_target_grid, alnwf_target_grid, alvsf_target_grid, alvwf_target_grid, facsf_target_grid, facwf_target_grid, max_veg_greenness_target_grid, min_veg_greenness_target_grid, mxsno_albedo_target_grid, slope_type_target_grid, soil_type_target_grid, substrate_temp_target_grid, model_grid::target_grid, veg_greenness_target_grid, and veg_type_target_grid.
+ +Referenced by get_static_fields().
+ +subroutine, public static_data::get_static_fields | +( | +integer, intent(in) | +localpet | ) | ++ |
Driver routine to read/time interpolate static/climo fields on the fv3 target grid.
+[in] | localpet | ESMF local persistent execution thread |
Definition at line 50 of file static_data.F90.
+ +References alnsf_target_grid, alnwf_target_grid, alvsf_target_grid, alvwf_target_grid, create_static_fields(), facsf_target_grid, facwf_target_grid, model_grid::i_target, model_grid::j_target, model_grid::land_frac_target_grid, max_veg_greenness_target_grid, min_veg_greenness_target_grid, mxsno_albedo_target_grid, model_grid::num_tiles_target_grid, read_static_file(), slope_type_target_grid, soil_type_target_grid, substrate_temp_target_grid, veg_greenness_target_grid, and veg_type_target_grid.
+ +Referenced by surface::surface_driver().
+ +subroutine static_data::read_static_file | +( | +character(len=*), intent(in) | +field, | +
+ | + | integer, intent(in) | +i_target, | +
+ | + | integer, intent(in) | +j_target, | +
+ | + | integer, intent(in) | +tile, | +
+ | + | real(esmf_kind_r8), dimension(i_target,j_target), intent(out) | +data_one_tile, | +
+ | + | real(esmf_kind_r8), dimension(i_target,j_target), intent(in) | +land_frac, | +
+ | + | real(esmf_kind_r8), dimension(i_target,j_target), intent(out), optional | +max_data_one_tile, | +
+ | + | real(esmf_kind_r8), dimension(i_target,j_target), intent(out), optional | +min_data_one_tile | +
+ | ) | ++ |
Read static climatological data file.
+[in] | field | the name of the surface field to be processed |
[in] | i_target | the "i" dimension of the target model tile |
[in] | j_target | the "j" dimension of the target model tile |
[in] | tile | the tile number of be processed |
[in] | land_frac | landcover fraction on the target model tile |
[out] | data_one_tile | the processed surface data on the tile |
[out] | max_data_one_tile | for fields with multiple time periods, the max yearly value on the tile + |
[out] | min_data_one_tile | for fields with multiple time periods, the min yearly value on the tile |
Definition at line 301 of file static_data.F90.
+ +References program_setup::cres_target_grid, program_setup::cycle_day, program_setup::cycle_hour, program_setup::cycle_mon, program_setup::fix_dir_target_grid, and model_grid::tiles_target_grid.
+ +Referenced by get_static_fields().
+ +type(esmf_field), public static_data::alnsf_target_grid | +
near ir black sky albedo
+ +Definition at line 25 of file static_data.F90.
+ +Referenced by cleanup_static_fields(), create_static_fields(), get_static_fields(), surface::qc_check(), and write_data::write_fv3_sfc_data_netcdf().
+ +type(esmf_field), public static_data::alnwf_target_grid | +
near ir white sky albedo
+ +Definition at line 26 of file static_data.F90.
+ +Referenced by cleanup_static_fields(), create_static_fields(), get_static_fields(), surface::qc_check(), and write_data::write_fv3_sfc_data_netcdf().
+ +type(esmf_field), public static_data::alvsf_target_grid | +
visible black sky albedo
+ +Definition at line 23 of file static_data.F90.
+ +Referenced by cleanup_static_fields(), create_static_fields(), get_static_fields(), surface::qc_check(), and write_data::write_fv3_sfc_data_netcdf().
+ +type(esmf_field), public static_data::alvwf_target_grid | +
visible white sky albedo
+ +Definition at line 24 of file static_data.F90.
+ +Referenced by cleanup_static_fields(), create_static_fields(), get_static_fields(), surface::qc_check(), and write_data::write_fv3_sfc_data_netcdf().
+ +type(esmf_field), public static_data::facsf_target_grid | +
fractional coverage for strong zenith angle dependent albedo
+ +Definition at line 27 of file static_data.F90.
+ +Referenced by cleanup_static_fields(), create_static_fields(), get_static_fields(), surface::qc_check(), and write_data::write_fv3_sfc_data_netcdf().
+ +type(esmf_field), public static_data::facwf_target_grid | +
fractional coverage for weak zenith angle dependent albedo
+ +Definition at line 28 of file static_data.F90.
+ +Referenced by cleanup_static_fields(), create_static_fields(), get_static_fields(), surface::qc_check(), and write_data::write_fv3_sfc_data_netcdf().
+ +type(esmf_field), public static_data::max_veg_greenness_target_grid | +
maximum annual greenness fraction
+ +Definition at line 29 of file static_data.F90.
+ +Referenced by cleanup_static_fields(), create_static_fields(), get_static_fields(), surface::interp(), surface::qc_check(), and write_data::write_fv3_sfc_data_netcdf().
+ +type(esmf_field), public static_data::min_veg_greenness_target_grid | +
minimum annual greenness fraction
+ +Definition at line 30 of file static_data.F90.
+ +Referenced by cleanup_static_fields(), create_static_fields(), get_static_fields(), surface::interp(), surface::qc_check(), and write_data::write_fv3_sfc_data_netcdf().
+ +type(esmf_field), public static_data::mxsno_albedo_target_grid | +
maximum snow albedo
+ +Definition at line 31 of file static_data.F90.
+ +Referenced by cleanup_static_fields(), create_static_fields(), get_static_fields(), surface::qc_check(), and write_data::write_fv3_sfc_data_netcdf().
+ +type(esmf_field), public static_data::slope_type_target_grid | +
slope type
+ +Definition at line 32 of file static_data.F90.
+ +Referenced by cleanup_static_fields(), create_static_fields(), get_static_fields(), surface::qc_check(), and write_data::write_fv3_sfc_data_netcdf().
+ +type(esmf_field), public static_data::soil_type_target_grid | +
soil type
+ +Definition at line 33 of file static_data.F90.
+ +Referenced by surface::calc_liq_soil_moisture(), cleanup_static_fields(), create_static_fields(), get_static_fields(), surface::interp(), surface::qc_check(), surface::rescale_soil_moisture(), and write_data::write_fv3_sfc_data_netcdf().
+ +type(esmf_field), public static_data::substrate_temp_target_grid | +
soil subtrate temperature
+ +Definition at line 34 of file static_data.F90.
+ +Referenced by cleanup_static_fields(), create_static_fields(), get_static_fields(), surface::interp(), surface::qc_check(), and write_data::write_fv3_sfc_data_netcdf().
+ +type(esmf_field), public static_data::veg_greenness_target_grid | +
vegetation greenness fraction
+ +Definition at line 35 of file static_data.F90.
+ +Referenced by cleanup_static_fields(), create_static_fields(), get_static_fields(), surface::interp(), surface::qc_check(), surface::rescale_soil_moisture(), and write_data::write_fv3_sfc_data_netcdf().
+ +type(esmf_field), public static_data::veg_type_target_grid | +
vegetation type
+ +Definition at line 36 of file static_data.F90.
+ +Referenced by surface::adjust_soilt_for_terrain(), surface::calc_liq_soil_moisture(), cleanup_static_fields(), create_static_fields(), get_static_fields(), surface::interp(), surface::qc_check(), surface::rescale_soil_moisture(), and write_data::write_fv3_sfc_data_netcdf().
+ +
+ chgres_cube
+ 1.13.0
+
+ |
+
Process surface and nst fields. +More...
++Data Types | |
type | realptr_2d |
type | realptr_3d |
+Functions/Subroutines | |
subroutine | adjust_soil_levels (localpet) |
Adjust soil levels of the input grid if there is a mismatch between input and target grids. More... | |
subroutine | adjust_soilt_for_terrain |
Adjust soil temperature for changes in terrain height between the input and target grids. More... | |
subroutine | calc_liq_soil_moisture |
Compute liquid portion of the total soil moisture. More... | |
subroutine | cleanup_all_target_sfc_data |
Free up memory once the target grid surface fields are no longer needed. More... | |
subroutine, public | create_nst_esmf_fields |
Create ESMF fields for the target grid nst variables. More... | |
subroutine, public | create_surface_esmf_fields |
Create ESMF fields for the target grid surface variables. More... | |
real function | frh2o (TKELV, SMC, SH2O, SMCMAX, BEXP, PSIS) |
Calculate supercooled soil moisture. More... | |
subroutine | ij_to_i_j (ij, itile, jtile, i, j) |
Convert 1d index to 2d indices. More... | |
subroutine, public | interp (localpet) |
Horizontally interpolate surface fields from input to target FV3 grid using esmf routines. More... | |
subroutine, public | nst_land_fill |
nst is not active at land or sea ice points. More... | |
subroutine | qc_check |
Perform some quality control checks and set flag values at non-active points. More... | |
subroutine, public | regrid_many (bundle_pre, bundle_post, num_field, route, dozero, unmapped_ptr, resetifd) |
Regrid multiple ESMF fields from input to target grid. More... | |
subroutine | rescale_soil_moisture |
Adjust soil moisture for changes in soil type between the input and target grids. More... | |
subroutine | roughness |
Set roughness length at points with some sea ice to 1 cm. More... | |
subroutine, public | search_many (num_field, bundle_target, tile, search_nums, localpet, latitude, terrain_land, soilt_climo, mask) |
Execute the search function for multple fields. More... | |
subroutine, public | surface_driver (localpet) |
Driver routine to process surface/nst data. More... | |
subroutine | update_landmask |
Update landmask for sea ice. More... | |
+Variables | |
real, parameter, private | blim = 5.5 |
soil 'b' parameter limit More... | |
real, parameter, private | frz_h2o = 273.15 |
melting pt water More... | |
real, parameter, private | frz_ice = 271.21 |
melting pt sea ice More... | |
real, parameter, private | grav = 9.81 |
gravity More... | |
real, parameter, private | hlice = 3.335E5 |
latent heat of fusion More... | |
real(esmf_kind_r8), parameter, private | missing = -1.e20_esmf_kind_r8 |
flag for non-active points. More... | |
type(esmf_field) | soil_type_from_input_grid |
soil type interpolated from input grid More... | |
type(esmf_field) | terrain_from_input_grid |
terrain height interpolated from input grid More... | |
type(esmf_field) | terrain_from_input_grid_land |
terrain height interpolated from input grid at all land points More... | |
integer, parameter | veg_type_landice_target = 15 |
Vegetation type category that defines permanent land ice points. More... | |
Process surface and nst fields.
+Interpolates fields from the input to target grids. Adjusts soil temperature according to differences in input and target grid terrain. Rescales soil moisture for soil type differences between input and target grid. Computes frozen portion of total soil moisture.
+Assumes the input land data are Noah LSM-based, and the fv3 run will use the Noah LSM. NSST fields are not available when using GRIB2 input data.
+Public variables are defined below. "target" indicates field associated with the target grid. "input" indicates field associated with the input grid.
+ +subroutine surface::adjust_soil_levels | +( | +integer, intent(in) | +localpet | ) | ++ |
Adjust soil levels of the input grid if there is a mismatch between input and target grids.
+Presently can only convert from 9 to 4 levels.
+[in] | localpet | ESMF local persistent execution thread |
Definition at line 2047 of file surface.F90.
+ +References model_grid::i_input, model_grid::input_grid, model_grid::j_input, and model_grid::lsoil_target.
+ +Referenced by surface_driver().
+ +subroutine surface::adjust_soilt_for_terrain | +( | +) | ++ |
Adjust soil temperature for changes in terrain height between the input and target grids.
+ + +Definition at line 1971 of file surface.F90.
+ +References model_grid::landmask_target_grid, surface_target_data::soil_temp_target_grid, terrain_from_input_grid, model_grid::terrain_target_grid, veg_type_landice_target, and static_data::veg_type_target_grid.
+ +Referenced by surface_driver().
+ +subroutine surface::calc_liq_soil_moisture | +( | +) | ++ |
Compute liquid portion of the total soil moisture.
+ + +Definition at line 1521 of file surface.F90.
+ +References program_setup::bb_target, blim, frh2o(), frz_h2o, grav, hlice, model_grid::landmask_target_grid, program_setup::maxsmc_target, program_setup::satpsi_target, surface_target_data::soil_temp_target_grid, static_data::soil_type_target_grid, surface_target_data::soilm_liq_target_grid, surface_target_data::soilm_tot_target_grid, veg_type_landice_target, and static_data::veg_type_target_grid.
+ +Referenced by surface_driver().
+ +subroutine surface::cleanup_all_target_sfc_data | +( | +) | ++ |
Free up memory once the target grid surface fields are no longer needed.
+ + +Definition at line 3714 of file surface.F90.
+ +References surface_target_data::cleanup_target_sfc_data(), soil_type_from_input_grid, terrain_from_input_grid, and terrain_from_input_grid_land.
+ +Referenced by surface_driver().
+ +subroutine, public surface::create_nst_esmf_fields | +( | +) | ++ |
Create ESMF fields for the target grid nst variables.
+ + +Definition at line 3200 of file surface.F90.
+ +References surface_target_data::c_0_target_grid, surface_target_data::c_d_target_grid, surface_target_data::d_conv_target_grid, surface_target_data::dt_cool_target_grid, surface_target_data::ifd_target_grid, surface_target_data::qrain_target_grid, model_grid::target_grid, surface_target_data::tref_target_grid, surface_target_data::w_0_target_grid, surface_target_data::w_d_target_grid, surface_target_data::xs_target_grid, surface_target_data::xt_target_grid, surface_target_data::xtts_target_grid, surface_target_data::xu_target_grid, surface_target_data::xv_target_grid, surface_target_data::xz_target_grid, surface_target_data::xzts_target_grid, surface_target_data::z_c_target_grid, and surface_target_data::zm_target_grid.
+ +Referenced by surface_driver().
+ +subroutine, public surface::create_surface_esmf_fields | +( | +) | ++ |
Create ESMF fields for the target grid surface variables.
+ + +Definition at line 2760 of file surface.F90.
+ +References surface_target_data::canopy_mc_target_grid, surface_target_data::f10m_target_grid, surface_target_data::ffmm_target_grid, surface_target_data::ice_temp_target_grid, surface_target_data::lai_target_grid, model_grid::lsoil_target, surface_target_data::q2m_target_grid, surface_target_data::seaice_depth_target_grid, surface_target_data::seaice_fract_target_grid, surface_target_data::seaice_skin_temp_target_grid, surface_target_data::skin_temp_target_grid, surface_target_data::snow_depth_at_ice_target_grid, surface_target_data::snow_depth_target_grid, surface_target_data::snow_liq_equiv_at_ice_target_grid, surface_target_data::snow_liq_equiv_target_grid, surface_target_data::soil_temp_target_grid, soil_type_from_input_grid, surface_target_data::soilm_liq_target_grid, surface_target_data::soilm_tot_target_grid, surface_target_data::srflag_target_grid, surface_target_data::sst_target_grid, surface_target_data::t2m_target_grid, model_grid::target_grid, terrain_from_input_grid, surface_target_data::tprcp_target_grid, surface_target_data::ustar_target_grid, surface_target_data::z0_ice_target_grid, and surface_target_data::z0_water_target_grid.
+ +Referenced by surface_driver().
+ +real function surface::frh2o | +( | +real(esmf_kind_r8) | +TKELV, | +
+ | + | real(esmf_kind_r8) | +SMC, | +
+ | + | real(esmf_kind_r8) | +SH2O, | +
+ | + | real | +SMCMAX, | +
+ | + | real | +BEXP, | +
+ | + | real | +PSIS | +
+ | ) | ++ |
Calculate supercooled soil moisture.
+Calculate amount of supercooled liquid soil water content if temperature is below 273.15K. Requires Newton-type iteration to solve the nonlinear implicit equation given in eqn 17 of Koren et. al (1999, JGR, VOL 104(D16), 19569-19585).
+New version (June 2001): Much faster and more accurate Newton iteration achieved by first taking log of eqn cited above – less than 4 (typically 1 or 2) iterations achieves convergence. Also, explicit 1-step solution option for special case of parameter ck=0, which reduces the original implicit equation to a simpler explicit form, known as the "Flerchinger eqn". Improved handling of solution in the limit of freezing point temperature.
+[in] | tkelv | Temperature (Kelvin) |
[in] | smc | Total soil moisture content (volumetric) |
[in] | sh2O | Liquid soil moisture content (volumetric) |
[in] | smcmax | Saturation soil moisture content |
[in] | bexp | Soil type "b" parameter |
[in] | psis | Saturated soil matric potential |
Definition at line 1665 of file surface.F90.
+ +References blim, frz_h2o, grav, and hlice.
+ +Referenced by calc_liq_soil_moisture().
+ +subroutine surface::ij_to_i_j | +( | +integer(esmf_kind_i4), intent(in) | +ij, | +
+ | + | integer, intent(in) | +itile, | +
+ | + | integer, intent(in) | +jtile, | +
+ | + | integer, intent(out) | +i, | +
+ | + | integer, intent(out) | +j | +
+ | ) | ++ |
Convert 1d index to 2d indices.
+[in] | ij | the 1d index |
[in] | itile | i-dimension of the tile |
[in] | jtile | j-dimension of the tile |
[out] | i | the "i" index |
[out] | j | the "j" index |
Definition at line 3421 of file surface.F90.
+ +Referenced by interp(), and regrid_many().
+ +subroutine, public surface::interp | +( | +integer, intent(in) | +localpet | ) | ++ |
Horizontally interpolate surface fields from input to target FV3 grid using esmf routines.
+[in] | localpet | ESMF local persistent execution thread |
Definition at line 262 of file surface.F90.
+ +References surface_target_data::c_0_target_grid, surface_target_data::c_d_target_grid, surface_target_data::canopy_mc_target_grid, program_setup::convert_nst, surface_target_data::d_conv_target_grid, surface_target_data::dt_cool_target_grid, surface_target_data::f10m_target_grid, surface_target_data::ffmm_target_grid, model_grid::i_target, surface_target_data::ice_temp_target_grid, surface_target_data::ifd_target_grid, ij_to_i_j(), model_grid::input_grid, model_grid::j_target, program_setup::lai_from_climo, surface_target_data::lai_target_grid, model_grid::landmask_target_grid, model_grid::latitude_target_grid, model_grid::lsoil_target, static_data::max_veg_greenness_target_grid, static_data::min_veg_greenness_target_grid, program_setup::minmax_vgfrc_from_climo, model_grid::num_tiles_target_grid, surface_target_data::q2m_target_grid, surface_target_data::qrain_target_grid, regrid_many(), surface_target_data::seaice_depth_target_grid, surface_target_data::seaice_fract_target_grid, surface_target_data::seaice_skin_temp_target_grid, model_grid::seamask_target_grid, search_util::search(), search_many(), surface_target_data::skin_temp_target_grid, surface_target_data::snow_depth_at_ice_target_grid, surface_target_data::snow_depth_target_grid, surface_target_data::snow_liq_equiv_at_ice_target_grid, surface_target_data::snow_liq_equiv_target_grid, surface_target_data::soil_temp_target_grid, soil_type_from_input_grid, static_data::soil_type_target_grid, surface_target_data::soilm_tot_target_grid, program_setup::sotyp_from_climo, surface_target_data::srflag_target_grid, surface_target_data::sst_target_grid, static_data::substrate_temp_target_grid, surface_target_data::t2m_target_grid, model_grid::target_grid, terrain_from_input_grid, terrain_from_input_grid_land, atm_input_data::terrain_input_grid, program_setup::tg3_from_soil, surface_target_data::tprcp_target_grid, surface_target_data::tref_target_grid, surface_target_data::ustar_target_grid, static_data::veg_greenness_target_grid, veg_type_landice_target, static_data::veg_type_target_grid, program_setup::vgfrc_from_climo, program_setup::vgtyp_from_climo, surface_target_data::w_0_target_grid, surface_target_data::w_d_target_grid, surface_target_data::xs_target_grid, surface_target_data::xt_target_grid, surface_target_data::xtts_target_grid, surface_target_data::xu_target_grid, surface_target_data::xv_target_grid, surface_target_data::xz_target_grid, surface_target_data::xzts_target_grid, surface_target_data::z0_water_target_grid, surface_target_data::z_c_target_grid, and surface_target_data::zm_target_grid.
+ +Referenced by surface_driver().
+ +subroutine, public surface::nst_land_fill | +( | +) | ++ |
nst is not active at land or sea ice points.
+Set nst fields to flag values at these points.
+ + +Definition at line 2667 of file surface.F90.
+ +References surface_target_data::c_0_target_grid, surface_target_data::c_d_target_grid, surface_target_data::d_conv_target_grid, surface_target_data::dt_cool_target_grid, frz_ice, surface_target_data::ifd_target_grid, surface_target_data::qrain_target_grid, surface_target_data::seaice_fract_target_grid, model_grid::seamask_target_grid, surface_target_data::skin_temp_target_grid, surface_target_data::tref_target_grid, surface_target_data::w_0_target_grid, surface_target_data::w_d_target_grid, surface_target_data::xs_target_grid, surface_target_data::xt_target_grid, surface_target_data::xtts_target_grid, surface_target_data::xu_target_grid, surface_target_data::xv_target_grid, surface_target_data::xz_target_grid, surface_target_data::xzts_target_grid, surface_target_data::z_c_target_grid, and surface_target_data::zm_target_grid.
+ +Referenced by surface_driver().
+ +subroutine surface::qc_check | +( | +) | ++ |
Perform some quality control checks and set flag values at non-active points.
+ + +Definition at line 2240 of file surface.F90.
+ +References static_data::alnsf_target_grid, static_data::alnwf_target_grid, static_data::alvsf_target_grid, static_data::alvwf_target_grid, surface_target_data::canopy_mc_target_grid, static_data::facsf_target_grid, static_data::facwf_target_grid, frz_ice, surface_target_data::ice_temp_target_grid, model_grid::landmask_target_grid, static_data::max_veg_greenness_target_grid, static_data::min_veg_greenness_target_grid, missing, static_data::mxsno_albedo_target_grid, surface_target_data::seaice_depth_target_grid, surface_target_data::seaice_fract_target_grid, surface_target_data::seaice_skin_temp_target_grid, model_grid::seamask_target_grid, surface_target_data::skin_temp_target_grid, static_data::slope_type_target_grid, surface_target_data::snow_depth_at_ice_target_grid, surface_target_data::snow_depth_target_grid, surface_target_data::snow_liq_equiv_at_ice_target_grid, surface_target_data::snow_liq_equiv_target_grid, surface_target_data::soil_temp_target_grid, static_data::soil_type_target_grid, surface_target_data::soilm_liq_target_grid, surface_target_data::soilm_tot_target_grid, surface_target_data::sst_target_grid, static_data::substrate_temp_target_grid, static_data::veg_greenness_target_grid, veg_type_landice_target, and static_data::veg_type_target_grid.
+ +Referenced by surface_driver().
+ +subroutine, public surface::regrid_many | +( | +type(esmf_fieldbundle), intent(in) | +bundle_pre, | +
+ | + | type(esmf_fieldbundle), intent(in) | +bundle_post, | +
+ | + | integer, intent(in) | +num_field, | +
+ | + | type(esmf_routehandle), intent(inout) | +route, | +
+ | + | logical, dimension(num_field), intent(in) | +dozero, | +
+ | + | integer(esmf_kind_i4), dimension(:), intent(inout), optional | +unmapped_ptr, | +
+ | + | logical, intent(in), optional | +resetifd | +
+ | ) | ++ |
Regrid multiple ESMF fields from input to target grid.
+[in] | bundle_pre | ESMF fieldBundle on input grid |
[in] | bundle_post | ESMF fieldBundle on target grid |
[in] | num_field | Number of fields in target field pointer |
[in,out] | route | Route handle to saved ESMF regridding instructions |
[in] | dozero | Logical length num_field for whether field should be zeroed out before regridding |
[in,out] | unmapped_ptr | (optional) Pointer to unmapped points from FieldRegrid |
[in] | resetifd | (optional) Logical for whether to reset ifd (only for water where nst data is used) |
Definition at line 3457 of file surface.F90.
+ +References program_setup::convert_nst, model_grid::i_target, surface_target_data::ifd_target_grid, ij_to_i_j(), and model_grid::j_target.
+ +Referenced by interp().
+ +subroutine surface::rescale_soil_moisture | +( | +) | ++ |
Adjust soil moisture for changes in soil type between the input and target grids.
+Works for Noah land model only. Required to preserve latent/sensible heat fluxes.
+ + +Definition at line 1803 of file surface.F90.
+ +References program_setup::drysmc_input, program_setup::drysmc_target, model_grid::landmask_target_grid, program_setup::maxsmc_input, program_setup::maxsmc_target, program_setup::refsmc_input, program_setup::refsmc_target, soil_type_from_input_grid, static_data::soil_type_target_grid, surface_target_data::soilm_tot_target_grid, static_data::veg_greenness_target_grid, veg_type_landice_target, static_data::veg_type_target_grid, program_setup::wltsmc_input, and program_setup::wltsmc_target.
+ +Referenced by surface_driver().
+ +subroutine surface::roughness | +( | +) | ++ |
Set roughness length at points with some sea ice to 1 cm.
+Set flag value at points with some or all open water.
+ + +Definition at line 2162 of file surface.F90.
+ +References model_grid::landmask_target_grid, missing, surface_target_data::seaice_fract_target_grid, model_grid::seamask_target_grid, surface_target_data::z0_ice_target_grid, and surface_target_data::z0_water_target_grid.
+ +Referenced by surface_driver().
+ +subroutine, public surface::search_many | +( | +integer, intent(in) | +num_field, | +
+ | + | type(esmf_fieldbundle), intent(inout) | +bundle_target, | +
+ | + | integer, intent(in) | +tile, | +
+ | + | integer, dimension(num_field), intent(inout) | +search_nums, | +
+ | + | integer, intent(in) | +localpet, | +
+ | + | real(esmf_kind_r8), dimension(i_target,j_target), intent(inout), optional | +latitude, | +
+ | + | real(esmf_kind_r8), dimension(i_target,j_target), intent(inout), optional | +terrain_land, | +
+ | + | real(esmf_kind_r8), dimension(i_target,j_target), intent(inout), optional | +soilt_climo, | +
+ | + | integer(esmf_kind_i8), dimension(i_target,j_target), intent(inout), optional | +mask | +
+ | ) | ++ |
Execute the search function for multple fields.
+[in] | num_field | Number of fields to process. |
[in,out] | bundle_target | ESMF FieldBundle holding target fields to search |
[in] | tile | Current cubed sphere tile. |
[in,out] | search_nums | Array length num_field holding search field numbers corresponding to each field provided for searching. |
[in] | localpet | ESMF local persistent execution thread. |
[in] | latitude | (optional) A real array size i_target,j_target of latitude on the target grid |
[in] | terrain_land | (optional) A real array size i_target,j_target of terrain height (m) on the target grid |
[in] | soilt_climo | (optional) A real array size i_target,j_target of climatological soil type on the target grid |
[in,out] | mask | (optional) An integer array of size i_target,j_target that holds masked (0) and unmasked (1) values indicating where to execute search (only at |
Definition at line 3602 of file surface.F90.
+ +References program_setup::external_model, model_grid::i_target, program_setup::input_type, model_grid::j_target, model_grid::lsoil_target, and search_util::search().
+ +Referenced by interp().
+ +subroutine, public surface::surface_driver | +( | +integer, intent(in) | +localpet | ) | ++ |
Driver routine to process surface/nst data.
+[in] | localpet | ESMF local persistent execution thread |
Definition at line 115 of file surface.F90.
+ +References adjust_soil_levels(), adjust_soilt_for_terrain(), calc_liq_soil_moisture(), program_setup::calc_soil_params_driver(), cleanup_all_target_sfc_data(), static_data::cleanup_static_fields(), surface_target_data::cleanup_target_nst_data(), program_setup::convert_nst, create_nst_esmf_fields(), create_surface_esmf_fields(), static_data::get_static_fields(), interp(), nst_land_fill(), qc_check(), rescale_soil_moisture(), roughness(), and update_landmask().
+ +Referenced by chgres().
+ +subroutine surface::update_landmask | +( | +) | ++ |
Update landmask for sea ice.
+The model requires the landmask record be present. However, the data is recomputed in FV3ATM routine fv3atm_sfc_io.F90 after it is read in. Here, compute it using the same algorithm as the model and output it as a diagnostic.
+ + +Definition at line 3362 of file surface.F90.
+ +References model_grid::land_frac_target_grid, model_grid::landmask_target_grid, and surface_target_data::seaice_fract_target_grid.
+ +Referenced by surface_driver().
+ +
+
|
+ +private | +
soil 'b' parameter limit
+ +Definition at line 73 of file surface.F90.
+ +Referenced by calc_liq_soil_moisture(), and frh2o().
+ +
+
|
+ +private | +
melting pt water
+ +Definition at line 75 of file surface.F90.
+ +Referenced by calc_liq_soil_moisture(), and frh2o().
+ +
+
|
+ +private | +
melting pt sea ice
+ +Definition at line 77 of file surface.F90.
+ +Referenced by nst_land_fill(), and qc_check().
+ +
+
|
+ +private | +
gravity
+ +Definition at line 79 of file surface.F90.
+ +Referenced by calc_liq_soil_moisture(), and frh2o().
+ +
+
|
+ +private | +
latent heat of fusion
+ +Definition at line 81 of file surface.F90.
+ +Referenced by calc_liq_soil_moisture(), and frh2o().
+ +
+
|
+ +private | +
flag for non-active points.
+ +Definition at line 84 of file surface.F90.
+ +Referenced by qc_check(), and roughness().
+ +
+
|
+ +private | +
soil type interpolated from input grid
+ +Definition at line 63 of file surface.F90.
+ +Referenced by cleanup_all_target_sfc_data(), create_surface_esmf_fields(), interp(), and rescale_soil_moisture().
+ +
+
|
+ +private | +
terrain height interpolated from input grid
+ +Definition at line 66 of file surface.F90.
+ +Referenced by adjust_soilt_for_terrain(), cleanup_all_target_sfc_data(), create_surface_esmf_fields(), and interp().
+ +
+
|
+ +private | +
terrain height interpolated from input grid at all land points
+ +Definition at line 69 of file surface.F90.
+ +Referenced by cleanup_all_target_sfc_data(), and interp().
+ +
+
|
+ +private | +
Vegetation type category that defines permanent land ice points.
+The Noah LSM land ice physics are applied at these points.
+ +Definition at line 57 of file surface.F90.
+ +Referenced by adjust_soilt_for_terrain(), calc_liq_soil_moisture(), interp(), qc_check(), and rescale_soil_moisture().
+ +
+ chgres_cube
+ 1.13.0
+
+ |
+
Module to hold ESMF fields associated with the target grid surface data. +More...
++Functions/Subroutines | |
subroutine, public | cleanup_target_nst_data |
Free up memory once the target grid nst fields are no longer needed. More... | |
subroutine, public | cleanup_target_sfc_data |
Free up memory once the target grid surface fields are no longer needed. More... | |
+Variables | |
type(esmf_field), public | c_0_target_grid |
Coefficient 1 to calculate d(tz)/d(ts). More... | |
type(esmf_field), public | c_d_target_grid |
Coefficient 2 to calculate d(tz)/d(ts). More... | |
type(esmf_field), public | canopy_mc_target_grid |
Canopy moisture content. More... | |
type(esmf_field), public | d_conv_target_grid |
Thickness of free convection layer. More... | |
type(esmf_field), public | dt_cool_target_grid |
Sub-layer cooling amount. More... | |
type(esmf_field), public | f10m_target_grid |
log((z0+10)*1/z0) See sfc_diff.f for details. More... | |
type(esmf_field), public | ffmm_target_grid |
log((z0+z1)*1/z0) See sfc_diff.f for details. More... | |
type(esmf_field), public | ice_temp_target_grid |
3-d sea ice column temperature More... | |
type(esmf_field), public | ifd_target_grid |
Model mode index. More... | |
type(esmf_field), public | lai_target_grid |
Leaf area index. More... | |
type(esmf_field), public | q2m_target_grid |
2-m specific humidity. More... | |
type(esmf_field), public | qrain_target_grid |
Sensible heat flux due to rainfall. More... | |
type(esmf_field), public | seaice_depth_target_grid |
Sea ice depth. More... | |
type(esmf_field), public | seaice_fract_target_grid |
Sea ice fraction. More... | |
type(esmf_field), public | seaice_skin_temp_target_grid |
Sea ice skin temperature. More... | |
type(esmf_field), public | skin_temp_target_grid |
Skin temperature/sst. More... | |
type(esmf_field), public | snow_depth_at_ice_target_grid |
physical snow depth at sea ice. More... | |
type(esmf_field), public | snow_depth_target_grid |
Physical snow depth at land. More... | |
type(esmf_field), public | snow_liq_equiv_at_ice_target_grid |
Liquid equivalent snow depth at sea ice. More... | |
type(esmf_field), public | snow_liq_equiv_target_grid |
Liquid equivalent snow depth at land. More... | |
type(esmf_field), public | soil_temp_target_grid |
3-d soil temperature. More... | |
type(esmf_field), public | soilm_liq_target_grid |
3-d liquid soil moisture. More... | |
type(esmf_field), public | soilm_tot_target_grid |
3-d total soil moisture. More... | |
type(esmf_field), public | srflag_target_grid |
Snow/rain flag. More... | |
type(esmf_field), public | sst_target_grid |
SST at open water. More... | |
type(esmf_field), public | t2m_target_grid |
2-m temperatrure. More... | |
type(esmf_field), public | tprcp_target_grid |
Precipitation. More... | |
type(esmf_field), public | tref_target_grid |
Reference temperature. More... | |
type(esmf_field), public | ustar_target_grid |
Friction velocity. More... | |
type(esmf_field), public | w_0_target_grid |
Coefficient 3 to calculate d(tz)/d(ts). More... | |
type(esmf_field), public | w_d_target_grid |
Coefficient 4 to calculate d(tz)/d(ts). More... | |
type(esmf_field), public | xs_target_grid |
Salinity content in diurnal thermocline layer. More... | |
type(esmf_field), public | xt_target_grid |
Heat content in diurnal thermocline layer. More... | |
type(esmf_field), public | xtts_target_grid |
d(xt)/d(ts). More... | |
type(esmf_field), public | xu_target_grid |
u-current content in diurnal thermocline layer. More... | |
type(esmf_field), public | xv_target_grid |
v-current content in diurnal thermocline layer. More... | |
type(esmf_field), public | xz_target_grid |
Diurnal thermocline layer thickness. More... | |
type(esmf_field), public | xzts_target_grid |
d(xz)/d(ts). More... | |
type(esmf_field), public | z0_ice_target_grid |
roughness length at sea ice More... | |
type(esmf_field), public | z0_water_target_grid |
roughness length at open water More... | |
type(esmf_field), public | z_c_target_grid |
Sub-layer cooling thickness. More... | |
type(esmf_field), public | zm_target_grid |
Oceanic mixed layer depth. More... | |
Module to hold ESMF fields associated with the target grid surface data.
+ +subroutine, public surface_target_data::cleanup_target_nst_data | +( | +) | ++ |
Free up memory once the target grid nst fields are no longer needed.
+ + +Definition at line 161 of file surface_target_data.F90.
+ +References c_0_target_grid, c_d_target_grid, d_conv_target_grid, dt_cool_target_grid, ifd_target_grid, qrain_target_grid, tref_target_grid, w_0_target_grid, w_d_target_grid, xs_target_grid, xt_target_grid, xtts_target_grid, xu_target_grid, xv_target_grid, xz_target_grid, xzts_target_grid, z_c_target_grid, and zm_target_grid.
+ +Referenced by surface::surface_driver().
+ +subroutine, public surface_target_data::cleanup_target_sfc_data | +( | +) | ++ |
Free up memory once the target grid surface fields are no longer needed.
+ + +Definition at line 123 of file surface_target_data.F90.
+ +References canopy_mc_target_grid, f10m_target_grid, ffmm_target_grid, ice_temp_target_grid, lai_target_grid, q2m_target_grid, seaice_depth_target_grid, seaice_fract_target_grid, seaice_skin_temp_target_grid, skin_temp_target_grid, snow_depth_at_ice_target_grid, snow_depth_target_grid, snow_liq_equiv_at_ice_target_grid, snow_liq_equiv_target_grid, soil_temp_target_grid, soilm_liq_target_grid, soilm_tot_target_grid, srflag_target_grid, sst_target_grid, t2m_target_grid, tprcp_target_grid, ustar_target_grid, z0_ice_target_grid, and z0_water_target_grid.
+ +Referenced by surface::cleanup_all_target_sfc_data().
+ +type(esmf_field), public surface_target_data::c_0_target_grid | +
Coefficient 1 to calculate d(tz)/d(ts).
+ +Definition at line 73 of file surface_target_data.F90.
+ +Referenced by cleanup_target_nst_data(), surface::create_nst_esmf_fields(), surface::interp(), surface::nst_land_fill(), and write_data::write_fv3_sfc_data_netcdf().
+ +type(esmf_field), public surface_target_data::c_d_target_grid | +
Coefficient 2 to calculate d(tz)/d(ts).
+ +Definition at line 71 of file surface_target_data.F90.
+ +Referenced by cleanup_target_nst_data(), surface::create_nst_esmf_fields(), surface::interp(), surface::nst_land_fill(), and write_data::write_fv3_sfc_data_netcdf().
+ +type(esmf_field), public surface_target_data::canopy_mc_target_grid | +
Canopy moisture content.
+ +Definition at line 18 of file surface_target_data.F90.
+ +Referenced by cleanup_target_sfc_data(), surface::create_surface_esmf_fields(), surface::interp(), surface::qc_check(), and write_data::write_fv3_sfc_data_netcdf().
+ +type(esmf_field), public surface_target_data::d_conv_target_grid | +
Thickness of free convection layer.
+ +Definition at line 75 of file surface_target_data.F90.
+ +Referenced by cleanup_target_nst_data(), surface::create_nst_esmf_fields(), surface::interp(), surface::nst_land_fill(), and write_data::write_fv3_sfc_data_netcdf().
+ +type(esmf_field), public surface_target_data::dt_cool_target_grid | +
Sub-layer cooling amount.
+ +Definition at line 77 of file surface_target_data.F90.
+ +Referenced by cleanup_target_nst_data(), surface::create_nst_esmf_fields(), surface::interp(), surface::nst_land_fill(), and write_data::write_fv3_sfc_data_netcdf().
+ +type(esmf_field), public surface_target_data::f10m_target_grid | +
log((z0+10)*1/z0) See sfc_diff.f for details.
+ +Definition at line 20 of file surface_target_data.F90.
+ +Referenced by cleanup_target_sfc_data(), surface::create_surface_esmf_fields(), surface::interp(), and write_data::write_fv3_sfc_data_netcdf().
+ +type(esmf_field), public surface_target_data::ffmm_target_grid | +
log((z0+z1)*1/z0) See sfc_diff.f for details.
+ +Definition at line 23 of file surface_target_data.F90.
+ +Referenced by cleanup_target_sfc_data(), surface::create_surface_esmf_fields(), surface::interp(), and write_data::write_fv3_sfc_data_netcdf().
+ +type(esmf_field), public surface_target_data::ice_temp_target_grid | +
3-d sea ice column temperature
+ +Definition at line 26 of file surface_target_data.F90.
+ +Referenced by cleanup_target_sfc_data(), surface::create_surface_esmf_fields(), surface::interp(), surface::qc_check(), and write_data::write_fv3_sfc_data_netcdf().
+ +type(esmf_field), public surface_target_data::ifd_target_grid | +
Model mode index.
+0-diurnal model not started; 1-diurnal model started.
+ +Definition at line 79 of file surface_target_data.F90.
+ +Referenced by cleanup_target_nst_data(), surface::create_nst_esmf_fields(), surface::interp(), surface::nst_land_fill(), surface::regrid_many(), and write_data::write_fv3_sfc_data_netcdf().
+ +type(esmf_field), public surface_target_data::lai_target_grid | +
Leaf area index.
+ +Definition at line 67 of file surface_target_data.F90.
+ +Referenced by cleanup_target_sfc_data(), surface::create_surface_esmf_fields(), surface::interp(), and write_data::write_fv3_sfc_data_netcdf().
+ +type(esmf_field), public surface_target_data::q2m_target_grid | +
2-m specific humidity.
+ +Definition at line 28 of file surface_target_data.F90.
+ +Referenced by cleanup_target_sfc_data(), surface::create_surface_esmf_fields(), surface::interp(), and write_data::write_fv3_sfc_data_netcdf().
+ +type(esmf_field), public surface_target_data::qrain_target_grid | +
Sensible heat flux due to rainfall.
+ +Definition at line 82 of file surface_target_data.F90.
+ +Referenced by cleanup_target_nst_data(), surface::create_nst_esmf_fields(), surface::interp(), surface::nst_land_fill(), and write_data::write_fv3_sfc_data_netcdf().
+ +type(esmf_field), public surface_target_data::seaice_depth_target_grid | +
Sea ice depth.
+ +Definition at line 30 of file surface_target_data.F90.
+ +Referenced by cleanup_target_sfc_data(), surface::create_surface_esmf_fields(), surface::interp(), surface::qc_check(), and write_data::write_fv3_sfc_data_netcdf().
+ +type(esmf_field), public surface_target_data::seaice_fract_target_grid | +
Sea ice fraction.
+ +Definition at line 32 of file surface_target_data.F90.
+ +Referenced by cleanup_target_sfc_data(), surface::create_surface_esmf_fields(), surface::interp(), surface::nst_land_fill(), surface::qc_check(), surface::roughness(), surface::update_landmask(), and write_data::write_fv3_sfc_data_netcdf().
+ +type(esmf_field), public surface_target_data::seaice_skin_temp_target_grid | +
Sea ice skin temperature.
+ +Definition at line 34 of file surface_target_data.F90.
+ +Referenced by cleanup_target_sfc_data(), surface::create_surface_esmf_fields(), surface::interp(), surface::qc_check(), and write_data::write_fv3_sfc_data_netcdf().
+ +type(esmf_field), public surface_target_data::skin_temp_target_grid | +
Skin temperature/sst.
+ +Definition at line 36 of file surface_target_data.F90.
+ +Referenced by cleanup_target_sfc_data(), surface::create_surface_esmf_fields(), surface::interp(), surface::nst_land_fill(), surface::qc_check(), and write_data::write_fv3_sfc_data_netcdf().
+ +type(esmf_field), public surface_target_data::snow_depth_at_ice_target_grid | +
physical snow depth at sea ice.
+ +Definition at line 49 of file surface_target_data.F90.
+ +Referenced by cleanup_target_sfc_data(), surface::create_surface_esmf_fields(), surface::interp(), surface::qc_check(), and write_data::write_fv3_sfc_data_netcdf().
+ +type(esmf_field), public surface_target_data::snow_depth_target_grid | +
Physical snow depth at land.
+ +Definition at line 47 of file surface_target_data.F90.
+ +Referenced by cleanup_target_sfc_data(), surface::create_surface_esmf_fields(), surface::interp(), surface::qc_check(), and write_data::write_fv3_sfc_data_netcdf().
+ +type(esmf_field), public surface_target_data::snow_liq_equiv_at_ice_target_grid | +
Liquid equivalent snow depth at sea ice.
+ +Definition at line 44 of file surface_target_data.F90.
+ +Referenced by cleanup_target_sfc_data(), surface::create_surface_esmf_fields(), surface::interp(), surface::qc_check(), and write_data::write_fv3_sfc_data_netcdf().
+ +type(esmf_field), public surface_target_data::snow_liq_equiv_target_grid | +
Liquid equivalent snow depth at land.
+ +Definition at line 42 of file surface_target_data.F90.
+ +Referenced by cleanup_target_sfc_data(), surface::create_surface_esmf_fields(), surface::interp(), surface::qc_check(), and write_data::write_fv3_sfc_data_netcdf().
+ +type(esmf_field), public surface_target_data::soil_temp_target_grid | +
3-d soil temperature.
+ +Definition at line 51 of file surface_target_data.F90.
+ +Referenced by surface::adjust_soilt_for_terrain(), surface::calc_liq_soil_moisture(), cleanup_target_sfc_data(), surface::create_surface_esmf_fields(), surface::interp(), surface::qc_check(), and write_data::write_fv3_sfc_data_netcdf().
+ +type(esmf_field), public surface_target_data::soilm_liq_target_grid | +
3-d liquid soil moisture.
+ +Definition at line 53 of file surface_target_data.F90.
+ +Referenced by surface::calc_liq_soil_moisture(), cleanup_target_sfc_data(), surface::create_surface_esmf_fields(), surface::qc_check(), and write_data::write_fv3_sfc_data_netcdf().
+ +type(esmf_field), public surface_target_data::soilm_tot_target_grid | +
3-d total soil moisture.
+ +Definition at line 55 of file surface_target_data.F90.
+ +Referenced by surface::calc_liq_soil_moisture(), cleanup_target_sfc_data(), surface::create_surface_esmf_fields(), surface::interp(), surface::qc_check(), surface::rescale_soil_moisture(), and write_data::write_fv3_sfc_data_netcdf().
+ +type(esmf_field), public surface_target_data::srflag_target_grid | +
Snow/rain flag.
+ +Definition at line 40 of file surface_target_data.F90.
+ +Referenced by cleanup_target_sfc_data(), surface::create_surface_esmf_fields(), surface::interp(), and write_data::write_fv3_sfc_data_netcdf().
+ +type(esmf_field), public surface_target_data::sst_target_grid | +
SST at open water.
+ +Definition at line 38 of file surface_target_data.F90.
+ +Referenced by cleanup_target_sfc_data(), surface::create_surface_esmf_fields(), surface::interp(), surface::qc_check(), and write_data::write_fv3_sfc_data_netcdf().
+ +type(esmf_field), public surface_target_data::t2m_target_grid | +
2-m temperatrure.
+ +Definition at line 57 of file surface_target_data.F90.
+ +Referenced by cleanup_target_sfc_data(), surface::create_surface_esmf_fields(), surface::interp(), and write_data::write_fv3_sfc_data_netcdf().
+ +type(esmf_field), public surface_target_data::tprcp_target_grid | +
Precipitation.
+ +Definition at line 59 of file surface_target_data.F90.
+ +Referenced by cleanup_target_sfc_data(), surface::create_surface_esmf_fields(), surface::interp(), and write_data::write_fv3_sfc_data_netcdf().
+ +type(esmf_field), public surface_target_data::tref_target_grid | +
Reference temperature.
+ +Definition at line 84 of file surface_target_data.F90.
+ +Referenced by cleanup_target_nst_data(), surface::create_nst_esmf_fields(), surface::interp(), surface::nst_land_fill(), and write_data::write_fv3_sfc_data_netcdf().
+ +type(esmf_field), public surface_target_data::ustar_target_grid | +
Friction velocity.
+ +Definition at line 61 of file surface_target_data.F90.
+ +Referenced by cleanup_target_sfc_data(), surface::create_surface_esmf_fields(), surface::interp(), and write_data::write_fv3_sfc_data_netcdf().
+ +type(esmf_field), public surface_target_data::w_0_target_grid | +
Coefficient 3 to calculate d(tz)/d(ts).
+ +Definition at line 88 of file surface_target_data.F90.
+ +Referenced by cleanup_target_nst_data(), surface::create_nst_esmf_fields(), surface::interp(), surface::nst_land_fill(), and write_data::write_fv3_sfc_data_netcdf().
+ +type(esmf_field), public surface_target_data::w_d_target_grid | +
Coefficient 4 to calculate d(tz)/d(ts).
+ +Definition at line 86 of file surface_target_data.F90.
+ +Referenced by cleanup_target_nst_data(), surface::create_nst_esmf_fields(), surface::interp(), surface::nst_land_fill(), and write_data::write_fv3_sfc_data_netcdf().
+ +type(esmf_field), public surface_target_data::xs_target_grid | +
Salinity content in diurnal thermocline layer.
+ +Definition at line 90 of file surface_target_data.F90.
+ +Referenced by cleanup_target_nst_data(), surface::create_nst_esmf_fields(), surface::interp(), surface::nst_land_fill(), and write_data::write_fv3_sfc_data_netcdf().
+ +type(esmf_field), public surface_target_data::xt_target_grid | +
Heat content in diurnal thermocline layer.
+ +Definition at line 93 of file surface_target_data.F90.
+ +Referenced by cleanup_target_nst_data(), surface::create_nst_esmf_fields(), surface::interp(), surface::nst_land_fill(), and write_data::write_fv3_sfc_data_netcdf().
+ +type(esmf_field), public surface_target_data::xtts_target_grid | +
d(xt)/d(ts).
+ +Definition at line 104 of file surface_target_data.F90.
+ +Referenced by cleanup_target_nst_data(), surface::create_nst_esmf_fields(), surface::interp(), surface::nst_land_fill(), and write_data::write_fv3_sfc_data_netcdf().
+ +type(esmf_field), public surface_target_data::xu_target_grid | +
u-current content in diurnal thermocline layer.
+ +Definition at line 96 of file surface_target_data.F90.
+ +Referenced by cleanup_target_nst_data(), surface::create_nst_esmf_fields(), surface::interp(), surface::nst_land_fill(), and write_data::write_fv3_sfc_data_netcdf().
+ +type(esmf_field), public surface_target_data::xv_target_grid | +
v-current content in diurnal thermocline layer.
+ +Definition at line 99 of file surface_target_data.F90.
+ +Referenced by cleanup_target_nst_data(), surface::create_nst_esmf_fields(), surface::interp(), surface::nst_land_fill(), and write_data::write_fv3_sfc_data_netcdf().
+ +type(esmf_field), public surface_target_data::xz_target_grid | +
Diurnal thermocline layer thickness.
+ +Definition at line 102 of file surface_target_data.F90.
+ +Referenced by cleanup_target_nst_data(), surface::create_nst_esmf_fields(), surface::interp(), surface::nst_land_fill(), and write_data::write_fv3_sfc_data_netcdf().
+ +type(esmf_field), public surface_target_data::xzts_target_grid | +
d(xz)/d(ts).
+ +Definition at line 106 of file surface_target_data.F90.
+ +Referenced by cleanup_target_nst_data(), surface::create_nst_esmf_fields(), surface::interp(), surface::nst_land_fill(), and write_data::write_fv3_sfc_data_netcdf().
+ +type(esmf_field), public surface_target_data::z0_ice_target_grid | +
roughness length at sea ice
+ +Definition at line 63 of file surface_target_data.F90.
+ +Referenced by cleanup_target_sfc_data(), surface::create_surface_esmf_fields(), surface::roughness(), and write_data::write_fv3_sfc_data_netcdf().
+ +type(esmf_field), public surface_target_data::z0_water_target_grid | +
roughness length at open water
+ +Definition at line 65 of file surface_target_data.F90.
+ +Referenced by cleanup_target_sfc_data(), surface::create_surface_esmf_fields(), surface::interp(), surface::roughness(), and write_data::write_fv3_sfc_data_netcdf().
+ +type(esmf_field), public surface_target_data::z_c_target_grid | +
Sub-layer cooling thickness.
+ +Definition at line 108 of file surface_target_data.F90.
+ +Referenced by cleanup_target_nst_data(), surface::create_nst_esmf_fields(), surface::interp(), surface::nst_land_fill(), and write_data::write_fv3_sfc_data_netcdf().
+ +type(esmf_field), public surface_target_data::zm_target_grid | +
Oceanic mixed layer depth.
+ +Definition at line 110 of file surface_target_data.F90.
+ +Referenced by cleanup_target_nst_data(), surface::create_nst_esmf_fields(), surface::interp(), surface::nst_land_fill(), and write_data::write_fv3_sfc_data_netcdf().
+ +
+ chgres_cube
+ 1.13.0
+
+ |
+
Module to read the Thompson climatological MP data file and set up the associated esmf field and grid objects. +More...
++Functions/Subroutines | |
subroutine, public | cleanup_thomp_mp_climo_input_data |
Free up memory associated with this module. More... | |
subroutine, public | read_thomp_mp_climo_data |
Read Thompson climatological MP data file and time interpolate data to current cycle time. More... | |
+Variables | |
integer | i_thomp_mp_climo |
i-dimension of Thompson climo data More... | |
integer | j_thomp_mp_climo |
j-dimension of Thompson climo data More... | |
integer, public | lev_thomp_mp_climo |
number of vert lvls of Thompson climo data More... | |
type(esmf_field), public | qnifa_climo_input_grid |
number concentration of ice friendly nuclei. More... | |
type(esmf_field), public | qnwfa_climo_input_grid |
number concentration of water friendly nuclei. More... | |
type(esmf_grid) | thomp_mp_climo_grid |
esmf grid object for Thompson data grid More... | |
type(esmf_field), public | thomp_pres_climo_input_grid |
3-d pressure of the Thompson climo data points More... | |
Module to read the Thompson climatological MP data file and set up the associated esmf field and grid objects.
+ +subroutine, public thompson_mp_climo_data::cleanup_thomp_mp_climo_input_data | +( | +) | ++ |
Free up memory associated with this module.
+ + +Definition at line 329 of file thompson_mp_climo_data.F90.
+ +References qnifa_climo_input_grid, qnwfa_climo_input_grid, thomp_mp_climo_grid, and thomp_pres_climo_input_grid.
+ +Referenced by atmosphere::horiz_interp_thomp_mp_climo().
+ +subroutine, public thompson_mp_climo_data::read_thomp_mp_climo_data | +( | +) | ++ |
Read Thompson climatological MP data file and time interpolate data to current cycle time.
+ + +Definition at line 51 of file thompson_mp_climo_data.F90.
+ +References program_setup::cycle_day, program_setup::cycle_hour, program_setup::cycle_mon, i_thomp_mp_climo, j_thomp_mp_climo, lev_thomp_mp_climo, qnifa_climo_input_grid, qnwfa_climo_input_grid, program_setup::thomp_mp_climo_file, thomp_mp_climo_grid, and thomp_pres_climo_input_grid.
+ +Referenced by atmosphere::atmosphere_driver().
+ +
+
|
+ +private | +
i-dimension of Thompson climo data
+ +Definition at line 21 of file thompson_mp_climo_data.F90.
+ +Referenced by read_thomp_mp_climo_data().
+ +
+
|
+ +private | +
j-dimension of Thompson climo data
+ +Definition at line 23 of file thompson_mp_climo_data.F90.
+ +Referenced by read_thomp_mp_climo_data().
+ +integer, public thompson_mp_climo_data::lev_thomp_mp_climo | +
number of vert lvls of Thompson climo data
+ +Definition at line 25 of file thompson_mp_climo_data.F90.
+ +Referenced by atmosphere::horiz_interp_thomp_mp_climo(), read_thomp_mp_climo_data(), and atmosphere::vintg_thomp_mp_climo().
+ +type(esmf_field), public thompson_mp_climo_data::qnifa_climo_input_grid | +
number concentration of ice friendly nuclei.
+ +Definition at line 31 of file thompson_mp_climo_data.F90.
+ +Referenced by cleanup_thomp_mp_climo_input_data(), atmosphere::horiz_interp_thomp_mp_climo(), and read_thomp_mp_climo_data().
+ +type(esmf_field), public thompson_mp_climo_data::qnwfa_climo_input_grid | +
number concentration of water friendly nuclei.
+ +Definition at line 34 of file thompson_mp_climo_data.F90.
+ +Referenced by cleanup_thomp_mp_climo_input_data(), atmosphere::horiz_interp_thomp_mp_climo(), and read_thomp_mp_climo_data().
+ +
+
|
+ +private | +
esmf grid object for Thompson data grid
+ +Definition at line 28 of file thompson_mp_climo_data.F90.
+ +Referenced by cleanup_thomp_mp_climo_input_data(), and read_thomp_mp_climo_data().
+ +type(esmf_field), public thompson_mp_climo_data::thomp_pres_climo_input_grid | +
3-d pressure of the Thompson climo data points
+ +Definition at line 37 of file thompson_mp_climo_data.F90.
+ +Referenced by cleanup_thomp_mp_climo_input_data(), atmosphere::horiz_interp_thomp_mp_climo(), and read_thomp_mp_climo_data().
+ +
+ cpld_gridgen
+ 1.13.0
+
+ |
+
+Data Fields | |
character(len=cm) | long_name |
A variable's long name. More... | |
character(len=cm) | unit_name |
A variable's unit. More... | |
character(len=cm) | var_name |
A variable name. More... | |
character(len=2) | var_type |
A variable's type. More... | |
character(len=cm) | vertices |
A variable's vertices. More... | |
Definition at line 16 of file vartypedefs.F90.
+character(len=cm) vartypedefs::vardefs::long_name | +
A variable's long name.
+ +Definition at line 18 of file vartypedefs.F90.
+ +character(len=cm) vartypedefs::vardefs::unit_name | +
A variable's unit.
+ +Definition at line 19 of file vartypedefs.F90.
+ +character(len=cm) vartypedefs::vardefs::var_name | +
A variable name.
+ +Definition at line 17 of file vartypedefs.F90.
+ +character(len= 2) vartypedefs::vardefs::var_type | +
A variable's type.
+ +Definition at line 20 of file vartypedefs.F90.
+ +character(len=cm) vartypedefs::vardefs::vertices | +
A variable's vertices.
+ +Definition at line 21 of file vartypedefs.F90.
+ +
+ emcsfc_snow2mdl
+ 1.13.0
+
+ |
+
+ emcsfc_snow2mdl
+ 1.13.0
+
+ |
+
+ emcsfc_snow2mdl
+ 1.13.0
+
+ |
+
+ emcsfc_snow2mdl
+ 1.13.0
+
+ |
+
Read in data defining the model grid. +More...
++Functions/Subroutines | |
subroutine | model_grid_cleanup |
Clean up allocatable arrays. More... | |
subroutine | read_mdl_grid_info |
Read mdl grid. More... | |
+Variables | |
integer | grid_id_mdl |
grib id of model grid, 4-gaussian, 203-egrid More... | |
integer | ijmdl |
total number of model land points More... | |
integer | imdl |
i-dimension of model grid More... | |
integer, dimension(:), allocatable | ipts_mdl |
i index of point on full grid More... | |
integer | jmdl |
j-dimension of model grid More... | |
integer, dimension(:), allocatable | jpts_mdl |
j index of point on full grid More... | |
integer, dimension(200) | kgds_mdl |
holds grib gds info of model grid More... | |
real | lat11 |
Corner point latitude (1,1) of model grid. More... | |
real | latlast |
Corner point latitude (imdl,jmdl) of model grid. More... | |
real, dimension(:), allocatable | lats_mdl |
Latitudes of model grid points. More... | |
real | lon11 |
Corner point longitude (1,1) of model grid. More... | |
real | lonlast |
Corner point longitude (imdl,jmdl) of model grid. More... | |
real, dimension(:), allocatable | lons_mdl |
longitudes of model grid points More... | |
integer, dimension(:), allocatable | lonsperlat_mdl |
Number of longitudes (i-points) for each latitude (row). More... | |
real, dimension(:,:), allocatable | lsmask_mdl |
land mask of model grid (0 - non land, 1-land) for global grids run thinned, will contain a modified version of the original mask that has land at all points encompassed by a thinned point More... | |
real, dimension(:,:), allocatable | lsmask_mdl_sav |
saved copy of land mask of model grid (0 - non land, 1-land) only used for global thinned grids. More... | |
real | resol_mdl |
approximate model resolution in km. More... | |
logical | thinned |
When true, global grids will run thinned (number of i points decrease toward pole) More... | |
Read in data defining the model grid.
+program history log:
variable definitions:
subroutine model_grid::model_grid_cleanup | +( | +) | ++ |
Clean up allocatable arrays.
+This deallocate this module's allocatable array.
+program history log: 2005-dec-16 gayno - initial version
+ +Definition at line 578 of file model_grid.F90.
+ +References ipts_mdl, jpts_mdl, lats_mdl, lons_mdl, lonsperlat_mdl, and lsmask_mdl.
+ +Referenced by driver().
+ +subroutine model_grid::read_mdl_grid_info | +( | +) | ++ |
Read mdl grid.
+program history log: 2005-dec-16 gayno - initial version 2007-nov-30 gayno - Improved method for thinning gfs grids. Added nam b-grids. 2014-sep-29 gayno - Add option to read lat,lon and mask data in grib2. files: inputs:
Definition at line 85 of file model_grid.F90.
+ +References gdt_to_gds(), program_setup::gfs_lpl_file, grib2_free(), grib2_null(), grib_check(), grid_id_mdl, ijmdl, imdl, ipts_mdl, jmdl, jpts_mdl, kgds_mdl, lat11, latlast, lats_mdl, lon11, lonlast, lons_mdl, lonsperlat_mdl, lsmask_mdl, lsmask_mdl_sav, program_setup::model_lat_file, program_setup::model_lon_file, program_setup::model_lsmask_file, resol_mdl, and thinned.
+ +Referenced by driver().
+ +integer model_grid::grid_id_mdl | +
grib id of model grid, 4-gaussian, 203-egrid
+ +Definition at line 26 of file model_grid.F90.
+ +Referenced by read_mdl_grid_info(), and snow2mdl::write_grib1().
+ +integer model_grid::ijmdl | +
total number of model land points
+ +Definition at line 29 of file model_grid.F90.
+ +Referenced by snow2mdl::interp(), and read_mdl_grid_info().
+ +integer model_grid::imdl | +
i-dimension of model grid
+ +Definition at line 27 of file model_grid.F90.
+ +Referenced by snow2mdl::interp(), read_mdl_grid_info(), and snow2mdl::write_grib2().
+ +integer, dimension(:), allocatable model_grid::ipts_mdl | +
i index of point on full grid
+ +Definition at line 30 of file model_grid.F90.
+ +Referenced by snow2mdl::interp(), model_grid_cleanup(), and read_mdl_grid_info().
+ +integer model_grid::jmdl | +
j-dimension of model grid
+ +Definition at line 28 of file model_grid.F90.
+ +Referenced by snow2mdl::interp(), read_mdl_grid_info(), and snow2mdl::write_grib2().
+ +integer, dimension(:), allocatable model_grid::jpts_mdl | +
j index of point on full grid
+ +Definition at line 31 of file model_grid.F90.
+ +Referenced by snow2mdl::interp(), model_grid_cleanup(), and read_mdl_grid_info().
+ +integer, dimension(200) model_grid::kgds_mdl | +
holds grib gds info of model grid
+ +Definition at line 33 of file model_grid.F90.
+ +Referenced by snow2mdl::interp(), read_mdl_grid_info(), snow2mdl::write_grib1(), and snow2mdl::write_grib2().
+ +real model_grid::lat11 | +
Corner point latitude (1,1) of model grid.
+ +Definition at line 42 of file model_grid.F90.
+ +Referenced by read_mdl_grid_info(), and snow2mdl::write_grib2().
+ +real model_grid::latlast | +
Corner point latitude (imdl,jmdl) of model grid.
+ +Definition at line 43 of file model_grid.F90.
+ +Referenced by read_mdl_grid_info(), and snow2mdl::write_grib2().
+ +real, dimension(:), allocatable model_grid::lats_mdl | +
Latitudes of model grid points.
+ +Definition at line 41 of file model_grid.F90.
+ +Referenced by snow2mdl::interp(), model_grid_cleanup(), and read_mdl_grid_info().
+ +real model_grid::lon11 | +
Corner point longitude (1,1) of model grid.
+ +Definition at line 44 of file model_grid.F90.
+ +Referenced by read_mdl_grid_info(), and snow2mdl::write_grib2().
+ +real model_grid::lonlast | +
Corner point longitude (imdl,jmdl) of model grid.
+ +Definition at line 45 of file model_grid.F90.
+ +Referenced by read_mdl_grid_info(), and snow2mdl::write_grib2().
+ +real, dimension(:), allocatable model_grid::lons_mdl | +
longitudes of model grid points
+ +Definition at line 46 of file model_grid.F90.
+ +Referenced by snow2mdl::interp(), model_grid_cleanup(), and read_mdl_grid_info().
+ +integer, dimension (:), allocatable model_grid::lonsperlat_mdl | +
Number of longitudes (i-points) for each latitude (row).
+Used for global thinned (reduced) grids.
+ +Definition at line 34 of file model_grid.F90.
+ +Referenced by snow2mdl::interp(), model_grid_cleanup(), and read_mdl_grid_info().
+ +real, dimension(:,:), allocatable model_grid::lsmask_mdl | +
land mask of model grid (0 - non land, 1-land) for global grids run thinned, will contain a modified version of the original mask that has land at all points encompassed by a thinned point
+ +Definition at line 47 of file model_grid.F90.
+ +Referenced by snow2mdl::interp(), model_grid_cleanup(), read_mdl_grid_info(), snow2mdl::write_grib1(), and snow2mdl::write_grib2().
+ +real, dimension(:,:), allocatable model_grid::lsmask_mdl_sav | +
saved copy of land mask of model grid (0 - non land, 1-land) only used for global thinned grids.
+ +Definition at line 50 of file model_grid.F90.
+ +Referenced by snow2mdl::interp(), and read_mdl_grid_info().
+ +real model_grid::resol_mdl | +
approximate model resolution in km.
+ +Definition at line 52 of file model_grid.F90.
+ +Referenced by snow2mdl::interp(), and read_mdl_grid_info().
+ +logical model_grid::thinned | +
When true, global grids will run thinned (number of i points decrease toward pole)
+ +Definition at line 38 of file model_grid.F90.
+ +Referenced by snow2mdl::interp(), and read_mdl_grid_info().
+ +
+ emcsfc_snow2mdl
+ 1.13.0
+
+ |
+
This module reads in data from the program's configuration namelist. +More...
++Functions/Subroutines | |
subroutine, public | read_config_nml |
Read namelist control. More... | |
+Variables | |
character *200, public | afwa_lsmask_nh_file |
path/name afwa n hemis land/sea mask More... | |
character *200, public | afwa_lsmask_sh_file |
path/name afwa s hemis land/sea mask More... | |
character *200, public | afwa_snow_global_file |
global afwa snow file. More... | |
character *200, public | afwa_snow_nh_file |
path/name afwa n hemis snow depth More... | |
character *200, public | afwa_snow_sh_file |
path/name afwa s hemis snow depth More... | |
character *200, public | autosnow_file |
path/name s hemis autosnow file More... | |
character *200, public | climo_qc_file |
Climatological snow cover file. More... | |
character *200, public | gfs_lpl_file |
GFS gaussian thinned (reduced) grid definition file. More... | |
integer, public | grib_century |
date of the final merged snow product that will be placed in grib header. More... | |
integer, public | grib_day |
date of the final merged snow product that will be placed in grib header. More... | |
integer, public | grib_hour |
date of the final merged snow product that will be placed in grib header. More... | |
integer, public | grib_month |
date of the final merged snow product that will be placed in grib header. More... | |
integer, public | grib_year |
date of the final merged snow product that will be placed in grib header. More... | |
real, public | lat_threshold |
equatorward of this latitude, model points with undefined cover or depth (because the interpolation routines could not find valid snow data) are set to a default value of zero. More... | |
real, public | min_snow_depth |
minimum snow depth in meters at model points with coverage exceeding threshold. More... | |
character *200, public | model_lat_file |
path/name lats on the model grid More... | |
character *200, public | model_lon_file |
path/name lons on the model grid More... | |
character *200, public | model_lsmask_file |
path/name nesdis/ims land mask More... | |
character *200, public | model_snow_file |
path/name nesdis/ims snow cover More... | |
character *200, public | nesdis_lsmask_file |
nesdis/ims land mask file More... | |
character *200, public | nesdis_snow_file |
nesdis/ims snow file More... | |
logical, public | output_grib2 |
when true, output model snow analysis is grib 2. More... | |
real, public | snow_cvr_threshold |
if percent coverage according to nesdis/ims or autosnow exceeds this value, then non-zero snow depth is assigned. More... | |
This module reads in data from the program's configuration namelist.
+program history log:
subroutine, public program_setup::read_config_nml | +( | +) | ++ |
Read namelist control.
+program history log: 2005-dec-16 gayno - initial version 2008-feb-01 gayno - added read of autosnow path/file 2014-sep-30 gayno - added read of 'output_grib2' flag.
+files: input:
condition codes: all fatal
Definition at line 81 of file program_setup.F90.
+ +References afwa_lsmask_nh_file, afwa_lsmask_sh_file, afwa_snow_global_file, afwa_snow_nh_file, afwa_snow_sh_file, autosnow_file, climo_qc_file, gfs_lpl_file, grib_century, grib_day, grib_hour, grib_month, grib_year, lat_threshold, min_snow_depth, model_lat_file, model_lon_file, model_lsmask_file, model_snow_file, nesdis_lsmask_file, nesdis_snow_file, output_grib2, and snow_cvr_threshold.
+ +Referenced by driver().
+ +character*200, public program_setup::afwa_lsmask_nh_file | +
path/name afwa n hemis land/sea mask
+ +Definition at line 24 of file program_setup.F90.
+ +Referenced by read_config_nml(), and snowdat::readafwa().
+ +character*200, public program_setup::afwa_lsmask_sh_file | +
path/name afwa s hemis land/sea mask
+ +Definition at line 25 of file program_setup.F90.
+ +Referenced by read_config_nml(), and snowdat::readafwa().
+ +character*200, public program_setup::afwa_snow_global_file | +
global afwa snow file.
+ +Definition at line 21 of file program_setup.F90.
+ +Referenced by read_config_nml(), and snowdat::readafwa().
+ +character*200, public program_setup::afwa_snow_nh_file | +
path/name afwa n hemis snow depth
+ +Definition at line 22 of file program_setup.F90.
+ +Referenced by read_config_nml(), and snowdat::readafwa().
+ +character*200, public program_setup::afwa_snow_sh_file | +
path/name afwa s hemis snow depth
+ +Definition at line 23 of file program_setup.F90.
+ +Referenced by read_config_nml(), and snowdat::readafwa().
+ +character*200, public program_setup::autosnow_file | +
path/name s hemis autosnow file
+ +Definition at line 26 of file program_setup.F90.
+ +Referenced by read_config_nml(), and snowdat::readautosnow().
+ +character*200, public program_setup::climo_qc_file | +
Climatological snow cover file.
+Used to quality control snow data.
+ +Definition at line 27 of file program_setup.F90.
+ +Referenced by snowdat::nh_climo_check(), and read_config_nml().
+ +character*200, public program_setup::gfs_lpl_file | +
GFS gaussian thinned (reduced) grid definition file.
+Contains the number of longitudes (i-points) for each latitude (row).
+ +Definition at line 29 of file program_setup.F90.
+ +Referenced by read_config_nml(), and model_grid::read_mdl_grid_info().
+ +integer, public program_setup::grib_century | +
date of the final merged snow product that will be placed in grib header.
+ +Definition at line 39 of file program_setup.F90.
+ +Referenced by snowdat::nh_climo_check(), read_config_nml(), snow2mdl::write_grib1(), and snow2mdl::write_grib2().
+ +integer, public program_setup::grib_day | +
date of the final merged snow product that will be placed in grib header.
+ +Definition at line 41 of file program_setup.F90.
+ +Referenced by snowdat::nh_climo_check(), read_config_nml(), snow2mdl::write_grib1(), and snow2mdl::write_grib2().
+ +integer, public program_setup::grib_hour | +
date of the final merged snow product that will be placed in grib header.
+ +Definition at line 42 of file program_setup.F90.
+ +Referenced by read_config_nml(), snow2mdl::write_grib1(), and snow2mdl::write_grib2().
+ +integer, public program_setup::grib_month | +
date of the final merged snow product that will be placed in grib header.
+ +Definition at line 43 of file program_setup.F90.
+ +Referenced by snowdat::nh_climo_check(), read_config_nml(), snow2mdl::write_grib1(), and snow2mdl::write_grib2().
+ +integer, public program_setup::grib_year | +
date of the final merged snow product that will be placed in grib header.
+ +Definition at line 44 of file program_setup.F90.
+ +Referenced by snowdat::nh_climo_check(), read_config_nml(), snow2mdl::write_grib1(), and snow2mdl::write_grib2().
+ +real, public program_setup::lat_threshold | +
equatorward of this latitude, model points with undefined cover or depth (because the interpolation routines could not find valid snow data) are set to a default value of zero.
+poleward, undefined points are set according to logic in module snow2mdl.
+ +Definition at line 48 of file program_setup.F90.
+ +Referenced by snow2mdl::interp(), and read_config_nml().
+ +real, public program_setup::min_snow_depth | +
minimum snow depth in meters at model points with coverage exceeding threshold.
+ +Definition at line 52 of file program_setup.F90.
+ +Referenced by snow2mdl::interp(), and read_config_nml().
+ +character*200, public program_setup::model_lat_file | +
path/name lats on the model grid
+ +Definition at line 32 of file program_setup.F90.
+ +Referenced by read_config_nml(), and model_grid::read_mdl_grid_info().
+ +character*200, public program_setup::model_lon_file | +
path/name lons on the model grid
+ +Definition at line 33 of file program_setup.F90.
+ +Referenced by read_config_nml(), and model_grid::read_mdl_grid_info().
+ +character*200, public program_setup::model_lsmask_file | +
path/name nesdis/ims land mask
+ +Definition at line 34 of file program_setup.F90.
+ +Referenced by read_config_nml(), and model_grid::read_mdl_grid_info().
+ +character*200, public program_setup::model_snow_file | +
path/name nesdis/ims snow cover
+ +Definition at line 35 of file program_setup.F90.
+ +Referenced by read_config_nml(), snow2mdl::write_grib1(), and snow2mdl::write_grib2().
+ +character*200, public program_setup::nesdis_lsmask_file | +
nesdis/ims land mask file
+ +Definition at line 36 of file program_setup.F90.
+ +Referenced by read_config_nml(), and snowdat::readnesdis().
+ +character*200, public program_setup::nesdis_snow_file | +
nesdis/ims snow file
+ +Definition at line 37 of file program_setup.F90.
+ +Referenced by read_config_nml(), and snowdat::readnesdis().
+ +logical, public program_setup::output_grib2 | +
when true, output model snow analysis is grib 2.
+when false, grib 1.
+ +Definition at line 46 of file program_setup.F90.
+ +Referenced by snow2mdl::interp(), and read_config_nml().
+ +real, public program_setup::snow_cvr_threshold | +
if percent coverage according to nesdis/ims or autosnow exceeds this value, then non-zero snow depth is assigned.
+below this threshold, depth is set to zero.
+ +Definition at line 53 of file program_setup.F90.
+ +Referenced by snow2mdl::interp(), and read_config_nml().
+ +
+ emcsfc_snow2mdl
+ 1.13.0
+
+ |
+
Nmodel_grid | Read in data defining the model grid |
Nprogram_setup | This module reads in data from the program's configuration namelist |
Nsnow2mdl | Interpolate snow data to model grid and grib the result |
Nsnowdat | Read and qc afwa, nesdis/ims and autosnow snow data |
+ emcsfc_snow2mdl
+ 1.13.0
+
+ |
+
Interpolate snow data to model grid and grib the result. +More...
++Functions/Subroutines | |
subroutine, public | interp |
Interpolate snow data to model grid. More... | |
subroutine | intlon (iord, imon, imsk, m1, m2, k1, f1, f2) |
Convert data from the thinned (or reduced) to the full grid along a single row. More... | |
subroutine | uninterpred (iord, kmsk, fi, f, lonl, latd, len, lonsperlat) |
Fills out full grid using thinned grid data. More... | |
subroutine | write_grib1 |
Write grib1 snow cover and depth on the model grid. More... | |
subroutine | write_grib2 |
Write grib2 snow cover and depth on the model grid. More... | |
+Variables | |
real, dimension(:,:), allocatable | snow_cvr_mdl |
snow cover on model grid in percent More... | |
real, dimension(:,:), allocatable | snow_dep_mdl |
snow depth on model grid in meters More... | |
Interpolate snow data to model grid and grib the result.
+program history log:
variable definitions:
subroutine, public snow2mdl::interp | +( | +) | ++ |
Interpolate snow data to model grid.
+program history log: 2005-dec-16 gayno - initial version 2007-sep-20 gayno - tested for b-grids. added improved thinning for gfs grid. 2008-feb-04 gayno - add use of autosnow data 2014-sep-29 gayno - add option to output model snow data in grib2 format.
+condition codes: all fatal 54 - selected input snow data not valid for model grid 55 - error in ipolates interpolating snow data
+nam grids:
+1) nesdis/ims only - An analysis of snow cover on the model grid is produced. No depth analysis is produced.
+2) afwa only - An analysis of snow cover and depth on the model grid is produced. Depth is determined from the afwa data. Cover is set to 100% where afwa indicates snow and 0% otherwise.
+3) nesdis/ims and afwa - An analysis of snow cover and depth on the model grid is produced. Cover is determined by the nesdis/ims data. If cover is greater than user-defined threshold (variable snow_cvr_threshold) the depth is set to the afwa value or a nominal value, whichever is greater. The nominal value is user-defined (varaible min_snow_depth). If cover is less than user- defined threshold, the depth is set to 0, regardless of the afwa depth value.
+gfs grid:
+1) nesdis/ims and autosnow only - An analysis of snow cover and depth on the model grid is produced. Cover is determined from the ims and autosnow data. If cover is greater than the user-defined threshold (variable snow_cvr_threshold), the the depth is set to the user-defined default depth (variable min_snow_depth).
+2) afwa only - An analysis of snow cover and depth on the model grid is produced. Depth is determined from the afwa data. Cover is set to 100% where afwa indicates snow and 0% otherwise.
+3) nesdis/ims, autosnow and afwa - An analysis of snow cover and depth on the model grid is produced. Cover is determined by the ims and autosnow data. If cover is greater than user-defined threshold (variable snow_cvr_threshold) the depth is set to the afwa value or a nominal value, whichever is greater. The nominal value is user-defined (varaible min_snow_depth). If cover is less than user- defined threshold, the depth is set to 0, regardless of the afwa depth value.
+ +Definition at line 158 of file snow2mdl.F90.
+ +References snowdat::afwa_res, snowdat::autosnow_res, snowdat::bitmap_afwa_global, snowdat::bitmap_afwa_nh, snowdat::bitmap_afwa_sh, snowdat::bitmap_autosnow, snowdat::bitmap_nesdis, snowdat::iafwa, snowdat::iautosnow, model_grid::ijmdl, model_grid::imdl, snowdat::inesdis, model_grid::ipts_mdl, snowdat::jafwa, snowdat::jautosnow, model_grid::jmdl, snowdat::jnesdis, model_grid::jpts_mdl, snowdat::kgds_afwa_global, snowdat::kgds_afwa_nh, snowdat::kgds_afwa_sh, snowdat::kgds_autosnow, model_grid::kgds_mdl, snowdat::kgds_nesdis, program_setup::lat_threshold, model_grid::lats_mdl, model_grid::lons_mdl, model_grid::lonsperlat_mdl, model_grid::lsmask_mdl, model_grid::lsmask_mdl_sav, program_setup::min_snow_depth, snowdat::nesdis_res, program_setup::output_grib2, model_grid::resol_mdl, snowdat::sea_ice_nesdis, snowdat::snow_cvr_autosnow, snow_cvr_mdl, snowdat::snow_cvr_nesdis, program_setup::snow_cvr_threshold, snowdat::snow_dep_afwa_global, snowdat::snow_dep_afwa_nh, snowdat::snow_dep_afwa_sh, snow_dep_mdl, model_grid::thinned, uninterpred(), snowdat::use_autosnow, snowdat::use_global_afwa, snowdat::use_nesdis, snowdat::use_nh_afwa, snowdat::use_sh_afwa, write_grib1(), and write_grib2().
+ +Referenced by driver().
+ +
+
|
+ +private | +
Convert data from the thinned (or reduced) to the full grid along a single row.
+[in] | iord | Interpolation method. '1' neighbor; '2' bilinear. |
[in] | imon | Not used. |
[in] | imsk | Flag to account for mask during conversion. '0' - use mask. |
[in] | m1 | Number of points along a row of the thinned grid. |
[in] | m2 | Number of points along a row on the full grid. |
[in] | k1 | Mask of input data. |
[in] | f1 | Data on the thinned (or reduced) grid. |
[out] | f2 | Data on the full grid. |
Definition at line 1167 of file snow2mdl.F90.
+ +Referenced by uninterpred().
+ +
+
|
+ +private | +
Fills out full grid using thinned grid data.
+Use an iord of "1" to use a nearest neighbor approach.
+[in] | iord | Interpolation method. '1' neighbor; '2' bilinear. |
[in] | kmsk | Mask of the input data. For masked fields, set to '1' for defined points, '0' for undefined points. Not used for unmasked fields - set to '0'. |
[in] | fi | 1-d array to be processed. |
[out] | f | 2-d array on the full grid. |
[in] | lonl | 'i' dimension of 2-d data. |
[in] | latd | 'j' dimension of 2-d data. |
[in] | len | Number of elements of 1-d data. |
[in] | lonsperlat | Definition of thinned (or reduced) grid. Number of "i" points for each 'j' row. |
Definition at line 1116 of file snow2mdl.F90.
+ +References intlon().
+ +Referenced by interp().
+ +subroutine snow2mdl::write_grib1 | +( | +) | ++ |
Write grib1 snow cover and depth on the model grid.
+program history log: 2005-dec-16 gayno - Initial version 2014-sep-26 gayno - Rename as write_grib1 (was gribit).
+output file:
condition codes:
Definition at line 1004 of file snow2mdl.F90.
+ +References program_setup::grib_century, program_setup::grib_day, program_setup::grib_hour, program_setup::grib_month, program_setup::grib_year, model_grid::grid_id_mdl, model_grid::kgds_mdl, model_grid::lsmask_mdl, program_setup::model_snow_file, snow_cvr_mdl, snow_dep_mdl, snowdat::use_global_afwa, snowdat::use_nh_afwa, and snowdat::use_sh_afwa.
+ +Referenced by interp().
+ +subroutine snow2mdl::write_grib2 | +( | +) | ++ |
Write grib2 snow cover and depth on the model grid.
+program history log: 2014-sep-26 gayno - initial version
+output file:
condition codes: all fatal
Definition at line 824 of file snow2mdl.F90.
+ +References grib2_check(), program_setup::grib_century, program_setup::grib_day, program_setup::grib_hour, program_setup::grib_month, program_setup::grib_year, model_grid::imdl, init_grib2(), model_grid::jmdl, model_grid::kgds_mdl, model_grid::lat11, model_grid::latlast, model_grid::lon11, model_grid::lonlast, model_grid::lsmask_mdl, program_setup::model_snow_file, snow_cvr_mdl, snow_dep_mdl, snowdat::use_global_afwa, snowdat::use_nh_afwa, and snowdat::use_sh_afwa.
+ +Referenced by interp().
+ +
+
|
+ +private | +
snow cover on model grid in percent
+ +Definition at line 85 of file snow2mdl.F90.
+ +Referenced by interp(), write_grib1(), and write_grib2().
+ +
+
|
+ +private | +
snow depth on model grid in meters
+ +Definition at line 86 of file snow2mdl.F90.
+ +Referenced by interp(), write_grib1(), and write_grib2().
+ +
+ emcsfc_snow2mdl
+ 1.13.0
+
+ |
+
Read and qc afwa, nesdis/ims and autosnow snow data. +More...
++Functions/Subroutines | |
subroutine | afwa_check (hemi) |
Check for corrupt afwa data. More... | |
subroutine | nh_climo_check (kgds_data, snow_data, bitmap_data, idata, jdata, isrc, bad) |
Check for corrupt nh snow cover data. More... | |
subroutine | read_afwa_binary (file_name, snow_dep_afwa) |
Read afwa binary snow depth file. More... | |
subroutine | read_afwa_mask (file_name, bitmap_afwa) |
Read afwa land mask file to get a bitmap. More... | |
subroutine | readafwa |
Read snow depth data and masks. More... | |
subroutine | readautosnow |
Read autosnow snow cover. More... | |
subroutine | readnesdis |
Read nesdis/ims snow cover/ice data. More... | |
+Variables | |
real | afwa_res |
Resolution of afwa data in km. More... | |
real | autosnow_res |
Resolution of autosnow in km. More... | |
logical | bad_afwa_global |
When true, the global afwa data failed its quality control check. More... | |
logical | bad_afwa_nh |
When true, the northern hemisphere afwa data failed its quality control check. More... | |
logical | bad_afwa_sh |
When true, the southern hemisphere afwa data failed its quality control check. More... | |
logical | bad_nesdis |
When true, the nesdis data failed its quality control check. More... | |
logical *1, dimension(:,:), allocatable | bitmap_afwa_global |
The global afwa data grib bitmap. More... | |
logical *1, dimension(:,:), allocatable | bitmap_afwa_nh |
The northern hemisphere afwa data grib bitmap. More... | |
logical *1, dimension(:,:), allocatable | bitmap_afwa_sh |
The southern hemisphere afwa data grib bitmap. More... | |
logical *1, dimension(:,:), allocatable | bitmap_autosnow |
autosnow data grib bitmap (false-non land, true-land). More... | |
logical *1, dimension(:,:), allocatable | bitmap_nesdis |
nesdis data grib bitmap (false-non land, true-land). More... | |
integer | iafwa |
i-dimension of afwa grid More... | |
integer | iautosnow |
i-dimension of autosnow grid More... | |
integer | inesdis |
i-dimension of nesdis grid More... | |
integer | jafwa |
j-dimension of afwa grid More... | |
integer | jautosnow |
j-dimension of autosnow grid More... | |
integer | jnesdis |
j-dimension of nesdis grid More... | |
integer, dimension(200) | kgds_afwa_global |
grib1 grid description section for global afwa data. More... | |
integer, dimension(200) | kgds_afwa_nh |
grib1 grid description section for northern hemisphere 16th mesh afwa data. More... | |
integer, dimension(200) | kgds_afwa_nh_8th |
grib1 grid description section for northern hemisphere 8th mesh afwa data. More... | |
integer, dimension(200) | kgds_afwa_sh |
grib1 grid description section for southern hemisphere 16th mesh afwa data. More... | |
integer, dimension(200) | kgds_afwa_sh_8th |
grib1 grid description section for southern hemisphere 8th mesh afwa data. More... | |
integer, dimension(200) | kgds_autosnow |
autosnow grid description section (grib section 2) More... | |
integer, dimension(200) | kgds_nesdis |
nesdis/ims grid description section (grib section 2) More... | |
integer | mesh_nesdis |
nesdis/ims data is 96th mesh (or bediant) More... | |
real | nesdis_res |
Resolution of the nesdis data in km. More... | |
integer *1, dimension(:,:), allocatable | sea_ice_nesdis |
nesdis/ims sea ice flag (0-open water, 1-ice) More... | |
real, dimension(:,:), allocatable | snow_cvr_autosnow |
autosnow snow cover flag (0-no, 100-yes) More... | |
real, dimension(:,:), allocatable | snow_cvr_nesdis |
nesdis/ims snow cover flag (0-no, 100-yes) More... | |
real, dimension(:,:), allocatable | snow_dep_afwa_global |
The global afwa snow depth. More... | |
real, dimension(:,:), allocatable | snow_dep_afwa_nh |
Northern hemisphere afwa snow depth. More... | |
real, dimension(:,:), allocatable | snow_dep_afwa_sh |
Southern hemisphere afwa snow depth. More... | |
logical | use_autosnow |
True if autosnow data to be used. More... | |
logical | use_global_afwa |
True if global hemisphere afwa data to be used. More... | |
logical | use_nesdis |
True if nesdis/ims data to be used. More... | |
logical | use_nh_afwa |
True if northern hemisphere afwa data to be used. More... | |
logical | use_sh_afwa |
True if southern hemisphere afwa data to be used. More... | |
Read and qc afwa, nesdis/ims and autosnow snow data.
+program history log:
subroutine snowdat::afwa_check | +( | +integer, intent(in) | +hemi | ) | ++ |
Check for corrupt afwa data.
+[in] | hemi | (1-nh, 2-sh) |
Definition at line 1126 of file snowdat.F90.
+ +References bad_afwa_nh, bad_afwa_sh, kgds_afwa_nh, kgds_afwa_sh, snow_dep_afwa_nh, and snow_dep_afwa_sh.
+ +Referenced by readafwa().
+ +subroutine snowdat::nh_climo_check | +( | +integer, dimension(200), intent(in) | +kgds_data, | +
+ | + | real, dimension(idata,jdata), intent(in) | +snow_data, | +
+ | + | logical*1, dimension(idata,jdata), intent(in) | +bitmap_data, | +
+ | + | integer, intent(in) | +idata, | +
+ | + | integer, intent(in) | +jdata, | +
+ | + | integer, intent(in) | +isrc, | +
+ | + | logical, intent(out) | +bad | +
+ | ) | ++ |
Check for corrupt nh snow cover data.
+program history log: 2009-jun-3 gayno - initial version 2011-apr-26 gayno - Perform gross check first, then check against climo. 2014-sep-30 gayno - Weekly climo file converted to grib 2.
+[in] | kgds_data | Grib 1 grid description sect of data to be qcd. |
[in] | snow_data | Snow cover to be qcd. |
[in] | bitmap_data | bitmap of data to be qcd. |
[in] | idata | I dimension of data to be qcd. |
[in] | jdata | J dimension of data to be qcd. |
[in] | isrc | Flag indicating data source; 1- afwa depth, 2-ims cover. |
[out] | bad | When true, data failed check. |
files: input:
Definition at line 855 of file snowdat.F90.
+ +References program_setup::climo_qc_file, grib2_free(), grib2_null(), program_setup::grib_century, program_setup::grib_day, program_setup::grib_month, and program_setup::grib_year.
+ +Referenced by readafwa(), and readnesdis().
+ +subroutine snowdat::read_afwa_binary | +( | +character*(*), intent(in) | +file_name, | +
+ | + | real, dimension(iafwa,jafwa), intent(out) | +snow_dep_afwa | +
+ | ) | ++ |
Read afwa binary snow depth file.
+[in] | file_name | file name |
[out] | snow_dep_afwa | snow depth in meters |
files: input:
condition codes: all fatal 60 - bad open of afwa file 61 - bad read of afwa file
+Definition at line 1234 of file snowdat.F90.
+ +Referenced by readafwa().
+ +subroutine snowdat::read_afwa_mask | +( | +character*(*), intent(in) | +file_name, | +
+ | + | logical*1, dimension(iafwa,jafwa), intent(out) | +bitmap_afwa | +
+ | ) | ++ |
Read afwa land mask file to get a bitmap.
+[in] | file_name | land mask file name |
[out] | bitmap_afwa | .true. if land |
files: input:
condition codes: all fatal 62 - bad open of afwa landmask file 63 - bad read of afwa landmask file
+ +Definition at line 1317 of file snowdat.F90.
+ +Referenced by readafwa().
+ +subroutine snowdat::readafwa | +( | +) | ++ |
Read snow depth data and masks.
+program history log:
+2005-dec-16 gayno - initial version 2007-nov-28 gayno - read 16th mesh afwa data in grib format
+files: input:
condition codes: 60 - bad open afwa file 61 - bad degrib of afwa file
+ +Definition at line 532 of file snowdat.F90.
+ +References afwa_check(), program_setup::afwa_lsmask_nh_file, program_setup::afwa_lsmask_sh_file, afwa_res, program_setup::afwa_snow_global_file, program_setup::afwa_snow_nh_file, program_setup::afwa_snow_sh_file, bad_afwa_global, bad_afwa_nh, bad_afwa_sh, bitmap_afwa_global, bitmap_afwa_nh, bitmap_afwa_sh, gdt_to_gds(), grib2_null(), grib_check(), iafwa, jafwa, kgds_afwa_global, kgds_afwa_nh, kgds_afwa_nh_8th, kgds_afwa_sh, kgds_afwa_sh_8th, nh_climo_check(), read_afwa_binary(), read_afwa_mask(), snow_dep_afwa_global, snow_dep_afwa_nh, snow_dep_afwa_sh, use_global_afwa, use_nh_afwa, and use_sh_afwa.
+ +Referenced by driver().
+ +subroutine snowdat::readautosnow | +( | +) | ++ |
Read autosnow snow cover.
+program history log: 2008-feb-04 gayno - initial version
+files: input:
condition codes: all fatal 74 - bad open of autosnow file 75 - bad read of autosnow file
+Definition at line 118 of file snowdat.F90.
+ +References program_setup::autosnow_file, autosnow_res, bitmap_autosnow, gdt_to_gds(), grib2_free(), grib2_null(), iautosnow, jautosnow, kgds_autosnow, snow_cvr_autosnow, and use_autosnow.
+ +Referenced by driver().
+ +subroutine snowdat::readnesdis | +( | +) | ++ |
Read nesdis/ims snow cover/ice data.
+program history log: 2005-dec-16 gayno - initial version 2014-feb-07 gayno - Read 4km ims data in either grib1 or grib 2 format. files: input:
condition codes: all fatal 41 - ims file not grib 1 or grib 2 53 - ims data failed quality check 70 - bad read of ims snow cover data 71 - bad read of ims ice data 72 - bad read of ims grib 1 header 73 - bad open of ims file 87 - bad open ims land mask file 88 - bad read ims land mask file
+Definition at line 223 of file snowdat.F90.
+ +References bad_nesdis, bitmap_nesdis, gdt_to_gds(), grib2_free(), grib2_null(), grib_check(), inesdis, jnesdis, kgds_nesdis, mesh_nesdis, program_setup::nesdis_lsmask_file, nesdis_res, program_setup::nesdis_snow_file, nh_climo_check(), sea_ice_nesdis, snow_cvr_nesdis, and use_nesdis.
+ +Referenced by driver().
+ +real snowdat::afwa_res | +
Resolution of afwa data in km.
+ +Definition at line 84 of file snowdat.F90.
+ +Referenced by snow2mdl::interp(), and readafwa().
+ +real snowdat::autosnow_res | +
Resolution of autosnow in km.
+ +Definition at line 83 of file snowdat.F90.
+ +Referenced by snow2mdl::interp(), and readautosnow().
+ +logical snowdat::bad_afwa_global | +
When true, the global afwa data failed its quality control check.
+ +Definition at line 66 of file snowdat.F90.
+ +Referenced by readafwa().
+ +logical snowdat::bad_afwa_nh | +
When true, the northern hemisphere afwa data failed its quality control check.
+ +Definition at line 60 of file snowdat.F90.
+ +Referenced by afwa_check(), and readafwa().
+ +logical snowdat::bad_afwa_sh | +
When true, the southern hemisphere afwa data failed its quality control check.
+ +Definition at line 62 of file snowdat.F90.
+ +Referenced by afwa_check(), and readafwa().
+ +logical snowdat::bad_nesdis | +
When true, the nesdis data failed its quality control check.
+ +Definition at line 64 of file snowdat.F90.
+ +Referenced by readnesdis().
+ +logical*1, dimension(:,:), allocatable snowdat::bitmap_afwa_global | +
The global afwa data grib bitmap.
+(false-non land, true-land).
+ +Definition at line 68 of file snowdat.F90.
+ +Referenced by snow2mdl::interp(), and readafwa().
+ +logical*1, dimension(:,:), allocatable snowdat::bitmap_afwa_nh | +
The northern hemisphere afwa data grib bitmap.
+(false-non land, true-land).
+ +Definition at line 70 of file snowdat.F90.
+ +Referenced by snow2mdl::interp(), and readafwa().
+ +logical*1, dimension(:,:), allocatable snowdat::bitmap_afwa_sh | +
The southern hemisphere afwa data grib bitmap.
+(false-non land, true-land).
+ +Definition at line 72 of file snowdat.F90.
+ +Referenced by snow2mdl::interp(), and readafwa().
+ +logical*1, dimension(:,:), allocatable snowdat::bitmap_autosnow | +
autosnow data grib bitmap (false-non land, true-land).
+ +Definition at line 75 of file snowdat.F90.
+ +Referenced by snow2mdl::interp(), and readautosnow().
+ +logical*1, dimension(:,:), allocatable snowdat::bitmap_nesdis | +
nesdis data grib bitmap (false-non land, true-land).
+ +Definition at line 74 of file snowdat.F90.
+ +Referenced by snow2mdl::interp(), and readnesdis().
+ +integer snowdat::iafwa | +
i-dimension of afwa grid
+ +Definition at line 40 of file snowdat.F90.
+ +Referenced by snow2mdl::interp(), and readafwa().
+ +integer snowdat::iautosnow | +
i-dimension of autosnow grid
+ +Definition at line 41 of file snowdat.F90.
+ +Referenced by snow2mdl::interp(), and readautosnow().
+ +integer snowdat::inesdis | +
i-dimension of nesdis grid
+ +Definition at line 42 of file snowdat.F90.
+ +Referenced by snow2mdl::interp(), and readnesdis().
+ +integer snowdat::jafwa | +
j-dimension of afwa grid
+ +Definition at line 43 of file snowdat.F90.
+ +Referenced by snow2mdl::interp(), and readafwa().
+ +integer snowdat::jautosnow | +
j-dimension of autosnow grid
+ +Definition at line 44 of file snowdat.F90.
+ +Referenced by snow2mdl::interp(), and readautosnow().
+ +integer snowdat::jnesdis | +
j-dimension of nesdis grid
+ +Definition at line 45 of file snowdat.F90.
+ +Referenced by snow2mdl::interp(), and readnesdis().
+ +integer, dimension(200) snowdat::kgds_afwa_global | +
grib1 grid description section for global afwa data.
+ +Definition at line 46 of file snowdat.F90.
+ +Referenced by snow2mdl::interp(), and readafwa().
+ +integer, dimension(200) snowdat::kgds_afwa_nh | +
grib1 grid description section for northern hemisphere 16th mesh afwa data.
+ +Definition at line 48 of file snowdat.F90.
+ +Referenced by afwa_check(), snow2mdl::interp(), and readafwa().
+ +integer, dimension(200) snowdat::kgds_afwa_nh_8th | +
grib1 grid description section for northern hemisphere 8th mesh afwa data.
+ +Definition at line 50 of file snowdat.F90.
+ +Referenced by readafwa().
+ +integer, dimension(200) snowdat::kgds_afwa_sh | +
grib1 grid description section for southern hemisphere 16th mesh afwa data.
+ +Definition at line 52 of file snowdat.F90.
+ +Referenced by afwa_check(), snow2mdl::interp(), and readafwa().
+ +integer, dimension(200) snowdat::kgds_afwa_sh_8th | +
grib1 grid description section for southern hemisphere 8th mesh afwa data.
+ +Definition at line 54 of file snowdat.F90.
+ +Referenced by readafwa().
+ +integer, dimension(200) snowdat::kgds_autosnow | +
autosnow grid description section (grib section 2)
+ +Definition at line 56 of file snowdat.F90.
+ +Referenced by snow2mdl::interp(), and readautosnow().
+ +integer, dimension(200) snowdat::kgds_nesdis | +
nesdis/ims grid description section (grib section 2)
+ +Definition at line 57 of file snowdat.F90.
+ +Referenced by snow2mdl::interp(), and readnesdis().
+ +integer snowdat::mesh_nesdis | +
nesdis/ims data is 96th mesh (or bediant)
+ +Definition at line 58 of file snowdat.F90.
+ +Referenced by readnesdis().
+ +real snowdat::nesdis_res | +
Resolution of the nesdis data in km.
+ +Definition at line 85 of file snowdat.F90.
+ +Referenced by snow2mdl::interp(), and readnesdis().
+ +integer*1, dimension(:,:), allocatable snowdat::sea_ice_nesdis | +
nesdis/ims sea ice flag (0-open water, 1-ice)
+ +Definition at line 59 of file snowdat.F90.
+ +Referenced by snow2mdl::interp(), and readnesdis().
+ +real, dimension(:,:), allocatable snowdat::snow_cvr_autosnow | +
autosnow snow cover flag (0-no, 100-yes)
+ +Definition at line 87 of file snowdat.F90.
+ +Referenced by snow2mdl::interp(), and readautosnow().
+ +real, dimension(:,:), allocatable snowdat::snow_cvr_nesdis | +
nesdis/ims snow cover flag (0-no, 100-yes)
+ +Definition at line 86 of file snowdat.F90.
+ +Referenced by snow2mdl::interp(), and readnesdis().
+ +real, dimension(:,:), allocatable snowdat::snow_dep_afwa_global | +
The global afwa snow depth.
+ +Definition at line 88 of file snowdat.F90.
+ +Referenced by snow2mdl::interp(), and readafwa().
+ +real, dimension(:,:), allocatable snowdat::snow_dep_afwa_nh | +
Northern hemisphere afwa snow depth.
+ +Definition at line 89 of file snowdat.F90.
+ +Referenced by afwa_check(), snow2mdl::interp(), and readafwa().
+ +real, dimension(:,:), allocatable snowdat::snow_dep_afwa_sh | +
Southern hemisphere afwa snow depth.
+ +Definition at line 90 of file snowdat.F90.
+ +Referenced by afwa_check(), snow2mdl::interp(), and readafwa().
+ +logical snowdat::use_autosnow | +
True if autosnow data to be used.
+ +Definition at line 80 of file snowdat.F90.
+ +Referenced by snow2mdl::interp(), and readautosnow().
+ +logical snowdat::use_global_afwa | +
True if global hemisphere afwa data to be used.
+ +Definition at line 79 of file snowdat.F90.
+ +Referenced by snow2mdl::interp(), readafwa(), snow2mdl::write_grib1(), and snow2mdl::write_grib2().
+ +logical snowdat::use_nesdis | +
True if nesdis/ims data to be used.
+ +Definition at line 81 of file snowdat.F90.
+ +Referenced by snow2mdl::interp(), and readnesdis().
+ +logical snowdat::use_nh_afwa | +
True if northern hemisphere afwa data to be used.
+ +Definition at line 77 of file snowdat.F90.
+ +Referenced by snow2mdl::interp(), readafwa(), snow2mdl::write_grib1(), and snow2mdl::write_grib2().
+ +logical snowdat::use_sh_afwa | +
True if southern hemisphere afwa data to be used.
+ +Definition at line 78 of file snowdat.F90.
+ +Referenced by snow2mdl::interp(), readafwa(), snow2mdl::write_grib1(), and snow2mdl::write_grib2().
+ +
+ fvcom_tools
+ 1.13.0
+
+ |
+
Module to hold specification kinds for variable declaration. +More...
++Variables | |
real(r_kind), parameter, public | drmissing =-99999.0 |
Fill value for double real missing data. More... | |
integer, parameter, public | i_byte = 1 |
generic specification kind for default byte. More... | |
integer, parameter, public | i_kind = 4 |
generic specification kind for default integer. More... | |
integer, parameter, public | i_short = 2 |
generic specification kind for default short. More... | |
real(i_kind), parameter, public | imissing =-99999 |
Fill value for integer missing data. More... | |
integer, parameter, public | len_sta_name = 8 |
Name length. More... | |
integer, parameter, public | r_kind = 8 |
generic specification kind for default floating point More... | |
integer, parameter, public | r_single = 4 |
specification kind for single precision (4-byte) real variable. More... | |
real(r_single), parameter, public | rmissing =-99999.0 |
Fill value for single real missing data. More... | |
Module to hold specification kinds for variable declaration.
+This module is based on (copied from) Paul vanDelst's type_kinds module found in the community radiative transfer model
+ +real(r_kind), parameter, public kinds::drmissing =-99999.0 | +
integer, parameter, public kinds::i_byte = 1 | +
integer, parameter, public kinds::i_kind = 4 | +
generic specification kind for default integer.
+ +Definition at line 21 of file kinds.f90.
+ +Referenced by process_fvcom().
+ +integer, parameter, public kinds::i_short = 2 | +
real(i_kind), parameter, public kinds::imissing =-99999 | +
integer, parameter, public kinds::len_sta_name = 8 | +
integer, parameter, public kinds::r_kind = 8 | +
generic specification kind for default floating point
+ +Definition at line 26 of file kinds.f90.
+ +Referenced by process_fvcom().
+ +integer, parameter, public kinds::r_single = 4 | +
specification kind for single precision (4-byte) real variable.
+ +Definition at line 25 of file kinds.f90.
+ +Referenced by process_fvcom().
+ +
+ fvcom_tools
+ 1.13.0
+
+ |
+
+ fvcom_tools
+ 1.13.0
+
+ |
+
+ fvcom_tools
+ 1.13.0
+
+ |
+
+ fvcom_tools
+ 1.13.0
+
+ |
+
Functions to read and write netcdf files. +More...
++Data Types | |
type | ncio |
+Functions/Subroutines | |
subroutine | add_new_var_2d (this, varname, dname1, dname2, lname, units, dtype) |
Add a new variable to sfc_data.nc with dimensions (yaxis_1, xaxis_1). More... | |
subroutine | add_new_var_3d (this, varname, dname1, dname2, dname3, lname, units, dtype) |
Add a new variable to sfc_data.nc with dimensions (Time, yaxis_1, xaxis_1). More... | |
subroutine | close_nc (this) |
Close a netcdf file. More... | |
subroutine | convert_theta2t_2dgrid (this, nx, ny, ps, t2) |
Convert theta T (Kelvin) to T (deg C). More... | |
subroutine | get_att_nc_int (this, attname, ival) |
Get integer attribute in wrf netcdf file. More... | |
subroutine | get_att_nc_real (this, attname, rval) |
Get attribute in wrf netcdf file. More... | |
subroutine | get_att_nc_string (this, attname, string) |
Get string attribute in wrf netcdf file. More... | |
subroutine | get_dim_nc (this, dimname, dimvalue) |
Get dimensions in netcdf file. More... | |
subroutine | get_var_nc_char (this, varname, ilength, field) |
Read in character type variable. More... | |
subroutine | get_var_nc_char_1d (this, varname, nd1, field) |
Read in 1D character type variable. More... | |
subroutine | get_var_nc_char_2d (this, varname, nd1, nd2, field) |
Read in 2D character type variable. More... | |
subroutine | get_var_nc_char_3d (this, varname, nd1, nd2, nd3, field) |
Read in 3D character type variable. More... | |
subroutine | get_var_nc_double (this, varname, ilength, field) |
Read in double type variable. More... | |
subroutine | get_var_nc_double_1d (this, varname, nd1, field) |
Read in 1D double type variable. More... | |
subroutine | get_var_nc_double_2d (this, varname, nd1, nd2, field) |
Read in 2D double type variable. More... | |
subroutine | get_var_nc_double_3d (this, varname, nd1, nd2, nd3, field) |
Read in 3D double type field. More... | |
subroutine | get_var_nc_int (this, varname, ilength, field) |
Read in integer type variable. More... | |
subroutine | get_var_nc_int_1d (this, varname, nd1, field) |
Read in 1D integer variable. More... | |
subroutine | get_var_nc_int_2d (this, varname, nd1, nd2, field) |
Read in 2D integer type variable. More... | |
subroutine | get_var_nc_int_3d (this, varname, nd1, nd2, nd3, field) |
Read in 3D integer type variable. More... | |
subroutine | get_var_nc_real (this, varname, ilength, field) |
Read in real type variable. More... | |
subroutine | get_var_nc_real_1d (this, varname, nd1, field) |
Read in 1D real type variable. More... | |
subroutine | get_var_nc_real_2d (this, varname, nd1, nd2, field) |
Read in 2D real type variable. More... | |
subroutine | get_var_nc_real_3d (this, varname, nd1, nd2, nd3, field) |
Read in 3D real type variable. More... | |
subroutine | get_var_nc_short (this, varname, ilength, field) |
Read in short type variable. More... | |
subroutine | get_var_nc_short_1d (this, varname, nd1, field) |
Read in 1D short type variable. More... | |
subroutine | get_var_nc_short_2d (this, varname, nd1, nd2, field) |
Read in 2D short type variable. More... | |
subroutine | handle_err (this, status) |
Handle netCDF errors. More... | |
subroutine | open_nc (this, filename, action, debug_level) |
Open a netcdf file, set initial debug level. More... | |
subroutine | replace_var_nc_char (this, varname, ilength, field) |
Replace character type variable. More... | |
subroutine | replace_var_nc_char_1d (this, varname, nd1, field) |
Replace 1D character type variable. More... | |
subroutine | replace_var_nc_char_2d (this, varname, nd1, nd2, field) |
Replace 2D character type variable. More... | |
subroutine | replace_var_nc_char_3d (this, varname, nd1, nd2, nd3, field) |
Replace 3D character type variable. More... | |
subroutine | replace_var_nc_double (this, varname, ilength, field) |
Replace double type variable. More... | |
subroutine | replace_var_nc_double_1d (this, varname, nd1, field) |
Replace 1D double type variable. More... | |
subroutine | replace_var_nc_double_2d (this, varname, nd1, nd2, field) |
Replace 2D double type variable. More... | |
subroutine | replace_var_nc_double_3d (this, varname, nd1, nd2, nd3, field) |
Replace 3D double type variable. More... | |
subroutine | replace_var_nc_int (this, varname, ilength, field) |
Replace integer type variable. More... | |
subroutine | replace_var_nc_int_1d (this, varname, nd1, field) |
Replace 1D integer type variable. More... | |
subroutine | replace_var_nc_int_2d (this, varname, nd1, nd2, field) |
Replace 2D integer type variable. More... | |
subroutine | replace_var_nc_int_3d (this, varname, nd1, nd2, nd3, field) |
Replace 3D integer type variable. More... | |
subroutine | replace_var_nc_real (this, varname, ilength, field) |
Replace real type variable. More... | |
subroutine | replace_var_nc_real_1d (this, varname, nd1, field) |
Replace 1D real type variable. More... | |
subroutine | replace_var_nc_real_2d (this, varname, nd1, nd2, field) |
Replace 2D real type variable. More... | |
subroutine | replace_var_nc_real_3d (this, varname, nd1, nd2, nd3, field) |
Replace 3D real type variable. More... | |
Functions to read and write netcdf files.
+ +
+
|
+ +private | +
Add a new variable to sfc_data.nc with dimensions (yaxis_1, xaxis_1).
+this | instance of an ncio class | |
[in] | varname | Name of variable to be created in netcdf file |
[in] | dname1 | 1st dimension name |
[in] | dname2 | 2nd dimension name |
[in] | lname | long name output for netcdf variable |
[in] | units | units to use in netcdf variable |
[in] | dtype | data type of netcdf variable |
Definition at line 2575 of file module_ncio.f90.
+ +Referenced by module_ncio::ncio::add_new_var().
+ +
+
|
+ +private | +
Add a new variable to sfc_data.nc with dimensions (Time, yaxis_1, xaxis_1).
+this | instance of an ncio class | |
[in] | varname | Name of variable to be created in netcdf file |
[in] | dname1 | 1st dimension name |
[in] | dname2 | 2nd dimension name |
[in] | dname3 | 3rd dimension name |
[in] | lname | long name output for netcdf variable |
[in] | units | units to use in netcdf variable |
[in] | dtype | date type of netcdf variable |
Definition at line 2518 of file module_ncio.f90.
+ +Referenced by module_ncio::ncio::add_new_var().
+ +
+
|
+ +private | +
Close a netcdf file.
+this | instance of an ncio class |
Definition at line 141 of file module_ncio.f90.
+ +subroutine module_ncio::convert_theta2t_2dgrid | +( | +class(ncio) | +this, | +
+ | + | integer | +nx, | +
+ | + | integer | +ny, | +
+ | + | real, dimension(nx,ny), intent(in) | +ps, | +
+ | + | real, dimension(nx,ny), intent(inout) | +t2 | +
+ | ) | ++ |
Convert theta T (Kelvin) to T (deg C).
+[in] | this | instance of an ncio class |
[in] | nx | number of grid points in x-dir |
[in] | ny | number of grid points in y-dir |
[in] | ps | Pressure (Pa) |
[in,out] | t2 | Pot. Temperature (Kelvin) |
Definition at line 2481 of file module_ncio.f90.
+ +
+
|
+ +private | +
Get integer attribute in wrf netcdf file.
+this | instance of an ncio class |
attname | name of the attribute to get |
ival | value of attribute. |
Definition at line 187 of file module_ncio.f90.
+ +Referenced by module_ncio::ncio::get_att().
+ +
+
|
+ +private | +
Get attribute in wrf netcdf file.
+this | instance of an ncio class |
attname | name of the attribute to get |
rval | return value |
Definition at line 163 of file module_ncio.f90.
+ +Referenced by module_ncio::ncio::get_att().
+ +
+
|
+ +private | +
Get string attribute in wrf netcdf file.
+this | instance of an ncio class |
attname | name of the attribute to get |
string | value of attribute. |
Definition at line 211 of file module_ncio.f90.
+ +Referenced by module_ncio::ncio::get_att().
+ +
+
|
+ +private | +
Get dimensions in netcdf file.
+[in] | this | instance of an ncio class |
[in] | dimname | name of the dimension |
[out] | dimvalue | length of the dimension |
Definition at line 236 of file module_ncio.f90.
+ +subroutine module_ncio::get_var_nc_char | +( | +class(ncio) | +this, | +
+ | + | character(len=*), intent(in) | +varname, | +
+ | + | integer, intent(in) | +ilength, | +
+ | + | character, dimension(ilength), intent(out) | +field | +
+ | ) | ++ |
Read in character type variable.
+[in] | this | instance of an ncio class |
[in] | varname | name of the variable |
[in] | ilength | size of array |
[out] | field | output variable |
Definition at line 2354 of file module_ncio.f90.
+ +subroutine module_ncio::get_var_nc_char_1d | +( | +class(ncio) | +this, | +
+ | + | character(len=*), intent(in) | +varname, | +
+ | + | integer, intent(in) | +nd1, | +
+ | + | character, dimension(nd1), intent(out) | +field | +
+ | ) | ++ |
Read in 1D character type variable.
+[in] | this | instance of an ncio class |
[in] | varname | name of the variable |
[in] | nd1 | length of first dimension |
[out] | field | output variable |
Definition at line 2210 of file module_ncio.f90.
+ +Referenced by module_ncio::ncio::get_var().
+ +subroutine module_ncio::get_var_nc_char_2d | +( | +class(ncio) | +this, | +
+ | + | character(len=*), intent(in) | +varname, | +
+ | + | integer, intent(in) | +nd1, | +
+ | + | integer, intent(in) | +nd2, | +
+ | + | character, dimension(nd1,nd2), intent(out) | +field | +
+ | ) | ++ |
Read in 2D character type variable.
+[in] | this | instance of an ncio class |
[in] | varname | name of the variable |
[in] | nd1 | length of first dimension |
[in] | nd2 | length of second dimension |
[out] | field | output variable |
Definition at line 2248 of file module_ncio.f90.
+ +Referenced by module_ncio::ncio::get_var().
+ +subroutine module_ncio::get_var_nc_char_3d | +( | +class(ncio) | +this, | +
+ | + | character(len=*), intent(in) | +varname, | +
+ | + | integer, intent(in) | +nd1, | +
+ | + | integer, intent(in) | +nd2, | +
+ | + | integer, intent(in) | +nd3, | +
+ | + | character, dimension(nd1,nd2,nd3), intent(out) | +field | +
+ | ) | ++ |
Read in 3D character type variable.
+[in] | this | instance of an ncio class |
[in] | varname | name of the variable |
[in] | nd1 | length of first dimension |
[in] | nd2 | length of second dimension |
[in] | nd3 | length of third dimension |
[out] | field | output variable |
Definition at line 2300 of file module_ncio.f90.
+ +Referenced by module_ncio::ncio::get_var().
+ +subroutine module_ncio::get_var_nc_double | +( | +class(ncio) | +this, | +
+ | + | character(len=*), intent(in) | +varname, | +
+ | + | integer, intent(in) | +ilength, | +
+ | + | real(8), dimension(ilength), intent(out) | +field | +
+ | ) | ++ |
Read in double type variable.
+[in] | this | instance of an ncio class |
[in] | varname | name of the variable |
[in] | ilength | size of array |
[out] | field | output variable |
Definition at line 1390 of file module_ncio.f90.
+ +subroutine module_ncio::get_var_nc_double_1d | +( | +class(ncio) | +this, | +
+ | + | character(len=*), intent(in) | +varname, | +
+ | + | integer, intent(in) | +nd1, | +
+ | + | real(8), dimension(nd1), intent(out) | +field | +
+ | ) | ++ |
Read in 1D double type variable.
+[in] | this | instance of an ncio class |
[in] | varname | name of the variable |
[in] | nd1 | lenth of first dimension |
[out] | field | output variable |
Definition at line 1244 of file module_ncio.f90.
+ +Referenced by module_ncio::ncio::get_var().
+ +subroutine module_ncio::get_var_nc_double_2d | +( | +class(ncio) | +this, | +
+ | + | character(len=*), intent(in) | +varname, | +
+ | + | integer, intent(in) | +nd1, | +
+ | + | integer, intent(in) | +nd2, | +
+ | + | real(8), dimension(nd1,nd2), intent(out) | +field | +
+ | ) | ++ |
Read in 2D double type variable.
+[in] | this | instance of an ncio class |
[in] | varname | name of the variable |
[in] | nd1 | length of first dimension |
[in] | nd2 | length of second dimension |
[out] | field | output variable |
Definition at line 1282 of file module_ncio.f90.
+ +Referenced by module_ncio::ncio::get_var().
+ +subroutine module_ncio::get_var_nc_double_3d | +( | +class(ncio) | +this, | +
+ | + | character(len=*), intent(in) | +varname, | +
+ | + | integer, intent(in) | +nd1, | +
+ | + | integer, intent(in) | +nd2, | +
+ | + | integer, intent(in) | +nd3, | +
+ | + | real(8), dimension(nd1,nd2,nd3), intent(out) | +field | +
+ | ) | ++ |
Read in 3D double type field.
+[in] | this | instance of an ncio class |
[in] | varname | name of the variable |
[in] | nd1 | length of first dimension |
[in] | nd2 | length of second dimension |
[in] | nd3 | length of third dimension |
[out] | field | output variable |
Definition at line 1334 of file module_ncio.f90.
+ +Referenced by module_ncio::ncio::get_var().
+ +subroutine module_ncio::get_var_nc_int | +( | +class(ncio) | +this, | +
+ | + | character(len=*), intent(in) | +varname, | +
+ | + | integer, intent(in) | +ilength, | +
+ | + | integer, dimension(ilength), intent(out) | +field | +
+ | ) | ++ |
Read in integer type variable.
+[in] | this | instance of an ncio class |
[in] | varname | name of the variable |
[in] | ilength | size of array |
[in] | field | output variable |
Definition at line 1904 of file module_ncio.f90.
+ +subroutine module_ncio::get_var_nc_int_1d | +( | +class(ncio) | +this, | +
+ | + | character(len=*), intent(in) | +varname, | +
+ | + | integer, intent(in) | +nd1, | +
+ | + | integer, dimension(nd1), intent(out) | +field | +
+ | ) | ++ |
Read in 1D integer variable.
+[in] | this | instance of an ncio class |
[in] | varname | name of the variable |
[in] | nd1 | length of first dimension |
[out] | field | output variable |
Definition at line 1755 of file module_ncio.f90.
+ +Referenced by module_ncio::ncio::get_var().
+ +subroutine module_ncio::get_var_nc_int_2d | +( | +class(ncio) | +this, | +
+ | + | character(len=*), intent(in) | +varname, | +
+ | + | integer, intent(in) | +nd1, | +
+ | + | integer, intent(in) | +nd2, | +
+ | + | integer, dimension(nd1,nd2), intent(out) | +field | +
+ | ) | ++ |
Read in 2D integer type variable.
+[in] | this | instance of an ncio class |
[in] | varname | name of the variable |
[in] | nd1 | length of first dimension |
[in] | nd2 | length of second dimension |
[out] | field | output variable |
Definition at line 1793 of file module_ncio.f90.
+ +Referenced by module_ncio::ncio::get_var().
+ +subroutine module_ncio::get_var_nc_int_3d | +( | +class(ncio) | +this, | +
+ | + | character(len=*), intent(in) | +varname, | +
+ | + | integer, intent(in) | +nd1, | +
+ | + | integer, intent(in) | +nd2, | +
+ | + | integer, intent(in) | +nd3, | +
+ | + | integer, dimension(nd1,nd2,nd3), intent(out) | +field | +
+ | ) | ++ |
Read in 3D integer type variable.
+[in] | this | instance of an ncio class |
[in] | varname | name of the variable |
[in] | nd1 | length of first dimension |
[in] | nd2 | length of second dimension |
[in] | nd3 | length of third dimension |
[in] | field | output variable |
Definition at line 1848 of file module_ncio.f90.
+ +Referenced by module_ncio::ncio::get_var().
+ +subroutine module_ncio::get_var_nc_real | +( | +class(ncio) | +this, | +
+ | + | character(len=*), intent(in) | +varname, | +
+ | + | integer, intent(in) | +ilength, | +
+ | + | real(4), dimension(ilength), intent(out) | +field | +
+ | ) | ++ |
Read in real type variable.
+[in] | this | instance of an ncio class |
[in] | varname | name of the variable |
[in] | ilength | size of array |
[out] | field | output variable |
Definition at line 1646 of file module_ncio.f90.
+ +subroutine module_ncio::get_var_nc_real_1d | +( | +class(ncio) | +this, | +
+ | + | character(len=*), intent(in) | +varname, | +
+ | + | integer, intent(in) | +nd1, | +
+ | + | real(4), dimension(nd1), intent(out) | +field | +
+ | ) | ++ |
Read in 1D real type variable.
+[in] | this | instance of an ncio class |
[in] | varname | name of the variable |
[in] | nd1 | length of first dimension |
[out] | field | output variable |
Definition at line 1497 of file module_ncio.f90.
+ +Referenced by module_ncio::ncio::get_var().
+ +subroutine module_ncio::get_var_nc_real_2d | +( | +class(ncio) | +this, | +
+ | + | character(len=*), intent(in) | +varname, | +
+ | + | integer, intent(in) | +nd1, | +
+ | + | integer, intent(in) | +nd2, | +
+ | + | real(4), dimension(nd1,nd2), intent(out) | +field | +
+ | ) | ++ |
Read in 2D real type variable.
+[in] | this | instance of an ncio class |
[in] | varname | name of the variable |
[in] | nd1 | length of first dimension |
[in] | nd2 | length of second dimension |
[out] | field | output variable |
Definition at line 1535 of file module_ncio.f90.
+ +Referenced by module_ncio::ncio::get_var().
+ +subroutine module_ncio::get_var_nc_real_3d | +( | +class(ncio) | +this, | +
+ | + | character(len=*), intent(in) | +varname, | +
+ | + | integer, intent(in) | +nd1, | +
+ | + | integer, intent(in) | +nd2, | +
+ | + | integer, intent(in) | +nd3, | +
+ | + | real(4), dimension(nd1,nd2,nd3), intent(out) | +field | +
+ | ) | ++ |
Read in 3D real type variable.
+[in] | this | instance of an ncio class |
[in] | varname | name of the variable |
[in] | nd1 | length of first dimension |
[in] | nd2 | length of second dimension |
[in] | nd3 | length of third dimension |
[out] | field | output variable |
Definition at line 1590 of file module_ncio.f90.
+ +Referenced by module_ncio::ncio::get_var().
+ +subroutine module_ncio::get_var_nc_short | +( | +class(ncio) | +this, | +
+ | + | character(len=*), intent(in) | +varname, | +
+ | + | integer, intent(in) | +ilength, | +
+ | + | integer(2), dimension(ilength), intent(out) | +field | +
+ | ) | ++ |
Read in short type variable.
+[in] | this | instance of an ncio class |
[in] | varname | name of the variable |
[in] | ilength | size of array |
[out] | field | output variable |
Definition at line 2104 of file module_ncio.f90.
+ +subroutine module_ncio::get_var_nc_short_1d | +( | +class(ncio) | +this, | +
+ | + | character(len=*), intent(in) | +varname, | +
+ | + | integer, intent(in) | +nd1, | +
+ | + | integer(2), dimension(nd1), intent(out) | +field | +
+ | ) | ++ |
Read in 1D short type variable.
+[in] | this | instance of an ncio class |
[in] | varname | name of the variable |
[in] | nd1 | length of first dimension |
[out] | field | output variable |
Definition at line 2013 of file module_ncio.f90.
+ +Referenced by module_ncio::ncio::get_var().
+ +subroutine module_ncio::get_var_nc_short_2d | +( | +class(ncio) | +this, | +
+ | + | character(len=*), intent(in) | +varname, | +
+ | + | integer, intent(in) | +nd1, | +
+ | + | integer, intent(in) | +nd2, | +
+ | + | integer(2), dimension(nd1,nd2), intent(out) | +field | +
+ | ) | ++ |
Read in 2D short type variable.
+[in] | this | instance of an ncio class |
[in] | varname | name of the variable |
[in] | nd1 | length of first dimension |
[in] | nd2 | length of second dimension |
[out] | field | output variable |
Definition at line 2051 of file module_ncio.f90.
+ +Referenced by module_ncio::ncio::get_var().
+ +subroutine module_ncio::handle_err | +( | +class(ncio) | +this, | +
+ | + | integer, intent(in) | +status | +
+ | ) | ++ |
Handle netCDF errors.
+[in] | this | instance of an ncio class |
[in] | status | return code from neCDF |
Definition at line 2461 of file module_ncio.f90.
+ +
+
|
+ +private | +
Open a netcdf file, set initial debug level.
+this | instance of an ncio class |
filename | the file to open |
action | "r" for read, "w" for write |
debug_level | set to non-zero for some verbose output |
Definition at line 104 of file module_ncio.f90.
+ +subroutine module_ncio::replace_var_nc_char | +( | +class(ncio) | +this, | +
+ | + | character(len=*), intent(in) | +varname, | +
+ | + | integer, intent(in) | +ilength, | +
+ | + | character, dimension(ilength), intent(in) | +field | +
+ | ) | ++ |
Replace character type variable.
+[in] | this | instance of an ncio class |
[in] | varname | name of the variable |
[in] | ilength | length of array |
[in] | field | replacement field |
Definition at line 398 of file module_ncio.f90.
+ +
+
|
+ +private | +
Replace 1D character type variable.
+[in] | this | instance of an ncio class |
[in] | varname | name of the variable |
[in] | nd1 | length of first dimension |
[in] | field | replacement field |
Definition at line 264 of file module_ncio.f90.
+ +Referenced by module_ncio::ncio::replace_var().
+ +subroutine module_ncio::replace_var_nc_char_2d | +( | +class(ncio) | +this, | +
+ | + | character(len=*), intent(in) | +varname, | +
+ | + | integer, intent(in) | +nd1, | +
+ | + | integer, intent(in) | +nd2, | +
+ | + | character, dimension(nd1,nd2), intent(in) | +field | +
+ | ) | ++ |
Replace 2D character type variable.
+[in] | this | instance of an ncio class |
[in] | varname | name of the variable |
[in] | nd1 | length of first dimension |
[in] | nd2 | length of second dimension |
[in] | field | replacement field |
Definition at line 300 of file module_ncio.f90.
+ +Referenced by module_ncio::ncio::replace_var().
+ +subroutine module_ncio::replace_var_nc_char_3d | +( | +class(ncio) | +this, | +
+ | + | character(len=*), intent(in) | +varname, | +
+ | + | integer, intent(in) | +nd1, | +
+ | + | integer, intent(in) | +nd2, | +
+ | + | integer, intent(in) | +nd3, | +
+ | + | character, dimension(nd1,nd2,nd3), intent(in) | +field | +
+ | ) | ++ |
Replace 3D character type variable.
+[in] | this | instance of an ncio class |
[in] | varname | name of the variable |
[in] | nd1 | length of first dimension |
[in] | nd2 | length of second dimension |
[in] | nd3 | length of third dimension |
[in] | field | replacement field |
Definition at line 348 of file module_ncio.f90.
+ +Referenced by module_ncio::ncio::replace_var().
+ +subroutine module_ncio::replace_var_nc_double | +( | +class(ncio) | +this, | +
+ | + | character(len=*), intent(in) | +varname, | +
+ | + | integer, intent(in) | +ilength, | +
+ | + | real(8), dimension(ilength), intent(in) | +field | +
+ | ) | ++ |
Replace double type variable.
+[in] | this | instance of an ncio class |
[in] | varname | name of the variable |
[in] | ilength | size of array |
[in] | field | replacement field |
Definition at line 894 of file module_ncio.f90.
+ +subroutine module_ncio::replace_var_nc_double_1d | +( | +class(ncio) | +this, | +
+ | + | character(len=*), intent(in) | +varname, | +
+ | + | integer, intent(in) | +nd1, | +
+ | + | real(8), dimension(nd1), intent(in) | +field | +
+ | ) | ++ |
Replace 1D double type variable.
+[in] | this | instance of an ncio class |
[in] | varname | name of the variable |
[in] | nd1 | length of first dimension |
[in] | field | replacement field |
Definition at line 749 of file module_ncio.f90.
+ +Referenced by module_ncio::ncio::replace_var().
+ +subroutine module_ncio::replace_var_nc_double_2d | +( | +class(ncio) | +this, | +
+ | + | character(len=*), intent(in) | +varname, | +
+ | + | integer, intent(in) | +nd1, | +
+ | + | integer, intent(in) | +nd2, | +
+ | + | real(8), dimension(nd1,nd2), intent(in) | +field | +
+ | ) | ++ |
Replace 2D double type variable.
+[in] | this | instance of an ncio class |
[in] | varname | name of the variable |
[in] | nd1 | length of first dimension |
[in] | nd2 | length of second dimension |
[in] | field | replacement field |
Definition at line 787 of file module_ncio.f90.
+ +Referenced by module_ncio::ncio::replace_var().
+ +subroutine module_ncio::replace_var_nc_double_3d | +( | +class(ncio) | +this, | +
+ | + | character(len=*), intent(in) | +varname, | +
+ | + | integer, intent(in) | +nd1, | +
+ | + | integer, intent(in) | +nd2, | +
+ | + | integer, intent(in) | +nd3, | +
+ | + | real(8), dimension(nd1,nd2,nd3), intent(in) | +field | +
+ | ) | ++ |
Replace 3D double type variable.
+[in] | this | instance of an ncio class |
[in] | varname | name of the variable |
[in] | nd1 | length of first dimension |
[in] | nd2 | length of second dimension |
[in] | nd3 | length of third dimension |
[in] | field | replacement field |
Definition at line 838 of file module_ncio.f90.
+ +Referenced by module_ncio::ncio::replace_var().
+ +subroutine module_ncio::replace_var_nc_int | +( | +class(ncio) | +this, | +
+ | + | character(len=*), intent(in) | +varname, | +
+ | + | integer, intent(in) | +ilength, | +
+ | + | integer, dimension(ilength), intent(in) | +field | +
+ | ) | ++ |
Replace integer type variable.
+[in] | this | instance of an ncio class |
[in] | varname | name of the variable |
[in] | ilength | size of array |
[in] | field | replacement field |
Definition at line 1138 of file module_ncio.f90.
+ +subroutine module_ncio::replace_var_nc_int_1d | +( | +class(ncio) | +this, | +
+ | + | character(len=*), intent(in) | +varname, | +
+ | + | integer, intent(in) | +nd1, | +
+ | + | integer, dimension(nd1), intent(in) | +field | +
+ | ) | ++ |
Replace 1D integer type variable.
+[in] | this | instance of an ncio class |
[in] | varname | name of the variable |
[in] | nd1 | lenth of first dimension |
[in] | field | replacement field |
Definition at line 1000 of file module_ncio.f90.
+ +Referenced by module_ncio::ncio::replace_var().
+ +subroutine module_ncio::replace_var_nc_int_2d | +( | +class(ncio) | +this, | +
+ | + | character(len=*), intent(in) | +varname, | +
+ | + | integer, intent(in) | +nd1, | +
+ | + | integer, intent(in) | +nd2, | +
+ | + | integer, dimension(nd1,nd2), intent(in) | +field | +
+ | ) | ++ |
Replace 2D integer type variable.
+[in] | this | instance of an ncio class |
[in] | varname | name of the variable |
[in] | nd1 | length of first dimension |
[in] | nd2 | length of second dimension |
[in] | field | replacement field |
Definition at line 1035 of file module_ncio.f90.
+ +Referenced by module_ncio::ncio::replace_var().
+ +subroutine module_ncio::replace_var_nc_int_3d | +( | +class(ncio) | +this, | +
+ | + | character(len=*), intent(in) | +varname, | +
+ | + | integer, intent(in) | +nd1, | +
+ | + | integer, intent(in) | +nd2, | +
+ | + | integer, intent(in) | +nd3, | +
+ | + | integer, dimension(nd1,nd2,nd3), intent(in) | +field | +
+ | ) | ++ |
Replace 3D integer type variable.
+[in] | this | instance of an ncio class |
[in] | varname | name of the variable |
[in] | nd1 | length of first dimension |
[in] | nd2 | length of second dimension |
[in] | nd3 | length of third dimension |
[in] | field | replacement field |
Definition at line 1086 of file module_ncio.f90.
+ +Referenced by module_ncio::ncio::replace_var().
+ +subroutine module_ncio::replace_var_nc_real | +( | +class(ncio) | +this, | +
+ | + | character(len=*), intent(in) | +varname, | +
+ | + | integer, intent(in) | +ilength, | +
+ | + | real(4), dimension(ilength), intent(in) | +field | +
+ | ) | ++ |
Replace real type variable.
+[in] | this | instance of an ncio class |
[in] | varname | name of the variable |
[in] | ilength | length of array |
[in] | field | replacement field |
Definition at line 643 of file module_ncio.f90.
+ +subroutine module_ncio::replace_var_nc_real_1d | +( | +class(ncio) | +this, | +
+ | + | character(len=*), intent(in) | +varname, | +
+ | + | integer, intent(in) | +nd1, | +
+ | + | real(4), dimension(nd1), intent(in) | +field | +
+ | ) | ++ |
Replace 1D real type variable.
+[in] | this | instance of an ncio class |
[in] | varname | name of the variable |
[in] | nd1 | length of first dimension |
[in] | field | replacement field |
Definition at line 505 of file module_ncio.f90.
+ +Referenced by module_ncio::ncio::replace_var().
+ +subroutine module_ncio::replace_var_nc_real_2d | +( | +class(ncio) | +this, | +
+ | + | character(len=*), intent(in) | +varname, | +
+ | + | integer, intent(in) | +nd1, | +
+ | + | integer, intent(in) | +nd2, | +
+ | + | real(4), dimension(nd1,nd2), intent(in) | +field | +
+ | ) | ++ |
Replace 2D real type variable.
+[in] | this | instance of an ncio class |
[in] | varname | name of the variable |
[in] | nd1 | length of first dimension |
[in] | nd2 | length of second dimension |
[in] | field | replacement field |
Definition at line 540 of file module_ncio.f90.
+ +Referenced by module_ncio::ncio::replace_var().
+ +subroutine module_ncio::replace_var_nc_real_3d | +( | +class(ncio) | +this, | +
+ | + | character(len=*), intent(in) | +varname, | +
+ | + | integer, intent(in) | +nd1, | +
+ | + | integer, intent(in) | +nd2, | +
+ | + | integer, intent(in) | +nd3, | +
+ | + | real(4), dimension(nd1,nd2,nd3), intent(in) | +field | +
+ | ) | ++ |
Replace 3D real type variable.
+[in] | this | instance of an ncio class |
[in] | varname | name of the variable |
[in] | nd1 | length of first dimension |
[in] | nd2 | length of second dimension |
[in] | nd3 | length of third dimension |
[in] | field | replacement field |
Definition at line 588 of file module_ncio.f90.
+ +Referenced by module_ncio::ncio::replace_var().
+ +
+ fvcom_tools
+ 1.13.0
+
+ |
+
This module defines FV3LAM and FVCOM forecast data structure and the method to read and write observations from and to those data structures. +More...
++Data Types | |
type | fcst_nwp |
+Functions/Subroutines | |
subroutine | finish_nwp (this, itype, wcstart) |
Finish and deallocate. More... | |
subroutine | get_time_ind_nwp (this, filename, instr, outindex) |
This subroutine searches the FVCOM 'Times' variable and returns the matching index. More... | |
subroutine | initial_nwp (this, itype, wcstart) |
This subroutine defines the number of variables and their names for each NWP data type. More... | |
subroutine | list_initial_nwp (this) |
This subroutine lists the setup for NWP data that was done by the initial_nwp subroutine. More... | |
subroutine | read_nwp (this, filename, itype, wcstart, numlon, numlat, numtimes, time_to_get, mask, sst, ice, sfcT, iceT, sfcTl, zorl, hice, ybegin, yend) |
This subroutine initializes arrays to receive the NWP data, and opens the file and gets the data. More... | |
+Variables | |
type(ncio) | ncdata |
Wrapper object for netCDF data file. More... | |
This module defines FV3LAM and FVCOM forecast data structure and the method to read and write observations from and to those data structures.
+It is used by ingest_FVCOM.f90.
+This script is strongly based upon Eric James' (ESRL/GSL) work with HRRR/WRF to get FVCOM data into the model.
+ +
+
|
+ +private | +
Finish and deallocate.
+this | fcst_nwp object | |
[in] | itype | either ' FVCOM' or 'FV3LAM' |
[in] | wcstart | either 'warm' or 'cold'. |
Definition at line 440 of file module_nwp.f90.
+ +
+
|
+ +private | +
This subroutine searches the FVCOM 'Times' variable and returns the matching index.
+this | fcst_nwp ojbect | |
[in] | filename | netcdf file name |
[in] | instr | string of requested time |
[out] | outindex | int index that matches instr |
Definition at line 488 of file module_nwp.f90.
+ +References ncdata.
+ +
+
|
+ +private | +
This subroutine defines the number of variables and their names for each NWP data type.
+The indices of the variables are also defined for later reference.
+this | fcst_nwp object | |
[in] | itype | either ' FVCOM' or 'FV3LAM'. |
[in] | wcstart | either 'warm' or 'cold'. |
Definition at line 89 of file module_nwp.f90.
+ +
+
|
+ +private | +
This subroutine lists the setup for NWP data that was done by the initial_nwp subroutine.
+this | fcst_nwp object |
Definition at line 215 of file module_nwp.f90.
+ +
+
|
+ +private | +
This subroutine initializes arrays to receive the NWP data, and opens the file and gets the data.
+this | fcst_nwp ojbect | |
[in] | filename | netcdf file name |
[in] | itype | either ' FVCOM' or 'FV3LAM' |
[in] | wcstart | either 'warm' or 'cold'. |
[in,out] | numlon | number of grid points in x-direction |
[in,out] | numlat | number of grid poinst in y-direction |
[in,out] | numtimes | length of time dimension |
[in] | time_to_get | integer of time dimension to read in |
[in,out] | mask | Water points mask |
[in,out] | sst | Water surface temperature |
[in,out] | ice | Ice concentration (%) |
[in,out] | sfcT | Skin Temperature |
[in,out] | iceT | Ice Skin Temperature |
[in,out] | sfcTl | Skin Temperature in restart file |
[in,out] | zorl | Surface roughness length |
[in,out] | hice | Ice thickness |
[in] | ybegin | Start grid point in Y direction for the domain |
[in] | yend | End grid point in Y direction for the domain |
Definition at line 259 of file module_nwp.f90.
+ +References ncdata.
+ +
+
|
+ +private | +
Wrapper object for netCDF data file.
+ +Definition at line 75 of file module_nwp.f90.
+ +Referenced by get_time_ind_nwp(), and read_nwp().
+ +
+ fvcom_tools
+ 1.13.0
+
+ |
+
Nkinds | Module to hold specification kinds for variable declaration |
Nmodule_ncio | Functions to read and write netcdf files |
Nmodule_nwp | This module defines FV3LAM and FVCOM forecast data structure and the method to read and write observations from and to those data structures |
+ global_cycle
+ 1.13.0
+
+ |
+
Holds machine dependent constants for global_cycle. +More...
++Variables | |
integer, parameter | kind_dbl_prec = 8 |
Kind type for 8-byte float point variables. More... | |
integer, parameter | kind_io4 = kind_sngl_prec |
Kind type for 4-byte float point variables. More... | |
integer, parameter | kind_io8 = kind_dbl_prec |
Kind type for 8-byte float point variables. More... | |
integer, parameter | kind_sngl_prec = 4 |
Kind type for 4-byte float point variables. More... | |
Holds machine dependent constants for global_cycle.
+ +integer, parameter machine::kind_dbl_prec = 8 | +
Kind type for 8-byte float point variables.
+ +Definition at line 15 of file machine.f90.
+ +integer, parameter machine::kind_io4 = kind_sngl_prec | +
Kind type for 4-byte float point variables.
+ +Definition at line 13 of file machine.f90.
+ +integer, parameter machine::kind_io8 = kind_dbl_prec | +
Kind type for 8-byte float point variables.
+ +Definition at line 17 of file machine.f90.
+ +integer, parameter machine::kind_sngl_prec = 4 | +
Kind type for 4-byte float point variables.
+ +Definition at line 11 of file machine.f90.
+ +
+ global_cycle
+ 1.13.0
+
+ |
+
+ global_cycle
+ 1.13.0
+
+ |
+
+ global_cycle
+ 1.13.0
+
+ |
+
+ global_cycle
+ 1.13.0
+
+ |
+
This module contains routines that read and write data. +More...
++Data Types | |
type | nsst_data |
+Functions/Subroutines | |
subroutine, public | get_dim_nc (filename, nlat, nlon) |
Get the i/j dimensions of the data from a NetCDF file. More... | |
subroutine, public | get_tf_clm_dim (file_sst, mlat_sst, mlon_sst) |
Get the i/j dimensions of RTG SST climatology file. More... | |
subroutine | nc_check (status) |
Check the NetCDF status code. More... | |
subroutine | netcdf_err (ERR, STRING) |
If a NetCDF call returns an error, print out a user-supplied message and the NetCDF library message. More... | |
subroutine, public | read_data (LSOIL, LENSFC, DO_NSST, DO_SNO_INC_JEDI, DO_SOI_INC_JEDI, INC_FILE, IS_NOAHMP, TSFFCS, SMCFCS, SWEFCS, STCFCS, TG3FCS, ZORFCS, CVFCS, CVBFCS, CVTFCS, ALBFCS, VEGFCS, SLIFCS, CNPFCS, F10M, VETFCS, SOTFCS, ALFFCS, USTAR, FMM, FHH, SIHFCS, SICFCS, SITFCS, TPRCP, SRFLAG, SNDFCS, VMNFCS, VMXFCS, SLCFCS, STCINC, SLCINC, SLPFCS, ABSFCS, T2M, Q2M, SLMASK, ZSOIL, NSST) |
Read the first guess surface records and nsst records (if selected) for a single cubed-sphere tile. More... | |
subroutine, public | read_gsi_data (GSI_FILE, FILE_TYPE, LSOIL) |
Read increment file from the GSI containing either the foundation temperature increments and mask, or the soil increments. More... | |
subroutine, public | read_lat_lon_orog (RLA, RLO, OROG, OROG_UF, TILE_NUM, IDIM, JDIM, IJDIM, LANDFRAC) |
Read latitude and longitude for the cubed-sphere tile from the 'grid' file. More... | |
subroutine, public | read_salclm_gfs_nc (filename, sal, xlats, xlons, nlat, nlon, itime) |
Read the woa05 salinity monthly climatology file. More... | |
subroutine, public | read_tf_clim_grb (file_sst, sst, rlats_sst, rlons_sst, mlat_sst, mlon_sst, mon) |
Read a GRIB1 sst climatological analysis file. More... | |
subroutine | remove_checksum (ncid, id_var) |
Remove the checksum attribute from a netcdf record. More... | |
subroutine, public | write_data (lensfc, idim, jdim, lsoil, do_nsst, inc_file, nsst, slifcs, tsffcs, vegfcs, swefcs, tg3fcs, zorfcs, albfcs, alffcs, cnpfcs, f10m, t2m, q2m, vetfcs, sotfcs, ustar, fmm, fhh, sicfcs, sihfcs, sitfcs, tprcp, srflag, swdfcs, vmnfcs, vmxfcs, slpfcs, absfcs, slcfcs, smcfcs, stcfcs, stcinc, slcinc) |
Update surface records - and nsst records if selected - on a single cubed-sphere tile to a pre-existing model restart file (in netcdf). More... | |
+Variables | |
real, dimension(:,:), allocatable, public | dtref_gaus |
GSI foundation temperature increment on the gaussian grid. More... | |
integer, public | idim_gaus |
'i' dimension of GSI gaussian grid. More... | |
integer, public | jdim_gaus |
'j' dimension of GSI gaussian grid. More... | |
real, dimension(:,:,:), allocatable, public | slc_inc_gaus |
GSI soil moisture increments on the gaussian grid. More... | |
integer, dimension(:,:), allocatable, public | slmsk_gaus |
GSI land mask on the gaussian grid. More... | |
integer, dimension(:,:), allocatable, public | soilsnow_gaus |
GSI soil / snow mask for land on the gaussian grid. More... | |
real, dimension(:,:,:), allocatable, public | stc_inc_gaus |
GSI soil temperature increments on the gaussian grid. More... | |
This module contains routines that read and write data.
+ +type read_write_data::nsst_data | +
Definition at line 16 of file read_write_data.f90.
+subroutine, public read_write_data::get_dim_nc | +( | +character (len=*), intent(in) | +filename, | +
+ | + | integer, intent(out) | +nlat, | +
+ | + | integer, intent(out) | +nlon | +
+ | ) | ++ |
Get the i/j dimensions of the data from a NetCDF file.
+[in] | filename | Name of the file to be read. |
[out] | nlat | 'j' dimension of the data in the file. |
[out] | nlon | 'i' dimension of the data in the file. |
Definition at line 1922 of file read_write_data.f90.
+ +References nc_check().
+ +Referenced by get_sal_clm().
+ +subroutine, public read_write_data::get_tf_clm_dim | +( | +character(*), intent(in) | +file_sst, | +
+ | + | integer, intent(out) | +mlat_sst, | +
+ | + | integer, intent(out) | +mlon_sst | +
+ | ) | ++ |
Get the i/j dimensions of RTG SST climatology file.
+The file is GRIB1.
+[in] | file_sst | File name of the sst file. |
[in] | mlat_sst | The 'j' dimension of the data. |
[in] | mlon_sst | The 'i' dimension of the data. |
Definition at line 1793 of file read_write_data.f90.
+ +Referenced by get_tf_clm().
+ +subroutine read_write_data::nc_check | +( | +integer, intent(in) | +status | ) | ++ |
Check the NetCDF status code.
+If there is an error, print the library error message and stop processing.
+[in] | status | NetCDF status code. |
Definition at line 1959 of file read_write_data.f90.
+ +Referenced by get_dim_nc(), and read_salclm_gfs_nc().
+ +subroutine read_write_data::netcdf_err | +( | +integer, intent(in) | +ERR, | +
+ | + | character(len=*), intent(in) | +STRING | +
+ | ) | ++ |
If a NetCDF call returns an error, print out a user-supplied message and the NetCDF library message.
+Then stop processing.
+[in] | ERR | NetCDF error code. |
[in] | STRING | User-defined error message. |
Definition at line 876 of file read_write_data.f90.
+ +Referenced by read_data(), read_gsi_data(), read_lat_lon_orog(), remove_checksum(), and write_data().
+ +subroutine, public read_write_data::read_data | +( | +integer, intent(in) | +LSOIL, | +
+ | + | integer, intent(in) | +LENSFC, | +
+ | + | logical, intent(in) | +DO_NSST, | +
+ | + | logical, intent(in) | +DO_SNO_INC_JEDI, | +
+ | + | logical, intent(in) | +DO_SOI_INC_JEDI, | +
+ | + | logical, intent(in) | +INC_FILE, | +
+ | + | logical, intent(out), optional | +IS_NOAHMP, | +
+ | + | real, dimension(lensfc), intent(out), optional | +TSFFCS, | +
+ | + | real, dimension(lensfc,lsoil), intent(out), optional | +SMCFCS, | +
+ | + | real, dimension(lensfc), intent(out), optional | +SWEFCS, | +
+ | + | real, dimension(lensfc,lsoil), intent(out), optional | +STCFCS, | +
+ | + | real, dimension(lensfc), intent(out), optional | +TG3FCS, | +
+ | + | real, dimension(lensfc), intent(out), optional | +ZORFCS, | +
+ | + | real, dimension(lensfc), intent(out), optional | +CVFCS, | +
+ | + | real, dimension(lensfc), intent(out), optional | +CVBFCS, | +
+ | + | real, dimension(lensfc), intent(out), optional | +CVTFCS, | +
+ | + | real, dimension(lensfc,4), intent(out), optional | +ALBFCS, | +
+ | + | real, dimension(lensfc), intent(out), optional | +VEGFCS, | +
+ | + | real, dimension(lensfc), intent(out), optional | +SLIFCS, | +
+ | + | real, dimension(lensfc), intent(out), optional | +CNPFCS, | +
+ | + | real, dimension(lensfc), intent(out), optional | +F10M, | +
+ | + | real, dimension(lensfc), intent(out), optional | +VETFCS, | +
+ | + | real, dimension(lensfc), intent(out), optional | +SOTFCS, | +
+ | + | real, dimension(lensfc,2), intent(out), optional | +ALFFCS, | +
+ | + | real, dimension(lensfc), intent(out), optional | +USTAR, | +
+ | + | real, dimension(lensfc), intent(out), optional | +FMM, | +
+ | + | real, dimension(lensfc), intent(out), optional | +FHH, | +
+ | + | real, dimension(lensfc), intent(out), optional | +SIHFCS, | +
+ | + | real, dimension(lensfc), intent(out), optional | +SICFCS, | +
+ | + | real, dimension(lensfc), intent(out), optional | +SITFCS, | +
+ | + | real, dimension(lensfc), intent(out), optional | +TPRCP, | +
+ | + | real, dimension(lensfc), intent(out), optional | +SRFLAG, | +
+ | + | real, dimension(lensfc), intent(out), optional | +SNDFCS, | +
+ | + | real, dimension(lensfc), intent(out), optional | +VMNFCS, | +
+ | + | real, dimension(lensfc), intent(out), optional | +VMXFCS, | +
+ | + | real, dimension(lensfc,lsoil), intent(out), optional | +SLCFCS, | +
+ | + | real, dimension(lensfc,lsoil), intent(out), optional | +STCINC, | +
+ | + | real, dimension(lensfc,lsoil), intent(out), optional | +SLCINC, | +
+ | + | real, dimension(lensfc), intent(out), optional | +SLPFCS, | +
+ | + | real, dimension(lensfc), intent(out), optional | +ABSFCS, | +
+ | + | real, dimension(lensfc), intent(out), optional | +T2M, | +
+ | + | real, dimension(lensfc), intent(out), optional | +Q2M, | +
+ | + | real, dimension(lensfc), intent(out), optional | +SLMASK, | +
+ | + | real(kind=4), dimension(lsoil), intent(out), optional | +ZSOIL, | +
+ | + | type(nsst_data), optional | +NSST | +
+ | ) | ++ |
Read the first guess surface records and nsst records (if selected) for a single cubed-sphere tile.
+[in] | LSOIL | Number of soil layers. |
[in] | LENSFC | Total number of points on a tile. |
[in] | DO_NSST | When true, nsst fields are read. |
[in] | DO_SNO_INC_JEDI | When true, read in snow increment file |
[in] | DO_SOI_INC_JEDI | When true, read in soil increment file |
[in] | INC_FILE | When true, read from an increment file. False reads from a restart file. increments are on the cubed-sphere tiles |
[out] | IS_NOAHMP | When true, process for the Noah-MP LSM. |
[out] | TSFFCS | Skin Temperature. |
[out] | SMCFCS | Total volumetric soil moisture. |
[out] | SWEFCS | Snow water equivalent. |
[out] | STCFCS | Soil temperature. |
[out] | TG3FCS | Soil substrate temperature. |
[out] | ZORFCS | Roughness length. |
[out] | CVFCS | Cloud cover. |
[out] | CVBFCS | Cloud base. |
[out] | CVTFCS | Cloud top. |
[out] | ALBFCS | Snow-free albedo. |
[out] | SLIFCS | Land-sea mask including ice flag. |
[out] | VEGFCS | Vegetation greenness. |
[out] | CNPFCS | Plant canopy moisture content. |
[out] | F10M | log((z0+10)/z0). See model routine sfc_diff.f for details. |
[out] | VETFCS | Vegetation type. |
[out] | SOTFCS | Soil type. |
[out] | ALFFCS | Fractional coverage for strong/weak zenith angle dependent albedo. |
[out] | USTAR | Friction velocity. |
[out] | FMM | log((z0+z1)/z0). See model routine sfc_diff.f for details. |
[out] | FHH | log((ztmax+z1)/ztmax). See model routine sfc_diff.f for details. |
[out] | SIHFCS | Sea ice depth. |
[out] | SICFCS | Sea ice concentration. |
[out] | SITFCS | Sea ice temperature. |
[out] | TPRCP | Precipitation. |
[out] | SRFLAG | Snow/rain flag. |
[out] | SNDFCS | Snow depth. |
[out] | VMNFCS | Minimum vegetation greenness. |
[out] | VMXFCS | Maximum vegetation greenness. |
[out] | SLCFCS | Liquid portion of volumetric soil moisture. |
[out] | SLPFCS | Slope type. |
[out] | ABSFCS | Maximum snow albedo. |
[out] | T2M | Two-meter air temperature. |
[out] | Q2M | Two-meter specific humidity. |
[out] | SLMASK | Land-sea mask without ice flag. |
[out] | ZSOIL | Soil layer thickness. |
[out] | NSST | Data structure containing nsst fields. |
[in] | SLCINC | Liquid soil moisture increments on the cubed-sphere tiles |
[in] | STCINC | Soil temperature increments on the cubed-sphere tiles |
Definition at line 1101 of file read_write_data.f90.
+ +References netcdf_err().
+ +Referenced by sfcdrv().
+ +subroutine, public read_write_data::read_gsi_data | +( | +character(len=*), intent(in) | +GSI_FILE, | +
+ | + | character(len=3), intent(in) | +FILE_TYPE, | +
+ | + | integer, intent(in), optional | +LSOIL | +
+ | ) | ++ |
Read increment file from the GSI containing either the foundation temperature increments and mask, or the soil increments.
+The data is in NetCDF and on a gaussian grid. The grid contains two extra rows for each pole. The interpolation from gaussian to native grid assumes no pole points, so these are removed.
+[in] | GSI_FILE | Path/name of the GSI file to be read. |
[in] | FILE_TYPE | file-type to be read in, 'NST' or 'LND'. |
[in] | LSOIL | Number of model soil levels. |
Definition at line 909 of file read_write_data.f90.
+ +References dtref_gaus, idim_gaus, jdim_gaus, netcdf_err(), slc_inc_gaus, slmsk_gaus, soilsnow_gaus, and stc_inc_gaus.
+ +Referenced by sfcdrv().
+ +subroutine, public read_write_data::read_lat_lon_orog | +( | +real, dimension(ijdim), intent(out) | +RLA, | +
+ | + | real, dimension(ijdim), intent(out) | +RLO, | +
+ | + | real, dimension(ijdim), intent(out) | +OROG, | +
+ | + | real, dimension(ijdim), intent(out) | +OROG_UF, | +
+ | + | character(len=5), intent(out) | +TILE_NUM, | +
+ | + | integer, intent(in) | +IDIM, | +
+ | + | integer, intent(in) | +JDIM, | +
+ | + | integer, intent(in) | +IJDIM, | +
+ | + | real(kind=kind_io8), dimension(ijdim), intent(out), optional | +LANDFRAC | +
+ | ) | ++ |
Read latitude and longitude for the cubed-sphere tile from the 'grid' file.
+Read the filtered and unfiltered orography and optionally the land fraction from the 'orography' file.
+[in] | IDIM | 'i' dimension of cubed-sphere tile. |
[in] | JDIM | 'j' dimension of cubed-sphere tile. |
[in] | IJDIM | Total number of points on the cubed-sphere tile. |
[out] | RLA | Latitude on the cubed-sphere tile. |
[out] | RLO | Longitude on the cubed-sphere tile. |
[out] | OROG | Filtered orography. |
[out] | OROG_UF | Unfiltered orography. |
[out] | TILE_NUM | Cubed-sphere tile number |
[out] | LANDFRAC | Land fraction. |
Definition at line 733 of file read_write_data.f90.
+ +References netcdf_err().
+ +Referenced by sfcdrv().
+ +subroutine, public read_write_data::read_salclm_gfs_nc | +( | +character (len=*), intent(in) | +filename, | +
+ | + | real, dimension(nlon,nlat), intent(out) | +sal, | +
+ | + | real, dimension(nlat), intent(out) | +xlats, | +
+ | + | real, dimension(nlon), intent(out) | +xlons, | +
+ | + | integer, intent(in) | +nlat, | +
+ | + | integer, intent(in) | +nlon, | +
+ | + | integer, intent(in) | +itime | +
+ | ) | ++ |
Read the woa05 salinity monthly climatology file.
+The file is NetCDF.
+[in] | filename | The name of the climatology file. |
[in] | nlat | The 'j' dimension of the data in the file. |
[in] | nlon | The 'i' dimension of the data in the file. |
[in] | itime | The monthly record to read. |
[out] | xlats | The latitude of the data points. |
[out] | xlons | The longitude of the data points. |
[out] | sal | The salinity. |
Definition at line 1851 of file read_write_data.f90.
+ +References nc_check().
+ +Referenced by get_sal_clm_ta().
+ +subroutine, public read_write_data::read_tf_clim_grb | +( | +character(*), intent(in) | +file_sst, | +
+ | + | real, dimension(mlon_sst,mlat_sst), intent(out) | +sst, | +
+ | + | real, dimension(mlat_sst), intent(out) | +rlats_sst, | +
+ | + | real, dimension(mlon_sst), intent(out) | +rlons_sst, | +
+ | + | integer, intent(in) | +mlat_sst, | +
+ | + | integer, intent(in) | +mlon_sst, | +
+ | + | integer, intent(in) | +mon | +
+ | ) | ++ |
Read a GRIB1 sst climatological analysis file.
+Read the sst analysis and save it as an expanded and transposed array.
+[in] | file_sst | File name of the sst file. |
[in] | mlat_sst | 'j' dimension of the sst data. |
[in] | mlon_sst | 'i' dimension of the sst data. |
[in] | mon | The month of the year. |
[out] | sst | The sst analysis data. |
[out] | rlats_sst | The latitudes of the sst data points. |
[out] | rlons_sst | The longitudes of the sst data points. |
Definition at line 1651 of file read_write_data.f90.
+ +Referenced by get_tf_clm_ta().
+ +subroutine read_write_data::remove_checksum | +( | +integer, intent(in) | +ncid, | +
+ | + | integer, intent(in) | +id_var | +
+ | ) | ++ |
Remove the checksum attribute from a netcdf record.
+[in] | ncid | netcdf file id |
[in] | id_var | netcdf variable id. |
Definition at line 693 of file read_write_data.f90.
+ +References netcdf_err().
+ +Referenced by write_data().
+ +subroutine, public read_write_data::write_data | +( | +integer, intent(in) | +lensfc, | +
+ | + | integer, intent(in) | +idim, | +
+ | + | integer, intent(in) | +jdim, | +
+ | + | integer, intent(in) | +lsoil, | +
+ | + | logical, intent(in) | +do_nsst, | +
+ | + | logical, intent(in) | +inc_file, | +
+ | + | type(nsst_data), intent(in) | +nsst, | +
+ | + | real, dimension(lensfc), intent(in), optional | +slifcs, | +
+ | + | real, dimension(lensfc), intent(in), optional | +tsffcs, | +
+ | + | real, dimension(lensfc), intent(in), optional | +vegfcs, | +
+ | + | real, dimension(lensfc), intent(in), optional | +swefcs, | +
+ | + | real, dimension(lensfc), intent(in), optional | +tg3fcs, | +
+ | + | real, dimension(lensfc), intent(in), optional | +zorfcs, | +
+ | + | real, dimension(lensfc,4), intent(in), optional | +albfcs, | +
+ | + | real, dimension(lensfc,2), intent(in), optional | +alffcs, | +
+ | + | real, dimension(lensfc), intent(in), optional | +cnpfcs, | +
+ | + | real, dimension(lensfc), intent(in), optional | +f10m, | +
+ | + | real, dimension(lensfc), intent(in), optional | +t2m, | +
+ | + | real, dimension(lensfc), intent(in), optional | +q2m, | +
+ | + | real, dimension(lensfc), intent(in), optional | +vetfcs, | +
+ | + | real, dimension(lensfc), intent(in), optional | +sotfcs, | +
+ | + | real, dimension(lensfc), intent(in), optional | +ustar, | +
+ | + | real, dimension(lensfc), intent(in), optional | +fmm, | +
+ | + | real, dimension(lensfc), intent(in), optional | +fhh, | +
+ | + | real, dimension(lensfc), intent(in), optional | +sicfcs, | +
+ | + | real, dimension(lensfc), intent(in), optional | +sihfcs, | +
+ | + | real, dimension(lensfc), intent(in), optional | +sitfcs, | +
+ | + | real, dimension(lensfc), intent(in), optional | +tprcp, | +
+ | + | real, dimension(lensfc), intent(in), optional | +srflag, | +
+ | + | real, dimension(lensfc), intent(in), optional | +swdfcs, | +
+ | + | real, dimension(lensfc), intent(in), optional | +vmnfcs, | +
+ | + | real, dimension(lensfc), intent(in), optional | +vmxfcs, | +
+ | + | real, dimension(lensfc), intent(in), optional | +slpfcs, | +
+ | + | real, dimension(lensfc), intent(in), optional | +absfcs, | +
+ | + | real, dimension(lensfc,lsoil), intent(in), optional | +slcfcs, | +
+ | + | real, dimension(lensfc,lsoil), intent(in), optional | +smcfcs, | +
+ | + | real, dimension(lensfc,lsoil), intent(in), optional | +stcfcs, | +
+ | + | real, dimension(lensfc,lsoil), intent(in), optional | +stcinc, | +
+ | + | real, dimension(lensfc,lsoil), intent(in), optional | +slcinc | +
+ | ) | ++ |
Update surface records - and nsst records if selected - on a single cubed-sphere tile to a pre-existing model restart file (in netcdf).
+[in] | idim | 'i' dimension of a tile. |
[in] | jdim | 'j' dimension of a tile. |
[in] | lensfc | Total number of points on a tile. |
[in] | lsoil | Number of soil layers. |
[in] | do_nsst | When true, nsst fields were processed. |
[in] | inc_file | When true, write out increments to files |
[in] | nsst | Data structure containing nsst fields. |
[in] | slifcs | Land-sea mask. |
[in] | tsffcs | Skin temperature. |
[in] | vegfcs | Vegetation greenness. |
[in] | swefcs | Snow water equivalent |
[in] | tg3fcs | Soil substrate temperature. |
[in] | zorfcs | Roughness length. |
[in] | albfcs | Snow-free albedo. |
[in] | alffcs | Fractional coverage for strong/weak zenith angle dependent albedo. |
[in] | cnpfcs | Plant canopy moisture content. |
[in] | f10m | log((z0+10)/z0). See model routine sfc_diff.f for details. |
[in] | t2m | Two-meter air temperature. |
[in] | q2m | Two-meter specific humidity. |
[in] | vetfcs | Vegetation type. |
[in] | sotfcs | Soil type. |
[in] | ustar | Friction velocity. |
[in] | fmm | log((z0+z1)/z0). See model routine sfc_diff.f for details. |
[in] | fhh | log(ztmax+z1)/ztmax). See model routine sfc_diff.f for details. |
[in] | sicfcs | Sea ice concentraton. |
[in] | sihfcs | Sea ice depth. |
[in] | sitfcs | Sea ice temperature. |
[in] | tprcp | Precipitation. |
[in] | srflag | Snow/rain flag. |
[in] | swdfcs | Physical snow depth. |
[in] | vmnfcs | Minimum vegetation greenness. |
[in] | vmxfcs | Maximum vegetation greenness. |
[in] | slpfcs | Slope type. |
[in] | absfcs | Maximum snow albedo. |
[in] | slcfcs | Liquid portion of volumetric soil moisture. |
[in] | smcfcs | Total volumetric soil moisture. |
[in] | stcfcs | Soil temperature. |
[in] | stcinc | Soil temperature increments on the cubed-sphere tiles |
[in] | slcinc | Liquid soil moisture increments on the cubed-sphere tiles |
Definition at line 132 of file read_write_data.f90.
+ +References netcdf_err(), and remove_checksum().
+ +Referenced by sfcdrv().
+ +real, dimension(:,:), allocatable, public read_write_data::dtref_gaus | +
GSI foundation temperature increment on the gaussian grid.
+ +Definition at line 49 of file read_write_data.f90.
+ +Referenced by adjust_nsst(), and read_gsi_data().
+ +integer, public read_write_data::idim_gaus | +
'i' dimension of GSI gaussian grid.
+ +Definition at line 38 of file read_write_data.f90.
+ +Referenced by adjust_nsst(), land_increments::gaussian_to_fv3_interp(), and read_gsi_data().
+ +integer, public read_write_data::jdim_gaus | +
'j' dimension of GSI gaussian grid.
+ +Definition at line 40 of file read_write_data.f90.
+ +Referenced by adjust_nsst(), land_increments::gaussian_to_fv3_interp(), and read_gsi_data().
+ +real, dimension(:,:,:), allocatable, public read_write_data::slc_inc_gaus | +
GSI soil moisture increments on the gaussian grid.
+ +Definition at line 55 of file read_write_data.f90.
+ +Referenced by land_increments::gaussian_to_fv3_interp(), and read_gsi_data().
+ +integer, dimension(:,:), allocatable, public read_write_data::slmsk_gaus | +
GSI land mask on the gaussian grid.
+ +Definition at line 42 of file read_write_data.f90.
+ +Referenced by adjust_nsst(), and read_gsi_data().
+ +integer, dimension(:,:), allocatable, public read_write_data::soilsnow_gaus | +
GSI soil / snow mask for land on the gaussian grid.
+1 - soil, 2 - snow, 0 - not land
+ +Definition at line 45 of file read_write_data.f90.
+ +Referenced by land_increments::gaussian_to_fv3_interp(), and read_gsi_data().
+ +real, dimension(:,:,:), allocatable, public read_write_data::stc_inc_gaus | +
GSI soil temperature increments on the gaussian grid.
+ +Definition at line 52 of file read_write_data.f90.
+ +Referenced by land_increments::gaussian_to_fv3_interp(), and read_gsi_data().
+ +
+ global_cycle
+ 1.13.0
+
+ |
+
Nmachine | Holds machine dependent constants for global_cycle |
Nread_write_data | This module contains routines that read and write data |
Nutils | Module containing utility routines |
+ global_cycle
+ 1.13.0
+
+ |
+
Module containing utility routines. +More...
++Functions/Subroutines | |
subroutine, public | remap_coef (is, ie, js, je, im, jm, lon, lat, id1, id2, jdc, s2c, agrid) |
Generate the weights and index of the grids used in the bilinear interpolation. More... | |
Module containing utility routines.
+ +subroutine, public utils::remap_coef | +( | +integer, intent(in) | +is, | +
+ | + | integer, intent(in) | +ie, | +
+ | + | integer, intent(in) | +js, | +
+ | + | integer, intent(in) | +je, | +
+ | + | integer, intent(in) | +im, | +
+ | + | integer, intent(in) | +jm, | +
+ | + | real, dimension(im), intent(in) | +lon, | +
+ | + | real, dimension(jm), intent(in) | +lat, | +
+ | + | integer, dimension(is:ie,js:je), intent(out) | +id1, | +
+ | + | integer, dimension(is:ie,js:je), intent(out) | +id2, | +
+ | + | integer, dimension(is:ie,js:je), intent(out) | +jdc, | +
+ | + | real, dimension(is:ie,js:je,4), intent(out) | +s2c, | +
+ | + | real, dimension(is:ie,js:je,2), intent(in) | +agrid | +
+ | ) | ++ |
Generate the weights and index of the grids used in the bilinear interpolation.
+This routine was taken from the forecast model - ./atmos_cubed_sphere/tools/fv_treat_da_inc.f90.
+[in] | is | Start index in x-direction of the source array. |
[in] | ie | End index in x-direction of the source array. |
[in] | js | Start index in y-direction of the source array. |
[in] | je | End index in y-direction of the source array. |
[in] | im | x-dimension of the source array. |
[in] | jm | y-dimension of the source array. |
[in] | lon | 1-d array of longitudes (in radians). |
[in] | lat | 1-d array of latitudes (in radians). |
[in] | agrid | 2-d array for lon [agrid(:,:,1)] & lat [agrid(:,:,2)] (in radians). |
[out] | s2c | Bi-linear interpolation weights of the four nearby grids of the source array. |
[out] | id1 | Index 1 in x-direction of the nearby grids of the source array. |
[out] | id2 | Index 2 in x-direction of the nearby grids of the source array. |
[out] | jdc | Index in y-direction of the nearby grid of the source array. |
Definition at line 40 of file utils.F90.
+ +Referenced by adjust_nsst(), land_increments::gaussian_to_fv3_interp(), and intp_tile().
+ +
+ grid_tools
+ 1.13.0
+
+ |
+
+ grid_tools
+ 1.13.0
+
+ |
+
+ grid_tools
+ 1.13.0
+
+ |
+
+ grid_tools
+ 1.13.0
+
+ |
+
+ grid_tools
+ 1.13.0
+
+ |
+
+ grid_tools
+ 1.13.0
+
+ |
+
+ grid_tools
+ 1.13.0
+
+ |
+
+ grid_tools
+ 1.13.0
+
+ |
+
+ grid_tools
+ 1.13.0
+
+ |
+
+ grid_tools
+ 1.13.0
+
+ |
+
+ grid_tools
+ 1.13.0
+
+ |
+
+ grid_tools
+ 1.13.0
+
+ |
+
+ grid_tools
+ 1.13.0
+
+ |
+
+ grid_tools
+ 1.13.0
+
+ |
+
+ grid_tools
+ 1.13.0
+
+ |
+
+ grid_tools
+ 1.13.0
+
+ |
+
+ grid_tools
+ 1.13.0
+
+ |
+
+ grid_tools
+ 1.13.0
+
+ |
+
+ grid_tools
+ 1.13.0
+
+ |
+
+ grid_tools
+ 1.13.0
+
+ |
+
+ grid_tools
+ 1.13.0
+
+ |
+
+ grid_tools
+ 1.13.0
+
+ |
+
+ grid_tools
+ 1.13.0
+
+ |
+
+ grid_tools
+ 1.13.0
+
+ |
+
+ grid_tools
+ 1.13.0
+
+ |
+
+ grid_tools
+ 1.13.0
+
+ |
+
+ grid_tools
+ 1.13.0
+
+ |
+
+ grid_tools
+ 1.13.0
+
+ |
+
+ grid_tools
+ 1.13.0
+
+ |
+
+ grid_tools
+ 1.13.0
+
+ |
+
+ grid_tools
+ 1.13.0
+
+ |
+
+ grid_tools
+ 1.13.0
+
+ |
+
+ grid_tools
+ 1.13.0
+
+ |
+
+ grid_tools
+ 1.13.0
+
+ |
+
+ grid_tools
+ 1.13.0
+
+ |
+
+ grid_tools
+ 1.13.0
+
+ |
+
+ grid_tools
+ 1.13.0
+
+ |
+
+ grid_tools
+ 1.13.0
+
+ |
+
+ grid_tools
+ 1.13.0
+
+ |
+
+ grid_tools
+ 1.13.0
+
+ |
+
+ grid_tools
+ 1.13.0
+
+ |
+
+ grid_tools
+ 1.13.0
+
+ |
+
+ grid_tools
+ 1.13.0
+
+ |
+
Constants for orientation and stretching of map. +More...
++Variables | |
real(sp), dimension(3, 3) | rotm |
Orthogonal rotation matrix. More... | |
real(sp) | sc |
Schmidt stretching factor. More... | |
real(sp) | sci |
Schmidt inverse stretching factor. More... | |
Constants for orientation and stretching of map.
+ +real(sp), dimension(3,3) cstgeo::rotm | +
real(sp) cstgeo::sc | +
+ grid_tools
+ 1.13.0
+
+ |
+
Constants for orientation and stretching of map. +More...
++Variables | |
real(dp), dimension(3, 3) | rotm |
Orthogonal rotation matrix. More... | |
real(dp) | sc |
Schmidt stretching factor. More... | |
real(dp) | sci |
Schmidt inverse stretching factor. More... | |
Constants for orientation and stretching of map.
+ +real(dp), dimension(3,3) dcstgeo::rotm | +
real(dp) dcstgeo::sc | +
+ grid_tools
+ 1.13.0
+
+ |
+
+ grid_tools
+ 1.13.0
+
+ |
+
+ grid_tools
+ 1.13.0
+
+ |
+
+ grid_tools
+ 1.13.0
+
+ |
+
+ grid_tools
+ 1.13.0
+
+ |
+
+ grid_tools
+ 1.13.0
+
+ |
+
+ grid_tools
+ 1.13.0
+
+ |
+
+ grid_tools
+ 1.13.0
+
+ |
+
+ grid_tools
+ 1.13.0
+
+ |
+
+ grid_tools
+ 1.13.0
+
+ |
+
+ grid_tools
+ 1.13.0
+
+ |
+
+ grid_tools
+ 1.13.0
+
+ |
+
+ grid_tools
+ 1.13.0
+
+ |
+
+ grid_tools
+ 1.13.0
+
+ |
+
+ grid_tools
+ 1.13.0
+
+ |
+
+ grid_tools
+ 1.13.0
+
+ |
+
+ grid_tools
+ 1.13.0
+
+ |
+
+ grid_tools
+ 1.13.0
+
+ |
+
+ grid_tools
+ 1.13.0
+
+ |
+
+ grid_tools
+ 1.13.0
+
+ |
+
+ grid_tools
+ 1.13.0
+
+ |
+
+ grid_tools
+ 1.13.0
+
+ |
+
+ grid_tools
+ 1.13.0
+
+ |
+
+ grid_tools
+ 1.13.0
+
+ |
+
+ grid_tools
+ 1.13.0
+
+ |
+
+ grid_tools
+ 1.13.0
+
+ |
+
+ grid_tools
+ 1.13.0
+
+ |
+
+ grid_tools
+ 1.13.0
+
+ |
+
+ grid_tools
+ 1.13.0
+
+ |
+
+ grid_tools
+ 1.13.0
+
+ |
+
+ grid_tools
+ 1.13.0
+
+ |
+
+ grid_tools
+ 1.13.0
+
+ |
+
+ grid_tools
+ 1.13.0
+
+ |
+
+ grid_tools
+ 1.13.0
+
+ |
+
+ grid_tools
+ 1.13.0
+
+ |
+
+ grid_tools
+ 1.13.0
+
+ |
+
+ grid_tools
+ 1.13.0
+
+ |
+
+ grid_tools
+ 1.13.0
+
+ |
+
+ grid_tools
+ 1.13.0
+
+ |
+
+ grid_tools
+ 1.13.0
+
+ |
+
+ grid_tools
+ 1.13.0
+
+ |
+
+ grid_tools
+ 1.13.0
+
+ |
+
+ grid_tools
+ 1.13.0
+
+ |
+
+ grid_tools
+ 1.13.0
+
+ |
+
+ grid_tools
+ 1.13.0
+
+ |
+
+ grid_tools
+ 1.13.0
+
+ |
+
+ grid_tools
+ 1.13.0
+
+ |
+
+ grid_tools
+ 1.13.0
+
+ |
+
+ grid_tools
+ 1.13.0
+
+ |
+
+ grid_tools
+ 1.13.0
+
+ |
+
+ grid_tools
+ 1.13.0
+
+ |
+
+ grid_tools
+ 1.13.0
+
+ |
+
+ grid_tools
+ 1.13.0
+
+ |
+
+ grid_tools
+ 1.13.0
+
+ |
+
+ grid_tools
+ 1.13.0
+
+ |
+
+ grid_tools
+ 1.13.0
+
+ |
+
+ grid_tools
+ 1.13.0
+
+ |
+
+ grid_tools
+ 1.13.0
+
+ |
+
+ grid_tools
+ 1.13.0
+
+ |
+
+ grid_tools
+ 1.13.0
+
+ |
+
Suite of routines to perform the 2-parameter family of Extended Schmidt Gnomonic (ESG) regional grid mappings, and to optimize the the two parameters, A and K, of those mappings for a given rectangular domain's principal (median) semi-arcs with respect to a domain-averaged measure of distortion. +More...
++Data Types | |
interface | bestesg_geo |
interface | bestesg_map |
interface | gaulegh |
interface | get_edges |
interface | get_meanq |
interface | get_qofv |
interface | get_qx |
interface | gtoxm_ak_dd |
interface | gtoxm_ak_rr |
interface | guessak_geo |
interface | guessak_map |
interface | hgrid_ak |
interface | hgrid_ak_dc |
interface | hgrid_ak_dd |
interface | hgrid_ak_rc |
interface | hgrid_ak_rr |
interface | xctoxm_ak |
interface | xctoxs |
interface | xmtog_ak_dd |
interface | xmtog_ak_rr |
interface | xmtoxc_ak |
interface | xmtoxt |
interface | xstoxc |
interface | xstoxt |
interface | xttoxm |
interface | xttoxs |
interface | zmtozt |
interface | zttozm |
+Functions/Subroutines | |
subroutine, public | bestesg_geo (lam, garcx, garcy, a, k, marcx, marcy, q, ff) |
Get the best Extended Schmidt Gnomonic parameter, (a,k), for the given geographical half-spans, garcx and garcy, as well as the corresponding map-space half-spans, garcx and garcy (in degrees) and the quality diagnostic, Q(lam) for this optimal parameter choice. More... | |
subroutine, public | bestesg_map (lam, marcx, marcy, a, k, garcx, garcy, q, ff) |
Get the best Extended Schmidt Gnomonic parameter, (a,k), for the given map-coordinate half-spans, marcx and marcy, as well as the corresponding geographical half-spans, garcx and garcy (in degrees) and the quality diagnostic, Q(lam) for this optimal parameter choice. More... | |
subroutine | gaulegh (m, x, w) |
This Gauss-Legendre quadrature integrates exactly any even polynomial up to degree m*4-2 in the half-interval [0,1]. More... | |
subroutine, public | get_edges (arcx, arcy, edgex, edgey) |
For angles (degrees) of the arcs spanning the halfwidths between the region's center and its x and y edges, get the two cartesian vectors that represent the locations of these edge midpoints in the positive x and y directions. More... | |
subroutine | get_meanqd (ngh, lam, xg, wg, ak, ma, q, qdak, qdma, ga, gadak, gadma, ff) |
For a parameter vector, ak and a map-space domain-parameter vector, ma, return the lambda-parameterized quality diagnostic, Q, and the geographic domain-parameter vector ga. More... | |
subroutine | get_meanqs (n, ngh, lam, xg, wg, aks, mas, qs, ff) |
Like getmeanqd, except for n different values, aks, of ak and n different values, mas of ma, and without any of the derivatives. More... | |
subroutine | get_qofv (lam, v1, v2, v3, v4, q) |
The quadratic quantity Q depends linearly on v1 and v4 (which are already quadratic diagnostics of EL) and quadratically on v2 and v3 (which are linear diagnostics of EL). More... | |
subroutine | get_qofvd (lam, v2, v3, v1d, v2d, v3d, v4d, qd) |
Like get_qofv, but for (only) the 2-vector derivatives of Q. More... | |
subroutine | get_qsofvs (n, lam, v1s, v2s, v3s, v4s, qs) |
General util to convert value. More... | |
subroutine | get_qx (j0, v1, v2, v3, v4) |
From a jacobian matrix, j0, get a sufficient set of v. More... | |
subroutine | get_qxd (j0, j0d, v1, v2, v3, v4, v1d, v2d, v3d, v4d) |
From a jacobian matrix, j0, and its derivative, j0d, get a sufficient set of v. More... | |
subroutine | gtoxm_ak_dd_g (A, K, pdlat, pdlon, pdazi, delx, dely, dlat, dlon, xm, ff) |
Like gtoxm_ak_rr_g, except lat, lon, azimuth, are expressed in degrees. More... | |
subroutine | gtoxm_ak_dd_m (A, K, pdlat, pdlon, pdazi, dlat, dlon, xm, ff) |
Like gtoxm_ak_rr_m, except lat, lon, azimuth, are expressed in degrees. More... | |
subroutine | gtoxm_ak_rr_g (A, K, plat, plon, pazi, delx, dely, lat, lon, xm, ff) |
Given the map specification (angles in radians), the grid spacing (in map-space units) and the sample lat-lon (in radian), return the the image in map space in a 2-vector in grid units. More... | |
subroutine | gtoxm_ak_rr_m (A, K, plat, plon, pazi, lat, lon, xm, ff) |
Given the map specification (angles in radians), the grid spacing (in map-space units) and the sample lat-lon (in radian), return the the image in map space in a 2-vector in grid units. More... | |
subroutine | guessak_geo (asp, arc, ak) |
Given an aspect ratio, asp<=1, and major semi-axis, arc, in geographical (degree) units measured along the rectangle's median, return a first guess for the parameter vector, ak, approximately optimal for the domain of the given dimensions. More... | |
subroutine | guessak_map (asp, tmarcx, ak) |
Given an aspect ratio, asp<=1, and major semi-axis, arc, in map-space nondimensional units, return a first guess for the parameter vector, ak, approximately optimal for the domain of the given dimensions. More... | |
subroutine, public | hgrid_ak (lx, ly, nx, ny, a, k, plat, plon, pazi, re, delxre, delyre, glat, glon, garea, ff) |
Like hgrid_ak_rr_c except the argument list includes the earth radius, re, and this is used to express the map-space grid increments in the dimensional units, delxre, delyre on entry, and to express the grid cell areas, garea, in dimensional units upon return. More... | |
subroutine | hgrid_ak_c (lx, ly, nx, ny, a, k, plat, plon, pazi, re, delxre, delyre, glat, glon, garea, dx, dy, dangle_dx, dangle_dy, ff) |
Like hgrid_ak_rr_c except the argument list includes the earth radius, re, and this is used to express the map-space grid increments in the dimensional units, delxre, delyre on entry, and to express the grid cell areas, garea, and the x- and y- grid steps, dx and dy, in dimensional units upon return. More... | |
subroutine, public | hgrid_ak_dc (lx, ly, nx, ny, a, k, pdlat, pdlon, pdazi, delx, dely, xc, xcd, garea, ff) |
Use a and k as the parameters of an Extended Schmidt-transformed Gnomonic (ESG) mapping centered at (pdlat,pdlon) and twisted about this center by an azimuth angle of pdazi counterclockwise (these angles in degrees). More... | |
subroutine, public | hgrid_ak_dd (lx, ly, nx, ny, a, k, pdlat, pdlon, pdazi, delx, dely, gdlat, gdlon, garea, ff) |
Use a and k as the parameters of an Extended Schmidt-transformed Gnomonic (ESG) mapping centered at (pdlat,pdlon) and twisted about this center by an azimuth angle of pdazi counterclockwise (these angles in degrees). More... | |
subroutine | hgrid_ak_dd_c (lx, ly, nx, ny, a, k, pdlat, pdlon, pdazi, delx, dely, gdlat, gdlon, garea, dx, dy, dangle_dx, dangle_dy, ff) |
Like hgrid_ak_rr_c, except all the angle arguments (but not delx,dely) are in degrees instead of radians. More... | |
subroutine, public | hgrid_ak_rc (lx, ly, nx, ny, A, K, plat, plon, pazi, delx, dely, xc, xcd, garea, ff) |
Use a and k as the parameters of an Extended Schmidt-transformed Gnomonic (ESG) mapping centered at (plat,plon) and twisted about this center by an azimuth angle of pazi counterclockwise (these angles in radians). More... | |
subroutine, public | hgrid_ak_rr (lx, ly, nx, ny, A, K, plat, plon, pazi, delx, dely, glat, glon, garea, ff) |
Use a and k as the parameters of an Extended Schmidt-transformed Gnomonic (ESG) mapping centered at (plat,plon) and twisted about this center by an azimuth angle of pazi counterclockwise (these angles in radians). More... | |
subroutine | hgrid_ak_rr_c (lx, ly, nx, ny, a, k, plat, plon, pazi, delx, dely, glat, glon, garea, dx, dy, angle_dx, angle_dy, ff) |
Use a and k as the parameters of an extended Schmidt-transformed gnomonic (ESG) mapping centered at (plat,plon) and twisted about this center by an azimuth angle of pazi counterclockwise (these angles in radians). More... | |
subroutine, public | xctoxm_ak (a, k, xc, xm, ff) |
Inverse mapping of xmtoxc_ak. More... | |
subroutine | xctoxs (xc, xs) |
Inverse of xstoxc. More... | |
subroutine | xmtog_ak_dd_g (A, K, pdlat, pdlon, pdazi, delx, dely, xm, dlat, dlon, ff) |
Like xmtog_ak_rr_g, except lat, lon, azimuth, are expressed in degrees. More... | |
subroutine | xmtog_ak_dd_m (A, K, pdlat, pdlon, pdazi, xm, dlat, dlon, ff) |
Like xmtog_ak_rr_m, except lat, lon, azimuth, are expressed in degrees. More... | |
subroutine | xmtog_ak_rr_g (A, K, plat, plon, pazi, delx, dely, xm, lat, lon, ff) |
For an ESG map with parameters, (A,K), and geographical orientation, given by plon,plat,pazi (radians), and given a point in grid-space units as the 2-vector, xm, return the geographical coordinates, lat, lon, (radians) of this point. More... | |
subroutine | xmtog_ak_rr_m (A, K, plat, plon, pazi, xm, lat, lon, ff) |
Given the ESG map specified by parameters (A,K) and geographical center and orientation, plat,plon,pazi (radians), and a position, in map-space coordinates given by the 2-vector, xm, return the geographical coordinates, lat and lon (radians). More... | |
subroutine, public | xmtoxc_ak (a, k, xm, xc, xcd, ff) |
Assuming the A-K parameterization of the Extended Schmidt-transformed Gnomonic (ESG) mapping, and given a map-space 2-vector, xm, find the corresponding cartesian unit 3-vector and its derivative wrt xm, jacobian matrix, xcd. More... | |
subroutine | xmtoxc_vak (ak, xm, xc, xcd, ff) |
Assuming the vector AK parameterization of the Extended Schmidt-transformed Gnomonic (ESG) mapping with parameter vector, and given a map-space 2-vector, xm, find the corresponding cartesian unit 3-vector and its derivative wrt xm, the Jacobian matrix, xcd. More... | |
subroutine | xmtoxc_vak1 (ak, xm, xc, xcd, xc1, xcd1, ff) |
Like xmtoxc_vak, _ak, but also return derivatives wrt ak. More... | |
subroutine | xmtoxt (a, xm, xt, xtd, ff) |
Like zmtozt, but for 2-vector xm and xt, and 2*2 diagonal Jacobian xtd. More... | |
subroutine | xmtoxt1 (a, xm, xt, xtd, xt1, xtd1, ff) |
Like zmtozt1, but for 2-vector xm and xt, and 2*2 diagonal Jacobian xtd Also, the derivatives, wrt a, of these quantities. More... | |
subroutine | xstoxc (xs, xc, xcd) |
Standard transformation from polar stereographic map coordinates, xs, to cartesian, xc, assuming the projection axis is polar. More... | |
subroutine | xstoxc1 (xs, xc, xcd, xcdd) |
Standard transformation from polar stereographic map coordinates, xs, to cartesian, xc, assuming the projection axis is polar. More... | |
subroutine | xstoxt (k, xs, xt, ff) |
Inverse of xttoxs. More... | |
subroutine | xttoxm (a, xt, xm, ff) |
Inverse of xmtoxt. More... | |
subroutine | xttoxs (k, xt, xs, xsd, ff) |
Scaled gnomonic plane xt to standard stereographic plane xs. More... | |
subroutine | xttoxs1 (k, xt, xs, xsd, xsdd, xs1, xsd1, ff) |
Like xttoxs, but also, return the derivatives, wrt K, of xs and xsd. More... | |
subroutine | zmtozt (a, zm, zt, ztd, ff) |
Evaluate the function, zt = tan(sqrt(A)*z)/sqrt(A), and its derivative, ztd, for positive and negative A and for the limiting case, A –> 0. More... | |
subroutine | zmtozt1 (a, zm, zt, ztd, zt1, ztd1, ff) |
Like zmtozt, but also, get the derivative with respect to a, zt1 of zt, and ztd1 of ztd. More... | |
subroutine | zttozm (a, zt, zm, ff) |
Inverse of zmtozt. More... | |
Suite of routines to perform the 2-parameter family of Extended Schmidt Gnomonic (ESG) regional grid mappings, and to optimize the the two parameters, A and K, of those mappings for a given rectangular domain's principal (median) semi-arcs with respect to a domain-averaged measure of distortion.
+This criterion is itself endowed with a parameter, lam (for "lambda" in [0,1) ) which gives weight to additional weight areal inhomogeneities instead of treating all distortion components equally.
+ +subroutine, public pesg::bestesg_geo | +( | +real(dp), intent(in) | +lam, | +
+ | + | real(dp), intent(in) | +garcx, | +
+ | + | real(dp), intent(in) | +garcy, | +
+ | + | real(dp), intent(out) | +a, | +
+ | + | real(dp), intent(out) | +k, | +
+ | + | real(dp), intent(out) | +marcx, | +
+ | + | real(dp), intent(out) | +marcy, | +
+ | + | real(dp), intent(out) | +q, | +
+ | + | logical, intent(out) | +ff | +
+ | ) | ++ |
Get the best Extended Schmidt Gnomonic parameter, (a,k), for the given geographical half-spans, garcx and garcy, as well as the corresponding map-space half-spans, garcx and garcy (in degrees) and the quality diagnostic, Q(lam) for this optimal parameter choice.
+If this process fails for any reason, the failure is alerted by a raised flag, FF, and the other output arguments must then be taken to be meaningless.
+The diagnostic Q measures the variance over the domain of a local measure of grid distortion. A logarithmic measure of local grid deformation is give by L=log(J^t.J)/2, where J is the mapping Jacobian matrix, dX/dx, where X is the cartesian unit 3-vector representation of the image of the mapping of the map-coordinate 2-vector, x. The Frobenius squared-norm, Trace(L*L), of L is the basis for the simplest (lam=0) definition of the variance of L, but (Trace(L))**2 is another. Here, we weight both contributions, by lam and (1-lam) respectively, with 0 <= lam <1, to compute the variance Q(lam,a,k), and search for the (a,k) that minimizes this Q.
+The domain averages are computed by double Gauss-Legendre quadrature (i.e., in both the x and y directions), but restricted to a mere quadrant of the domain (since bilateral symmetry pertains across both domain medians, yielding a domain mean L that is strictly diagonal.
+[in] | lam | |
[in] | garcx | map-space half-spans |
[in] | garcy | map-space half-spans |
[out] | a | Extended Schmidt Gnomonic parameter |
[out] | k | Extended Schmidt Gnomonic parameter |
[out] | marcx | |
[out] | marcy | |
[out] | q | |
[out] | ff | failure flag |
Definition at line 903 of file pesg.f90.
+ +References pietc::ms18, pietc::ms36, pietc::ms54, pietc::ms72, pietc::o5, pietc::s18, pietc::s36, pietc::s54, pietc::s72, and pietc::u5.
+ +subroutine, public pesg::bestesg_map | +( | +real(dp), intent(in) | +lam, | +
+ | + | real(dp), intent(in) | +marcx, | +
+ | + | real(dp), intent(in) | +marcy, | +
+ | + | real(dp), intent(out) | +a, | +
+ | + | real(dp), intent(out) | +k, | +
+ | + | real(dp), intent(out) | +garcx, | +
+ | + | real(dp), intent(out) | +garcy, | +
+ | + | real(dp), intent(out) | +q, | +
+ | + | logical, intent(out) | +ff | +
+ | ) | ++ |
Get the best Extended Schmidt Gnomonic parameter, (a,k), for the given map-coordinate half-spans, marcx and marcy, as well as the corresponding geographical half-spans, garcx and garcy (in degrees) and the quality diagnostic, Q(lam) for this optimal parameter choice.
+If this process fails for any reason, the failure is alerted by a raised flag, FF, and the other output arguments must then be taken to be meaningless.
+The diagnostic Q measures the variance over the domain of a local measure of grid distortion. A logarithmic measure of local grid deformation is give by L=log(J^t.J)/2, where J is the mapping Jacobian matrix, dX/dx, where X is the cartesian unit 3-vector representation of the image of the mapping of the map-coordinate 2-vector, x. The Frobenius squared-norm, Trace(L*L), of L is the basis for the simplest (lam=0) definition of the variance of L, but (Trace(L))**2 is another. Here, we weight both contributions, by lam and (1-lam) respectively, with 0 <= lam <1, to compute the variance Q(lam,a,k), and search for the (a,k) that minimizes this Q.
+The domain averages are computed by double Gauss-Legendre quadrature (i.e., in both the x and y directions), but restricted to a mere quadrant of the domain (since bilateral symmetry pertains across both domain medians, yielding a domain mean L that is strictly diagonal.
+[in] | lam | |
[in] | marcx | map-coordinate half-spans |
[in] | marcy | map-coordinate half-spans |
[out] | a | Extended Schmidt Gnomonic parameter |
[out] | k | Extended Schmidt Gnomonic parameter |
[out] | garcx | geographical half-spans |
[out] | garcy | geographical half-spans |
[out] | q | |
[out] | ff | failure flag |
Definition at line 1073 of file pesg.f90.
+ +References pietc::ms18, pietc::ms36, pietc::ms54, pietc::ms72, pietc::o5, pietc::s18, pietc::s36, pietc::s54, pietc::s72, and pietc::u5.
+ +
+
|
+ +private | +
This Gauss-Legendre quadrature integrates exactly any even polynomial up to degree m*4-2 in the half-interval [0,1].
+This code is liberally adapted from the algorithm given in Press et al., Numerical Recipes.
+m | number of nodes in half-interval |
x | nodes and weights |
w | nodes and weights |
Definition at line 1852 of file pesg.f90.
+ +References pietc::pih, pietc::u0, pietc::u1, and pietc::u2.
+ +subroutine, public pesg::get_edges | +( | +real(dp), intent(in) | +arcx, | +
+ | + | real(dp), intent(in) | +arcy, | +
+ | + | real(dp), dimension(3), intent(out) | +edgex, | +
+ | + | real(dp), dimension(3), intent(out) | +edgey | +
+ | ) | ++ |
For angles (degrees) of the arcs spanning the halfwidths between the region's center and its x and y edges, get the two cartesian vectors that represent the locations of these edge midpoints in the positive x and y directions.
+[in] | arcx | Center-relative angle (degrees) of edge midpoint in +x |
[in] | arcy | Center-relative angle (degrees) of edge midpoint in +y |
[out] | edgex | region's +x edge midpoint as cartesian unit 3-vector |
[out] | edgey | region's +y edge midpoint as cartesian unit 3-vector |
Definition at line 489 of file pesg.f90.
+ +References pietc::dtor, and pietc::u0.
+ +subroutine pesg::get_meanqd | +( | +integer(spi), intent(in) | +ngh, | +
+ | + | real(dp), intent(in) | +lam, | +
+ | + | real(dp), dimension(ngh), intent(in) | +xg, | +
+ | + | real(dp), dimension(ngh), intent(in) | +wg, | +
+ | + | real(dp), dimension(2), intent(in) | +ak, | +
+ | + | real(dp), dimension(2), intent(in) | +ma, | +
+ | + | real(dp), intent(out) | +q, | +
+ | + | real(dp), dimension(2), intent(out) | +qdak, | +
+ | + | real(dp), dimension(2), intent(out) | +qdma, | +
+ | + | real(dp), dimension(2), intent(out) | +ga, | +
+ | + | real(dp), dimension(2,2), intent(out) | +gadak, | +
+ | + | real(dp), dimension(2,2), intent(out) | +gadma, | +
+ | + | logical, intent(out) | +ff | +
+ | ) | ++ |
For a parameter vector, ak and a map-space domain-parameter vector, ma, return the lambda-parameterized quality diagnostic, Q, and the geographic domain-parameter vector ga.
+Lambda is given by lam <1. Also, return the derivatives, qdak and qdma, of Q wrt ak and ma, and the derivatives gadak and gadma, of ga wrt ak and ma.
+The domain averages of Q are accurately computed by bi-Gauss-Legendre quadrature over the positive quadrant of the domain (exploiting the symmetry) of the four constituent terms, v1, v2, v3, v4, from which the mean Q is computed using a quadratic formula of these constituents. The number of Gauss points in eaxh half-interval is ngh, and the nodes themselves are, in proportion to the half-interval, at xg. the normalized gauss weights are wg.
+If a failure occurs, colmputations cease immediately and a failure flag, FF, is raised on return.
+[in] | ngh | |
[in] | lam | Lambda |
[in] | xg | |
[in] | wg | |
[in] | ak | parameter vector |
[in] | ma | map-space domain-parameter vector |
[out] | q | lambda-parameterized quality diagnostic |
[out] | qdak | derivatives value |
[out] | qdma | derivatives value |
[out] | ga | geographic domain-parameter vector |
[out] | gadak | |
[out] | gadma | |
[out] | ff | error flag |
Definition at line 604 of file pesg.f90.
+ +References pietc::rtod, and pietc::u0.
+ +
+
|
+ +private | +
Like getmeanqd, except for n different values, aks, of ak and n different values, mas of ma, and without any of the derivatives.
+[in] | n | |
[in] | ngh | |
[in] | lam | |
[in] | xg | |
[in] | wg | |
[in] | aks | |
[in] | mas | |
[out] | qs | |
[out] | ff |
Definition at line 682 of file pesg.f90.
+ +References pietc::u0.
+ +
+
|
+ +private | +
The quadratic quantity Q depends linearly on v1 and v4 (which are already quadratic diagnostics of EL) and quadratically on v2 and v3 (which are linear diagnostics of EL).
+EL = (1/2)log(G), where G=J^T.J, J the jacobian.
+[in] | lam | |
[in] | v1 | quadratic diagnostics of EL |
[in] | v2 | linear diagnostics of EL |
[in] | v3 | linear diagnostics of EL |
[in] | v4 | quadratic diagnostics of EL |
[out] | q | quadratic quantity |
Definition at line 729 of file pesg.f90.
+ +References pietc::u1.
+ +
+
|
+ +private | +
+
|
+ +private | +
+
|
+ +private | +
From a jacobian matrix, j0, get a sufficient set of v.
+. diagnostics such that, from averages of these v, we can later compute the collective variance of Q(lam) that they imply for any choice of the "lambda" parameter, lam. Note that v1 and v4 are quadratic diagnostics of EL, while v2 and v3 are linear.
+[in] | j0 | jacobian matrix |
[out] | v1 | quadratic diagnostics of EL |
[out] | v2 | linear diagnostics of EL |
[out] | v3 | linear diagnostics of EL |
[out] | v4 | quadratic diagnostics of EL |
subroutine pesg::get_qxd | +( | +real(dp), dimension(3,2), intent(in) | +j0, | +
+ | + | real(dp), dimension(3,2,2), intent(in) | +j0d, | +
+ | + | real(dp), intent(out) | +v1, | +
+ | + | real(dp), intent(out) | +v2, | +
+ | + | real(dp), intent(out) | +v3, | +
+ | + | real(dp), intent(out) | +v4, | +
+ | + | real(dp), dimension(2), intent(out) | +v1d, | +
+ | + | real(dp), dimension(2), intent(out) | +v2d, | +
+ | + | real(dp), dimension(2), intent(out) | +v3d, | +
+ | + | real(dp), dimension(2), intent(out) | +v4d | +
+ | ) | ++ |
From a jacobian matrix, j0, and its derivative, j0d, get a sufficient set of v.
+. diagnostics such that, from average of these diagnostics, we can later compute the collective variance of Q and its derivative.
+[in] | j0 | jacobian matrix |
[in] | j0d | derivative of j0 |
[in] | v1 | |
[in] | v2 | |
[in] | v3 | |
[in] | v4 | |
[in] | v1d | |
[in] | v2d | |
[in] | v3d | |
[in] | v4d |
+
|
+ +private | +
Like gtoxm_ak_rr_g, except lat, lon, azimuth, are expressed in degrees.
+[in] | a | parameter of the ESG mapping |
[in] | k | parameter of the ESG mapping |
[in] | pdlat | degrees latitude defining mapping projection center |
[in] | pdlon | degrees longitude defining mapping projection center |
[in] | pdazi | Azimuth of mapping orientation at its center |
[in] | delx | central x-spacing of the grid in radians |
[in] | dely | central y-spacing of the grid in radians |
[in] | dlat | degrees latitude of a point to be mapped |
[in] | dlon | degrees longitude of a point to be mapped |
[out] | xm | 2-vector image of the point in center-relative grid units |
[out] | ff | failure flag |
Definition at line 1984 of file pesg.f90.
+ +References pietc::dtor, and gtoxm_ak_rr_g().
+ +
+
|
+ +private | +
Like gtoxm_ak_rr_m, except lat, lon, azimuth, are expressed in degrees.
+[in] | a | parameter of the ESG mapping |
[in] | k | parameter of the ESG mapping |
[in] | pdlat | degrees latitude defining mapping center |
[in] | pdlon | degrees longitude defining mapping center |
[in] | pdazi | Azimuth of mapping orientation at its center |
[in] | dlat | degrees latitude of point to be mapped |
[in] | dlon | degrees longitude of point to be mapped |
[out] | xm | 2-vector center-relative map space image of the point |
[out] | ff | failure flag |
Definition at line 1955 of file pesg.f90.
+ +References pietc::dtor, and gtoxm_ak_rr_m().
+ +subroutine pesg::gtoxm_ak_rr_g | +( | +real(dp), intent(in) | +A, | +
+ | + | real(dp), intent(in) | +K, | +
+ | + | real(dp), intent(in) | +plat, | +
+ | + | real(dp), intent(in) | +plon, | +
+ | + | real(dp), intent(in) | +pazi, | +
+ | + | real(dp), intent(in) | +delx, | +
+ | + | real(dp), intent(in) | +dely, | +
+ | + | real(dp), intent(in) | +lat, | +
+ | + | real(dp), intent(in) | +lon, | +
+ | + | real(dp), dimension(2), intent(out) | +xm, | +
+ | + | logical, intent(out) | +ff | +
+ | ) | ++ |
Given the map specification (angles in radians), the grid spacing (in map-space units) and the sample lat-lon (in radian), return the the image in map space in a 2-vector in grid units.
+If the transformation is invalid, return a .true. failure flag.
+[in] | a | parameter of the ESG mapping |
[in] | k | parameter of the ESG mapping |
[in] | plat | radians latitude defining mapping projection center |
[in] | plon | radians longitude defining mapping projection center |
[in] | pazi | Azimuth of mapping orientation at its center |
[in] | delx | central x-spacing of the grid in radians |
[in] | dely | central y-spacing of the grid in radians |
[in] | lat | radians latitude of a point to be mapped |
[in] | lon | radians longitude of a point to be mapped |
[out] | xm | 2-vector map space image in center-relative grid units |
[out] | ff | failure flag |
Definition at line 1933 of file pesg.f90.
+ +References gtoxm_ak_rr_m().
+ +Referenced by gtoxm_ak_dd_g().
+ +
+
|
+ +private | +
Given the map specification (angles in radians), the grid spacing (in map-space units) and the sample lat-lon (in radian), return the the image in map space in a 2-vector in grid units.
+If the transformation is invalid, return a .true. failure flag.
+[in] | a | parameters of an ESG mapping |
[in] | k | parameters of an ESG mapping |
[in] | plat | radians latitude defining mapping projection center |
[in] | plon | radians longitude defining mapping projection center |
[in] | pazi | Aximuth of mapping orientation at its center |
[in] | lat | radians latitude of a point to be mapped |
[in] | lon | radians longitude of a point to be mapped |
[out] | xm | 2-vector center-relative map-space image of mapped point |
[out] | ff | failure flag |
Definition at line 1888 of file pesg.f90.
+ +References pietc::u0, and pietc::u1.
+ +Referenced by gtoxm_ak_dd_m(), and gtoxm_ak_rr_g().
+ +
+
|
+ +private | +
Given an aspect ratio, asp<=1, and major semi-axis, arc, in geographical (degree) units measured along the rectangle's median, return a first guess for the parameter vector, ak, approximately optimal for the domain of the given dimensions.
+asp | aspect ratio of intended domain |
arc | major semi-axis angle in degrees for intended domain |
ak | first guess of the parameter vector |
+
|
+ +private | +
Given an aspect ratio, asp<=1, and major semi-axis, arc, in map-space nondimensional units, return a first guess for the parameter vector, ak, approximately optimal for the domain of the given dimensions.
+[in] | asp | aspect ratio |
[in] | tmarcx | |
[out] | ak | first guess for the parameter vector |
Definition at line 791 of file pesg.f90.
+ +References pietc::rtod.
+ +subroutine, public pesg::hgrid_ak | +( | +integer(spi), intent(in) | +lx, | +
+ | + | integer(spi), intent(in) | +ly, | +
+ | + | integer(spi), intent(in) | +nx, | +
+ | + | integer(spi), intent(in) | +ny, | +
+ | + | real(dp), intent(in) | +a, | +
+ | + | real(dp), intent(in) | +k, | +
+ | + | real(dp), intent(in) | +plat, | +
+ | + | real(dp), intent(in) | +plon, | +
+ | + | real(dp), intent(in) | +pazi, | +
+ | + | real(dp), intent(in) | +re, | +
+ | + | real(dp), intent(in) | +delxre, | +
+ | + | real(dp), intent(in) | +delyre, | +
+ | + | real(dp), dimension(lx:lx+nx ,ly:ly+ny ), intent(out) | +glat, | +
+ | + | real(dp), dimension(lx:lx+nx ,ly:ly+ny ), intent(out) | +glon, | +
+ | + | real(dp), dimension(lx:lx+nx-1,ly:ly+ny-1), intent(out) | +garea, | +
+ | + | logical, intent(out) | +ff | +
+ | ) | ++ |
Like hgrid_ak_rr_c except the argument list includes the earth radius, re, and this is used to express the map-space grid increments in the dimensional units, delxre, delyre on entry, and to express the grid cell areas, garea, in dimensional units upon return.
+The gridded lats and lons, glat and glon, remain in radians.
+[in] | lx | center-relative x grid index for left edge of the domain |
[in] | ly | center-relative y grid index for lower edge of the domain |
[in] | nx | numbers of the grid spaces in x |
[in] | ny | numbers of the grid spaces in y |
[in] | a | parameters of an ESG mapping |
[in] | k | parameters of an ESG mapping |
[in] | plat | radians latitude of the projection center of the mapping |
[in] | plon | radians longitude of the projection center of the mapping |
[in] | pazi | Azimuth of map orientation at its center |
[in] | re | earth radius |
[in] | delxre | map-space grid increments in the dimensional units |
[in] | delyre | map-space grid increments in the dimensional units |
[out] | glat | grid points for latitude |
[out] | glon | grid points for longitude |
[out] | garea | array of grid-cell areas in dimensional units |
[out] | ff | failure flag |
+
|
+ +private | +
Like hgrid_ak_rr_c except the argument list includes the earth radius, re, and this is used to express the map-space grid increments in the dimensional units, delxre, delyre on entry, and to express the grid cell areas, garea, and the x- and y- grid steps, dx and dy, in dimensional units upon return.
+The gridded lats and lons, glat and glon, remain in radians. Also, in order for the argument list to remain compatible with an earlier version of this routine, the relative rotations of the steps, dangle_dx and dangle_dy, are returned as degrees instead of radians (all other angles in the argument list, i.e., plat,plon,pazi,glat,glon, remain radians).
+[in] | lx | center-relative x grid index for left edge of the domain |
[in] | ly | center-relative y grid index for lower edge of the domain |
[in] | nx | number of grid spaces in x |
[in] | ny | number of grid spaces in y |
[in] | a | Extended Schmidt Gnomonic parameter |
[in] | k | Extended Schmidt Gnomonic parameter |
[in] | plat | latitude of projection center of the mapping (radians) |
[in] | plon | longitude of projection center of the mapping (radians) |
[in] | pazi | Azimuth of map orientation at its center (radians) |
[in] | re | earth radius in dimensional length units |
[in] | delxre | map-space grid increments in the dimensional units |
[in] | delyre | map-space grid increments in the dimensional units |
[out] | glat | gridded lats (radians) |
[out] | glon | gridded lons (radians) |
[out] | garea | grid cell areas in dimensional units |
[out] | dx | x- grid steps in dimensional units |
[out] | dy | y- grid steps in dimensional units |
[out] | dangle_dx | azimuth rotations of the steps dx (in degrees) |
[out] | dangle_dy | azimuth rotations of the steps dy (in degrees) |
[out] | ff | failure flag |
Definition at line 1818 of file pesg.f90.
+ +References hgrid_ak_rr_c(), and pietc::rtod.
+ +subroutine, public pesg::hgrid_ak_dc | +( | +integer(spi), intent(in) | +lx, | +
+ | + | integer(spi), intent(in) | +ly, | +
+ | + | integer(spi), intent(in) | +nx, | +
+ | + | integer(spi), intent(in) | +ny, | +
+ | + | real(dp), intent(in) | +a, | +
+ | + | real(dp), intent(in) | +k, | +
+ | + | real(dp), intent(in) | +pdlat, | +
+ | + | real(dp), intent(in) | +pdlon, | +
+ | + | real(dp), intent(in) | +pdazi, | +
+ | + | real(dp), intent(in) | +delx, | +
+ | + | real(dp), intent(in) | +dely, | +
+ | + | real(dp), dimension(3, lx:lx+nx ,ly:ly+ny ), intent(out) | +xc, | +
+ | + | real(dp), dimension(3,2,lx:lx+nx ,ly:ly+ny ), intent(out) | +xcd, | +
+ | + | real(dp), dimension( lx:lx+nx-1,ly:ly+ny-1), intent(out) | +garea, | +
+ | + | logical, intent(out) | +ff | +
+ | ) | ++ |
Use a and k as the parameters of an Extended Schmidt-transformed Gnomonic (ESG) mapping centered at (pdlat,pdlon) and twisted about this center by an azimuth angle of pdazi counterclockwise (these angles in degrees).
+Like hgrid_ak_rx, return the grid points' cartesians xc and Jacobian matrices, xcd. Garea, the area of each grid cell, is also returned as in hgrid_ak_rx, and a failure flag, ff, raised when a failure occurs anywhere in these calculations.
+[in] | lx | center-relative x grid index for left edge of the domain |
[in] | ly | center-relative y grid index for lower edge of the domain |
[in] | nx | numbers of the grid spaces in x |
[in] | ny | numbers of the grid spaces in y |
[in] | a | parameters of an ESG mapping |
[in] | k | parameters of an ESG mapping |
[in] | pdlat | degrees latitude of the projection center of the mapping |
[in] | pdlon | degrees longitude of the projection center of the mapping |
[in] | pdazi | azimuth of the orientation of the mapping at its center |
[in] | delx | central x-spacing of the grid in radians |
[in] | dely | central y-spacing of the grid in radians |
[out] | xc | grid points' earth-centered unit cartesians |
[out] | xcd | Jacobian matrices, d(xc)/d(xm) |
[out] | garea | array of grid-cell areas (steradians) |
[out] | ff | failure flag |
Definition at line 1724 of file pesg.f90.
+ +References pietc::dtor.
+ +subroutine, public pesg::hgrid_ak_dd | +( | +integer(spi), intent(in) | +lx, | +
+ | + | integer(spi), intent(in) | +ly, | +
+ | + | integer(spi), intent(in) | +nx, | +
+ | + | integer(spi), intent(in) | +ny, | +
+ | + | real(dp), intent(in) | +a, | +
+ | + | real(dp), intent(in) | +k, | +
+ | + | real(dp), intent(in) | +pdlat, | +
+ | + | real(dp), intent(in) | +pdlon, | +
+ | + | real(dp), intent(in) | +pdazi, | +
+ | + | real(dp), intent(in) | +delx, | +
+ | + | real(dp), intent(in) | +dely, | +
+ | + | real(dp), dimension(lx:lx+nx ,ly:ly+ny ), intent(out) | +gdlat, | +
+ | + | real(dp), dimension(lx:lx+nx ,ly:ly+ny ), intent(out) | +gdlon, | +
+ | + | real(dp), dimension(lx:lx+nx-1,ly:ly+ny-1), intent(out) | +garea, | +
+ | + | logical, intent(out) | +ff | +
+ | ) | ++ |
Use a and k as the parameters of an Extended Schmidt-transformed Gnomonic (ESG) mapping centered at (pdlat,pdlon) and twisted about this center by an azimuth angle of pdazi counterclockwise (these angles in degrees).
+Like hgrid_ak_rr, return the grid points' lats and lons, except that here the angles are returned in degrees. Garea, the area of each grid cell, is returned as in hgrid_ak_rr, and a failure flag, ff, raised when a failure occurs anywhere in these calculations.
+[in] | lx | center-relative x grid index for left edge of the domain |
[in] | ly | center-relative y grid index for lower edge of the domain |
[in] | nx | number of the grid spaces in x |
[in] | ny | number of the grid spaces in y |
[in] | a | parameter of an ESG mapping |
[in] | k | parameter of an ESG mapping |
[in] | pdlat | degrees latitude of the projection center of mapping |
[in] | pdlon | degrees longitude of the projection center of mapping |
[in] | pdazi | degrees azimuth of orientation of mapping at its center |
[in] | delx | central x-spacing of the grid (in radians) |
[in] | dely | central y-spacing of the grid (in radians) |
[out] | gdlat | array of grid point latitudes (in degrees) |
[out] | gdlon | array of grid point longitudes (in dgrees) |
[out] | garea | array of grid cell areas (in steradians) |
[out] | ff | failure flag |
Definition at line 1630 of file pesg.f90.
+ +References pietc::dtor, and pietc::rtod.
+ +
+
|
+ +private | +
Like hgrid_ak_rr_c, except all the angle arguments (but not delx,dely) are in degrees instead of radians.
+[in] | lx | center-relative x grid index for left edge of the domain |
[in] | ly | center-relative y grid index for lower edge of the domain |
[in] | nx | numbers of the grid spaces in x |
[in] | ny | numbers of the grid spaces in y |
[in] | a | parameters of an ESG mapping |
[in] | k | parameters of an ESG mapping |
[in] | pdlat | latitude defining projection center of the mapping |
[in] | pdlon | longitude defining projection center of the mapping |
[in] | pdazi | azimuth of the orientation of the mapping at its center |
[in] | delx | central x-spacing of the grid (in radians) |
[in] | dely | central y-spacing of the grid (in radians) |
[out] | gdlat | array of grid point degree-latitudes |
[out] | gdlon | array of grid point degree-longitudes |
[out] | garea | array of grid-cell areas (steradians) |
[out] | dx | step sizes of the grid-cell edges in x (earth radius=1 unit) |
[out] | dy | step sizes of the grid-cell edges in y (earth radius=1 unit) |
[out] | dangle_dx | azimuth rotation of the x grid steps, dx (degrees) |
[out] | dangle_dy | azimuth rotation of the y grid steps, dy (degrees) |
[out] | ff | failure flag |
Definition at line 1673 of file pesg.f90.
+ +References pietc::dtor, hgrid_ak_rr_c(), and pietc::rtod.
+ +subroutine, public pesg::hgrid_ak_rc | +( | +integer(spi), intent(in) | +lx, | +
+ | + | integer(spi), intent(in) | +ly, | +
+ | + | integer(spi), intent(in) | +nx, | +
+ | + | integer(spi), intent(in) | +ny, | +
+ | + | real(dp), intent(in) | +A, | +
+ | + | real(dp), intent(in) | +K, | +
+ | + | real(dp), intent(in) | +plat, | +
+ | + | real(dp), intent(in) | +plon, | +
+ | + | real(dp), intent(in) | +pazi, | +
+ | + | real(dp), intent(in) | +delx, | +
+ | + | real(dp), intent(in) | +dely, | +
+ | + | real(dp), dimension(3, lx:lx+nx ,ly:ly+ny ), intent(out) | +xc, | +
+ | + | real(dp), dimension(3,2,lx:lx+nx ,ly:ly+ny ), intent(out) | +xcd, | +
+ | + | real(dp), dimension( lx:lx+nx-1,ly:ly+ny-1), intent(out) | +garea, | +
+ | + | logical, intent(out) | +ff | +
+ | ) | ++ |
Use a and k as the parameters of an Extended Schmidt-transformed Gnomonic (ESG) mapping centered at (plat,plon) and twisted about this center by an azimuth angle of pazi counterclockwise (these angles in radians).
+Assume the radius of the earth is unity, and using the central mapping point as the coordinate origin, set up the grid with central x-spacing delx and y-spacing dely. The grid index location of the left-lower corner of the domain is (lx,ly) (typically both NEGATIVE). The numbers of the grid spaces in x and y directions are nx and ny. (Note that, for a centered rectangular grid lx and ly are negative and, in magnitude, half the values of nx and ny respectively.) Return the unit cartesian vectors xc of the grid points and their jacobian matrices xcd wrt the map coordinates, and return a rectangular array, garea, of dimensions nx-1 by ny-1, that contains the areas of each of the grid cells
+If all goes well, return a lowered failure flag, ff=.false. . But if, for some reason, it is not possible to complete this task, return the raised failure flag, ff=.TRUE. .
+lx | center-relative x grid index for left edge of the domain |
ly | center-relative y grid index for lower edge of the domain |
nx | numbers of the grid spaces in x |
ny | numbers of the grid spaces in y |
a | parameters of the ESG mapping centered at (plat,plon) |
k | parameters of the ESG mapping centered at (plat,plon) |
plat | latitude of the projection center of the mapping (radians) |
plon | longitude of the projection center of the mapping (radians) |
pazi | azimuth of orientation of mapping at its center |
delx | central x-spacing of the grid (in radians) |
dely | central y-spacing of the grid (in radians) |
xc | Earth-centered unit cartesian 3-vectors at each grid point |
xcd | Jacobian matrices, d(xc)/d(xm), at each grid point |
garea | rectangular array of grid-cell areas (steradians) |
ff | failure flag |
subroutine, public pesg::hgrid_ak_rr | +( | +integer(spi), intent(in) | +lx, | +
+ | + | integer(spi), intent(in) | +ly, | +
+ | + | integer(spi), intent(in) | +nx, | +
+ | + | integer(spi), intent(in) | +ny, | +
+ | + | real(dp), intent(in) | +A, | +
+ | + | real(dp), intent(in) | +K, | +
+ | + | real(dp), intent(in) | +plat, | +
+ | + | real(dp), intent(in) | +plon, | +
+ | + | real(dp), intent(in) | +pazi, | +
+ | + | real(dp), intent(in) | +delx, | +
+ | + | real(dp), intent(in) | +dely, | +
+ | + | real(dp), dimension(lx:lx+nx ,ly:ly+ny ), intent(out) | +glat, | +
+ | + | real(dp), dimension(lx:lx+nx ,ly:ly+ny ), intent(out) | +glon, | +
+ | + | real(dp), dimension(lx:lx+nx-1,ly:ly+ny-1), intent(out) | +garea, | +
+ | + | logical, intent(out) | +ff | +
+ | ) | ++ |
Use a and k as the parameters of an Extended Schmidt-transformed Gnomonic (ESG) mapping centered at (plat,plon) and twisted about this center by an azimuth angle of pazi counterclockwise (these angles in radians).
+Assume the radius of the earth is unity, and using the central mapping point as the coordinate origin, set up the grid with central x-spacing delx and y-spacing dely. The grid index location of the left-lower corner of the domain is (lx,ly) (typically both NEGATIVE). The numbers of the grid spaces in x and y directions are nx and ny. (Note that, for a centered rectangular grid lx and ly are negative and, in magnitude, half the values of nx and ny respectively.) Return the latitude and longitude, in radians again, of the grid points thus defined in the arrays, glat and glon, and return a rectangular array, garea, of dimensions nx-1 by ny-1, that contains the areas of each of the grid cells
+If all goes well, return a lowered failure flag, ff=.false. . But if, for some reason, it is not possible to complete this task, return the raised failure flag, ff=.TRUE. .
+[in] | lx | center-relative grid index in x of left edge of the domain |
[in] | ly | center-relative grid index in y of lower edge of the domain |
[in] | nx | number of grid spaces in x |
[in] | ny | number of grid spaces in y |
[in] | A | parameter of the ESG mapping centered at (plat,plon) |
[in] | K | parameter of the ESG mapping centered at (plat,plon) |
[in] | plat | latitude of projection center of mapping (radians) |
[in] | plon | longitude of projection center of mapping (radians) |
[in] | pazi | azimuth of orientation of mapping at its center |
[in] | delx | central x-spacing of the grid (radians) |
[in] | dely | central y-spacing of the grid (radians) |
[out] | glat | grid points' latitudes |
[out] | glon | grid points' longitudes |
[out] | garea | array of grid-cell areas (steradians) |
[out] | ff | failure flag |
subroutine pesg::hgrid_ak_rr_c | +( | +integer(spi), intent(in) | +lx, | +
+ | + | integer(spi), intent(in) | +ly, | +
+ | + | integer(spi), intent(in) | +nx, | +
+ | + | integer(spi), intent(in) | +ny, | +
+ | + | real(dp), intent(in) | +a, | +
+ | + | real(dp), intent(in) | +k, | +
+ | + | real(dp), intent(in) | +plat, | +
+ | + | real(dp), intent(in) | +plon, | +
+ | + | real(dp), intent(in) | +pazi, | +
+ | + | real(dp), intent(in) | +delx, | +
+ | + | real(dp), intent(in) | +dely, | +
+ | + | real(dp), dimension(lx:lx+nx ,ly:ly+ny ), intent(out) | +glat, | +
+ | + | real(dp), dimension(lx:lx+nx ,ly:ly+ny ), intent(out) | +glon, | +
+ | + | real(dp), dimension(lx:lx+nx-1,ly:ly+ny-1), intent(out) | +garea, | +
+ | + | real(dp), dimension(lx:lx+nx-1,ly:ly+ny ), intent(out) | +dx, | +
+ | + | real(dp), dimension(lx:lx+nx ,ly:ly+ny-1), intent(out) | +dy, | +
+ | + | real(dp), dimension(lx:lx+nx ,ly:ly+ny ), intent(out) | +angle_dx, | +
+ | + | real(dp), dimension(lx:lx+nx ,ly:ly+ny ), intent(out) | +angle_dy, | +
+ | + | logical, intent(out) | +ff | +
+ | ) | ++ |
Use a and k as the parameters of an extended Schmidt-transformed gnomonic (ESG) mapping centered at (plat,plon) and twisted about this center by an azimuth angle of pazi counterclockwise (these angles in radians).
+Using the central mapping point as the coordinate origin, set up the grid with central x-spacing delx and y-spacing dely in nondimensional units, (i.e., as if the earth had unit radius) and with the location of the left- lower corner of the grid at center-relative grid index pair, (lx,ly) and with the number of the grid spaces in x and y directions given by nx and ny. (Note that, for a centered rectangular grid lx and ly are negative and, in magnitude, half the values of nx and ny respectively.) Return the latitude and longitude, again, in radians, of the grid pts thus defined in the arrays, glat and glon; return a rectangular array, garea, of dimensions nx-1 by ny-1, that contains the areas of each of the grid cells in nondimensional "steradian" units.
+In this version, these grid cell areas are computed by 2D integrating the scalar jacobian of the transformation, using a 4th-order centered scheme. The estimated grid steps, dx and dy, are returned at the grid cell edges, using the same 4th-order scheme to integrate the 1D projected jacobian. The angles, relative to local east and north, are returned respectively as angle_dx and angle_dy at grid cell corners, in radians counterclockwise.
+if all goes well, return a .FALSE. failure flag, ff. If, for some reason, it is not possible to complete this task, return the failure flag as .TRUE.
+[in] | lx | center-relative x grid index for left edge of the domain |
[in] | ly | center-relative y grid index for lower edge of the domain |
[in] | nx | numbers of the grid spaces in x |
[in] | ny | numbers of the grid spaces in y |
[in] | a | Extended Schmidt Gnomonic parameter |
[in] | k | Extended Schmidt Gnomonic parameter |
[in] | plat | latitude of the projection center of the mapping (radians) |
[in] | plon | longitude of the projection center of the mapping (radians) |
[in] | pazi | azimuth of the orientation of the mapping at its center |
[in] | delx | central x-spacing of the grid (radians) |
[in] | dely | central y-spacing of the grid (radians) |
[out] | glat | grid points' latitudes (radians) |
[out] | glon | grid points' longitudes (radians) |
[out] | garea | array of grid-cell areas (steradians) |
[out] | dx | grid steps in x at grid cell edges (radians) |
[out] | dy | grid steps in y at grid cell edges (radians) |
[out] | angle_dx | x angles relative to local east (radians) |
[out] | angle_dy | y angles relative to local north (radians) |
[out] | ff | failure flag |
Definition at line 1338 of file pesg.f90.
+ +References pietc::u0, and pietc::u1.
+ +Referenced by hgrid_ak_c(), and hgrid_ak_dd_c().
+ +subroutine, public pesg::xctoxm_ak | +( | +real(dp), intent(in) | +a, | +
+ | + | real(dp), intent(in) | +k, | +
+ | + | real(dp), dimension(3), intent(in) | +xc, | +
+ | + | real(dp), dimension(2), intent(out) | +xm, | +
+ | + | logical, intent(out) | +ff | +
+ | ) | ++ |
Inverse mapping of xmtoxc_ak.
+That is, go from given cartesian unit 3-vector, xc, to map coordinate 2-vector xm (or return a raised failure flag, FF, if the attempt fails).
+[in] | a | ESG mapping parameter for line spacing profile |
[in] | k | ESG mapping parameter for Gauss curvature in Schmidt mapping |
[in] | xc | Earth-centered cartesian unit 3-vector |
[out] | xm | 2-vector map coordinate |
[out] | ff | Failure flag |
Definition at line 466 of file pesg.f90.
+ +References pietc::f.
+ +
+
|
+ +private | +
subroutine pesg::xmtog_ak_dd_g | +( | +real(dp), intent(in) | +A, | +
+ | + | real(dp), intent(in) | +K, | +
+ | + | real(dp), intent(in) | +pdlat, | +
+ | + | real(dp), intent(in) | +pdlon, | +
+ | + | real(dp), intent(in) | +pdazi, | +
+ | + | real(dp), intent(in) | +delx, | +
+ | + | real(dp), intent(in) | +dely, | +
+ | + | real(dp), dimension(2), intent(in) | +xm, | +
+ | + | real(dp), intent(out) | +dlat, | +
+ | + | real(dp), intent(out) | +dlon, | +
+ | + | logical, intent(out) | +ff | +
+ | ) | ++ |
Like xmtog_ak_rr_g, except lat, lon, azimuth, are expressed in degrees.
+[in] | a | parameters of an ESG mapping |
[in] | k | parameters of an ESG mapping |
[in] | pdlat | degrees latitude of projection center of the mapping |
[in] | pdlon | degrees longitude of projection center of the mapping |
[in] | pdazi | Azimuth of the mapping orientation about its center |
[in] | delx | central x-spacing of the grid in radians |
[in] | dely | central y-spacing of the grid in radians |
[in] | xm | map coordinates, in grid units, of a point to be mapped |
[out] | dlat | degrees latitude of the point |
[out] | dlon | degrees longitude of the point |
[out] | ff | failure flag |
Definition at line 2118 of file pesg.f90.
+ +References pietc::dtor, pietc::rtod, and xmtog_ak_rr_m().
+ +
+
|
+ +private | +
Like xmtog_ak_rr_m, except lat, lon, azimuth, are expressed in degrees.
+[in] | a | parameters of the ESG mapping |
[in] | k | parameters of the ESG mapping |
[in] | pdlat | degrees latitude of the projection center of the mapping |
[in] | pdlon | degrees longitude of the projection center of the mapping |
[in] | pdazi | Azimuth of the orientation of the mapping at its center |
[in] | xm | map space 2-vector coordinates of a point |
[out] | dlat | degrees latitude of the point |
[out] | dlon | degrees longitude of the point |
[out] | ff | failure flag |
Definition at line 2087 of file pesg.f90.
+ +References pietc::dtor, pietc::rtod, and xmtog_ak_rr_m().
+ +subroutine pesg::xmtog_ak_rr_g | +( | +real(dp), intent(in) | +A, | +
+ | + | real(dp), intent(in) | +K, | +
+ | + | real(dp), intent(in) | +plat, | +
+ | + | real(dp), intent(in) | +plon, | +
+ | + | real(dp), intent(in) | +pazi, | +
+ | + | real(dp), intent(in) | +delx, | +
+ | + | real(dp), intent(in) | +dely, | +
+ | + | real(dp), dimension(2), intent(in) | +xm, | +
+ | + | real(dp), intent(out) | +lat, | +
+ | + | real(dp), intent(out) | +lon, | +
+ | + | logical, intent(out) | +ff | +
+ | ) | ++ |
For an ESG map with parameters, (A,K), and geographical orientation, given by plon,plat,pazi (radians), and given a point in grid-space units as the 2-vector, xm, return the geographical coordinates, lat, lon, (radians) of this point.
+If instead the transformation is invalid for any reason, then return the raised failure flag, FF=.true.
+[in] | a | parameters of the ESG mapping |
[in] | k | parameters of the ESG mapping |
[in] | plat | radians latitude of the projection center of the mapping |
[in] | plon | radians longitude of the projection center of the mapping |
[in] | pazi | Azimuth of the orientation of the mapping at its center |
[in] | delx | central x-spacing of the grid in radians |
[in] | dely | central y-spacing grid point in radians |
[in] | xm | grid-space 2-vector coordinates of a point to be mapped |
[out] | lat | radians latitude of the point |
[out] | lon | radians longitude of the point |
[out] | ff | failure flag |
Definition at line 2063 of file pesg.f90.
+ +References xmtog_ak_rr_m().
+ +
+
|
+ +private | +
Given the ESG map specified by parameters (A,K) and geographical center and orientation, plat,plon,pazi (radians), and a position, in map-space coordinates given by the 2-vector, xm, return the geographical coordinates, lat and lon (radians).
+If the transformation is invalid for any reason, return instead with a raised failure flag, FF= .true.
+[in] | a | parameter of an ESG mapping |
[in] | k | parameter of an ESG mapping |
[in] | plat | radians latitude of the projection center of the mapping |
[in] | plon | radians longitude of the projection center of the mapping |
[in] | pazi | Azimuth of orientation of the mapping at its center |
[in] | xm | center-relative 2-vector map space coordinates of a point |
[out] | lat | radians latitude of the point |
[out] | lon | radians longitude of the point |
[out] | ff | failure flag |
Definition at line 2015 of file pesg.f90.
+ +References pietc::u0, and pietc::u1.
+ +Referenced by xmtog_ak_dd_g(), xmtog_ak_dd_m(), and xmtog_ak_rr_g().
+ +subroutine, public pesg::xmtoxc_ak | +( | +real(dp), intent(in) | +a, | +
+ | + | real(dp), intent(in) | +k, | +
+ | + | real(dp), dimension(2), intent(in) | +xm, | +
+ | + | real(dp), dimension(3), intent(out) | +xc, | +
+ | + | real(dp), dimension(3,2), intent(out) | +xcd, | +
+ | + | logical, intent(out) | +ff | +
+ | ) | ++ |
Assuming the A-K parameterization of the Extended Schmidt-transformed Gnomonic (ESG) mapping, and given a map-space 2-vector, xm, find the corresponding cartesian unit 3-vector and its derivative wrt xm, jacobian matrix, xcd.
+If for any reason the mapping cannot be done, return a raised failure flag, FF.
+[in] | a | ESG mapping parameter for line spacing profile |
[in] | k | ESG mapping parameter for Gauss curvature in Schmidt mapping |
[in] | xm | map-space 2-vector |
[out] | xc | Earth-centered cartesian unit 3-vector |
[out] | xcd | Jacobian matrix, d(xc)/d(xm) |
[out] | ff | Failure flag |
subroutine pesg::xmtoxc_vak | +( | +real(dp), dimension(2), intent(in) | +ak, | +
+ | + | real(dp), dimension(2), intent(in) | +xm, | +
+ | + | real(dp), dimension(3), intent(out) | +xc, | +
+ | + | real(dp), dimension(3,2), intent(out) | +xcd, | +
+ | + | logical, intent(out) | +ff | +
+ | ) | ++ |
Assuming the vector AK parameterization of the Extended Schmidt-transformed Gnomonic (ESG) mapping with parameter vector, and given a map-space 2-vector, xm, find the corresponding cartesian unit 3-vector and its derivative wrt xm, the Jacobian matrix, xcd.
+If for any reason the mapping cannot be done, return a raised failure flag,z FF.
[in] | ak | 2-vector parameterization of the ESG mapping |
[in] | xm | 2-vector of map plane coordinates |
[out] | xc | Earth-centered cartesian unit 3-vector |
[out] | xcd | Jacobian, d(xc)/d(xm) |
[out] | ff | Failure flag |
+
|
+ +private | +
Like xmtoxc_vak, _ak, but also return derivatives wrt ak.
+[in] | ak | 2-vector parameterization of the ESG mapping |
[in] | xm | 2-vector of map plane coordinates |
[out] | xc | Earth-centered cartesian unit 3-vector |
[out] | xcd | Jacobian of xc wrt xm, d(xc)/d(xm) |
[out] | xc1 | Partial derivatives wrt ak of xc, d(xc)/d(ak) |
[out] | xcd1 | Second derivative wrt xm and ak of xc, d^2(xc)/(d(xm)d(ak)) |
[out] | ff | Failure flag |
+
|
+ +private | +
Like zmtozt, but for 2-vector xm and xt, and 2*2 diagonal Jacobian xtd.
+[in] | a | Mapping parameter controlling grid line spacing profile |
[in] | xm | Vector value of map coordinates |
[out] | xt | Vector value of gnomonic plane coordinates |
[out] | xtd | 2*2 diagonal Jacobian, d(xt)/d(xm) |
[out] | ff | Failure flag |
Definition at line 254 of file pesg.f90.
+ +References pietc::u0.
+ +
+
|
+ +private | +
Like zmtozt1, but for 2-vector xm and xt, and 2*2 diagonal Jacobian xtd Also, the derivatives, wrt a, of these quantities.
+[in] | a | Mapping parameter controlling grid line spacing profile |
[in] | xm | Vector value of map plane coordinates |
[out] | xt | Vector value of gnomonic plane coordinates |
[out] | xtd | 2*2 diagonal Jacobian, d(xt)/d(xm) |
[out] | xt1 | Derivative wrt a of xt, d(xt)/da |
[out] | xtd1 | Derivative wrt a of Jacobian xtd, d^2(xt)/(d(xm)da) |
[out] | ff | Failure flag |
Definition at line 276 of file pesg.f90.
+ +References pietc::u0, and zmtozt1().
+ +Referenced by xmtoxc_vak1().
+ +
+
|
+ +private | +
Standard transformation from polar stereographic map coordinates, xs, to cartesian, xc, assuming the projection axis is polar.
+xcd=d(xc)/d(xs) is the jacobian matrix, encoding distortion and metric.
+[in] | xs | Stereographic map coordinates |
[out] | xc | Cartesian earth-centered 3-vector |
[out] | xcd | Value of jacobian matrix, encoding distortion and metric |
subroutine pesg::xstoxc1 | +( | +real(dp), dimension(2), intent(in) | +xs, | +
+ | + | real(dp), dimension(3), intent(out) | +xc, | +
+ | + | real(dp), dimension(3,2), intent(out) | +xcd, | +
+ | + | real(dp), dimension(3,2,2), intent(out) | +xcdd | +
+ | ) | ++ |
Standard transformation from polar stereographic map coordinates, xs, to cartesian, xc, assuming the projection axis is polar.
+xcd=d(xc)/d(xs) is the jacobian matrix, encoding distortion and metric. xcdd is the further derivative, wrt xs, of xcd.
+[in] | xs | Stereographic map coordinates |
[out] | xc | Cartesian earth-centered 3-vector |
[out] | xcd | Jacobian matrix, encoding distortion and metric |
[out] | xcdd | Further derivative, wrt xs, of xcd |
subroutine pesg::xstoxt | +( | +real(dp), intent(in) | +k, | +
+ | + | real(dp), dimension(2), intent(in) | +xs, | +
+ | + | real(dp), dimension(2), intent(out) | +xt, | +
+ | + | logical, intent(out) | +ff | +
+ | ) | ++ |
subroutine pesg::xttoxm | +( | +real(dp), intent(in) | +a, | +
+ | + | real(dp), dimension(2), intent(in) | +xt, | +
+ | + | real(dp), dimension(2), intent(out) | +xm, | +
+ | + | logical, intent(out) | +ff | +
+ | ) | ++ |
+
|
+ +private | +
Scaled gnomonic plane xt to standard stereographic plane xs.
+[in] | k | Gaussian curvature parameter of Schmidt mapping |
[in] | xt | Scaled gnomonic plane |
[out] | xs | Standard stereographic plane |
[out] | xsd | Jacobian matrix, d(xs)/d(xt). |
[out] | ff | Failure flag |
subroutine pesg::xttoxs1 | +( | +real(dp), intent(in) | +k, | +
+ | + | real(dp), dimension(2), intent(in) | +xt, | +
+ | + | real(dp), dimension(2), intent(out) | +xs, | +
+ | + | real(dp), dimension(2,2), intent(out) | +xsd, | +
+ | + | real(dp), dimension(2,2,2), intent(out) | +xsdd, | +
+ | + | real(dp), dimension(2), intent(out) | +xs1, | +
+ | + | real(dp), dimension(2,2), intent(out) | +xsd1, | +
+ | + | logical, intent(out) | +ff | +
+ | ) | ++ |
Like xttoxs, but also, return the derivatives, wrt K, of xs and xsd.
+[in] | k | Gaussian curvature parameter of the Schmidt mapping |
[in] | xt | Scaled gnomonic plane |
[out] | xs | Standard stereographic plane |
[out] | xsd | Jacobian matrix, d(xs)/d(xt) |
[out] | xsdd | Second partial derivatives, d^2(xs)/(d(xt)d(xt)) |
[out] | xs1 | Derivative of xs wrt mapping parameter, d(xs)/dk |
[out] | xsd1 | Derivative of Jacobian wrt k: d^2(xs)/(d(xt)dk) |
[out] | ff | Failure flag |
Definition at line 193 of file pesg.f90.
+ +References pietc::o2, pietc::u0, pietc::u1, and pietc::u2.
+ +Referenced by xmtoxc_vak1().
+ +
+
|
+ +private | +
Evaluate the function, zt = tan(sqrt(A)*z)/sqrt(A), and its derivative, ztd, for positive and negative A and for the limiting case, A –> 0.
+[in] | a | Mapping parameter controlling grid line spacing profile |
[in] | zm | Scalar value of single map plane coordinate |
[out] | zt | Scalar value of single gnomonic plane coordinate |
[out] | ztd | Derivative of gnomonic coordinate, d(zt)/d(zm) |
[out] | ff | Failure flag |
Definition at line 323 of file pesg.f90.
+ +References pietc::f, pietc::pih, pietc::u0, and pietc::u1.
+ +
+
|
+ +private | +
Like zmtozt, but also, get the derivative with respect to a, zt1 of zt, and ztd1 of ztd.
+[in] | a | Mapping parameter controlling grid line spacing profile |
[in] | zm | Single map plane coordinate |
[in] | zt | Single gnomonic plane coordinate |
[in] | ztd | Derivative wrt zm of zt, d(zt)/d(zm) |
[in] | zt1 | Derivative wrt a of zt, d(zt)/da |
[in] | ztd1 | Derivative wrt a of ztd, d^2(zt)/(d(zm)da) |
[in] | ff | Failure flag |
Definition at line 348 of file pesg.f90.
+ +References pietc::o3.
+ +Referenced by xmtoxt1().
+ +
+
|
+ +private | +
+ grid_tools
+ 1.13.0
+
+ |
+
This module is for evaluating several useful real-valued functions that are not always available in Fortran compilers. +More...
++Data Types | |
interface | ahav |
interface | ahavh |
interface | atanh |
interface | gd |
interface | gdi |
interface | hav |
interface | havh |
interface | sech |
interface | sechs |
interface | sinhox |
interface | sinhoxm |
interface | sinox |
interface | sinoxm |
+Functions/Subroutines | |
real(dp) function | ahav_d (a) |
Arc-haversine function for double precision real. More... | |
real(sp) function | ahav_s (a) |
Arc-haversine function for single precision real. More... | |
real(dp) function | ahavh_d (a) |
Hyperbolic arc-haversine for double precision real. More... | |
real(sp) function | ahavh_s (a) |
Hyperbolic arc-haversine for single precision real. More... | |
real(dp) function | atanh_d (t) |
Hyperbolic arc-tangent for double precision real. More... | |
real(sp) function | atanh_s (t) |
Hyperbolic arc-tangent for single precision real. More... | |
real(dp) function | gd_d (x) |
Gudermannian function (related to Mercator map projections) More... | |
real(sp) function | gd_s (x) |
Gudermannian function (related to Mercator map projections) More... | |
real(dp) function | gdi_d (y) |
Inverse Gudermannian function for double precision real. More... | |
real(sp) function | gdi_s (y) |
Inverse Gudermannian function for single precision real. More... | |
real(dp) function | hav_d (t) |
Haversine function for double precision real (for geometry on the sphere). More... | |
real(sp) function | hav_s (t) |
Haversine function for single precision real (for geometry on the sphere). More... | |
real(dp) function | havh_d (t) |
Hyperbolic-haversine for double precision real (for pseudosphere geometry). More... | |
real(sp) function | havh_s (t) |
Hyperbolic-haversine for single precision real (for pseudosphere geometry). More... | |
real(dp) function | sech_d (x) |
Hyperbolic secant for double precision real. More... | |
real(sp) function | sech_s (x) |
Hyperbolic secant for single precision real. More... | |
real(dp) function | sechs_d (x) |
Hyperbolic secant-squared function (logistic distribution). More... | |
real(sp) function | sechs_s (x) |
Hyperbolic secant-squared function (logistic distribution). More... | |
real(dp) function | sinhox_d (x) |
Evaluate the symmetric real function sinh(x)/x. More... | |
real(dp) function | sinhoxm_d (x) |
Evaluate the symmetric real function sinh(x)/x-1. More... | |
real(dp) function | sinox_d (x) |
Evaluate the symmetric real function sin(x)/x. More... | |
real(dp) function | sinoxm_d (x) |
Evaluate the symmetric real function sin(x)/x-1, still accurate near x=0. More... | |
This module is for evaluating several useful real-valued functions that are not always available in Fortran compilers.
+These have applications in map transformations, spherical and pseudo-spherical surface geometry, probability distributions, and splines.
+ +real(dp) function pfun::ahav_d | +( | +real(dp), intent(in) | +a | ) | ++ |
real(sp) function pfun::ahav_s | +( | +real(sp), intent(in) | +a | ) | ++ |
real(dp) function pfun::ahavh_d | +( | +real(dp), intent(in) | +a | ) | ++ |
real(sp) function pfun::ahavh_s | +( | +real(sp), intent(in) | +a | ) | ++ |
real(dp) function pfun::atanh_d | +( | +real(dp), intent(in) | +t | ) | ++ |
real(sp) function pfun::atanh_s | +( | +real(sp), intent(in) | +t | ) | ++ |
+
|
+ +private | +
+
|
+ +private | +
+
|
+ +private | +
+
|
+ +private | +
real(dp) function pfun::hav_d | +( | +real(dp), intent(in) | +t | ) | ++ |
+
|
+ +private | +
real(dp) function pfun::havh_d | +( | +real(dp), intent(in) | +t | ) | ++ |
real(sp) function pfun::havh_s | +( | +real(sp), intent(in) | +t | ) | ++ |
real(dp) function pfun::sech_d | +( | +real(dp), intent(in) | +x | ) | ++ |
real(sp) function pfun::sech_s | +( | +real(sp), intent(in) | +x | ) | ++ |
+
|
+ +private | +
real(sp) function pfun::sechs_s | +( | +real(sp), intent(in) | +x | ) | ++ |
real(dp) function pfun::sinhox_d | +( | +real(dp), intent(in) | +x | ) | ++ |
real(dp) function pfun::sinhoxm_d | +( | +real(dp), intent(in) | +x | ) | ++ |
real(dp) function pfun::sinox_d | +( | +real(dp), intent(in) | +x | ) | ++ |
+
|
+ +private | +
+ grid_tools
+ 1.13.0
+
+ |
+
Some of the commonly used constants (pi etc) mainly for double-precision subroutines. +More...
++Variables | |
complex(dpc), parameter | c0 =(u0, u0) |
complex zero More... | |
complex(dpc), parameter | c1 =(u1, u0) |
complex one More... | |
complex(dpc), parameter | ci =(u0, u1) |
complex i=sqrt(-1) More... | |
complex(dpc), parameter | cipi =ci*pi |
complex i*pi More... | |
real(dp), parameter | dtor =pi/180 |
Degrees to radians. More... | |
real(dp), parameter | euler =0.57721566490153286060651209008240243104215933593992359880e0_dp |
Euler-Mascheroni constant. More... | |
logical, parameter | f =.false. |
for pain-relief in logical ops More... | |
complex(dpc), parameter | mc1 =-c1 |
complex minus-one More... | |
complex(dpc), parameter | mci =-ci |
complex minus-i More... | |
real(dp), parameter | mo2 =-o2 |
minus-half More... | |
real(dp), parameter | mo3 =-o3 |
minus-third More... | |
real(dp), parameter | mo4 =-o4 |
minus-fourth More... | |
real(dp), parameter | mo5 =-o5 |
minus-fifth More... | |
real(dp), parameter | mo6 =-o6 |
minus-sixth More... | |
real(dp), parameter | ms10 =-s10 |
minus-sine(10 deg) More... | |
real(dp), parameter | ms11 =-s11 |
minus-sine(90/8 deg) More... | |
real(dp), parameter | ms13 =-s13 |
minus-sine(90/7 deg) More... | |
real(dp), parameter | ms15 =-s15 |
minus-sine(15 deg) More... | |
real(dp), parameter | ms18 =-s18 |
minus-sine(18 deg) More... | |
real(dp), parameter | ms20 =-s20 |
minus-sine(20 deg) More... | |
real(dp), parameter | ms22 =-s22 |
minus-sine(22.5 deg) More... | |
real(dp), parameter | ms26 =-s26 |
minus-sine(90*2/7 deg) More... | |
real(dp), parameter | ms30 =-s30 |
minus-sine(30 deg) More... | |
real(dp), parameter | ms34 =-s34 |
minus-sine(90*3/8 deg) More... | |
real(dp), parameter | ms36 =-s36 |
minus-sine(36 deg) More... | |
real(dp), parameter | ms39 =-s39 |
minus-sine(90*3/7 deg) More... | |
real(dp), parameter | ms40 =-s40 |
minus-sine(40 deg) More... | |
real(dp), parameter | ms45 =-s45 |
minus-sine(45 deg) More... | |
real(dp), parameter | ms50 =-s50 |
minus-sine(50 deg) More... | |
real(dp), parameter | ms51 =-s51 |
minus-sine(90*4/7 deg) More... | |
real(dp), parameter | ms54 =-s54 |
minus-sine(54 deg) More... | |
real(dp), parameter | ms56 =-s56 |
minus-sine(90*5/8 deg) More... | |
real(dp), parameter | ms60 =-s60 |
minus-sine(60 deg) More... | |
real(dp), parameter | ms64 =-s64 |
minus-sine(90*5/7 deg) More... | |
real(dp), parameter | ms68 =-s68 |
minus-sine(67.5 deg) More... | |
real(dp), parameter | ms70 =-s70 |
minus-sine(70 deg) More... | |
real(dp), parameter | ms72 =-s72 |
minus-sine(72 deg) More... | |
real(dp), parameter | ms75 =-s75 |
minus-sine(75 deg) More... | |
real(dp), parameter | ms77 =-s77 |
minus-sine(90*6/7 deg) More... | |
real(dp), parameter | ms79 =-s79 |
minus-sine(90*7/8 deg) More... | |
real(dp), parameter | ms80 =-s80 |
minus-sine(80 deg) More... | |
real(dp), parameter | mu1 =-u1 |
minus-one More... | |
real(dp), parameter | mu2 =-u2 |
minus-two More... | |
real(dp), parameter | mu3 =-u3 |
minus-three More... | |
real(dp), parameter | mu4 =-u4 |
minus-four More... | |
real(dp), parameter | mu5 =-u5 |
minus-five More... | |
real(dp), parameter | mu6 =-u6 |
minus-six More... | |
real(dp), parameter | o2 =u1/u2 |
half More... | |
real(dp), parameter | o3 =u1/u3 |
third More... | |
real(dp), parameter | o4 =u1/u4 |
fourth More... | |
real(dp), parameter | o5 =u1/u5 |
fifth More... | |
real(dp), parameter | o6 =u1/u6 |
sixth More... | |
real(dp), parameter | or2 =u1/r2 |
1. More... | |
real(dp), parameter | or3 =u1/r3 |
1. More... | |
real(dp), parameter | or5 =u1/r5 |
1. More... | |
real(dp), parameter | phi =1.6180339887498948482045868343656381177203091798057628621354e0_dp |
Golden number. More... | |
real(dp), parameter | pi =3.1415926535897932384626433832795028841971693993751058209749e0_dp |
Pi. More... | |
real(dp), parameter | pi2 =6.2831853071795864769252867665590057683943387987502116419498e0_dp |
Pi*2. More... | |
real(dp), parameter | pih =1.5707963267948966192313216916397514420985846996875529104874e0_dp |
pi*half More... | |
real(dp), parameter | r2 =1.4142135623730950488016887242096980785696718753769480731766e0_dp |
Square root of 2. More... | |
real(dp), parameter | r3 =1.7320508075688772935274463415058723669428052538103806280558e0_dp |
Square root of 3. More... | |
real(dp), parameter | r5 =2.2360679774997896964091736687312762354406183596115257242708e0_dp |
Square root of 5. More... | |
real(dp), parameter | rpi =1.7724538509055160272981674833411451827975494561223871282138e0_dp |
square root of pi More... | |
real(dp), parameter | rtod =180/pi |
radians to degrees More... | |
real(dp), parameter | s10 =.173648177666930348851716626769314796000375677184069387236241e0_dp |
sine(10 deg) More... | |
real(dp), parameter | s11 =.195090322016128267848284868477022240927691617751954807754502e0_dp |
sine(90/8 deg) More... | |
real(dp), parameter | s13 =.222520933956314404288902564496794759466355568764544955311987e0_dp |
sine(90/7 deg) More... | |
real(dp), parameter | s15 =.258819045102520762348898837624048328349068901319930513814003e0_dp |
sine(15 deg) More... | |
real(dp), parameter | s18 =.309016994374947424102293417182819058860154589902881431067724e0_dp |
sine(18 deg) More... | |
real(dp), parameter | s20 =.342020143325668733044099614682259580763083367514160628465048e0_dp |
sine(20 deg) More... | |
real(dp), parameter | s22 =.382683432365089771728459984030398866761344562485627041433800e0_dp |
sine(22.5 deg) More... | |
real(dp), parameter | s26 =.433883739117558120475768332848358754609990727787459876444547e0_dp |
sine(90*2/7 deg) More... | |
real(dp), parameter | s30 =o2 |
sine(30 deg) More... | |
real(dp), parameter | s34 =.555570233019602224742830813948532874374937190754804045924153e0_dp |
sine(90*3/8 deg) More... | |
real(dp), parameter | s36 =.587785252292473129168705954639072768597652437643145991072272e0_dp |
sine(36 deg) More... | |
real(dp), parameter | s39 =.623489801858733530525004884004239810632274730896402105365549e0_dp |
sine(90*3/7 deg) More... | |
real(dp), parameter | s40 =.642787609686539326322643409907263432907559884205681790324977e0_dp |
sine(40 deg) More... | |
real(dp), parameter | s45 =or2 |
sine(45 deg) More... | |
real(dp), parameter | s50 =.766044443118978035202392650555416673935832457080395245854045e0_dp |
sine(50 deg) More... | |
real(dp), parameter | s51 =.781831482468029808708444526674057750232334518708687528980634e0_dp |
sine(90*4/7 deg) More... | |
real(dp), parameter | s54 =.809016994374947424102293417182819058860154589902881431067724e0_dp |
sine(54 deg) More... | |
real(dp), parameter | s56 =.831469612302545237078788377617905756738560811987249963446124e0_dp |
sine(90*5/8 deg) More... | |
real(dp), parameter | s60 =r3*o2 |
sine(60 deg) More... | |
real(dp), parameter | s64 =.900968867902419126236102319507445051165919162131857150053562e0_dp |
sine(90*5/7 deg) More... | |
real(dp), parameter | s68 =.923879532511286756128183189396788286822416625863642486115097e0_dp |
sine(67.5 deg) More... | |
real(dp), parameter | s70 =.939692620785908384054109277324731469936208134264464633090286e0_dp |
sine(70 deg) More... | |
real(dp), parameter | s72 =.951056516295153572116439333379382143405698634125750222447305e0_dp |
sine(72 deg) More... | |
real(dp), parameter | s75 =.965925826289068286749743199728897367633904839008404550402343e0_dp |
sine(75 deg) More... | |
real(dp), parameter | s77 =.974927912181823607018131682993931217232785800619997437648079e0_dp |
sine(90*6/7 deg) More... | |
real(dp), parameter | s79 =.980785280403230449126182236134239036973933730893336095002916e0_dp |
sine(90*7/8 deg) More... | |
real(dp), parameter | s80 =.984807753012208059366743024589523013670643251719842418790025e0_dp |
sine(80 deg) More... | |
logical, parameter | t =.true. |
for pain-relief in logical ops More... | |
real(dp), parameter | u0 =0_dp |
zero More... | |
real(dp), parameter | u1 =1_dp |
one More... | |
real(dp), parameter | u2 =2_dp |
two More... | |
real(dp), parameter | u3 =3_dp |
three More... | |
real(dp), parameter | u4 =4_dp |
four More... | |
real(dp), parameter | u5 =5_dp |
five More... | |
real(dp), parameter | u6 =6_dp |
six More... | |
complex(dpc), parameter | z000 =c1 |
exp(2*pi*i*0) More... | |
complex(dpc), parameter | z010 =( s80, s10) |
exp(2*pi*i/36) More... | |
complex(dpc), parameter | z011 =( s79, s11) |
exp(2*pi*i/32) More... | |
complex(dpc), parameter | z013 =( s77, s13) |
exp(2*pi*i/28) More... | |
complex(dpc), parameter | z015 =( s75, s15) |
exp(2*pi*i/24) More... | |
complex(dpc), parameter | z018 =( s72, s18) |
exp(2*pi*i/20) More... | |
complex(dpc), parameter | z020 =( s70, s20) |
exp(2*pi*i/18) More... | |
complex(dpc), parameter | z022 =( s68, s22) |
exp(2*pi*i/16) More... | |
complex(dpc), parameter | z026 =( s64, s26) |
exp(2*pi*i/14) More... | |
complex(dpc), parameter | z030 =( s60, s30) |
exp(2*pi*i/12) More... | |
complex(dpc), parameter | z034 =( s56, s34) |
exp(2*pi*i*3/32) More... | |
complex(dpc), parameter | z036 =( s54, s36) |
exp(2*pi*i/10) More... | |
complex(dpc), parameter | z039 =( s51, s39) |
exp(2*pi*i*3/28) More... | |
complex(dpc), parameter | z040 =( s50, s40) |
exp(2*pi*i/9) More... | |
complex(dpc), parameter | z045 =( s45, s45) |
exp(2*pi*i/8) More... | |
complex(dpc), parameter | z050 =( s40, s50) |
exp(2*pi*i*5/36) More... | |
complex(dpc), parameter | z051 =( s39, s51) |
exp(2*pi*i/7) More... | |
complex(dpc), parameter | z054 =( s36, s54) |
exp(2*pi*i*3/20) More... | |
complex(dpc), parameter | z056 =( s34, s56) |
exp(2*pi*i*5/32) More... | |
complex(dpc), parameter | z060 =( s30, s60) |
exp(2*pi*i/6) More... | |
complex(dpc), parameter | z064 =( s26, s64) |
exp(2*pi*i*5/28) More... | |
complex(dpc), parameter | z068 =( s22, s68) |
exp(2*pi*i*3/16) More... | |
complex(dpc), parameter | z070 =( s20, s70) |
exp(2*pi*i*7/36) More... | |
complex(dpc), parameter | z072 =( s18, s72) |
exp(2*pi*i/5) More... | |
complex(dpc), parameter | z075 =( s15, s75) |
exp(2*pi*i*5/24) More... | |
complex(dpc), parameter | z077 =( s13, s77) |
exp(2*pi*i*3/14) More... | |
complex(dpc), parameter | z079 =( s11, s79) |
exp(2*pi*i*7/32) More... | |
complex(dpc), parameter | z080 =( s10, s80) |
exp(2*pi*i*2/9) More... | |
complex(dpc), parameter | z090 =ci |
exp(2*pi*i/4) More... | |
complex(dpc), parameter | z100 =(ms10, s80) |
exp(2*pi*i*5/18) More... | |
complex(dpc), parameter | z101 =(ms11, s79) |
exp(2*pi*i*9/32) More... | |
complex(dpc), parameter | z103 =(ms13, s77) |
exp(2*pi*i*2/7) More... | |
complex(dpc), parameter | z105 =(ms15, s75) |
exp(2*pi*i*7/24) More... | |
complex(dpc), parameter | z108 =(ms18, s72) |
exp(2*pi*i*3/10) More... | |
complex(dpc), parameter | z110 =(ms20, s70) |
exp(2*pi*i*11/36) More... | |
complex(dpc), parameter | z112 =(ms22, s68) |
exp(2*pi*i*5/16) More... | |
complex(dpc), parameter | z116 =(ms26, s64) |
exp(2*pi*i*9/28) More... | |
complex(dpc), parameter | z120 =(ms30, s60) |
exp(2*pi*i/3) More... | |
complex(dpc), parameter | z124 =(ms34, s56) |
exp(2*pi*i*11/32) More... | |
complex(dpc), parameter | z126 =(ms36, s54) |
exp(2*pi*i*7/20) More... | |
complex(dpc), parameter | z129 =(ms39, s51) |
exp(2*pi*i*5/14) More... | |
complex(dpc), parameter | z130 =(ms40, s50) |
exp(2*pi*i*13/36) More... | |
complex(dpc), parameter | z135 =(ms45, s45) |
exp(2*pi*i*3/8) More... | |
complex(dpc), parameter | z140 =(ms50, s40) |
exp(2*pi*i*7/18) More... | |
complex(dpc), parameter | z141 =(ms51, s39) |
exp(2*pi*i*11/28) More... | |
complex(dpc), parameter | z144 =(ms54, s36) |
exp(2*pi*i*2/5) More... | |
complex(dpc), parameter | z146 =(ms56, s34) |
exp(2*pi*i*13/32) More... | |
complex(dpc), parameter | z150 =(ms60, s30) |
exp(2*pi*i*5/12) More... | |
complex(dpc), parameter | z154 =(ms64, s26) |
exp(2*pi*i*3/7) More... | |
complex(dpc), parameter | z158 =(ms68, s22) |
exp(2*pi*i*7/16) More... | |
complex(dpc), parameter | z160 =(ms70, s20) |
exp(2*pi*i*4/9) More... | |
complex(dpc), parameter | z162 =(ms72, s18) |
exp(2*pi*i*9/20) More... | |
complex(dpc), parameter | z165 =(ms75, s15) |
exp(2*pi*i*11/24) More... | |
complex(dpc), parameter | z167 =(ms77, s13) |
exp(2*pi*i*13/28) More... | |
complex(dpc), parameter | z169 =(ms79, s11) |
exp(2*pi*i*15/32) More... | |
complex(dpc), parameter | z170 =(ms80, s10) |
exp(2*pi*i*17/36) More... | |
complex(dpc), parameter | z180 =-z000 |
exp(2*pi*i/2) More... | |
complex(dpc), parameter | z190 =-z010 |
exp(2*pi*i*19/36) More... | |
complex(dpc), parameter | z191 =-z011 |
exp(2*pi*i*17/32) More... | |
complex(dpc), parameter | z193 =-z013 |
exp(2*pi*i*15/28) More... | |
complex(dpc), parameter | z195 =-z015 |
exp(2*pi*i*13/24) More... | |
complex(dpc), parameter | z198 =-z018 |
exp(2*pi*i*11/20) More... | |
complex(dpc), parameter | z200 =-z020 |
exp(2*pi*i*5/9) More... | |
complex(dpc), parameter | z202 =-z022 |
exp(2*pi*i*9/16) More... | |
complex(dpc), parameter | z206 =-z026 |
exp(2*pi*i*4/7) More... | |
complex(dpc), parameter | z210 =-z030 |
exp(2*pi*i*7/12) More... | |
complex(dpc), parameter | z214 =-z034 |
exp(2*pi*i*19/32) More... | |
complex(dpc), parameter | z216 =-z036 |
exp(2*pi*i*3/5) More... | |
complex(dpc), parameter | z219 =-z039 |
exp(2*pi*i*17/28) More... | |
complex(dpc), parameter | z220 =-z040 |
exp(2*pi*i*11/18) More... | |
complex(dpc), parameter | z225 =-z045 |
exp(2*pi*i*5/8) More... | |
complex(dpc), parameter | z230 =-z050 |
exp(2*pi*i*23/36) More... | |
complex(dpc), parameter | z231 =-z051 |
exp(2*pi*i*9/14) More... | |
complex(dpc), parameter | z234 =-z054 |
exp(2*pi*i*13/20) More... | |
complex(dpc), parameter | z236 =-z056 |
exp(2*pi*i*21/32) More... | |
complex(dpc), parameter | z240 =-z060 |
exp(2*pi*i*2/3) More... | |
complex(dpc), parameter | z244 =-z064 |
exp(2*pi*i*19/28) More... | |
complex(dpc), parameter | z248 =-z068 |
exp(2*pi*i*11/16) More... | |
complex(dpc), parameter | z250 =-z070 |
exp(2*pi*i*25/36) More... | |
complex(dpc), parameter | z252 =-z072 |
exp(2*pi*i*7/10) More... | |
complex(dpc), parameter | z255 =-z075 |
exp(2*pi*i*17/24) More... | |
complex(dpc), parameter | z257 =-z077 |
exp(2*pi*i*5/7) More... | |
complex(dpc), parameter | z259 =-z079 |
exp(2*pi*i*23/32) More... | |
complex(dpc), parameter | z260 =-z080 |
exp(2*pi*i*13/18) More... | |
complex(dpc), parameter | z270 =-z090 |
exp(2*pi*i*3/4) More... | |
complex(dpc), parameter | z280 =-z100 |
exp(2*pi*i*7/9) More... | |
complex(dpc), parameter | z281 =-z101 |
exp(2*pi*i*25/32) More... | |
complex(dpc), parameter | z283 =-z103 |
exp(2*pi*i*11/14) More... | |
complex(dpc), parameter | z285 =-z105 |
exp(2*pi*i*19/24) More... | |
complex(dpc), parameter | z288 =-z108 |
exp(2*pi*i*4/5) More... | |
complex(dpc), parameter | z290 =-z110 |
exp(2*pi*i*29/36) More... | |
complex(dpc), parameter | z292 =-z112 |
exp(2*pi*i*13/16) More... | |
complex(dpc), parameter | z296 =-z116 |
exp(2*pi*i*23/28) More... | |
complex(dpc), parameter | z300 =-z120 |
exp(2*pi*i*5/6) More... | |
complex(dpc), parameter | z304 =-z124 |
exp(2*pi*i*27/32) More... | |
complex(dpc), parameter | z306 =-z126 |
exp(2*pi*i*17/20) More... | |
complex(dpc), parameter | z309 =-z129 |
exp(2*pi*i*6/7) More... | |
complex(dpc), parameter | z310 =-z130 |
exp(2*pi*i*31/36) More... | |
complex(dpc), parameter | z315 =-z135 |
exp(2*pi*i*7/8) More... | |
complex(dpc), parameter | z320 =-z140 |
exp(2*pi*i*8/9) More... | |
complex(dpc), parameter | z321 =-z141 |
exp(2*pi*i*25/28) More... | |
complex(dpc), parameter | z324 =-z144 |
exp(2*pi*i*9/10) More... | |
complex(dpc), parameter | z326 =-z146 |
exp(2*pi*i*29/32) More... | |
complex(dpc), parameter | z330 =-z150 |
exp(2*pi*i*11/12) More... | |
complex(dpc), parameter | z334 =-z154 |
exp(2*pi*i*13/14) More... | |
complex(dpc), parameter | z338 =-z158 |
exp(2*pi*i*15/16) More... | |
complex(dpc), parameter | z340 =-z160 |
exp(2*pi*i*17/18) More... | |
complex(dpc), parameter | z342 =-z162 |
exp(2*pi*i*19/20) More... | |
complex(dpc), parameter | z345 =-z165 |
exp(2*pi*i*23/24) More... | |
complex(dpc), parameter | z347 =-z167 |
exp(2*pi*i*27/28) More... | |
complex(dpc), parameter | z349 =-z169 |
exp(2*pi*i*31/32) More... | |
complex(dpc), parameter | z350 =-z170 |
exp(2*pi*i*35/36) More... | |
Some of the commonly used constants (pi etc) mainly for double-precision subroutines.
+ms10 etc are needed to satisfy the some (eg., gnu fortran) compilers' more rigorous standards regarding the way "data" statements are initialized. Zero and the first few units are u0,u1,u2, etc., their reciprocals being, o2,o3 etc and their square roots, r2,r3. Reciprocal roots are or2,or3 etc.
+ +complex zero
+ +Definition at line 112 of file pietc.f90.
+ +Referenced by pmat::cldumf(), and pmat2::clib_c().
+ +complex one
+ +Definition at line 113 of file pietc.f90.
+ +Referenced by pmat::cinvmtf(), pmat::cldumf(), pmat::cudlmm(), and pmat::cudlmv().
+ +real(dp), parameter pietc::dtor =pi/180 | +
Degrees to radians.
+ +Definition at line 54 of file pietc.f90.
+ +Referenced by pmat5::dgtoc(), pmat5::dgtocd(), pmat5::dgtocdd(), pmat5::dininmap(), pmat5::dinivmap(), pesg::get_edges(), pesg::gtoxm_ak_dd_g(), pesg::gtoxm_ak_dd_m(), pesg::hgrid_ak_dc(), pesg::hgrid_ak_dd(), pesg::hgrid_ak_dd_c(), regional_grid(), pesg::xmtog_ak_dd_g(), and pesg::xmtog_ak_dd_m().
+ +real(dp), parameter pietc::euler =0.57721566490153286060651209008240243104215933593992359880e0_dp | +
logical, parameter pietc::f =.false. | +
for pain-relief in logical ops
+ +Definition at line 18 of file pietc.f90.
+ +Referenced by pmat::sl1lmf(), pmat::sldlmf(), pmat::sldumf(), pesg::xctoxm_ak(), pesg::zmtozt(), and pesg::zttozm().
+ +complex(dpc), parameter pietc::mc1 =-c1 | +
complex(dpc), parameter pietc::mci =-ci | +
real(dp), parameter pietc::mo2 =-o2 | +
real(dp), parameter pietc::mo3 =-o3 | +
real(dp), parameter pietc::mo4 =-o4 | +
real(dp), parameter pietc::mo5 =-o5 | +
real(dp), parameter pietc::mo6 =-o6 | +
real(dp), parameter pietc::ms10 =-s10 | +
real(dp), parameter pietc::ms11 =-s11 | +
real(dp), parameter pietc::ms13 =-s13 | +
real(dp), parameter pietc::ms15 =-s15 | +
real(dp), parameter pietc::ms18 =-s18 | +
minus-sine(18 deg)
+ +Definition at line 89 of file pietc.f90.
+ +Referenced by pesg::bestesg_geo(), and pesg::bestesg_map().
+ +real(dp), parameter pietc::ms20 =-s20 | +
real(dp), parameter pietc::ms22 =-s22 | +
real(dp), parameter pietc::ms26 =-s26 | +
real(dp), parameter pietc::ms30 =-s30 | +
real(dp), parameter pietc::ms34 =-s34 | +
real(dp), parameter pietc::ms36 =-s36 | +
minus-sine(36 deg)
+ +Definition at line 95 of file pietc.f90.
+ +Referenced by pesg::bestesg_geo(), and pesg::bestesg_map().
+ +real(dp), parameter pietc::ms39 =-s39 | +
real(dp), parameter pietc::ms40 =-s40 | +
real(dp), parameter pietc::ms45 =-s45 | +
real(dp), parameter pietc::ms50 =-s50 | +
real(dp), parameter pietc::ms51 =-s51 | +
real(dp), parameter pietc::ms54 =-s54 | +
minus-sine(54 deg)
+ +Definition at line 101 of file pietc.f90.
+ +Referenced by pesg::bestesg_geo(), and pesg::bestesg_map().
+ +real(dp), parameter pietc::ms56 =-s56 | +
real(dp), parameter pietc::ms60 =-s60 | +
real(dp), parameter pietc::ms64 =-s64 | +
real(dp), parameter pietc::ms68 =-s68 | +
real(dp), parameter pietc::ms70 =-s70 | +
real(dp), parameter pietc::ms72 =-s72 | +
minus-sine(72 deg)
+ +Definition at line 107 of file pietc.f90.
+ +Referenced by pesg::bestesg_geo(), and pesg::bestesg_map().
+ +real(dp), parameter pietc::ms75 =-s75 | +
real(dp), parameter pietc::ms77 =-s77 | +
real(dp), parameter pietc::ms79 =-s79 | +
real(dp), parameter pietc::ms80 =-s80 | +
real(dp), parameter pietc::mu1 =-u1 | +
real(dp), parameter pietc::mu2 =-u2 | +
real(dp), parameter pietc::mu3 =-u3 | +
real(dp), parameter pietc::mu4 =-u4 | +
real(dp), parameter pietc::mu5 =-u5 | +
real(dp), parameter pietc::mu6 =-u6 | +
half
+ +Definition at line 32 of file pietc.f90.
+ +Referenced by pfun::atanh_d(), pfun::atanh_s(), pmat4::axial33_d(), psym2::eigensym2(), psym2::eigensym2d(), pmat4::expmat(), pmat4::expmatd(), pmat4::expmatdd(), psym2::expsym2d(), pesg::get_qx(), pesg::get_qxd(), pfun::hav_d(), pmat4::hav_d(), pfun::hav_s(), pfun::havh_d(), pfun::havh_s(), psym2::logsym2d(), psym2::sqrtsym2d_e(), psym2::sqrtsym2d_t(), and pesg::xttoxs1().
+ +third
+ +Definition at line 33 of file pietc.f90.
+ +Referenced by pfun::atanh_d(), and pesg::zmtozt1().
+ +fifth
+ +Definition at line 35 of file pietc.f90.
+ +Referenced by pfun::atanh_d(), pesg::bestesg_geo(), and pesg::bestesg_map().
+ +real(dp), parameter pietc::phi =1.6180339887498948482045868343656381177203091798057628621354e0_dp | +
real(dp), parameter pietc::pi =3.1415926535897932384626433832795028841971693993751058209749e0_dp | +
real(dp), parameter pietc::pi2 =6.2831853071795864769252867665590057683943387987502116419498e0_dp | +
real(dp), parameter pietc::pih =1.5707963267948966192313216916397514420985846996875529104874e0_dp | +
pi*half
+ +Definition at line 44 of file pietc.f90.
+ +Referenced by pesg::gaulegh(), and pesg::zmtozt().
+ +real(dp), parameter pietc::r2 =1.4142135623730950488016887242096980785696718753769480731766e0_dp | +
real(dp), parameter pietc::r3 =1.7320508075688772935274463415058723669428052538103806280558e0_dp | +
real(dp), parameter pietc::r5 =2.2360679774997896964091736687312762354406183596115257242708e0_dp | +
real(dp), parameter pietc::rpi =1.7724538509055160272981674833411451827975494561223871282138e0_dp | +
real(dp), parameter pietc::rtod =180/pi | +
radians to degrees
+ +Definition at line 55 of file pietc.f90.
+ +Referenced by pmat5::dctog(), pesg::get_meanqd(), pesg::guessak_map(), pesg::hgrid_ak_c(), pesg::hgrid_ak_dd(), pesg::hgrid_ak_dd_c(), regional_grid(), pesg::xmtog_ak_dd_g(), and pesg::xmtog_ak_dd_m().
+ +real(dp), parameter pietc::s10 =.173648177666930348851716626769314796000375677184069387236241e0_dp | +
real(dp), parameter pietc::s11 =.195090322016128267848284868477022240927691617751954807754502e0_dp | +
real(dp), parameter pietc::s13 =.222520933956314404288902564496794759466355568764544955311987e0_dp | +
real(dp), parameter pietc::s15 =.258819045102520762348898837624048328349068901319930513814003e0_dp | +
real(dp), parameter pietc::s18 =.309016994374947424102293417182819058860154589902881431067724e0_dp | +
sine(18 deg)
+ +Definition at line 61 of file pietc.f90.
+ +Referenced by pesg::bestesg_geo(), and pesg::bestesg_map().
+ +real(dp), parameter pietc::s20 =.342020143325668733044099614682259580763083367514160628465048e0_dp | +
real(dp), parameter pietc::s22 =.382683432365089771728459984030398866761344562485627041433800e0_dp | +
real(dp), parameter pietc::s26 =.433883739117558120475768332848358754609990727787459876444547e0_dp | +
real(dp), parameter pietc::s30 =o2 | +
real(dp), parameter pietc::s34 =.555570233019602224742830813948532874374937190754804045924153e0_dp | +
real(dp), parameter pietc::s36 =.587785252292473129168705954639072768597652437643145991072272e0_dp | +
sine(36 deg)
+ +Definition at line 67 of file pietc.f90.
+ +Referenced by pesg::bestesg_geo(), and pesg::bestesg_map().
+ +real(dp), parameter pietc::s39 =.623489801858733530525004884004239810632274730896402105365549e0_dp | +
real(dp), parameter pietc::s40 =.642787609686539326322643409907263432907559884205681790324977e0_dp | +
real(dp), parameter pietc::s45 =or2 | +
real(dp), parameter pietc::s50 =.766044443118978035202392650555416673935832457080395245854045e0_dp | +
real(dp), parameter pietc::s51 =.781831482468029808708444526674057750232334518708687528980634e0_dp | +
real(dp), parameter pietc::s54 =.809016994374947424102293417182819058860154589902881431067724e0_dp | +
sine(54 deg)
+ +Definition at line 73 of file pietc.f90.
+ +Referenced by pesg::bestesg_geo(), and pesg::bestesg_map().
+ +real(dp), parameter pietc::s56 =.831469612302545237078788377617905756738560811987249963446124e0_dp | +
real(dp), parameter pietc::s64 =.900968867902419126236102319507445051165919162131857150053562e0_dp | +
real(dp), parameter pietc::s68 =.923879532511286756128183189396788286822416625863642486115097e0_dp | +
real(dp), parameter pietc::s70 =.939692620785908384054109277324731469936208134264464633090286e0_dp | +
real(dp), parameter pietc::s72 =.951056516295153572116439333379382143405698634125750222447305e0_dp | +
sine(72 deg)
+ +Definition at line 79 of file pietc.f90.
+ +Referenced by pesg::bestesg_geo(), and pesg::bestesg_map().
+ +real(dp), parameter pietc::s75 =.965925826289068286749743199728897367633904839008404550402343e0_dp | +
real(dp), parameter pietc::s77 =.974927912181823607018131682993931217232785800619997437648079e0_dp | +
real(dp), parameter pietc::s79 =.980785280403230449126182236134239036973933730893336095002916e0_dp | +
real(dp), parameter pietc::s80 =.984807753012208059366743024589523013670643251719842418790025e0_dp | +
logical, parameter pietc::t =.true. | +
for pain-relief in logical ops
+ +Definition at line 17 of file pietc.f90.
+ +Referenced by pfun::ahav_s(), pfun::ahavh_s(), pfun::atanh_s(), pfun::hav_s(), pmat4::hav_s(), pfun::havh_s(), pmat::iinvf(), pmat5::plrot(), pmat5::plroti(), and pmat::sldumf().
+ +real(dp), parameter pietc::u0 =0_dp | +
zero
+ +Definition at line 19 of file pietc.f90.
+ +Referenced by pmat2::avco(), pmat4::axial3_d(), psym2::chol2(), pmat::cldumf(), pmat2::clib_d(), pmat4::corral(), pmat4::ctoz(), pmat2::davco(), pmat5::dctocd(), pmat5::dctocdd(), pmat5::dctog(), pmat5::dctogr(), pmat2::ddfco(), pmat2::ddfco2(), pmat4::det_d(), pmat5::dgrtocd(), pmat5::dgrtocdd(), pmat5::dgtocd(), pmat5::dgtocdd(), pmat4::diagn_d(), pmat4::diagn_s(), pmat5::dininmap(), pmat5::dinivmap(), pmat::dinvl(), pmat::dl1lmf(), pmat2::dl1ubb(), pmat2::dl1ueb(), pmat::dldlmf(), pmat2::dldltb(), pmat2::dldub(), pmat::dldumf(), pmat4::dtarea_d(), psym2::eigensym2(), psym2::eigensym2d(), pmat4::expmat(), pmat4::expmatd(), pmat4::expmatdd(), psym2::expsym2d_e(), pesg::gaulegh(), pesg::get_edges(), pesg::get_meanqd(), pesg::get_meanqs(), pesg::get_qxd(), pmat4::gram_d(), pmat4::graml_d(), pmat5::gtoframev(), pesg::gtoxm_ak_rr_m(), pesg::hgrid_ak_rc(), pesg::hgrid_ak_rr(), pesg::hgrid_ak_rr_c(), psym2::logsym2(), psym2::logsym2d(), pmat4::normalize_d(), pmat4::normalized_d(), pmat4::plaingram_d(), pmat4::rottoq(), pmat4::rowgram(), pmat4::sarea_d(), psym2::sqrtsym2d_e(), psym2::sqrtsym2d_t(), pesg::xmtog_ak_rr_m(), pesg::xmtoxt(), pesg::xmtoxt1(), pesg::xstoxc1(), pesg::xttoxs(), pesg::xttoxs1(), pesg::zmtozt(), pmat4::znfun(), and pesg::zttozm().
+ +real(dp), parameter pietc::u1 =1_dp | +
one
+ +Definition at line 20 of file pietc.f90.
+ +Referenced by pfun::atanh_d(), pfun::atanh_s(), pmat2::avco(), pmat::cldumf(), pmat4::corral(), pmat4::ctoz(), pmat2::davco(), pmat5::dctoc(), pmat5::dctocd(), pmat5::dctocdd(), pmat2::ddfco(), pmat2::ddfco2(), pmat::dinvl(), pmat::dl1lmf(), pmat2::dl1ubb(), pmat2::dl1ueb(), pmat::dldlmf(), pmat2::dldltb(), pmat2::dldub(), pmat::dldumf(), pmat4::dtarea_d(), pmat::dudlmm(), pmat::dudlmv(), psym2::eigensym2(), psym2::eigensym2d(), pmat4::expmat(), pmat4::expmatd(), pmat4::expmatdd(), psym2::expsym2d_t(), pesg::gaulegh(), pesg::get_qofv(), pesg::get_qofvd(), pesg::get_qsofvs(), pmat4::gram_d(), pmat5::gtoframev(), pesg::gtoxm_ak_rr_m(), pesg::hgrid_ak_rc(), pesg::hgrid_ak_rr(), pesg::hgrid_ak_rr_c(), psym2::logsym2d(), pmat4::normalize_d(), pmat4::rottoq(), pmat4::rowgram(), pfun::sech_d(), pfun::sech_s(), pfun::sinhox_d(), pfun::sinhoxm_d(), pfun::sinox_d(), pfun::sinoxm_d(), psym2::sqrtsym2d(), psym2::sqrtsym2d_e(), psym2::sqrtsym2d_t(), pesg::xctoxs(), pesg::xmtog_ak_rr_m(), pesg::xstoxc(), pesg::xstoxc1(), pesg::xstoxt(), pesg::xttoxs(), pesg::xttoxs1(), pesg::zmtozt(), and pesg::zttozm().
+ +real(dp), parameter pietc::u2 =2_dp | +
two
+ +Definition at line 22 of file pietc.f90.
+ +Referenced by pfun::ahav_d(), pfun::ahav_s(), pfun::ahavh_d(), pfun::ahavh_s(), pmat5::dctoc(), pmat5::dctocd(), pmat5::dctocdd(), pmat4::dlltoxy_d(), pmat4::expmat(), pmat4::expmatd(), pmat4::expmatdd(), pesg::gaulegh(), pesg::get_qofvd(), pesg::get_qx(), pesg::get_qxd(), pmat4::rottoq(), pfun::sech_d(), pfun::sech_s(), pesg::xstoxc(), pesg::xstoxc1(), pesg::xstoxt(), pesg::xttoxs1(), pmat4::znfun(), and pmat4::zntay().
+ +real(dp), parameter pietc::u3 =3_dp | +
real(dp), parameter pietc::u4 =4_dp | +
real(dp), parameter pietc::u5 =5_dp | +
five
+ +Definition at line 28 of file pietc.f90.
+ +Referenced by pesg::bestesg_geo(), and pesg::bestesg_map().
+ +real(dp), parameter pietc::u6 =6_dp | +
complex(dpc), parameter pietc::z000 =c1 | +
complex(dpc), parameter pietc::z090 =ci | +
complex(dpc), parameter pietc::z180 =-z000 | +
complex(dpc), parameter pietc::z190 =-z010 | +
complex(dpc), parameter pietc::z191 =-z011 | +
complex(dpc), parameter pietc::z193 =-z013 | +
complex(dpc), parameter pietc::z195 =-z015 | +
complex(dpc), parameter pietc::z198 =-z018 | +
complex(dpc), parameter pietc::z200 =-z020 | +
complex(dpc), parameter pietc::z202 =-z022 | +
complex(dpc), parameter pietc::z206 =-z026 | +
complex(dpc), parameter pietc::z210 =-z030 | +
complex(dpc), parameter pietc::z214 =-z034 | +
complex(dpc), parameter pietc::z216 =-z036 | +
complex(dpc), parameter pietc::z219 =-z039 | +
complex(dpc), parameter pietc::z220 =-z040 | +
complex(dpc), parameter pietc::z225 =-z045 | +
complex(dpc), parameter pietc::z230 =-z050 | +
complex(dpc), parameter pietc::z231 =-z051 | +
complex(dpc), parameter pietc::z234 =-z054 | +
complex(dpc), parameter pietc::z236 =-z056 | +
complex(dpc), parameter pietc::z240 =-z060 | +
complex(dpc), parameter pietc::z244 =-z064 | +
complex(dpc), parameter pietc::z248 =-z068 | +
complex(dpc), parameter pietc::z250 =-z070 | +
complex(dpc), parameter pietc::z252 =-z072 | +
complex(dpc), parameter pietc::z255 =-z075 | +
complex(dpc), parameter pietc::z257 =-z077 | +
complex(dpc), parameter pietc::z259 =-z079 | +
complex(dpc), parameter pietc::z260 =-z080 | +
complex(dpc), parameter pietc::z270 =-z090 | +
complex(dpc), parameter pietc::z280 =-z100 | +
complex(dpc), parameter pietc::z281 =-z101 | +
complex(dpc), parameter pietc::z283 =-z103 | +
complex(dpc), parameter pietc::z285 =-z105 | +
complex(dpc), parameter pietc::z288 =-z108 | +
complex(dpc), parameter pietc::z290 =-z110 | +
complex(dpc), parameter pietc::z292 =-z112 | +
complex(dpc), parameter pietc::z296 =-z116 | +
complex(dpc), parameter pietc::z300 =-z120 | +
complex(dpc), parameter pietc::z304 =-z124 | +
complex(dpc), parameter pietc::z306 =-z126 | +
complex(dpc), parameter pietc::z309 =-z129 | +
complex(dpc), parameter pietc::z310 =-z130 | +
complex(dpc), parameter pietc::z315 =-z135 | +
complex(dpc), parameter pietc::z320 =-z140 | +
complex(dpc), parameter pietc::z321 =-z141 | +
complex(dpc), parameter pietc::z324 =-z144 | +
complex(dpc), parameter pietc::z326 =-z146 | +
complex(dpc), parameter pietc::z330 =-z150 | +
complex(dpc), parameter pietc::z334 =-z154 | +
complex(dpc), parameter pietc::z338 =-z158 | +
complex(dpc), parameter pietc::z340 =-z160 | +
complex(dpc), parameter pietc::z342 =-z162 | +
complex(dpc), parameter pietc::z345 =-z165 | +
complex(dpc), parameter pietc::z347 =-z167 | +
complex(dpc), parameter pietc::z349 =-z169 | +
+ grid_tools
+ 1.13.0
+
+ |
+
Standard integer, real, and complex single and double precision kinds. +More...
++Variables | |
integer, parameter | dp =selected_real_kind(15, 300) |
Double precision real kind. More... | |
integer, parameter | dpc =dp |
Double precision real kind. More... | |
integer, parameter | dpi =selected_int_kind(12) |
Double precision integer kind. More... | |
integer, parameter | sp =selected_real_kind(6, 30) |
Single precision real kind. More... | |
integer, parameter | spc =sp |
Single precision real kind. More... | |
integer, parameter | spi =selected_int_kind(6) |
Single precision integer kind. More... | |
Standard integer, real, and complex single and double precision kinds.
+ +integer, parameter pkind::dp =selected_real_kind(15, 300) | +
Double precision real kind.
+ +Definition at line 11 of file pkind.f90.
+ +Referenced by pmat4::det_id(), and regional_grid().
+ +integer, parameter pkind::dpc =dp | +
Double precision real kind.
+ +Definition at line 13 of file pkind.f90.
+ +Referenced by pmat4::ctoz(), and pmat4::ztocd().
+ +integer, parameter pkind::dpi =selected_int_kind(12) | +
Double precision integer kind.
+ +Definition at line 9 of file pkind.f90.
+ +Referenced by pmat4::det_id().
+ +integer, parameter pkind::sp =selected_real_kind(6, 30) | +
integer, parameter pkind::spc =sp | +
+ grid_tools
+ 1.13.0
+
+ |
+
Routines dealing with the operations of banded matrices. +More...
++Data Types | |
interface | avco |
interface | cad1b |
interface | cad2b |
interface | clipb |
interface | csb1b |
interface | csb2b |
interface | dfco |
interface | dfco2 |
interface | l1ubb |
interface | l1ueb |
interface | ldltb |
interface | ldub |
interface | linbv |
interface | ltdlbv |
interface | u1lbv |
interface | u1lbx |
interface | u1lby |
interface | u1lvb |
interface | u1lxb |
interface | u1lyb |
interface | udlb |
interface | udlbv |
interface | udlbx |
interface | udlby |
interface | udlvb |
interface | udlxb |
interface | udlyb |
interface | wrtb |
+Functions/Subroutines | |
subroutine, public | avco (na, nb, za, zb, z0, a, b) |
Compute one row of the coefficients for the compact mid-interval interpolation scheme characterized by matrix equation of the form, A.t = B.s (*) Where s is the vector of "source" values, t the staggered "target" values. More... | |
subroutine, public | cad1b (m1, mah1, mah2, mirror2, a) |
Incorporate operand symmetry and clip near end-1 of a band matrix operator. More... | |
subroutine, public | cad2b (m1, m2, mah1, mah2, mirror2, a) |
Incorporate symmetry and clip near end-2 of a band matrix. More... | |
pure subroutine | clib (m1, m2, mah1, mah2, a) |
Clip (set to zero) the unused values in a banded matrix representation. More... | |
pure subroutine | clib_c (m1, m2, mah1, mah2, a) |
Clip (set to zero) the unused values in a banded matrix representation. More... | |
pure subroutine | clib_d (m1, m2, mah1, mah2, a) |
Clip (set to zero) the unused values in a banded matrix representation. More... | |
subroutine, public | csb1b (m1, mah1, mah2, mirror2, a) |
Like cad1b, but for antisymmetric operand. More... | |
subroutine, public | csb2b (m1, m2, mah1, mah2, mirror2, a) |
Incorporate operand antisymmetry and clip near end-2 of a band matrix. More... | |
subroutine | davco (na, nb, za, zb, z0, a, b) |
Double precision version of subroutine avco for midpoint interpolation. More... | |
subroutine | ddfco (na, nb, za, zb, z0, a, b) |
Double precision version of dfco for compact differentiation coefficients. More... | |
subroutine | ddfco2 (na, nb, za, zb, z0, a, b) |
Double precision version of DFCO2 to get 2nd-derivative coefficients. More... | |
subroutine, public | dfco (na, nb, za, zb, z0, a, b) |
Compute one row of the coefficients for either the compact differencing or quadrature scheme characterized by matrix equation of the form, A.d = B.c (*) In either case, d is the derivative (or density) of cumulative c. More... | |
subroutine, public | dfco2 (na, nb, za, zb, z0, a, b) |
Compute one row of the coefficients for either the compact second- differencing scheme characterized by matrix equation of the form, A.d = B.c (*) Where d is the second-derivative of c. More... | |
subroutine | dl1ubb (m, mah1, mah2, mbh1, mbh2, a, b) |
Double precision version of L1UBB. More... | |
subroutine | dl1ueb (m, mah1, mah2, mbh1, mbh2, a, b) |
Double precision version of L1UEB. More... | |
subroutine | dldltb (m, mah1, a) |
[L]*[D]*[L^T] factoring of symmetric matrix A (root-free Cholesky). More... | |
subroutine | dldub (m, mah1, mah2, a) |
[L]*[D]*[U] factoring of double precision band-matrix. More... | |
subroutine | dltdlbv (m, mah1, a, v) |
Like udlbv, except assuming a is the ltdl decomposition of a SYMMETRIC banded matrix, with only the non-upper part provided (to avoid redundancy) More... | |
subroutine | dudlb (m, mah1, mah2, a) |
[U]*[D]*[L] factoring of double precision band matrix A [U] is upper triangular with unit main diagonal [D] is a diagonal matrix [L] is lower triangular with unit main diagonal More... | |
subroutine | dudlbv (m, mah1, mah2, a, v) |
Back-substitution step of linear inversion involving banded LDU factored matrix and input vector, v. More... | |
subroutine, public | l1ubb (m, mah1, mah2, mbh1, mbh2, a, b) |
[L]*[D]*[U] factoring of band-matrix [A], modify [B] –> [D**-1]*[B] [L] lower triangular with unit main diagonal [D] diagonal matrix [U] upper triangular with unit main diagonal [B] associated band matrix with same number of rows as [A] lower triangular elements of [A] by [D**-1]*[L]*[D], the upper by [U], replace matrix [B] by [D**-1]*[B]. More... | |
subroutine, public | l1ueb (m, mah1, mah2, mbh1, mbh2, a, b) |
Form the [L]*[D]*[U] decomposition of asymmetric band-matrix [A] replace all but row zero of the lower triangular elements of [A] by [D**-1]*[L]*[D], the upper by [U], replace matrix [B] by [D**-1]*[B]. More... | |
subroutine, public | ldltb (m, mah1, a) |
[L]*[D]*[L^T] factoring of symmetric band matrix A (root-free Cholesky). More... | |
subroutine, public | ldub (m, mah1, mah2, a) |
[L]*[D]*[U] factoring of single precision band-matrix. More... | |
subroutine, public | linbv (m, mah1, mah2, a, v) |
Solve LINear system with square Banded-matrix and vector V. More... | |
subroutine, public | ltdlbv (m, mah1, a, v) |
Like udlbv, except assuming a is the ldlt decomposition of a SYMMETRIC banded matrix, with only the non-upper part provided (to avoid redundancy) More... | |
subroutine | tavco (xa, xb, a, b) |
Simplified computation of compact midpoint interpolation coefficients. More... | |
subroutine | tdfco (xa, xb, a, b) |
Simplified computation of compact differencing coefficients to get derivatives d from cumulatives c, or vice-versa. More... | |
subroutine | tdfco2 (xa, xb, a, b) |
Simplified computation of compact 2nd-derivative coefficients. More... | |
subroutine, public | u1lbv (m, mah1, mah2, a, v) |
Back-substitution step ((U**-1)*(L**-1)) of linear inversion involving special Banded matrix and right-Vector. More... | |
subroutine, public | u1lbx (mx, mah1, mah2, my, a, v) |
Special back-substitution step of parallel linear inversion involving Banded matrix and X-right-Vectors. More... | |
subroutine, public | u1lby (my, mah1, mah2, mx, a, v) |
Special Back-substitution step of parallel linear inversion involving Banded matrix and Y-right-Vectors. More... | |
subroutine, public | u1lvb (m, mah1, mah2, v, a) |
Special Back-substitution step of linear inversion involving left-Vector and Banded matrix. More... | |
subroutine, public | u1lxb (mx, mah1, mah2, my, v, a) |
Special Back-substitution step of parallel linear inversion involving Banded matrix and X-left-Vectors. More... | |
subroutine, public | u1lyb (my, mah1, mah2, mx, v, a) |
Special Back-substitution step of parallel linear inversion involving special Banded matrix and Y-left-Vectors. More... | |
subroutine, public | udlb (m, mah1, mah2, a) |
[U]*[D]*[L] factoring of single precision band matrix A [U] is upper triangular with unit main diagonal [D] is a diagonal matrix [L] is lower triangular with unit main diagonal More... | |
subroutine, public | udlbv (m, mah1, mah2, a, v) |
Back-substitution step of linear inversion involving banded LDU factored matrix and input vector, v. More... | |
subroutine, public | udlbx (mx, mah1, mah2, my, a, v) |
Back-substitution step of parallel linear inversion involving Banded matrix and X-Vectors. More... | |
subroutine, public | udlby (my, mah1, mah2, mx, a, v) |
Back-substitution step of parallel linear inversion involving Banded matrix and Y-Vectors. More... | |
subroutine, public | udlvb (m, mah1, mah2, v, a) |
Back-substitution step of linear inversion involving row-Vector and Banded matrix. More... | |
subroutine, public | udlxb (mx, mah1, mah2, my, v, a) |
Back-substitution step of parallel linear inversion involving Banded matrix and row-X-Vectors. More... | |
subroutine, public | udlyb (my, mah1, mah2, mx, v, a) |
BACk-substitution step of parallel linear inversion involving Banded matrix and row-Y-Vectors. More... | |
subroutine, public | wrtb (m1, m2, mah1, mah2, a) |
Convenient routine for interactively writing out the real contents of a band matrix. More... | |
+Variables | |
real(dp), parameter | zero =0 |
Double precision real zero. More... | |
Routines dealing with the operations of banded matrices.
+The three special routines allow the construction of compact or conventional interpolation and differencing stencils to a general order of accuracy. These are:
Other routines provide the tools for applying compact schemes, and for the construction and application of recursive filters.
+Last modified (Purser): January 6th 2005 added nonredundant ldltb and ltdlbv routines for symmetric matrices, and remove obsolescent routines.
+ +subroutine, public pmat2::avco | +( | +integer(spi), intent(in) | +na, | +
+ | + | integer(spi), intent(in) | +nb, | +
+ | + | real(sp), dimension(na), intent(in) | +za, | +
+ | + | real(sp), dimension(nb), intent(in) | +zb, | +
+ | + | real(sp), intent(in) | +z0, | +
+ | + | real(sp), dimension(na), intent(out) | +a, | +
+ | + | real(sp), dimension(nb), intent(out) | +b | +
+ | ) | ++ |
Compute one row of the coefficients for the compact mid-interval interpolation scheme characterized by matrix equation of the form, A.t = B.s (*) Where s is the vector of "source" values, t the staggered "target" values.
+[in] | na | number of t-points operated on by this row of the A of (*) |
[in] | nb | number of s-points operated on by this row of the B of (*) |
[in] | za | coordinates of t-points used in this row of (*) |
[in] | zb | coordinates of s-points used in this row of (*) |
[in] | z0 | nominal point of application of this row of (*) |
[out] | a | the NA coefficients A for this scheme |
[out] | b | the NB coefficients B for this scheme |
subroutine, public pmat2::cad1b | +( | +integer(spi), intent(in) | +m1, | +
+ | + | integer(spi), intent(in) | +mah1, | +
+ | + | integer(spi), intent(in) | +mah2, | +
+ | + | integer(spi), intent(in) | +mirror2, | +
+ | + | real(sp), dimension(0:m1-1,-mah1:mah2), intent(inout) | +a | +
+ | ) | ++ |
Incorporate operand symmetry and clip near end-1 of a band matrix operator.
+[in] | m1 | Size of implied full matrix |
[in] | mah1 | Left semi-bandwidths (subdiagonals) of A. |
[in] | mah2 | Right semi-bandwidths (superdiagonals) of A. |
[in] | mirror2 | 2*location of symmetry axis relative to end-1 operand element. |
[in,out] | a | Input operator, output as symmetrized and clipped at end-1 Note: although m2 is not used here, it IS used in companion routines cad2b and csb2b; it is retained in the interests of uniformity. |
subroutine, public pmat2::cad2b | +( | +integer(spi), intent(in) | +m1, | +
+ | + | integer(spi), intent(in) | +m2, | +
+ | + | integer(spi), intent(in) | +mah1, | +
+ | + | integer(spi), intent(in) | +mah2, | +
+ | + | integer(spi), intent(in) | +mirror2, | +
+ | + | real(sp), dimension(1-m1:0,m1-m2-mah1:m1-m2+mah2), intent(inout) | +a | +
+ | ) | ++ |
Incorporate symmetry and clip near end-2 of a band matrix.
+[in] | m1 | Number of rows of full matrix A |
[in] | m2 | Number of columns of implied full matrix A |
[in] | mah1 | Left semi-bandwidths (subdiagonals) of A. |
[in] | mah2 | Right semi-bandwidths (superdiagonals) of A. |
[in] | mirror2 | 2*location of symmetry axis relative to end-2 operand element. |
[in,out] | a | Input operator, output as symmetrized and clipped at end-2. |
+
|
+ +private | +
Clip (set to zero) the unused values in a banded matrix representation.
+[in] | m1 | number of matrix rows |
[in] | m2 | number of matrix columns |
[in] | mah1 | number of subdiagonals |
[in] | mah2 | number of superdiagonals |
[in,out] | a | single precision matrix elements, stored compactly as rows |
pure subroutine pmat2::clib_c | +( | +integer(spi), intent(in) | +m1, | +
+ | + | integer(spi), intent(in) | +m2, | +
+ | + | integer(spi), intent(in) | +mah1, | +
+ | + | integer(spi), intent(in) | +mah2, | +
+ | + | complex(dpc), dimension(m1,-mah1:mah2), intent(inout) | +a | +
+ | ) | ++ |
Clip (set to zero) the unused values in a banded matrix representation.
+[in] | m1 | number of matrix rows |
[in] | m2 | number of matrix columns |
[in] | mah1 | number of subdiagonals |
[in] | mah2 | number of superdiagonals |
[in] | a | complex matrix elements, stored compactly as rows |
Definition at line 406 of file pmat2.f90.
+ +References pietc::c0.
+ +pure subroutine pmat2::clib_d | +( | +integer(spi), intent(in) | +m1, | +
+ | + | integer(spi), intent(in) | +m2, | +
+ | + | integer(spi), intent(in) | +mah1, | +
+ | + | integer(spi), intent(in) | +mah2, | +
+ | + | real(dp), dimension(m1,-mah1:mah2), intent(inout) | +a | +
+ | ) | ++ |
Clip (set to zero) the unused values in a banded matrix representation.
+[in] | m1 | number of matrix rows |
[in] | m2 | number of matrix columns |
[in] | mah1 | number of subdiagonals |
[in] | mah2 | number of superdiagonals |
[in] | a | double precision matrix elements, stored compactly as rows |
Definition at line 388 of file pmat2.f90.
+ +References pietc::u0.
+ +subroutine, public pmat2::csb1b | +( | +integer(spi), intent(in) | +m1, | +
+ | + | integer(spi), intent(in) | +mah1, | +
+ | + | integer(spi), intent(in) | +mah2, | +
+ | + | integer(spi), intent(in) | +mirror2, | +
+ | + | real(sp), dimension(0:m1-1,-mah1:mah2), intent(inout) | +a | +
+ | ) | ++ |
Like cad1b, but for antisymmetric operand.
+[in] | m1 | Size of implied full matrix |
[in] | mah1 | Left semi-bandwidths (subdiagonals) of A. |
[in] | mah2 | Right semi-bandwidths (superdiagonals) of A. |
[in] | mirror2 | 2*location of symmetry axis relative to end-1 operand element. |
[in,out] | a | Input operator, output as clipped antisymmetric at end-1. |
subroutine, public pmat2::csb2b | +( | +integer(spi), intent(in) | +m1, | +
+ | + | integer(spi), intent(in) | +m2, | +
+ | + | integer(spi), intent(in) | +mah1, | +
+ | + | integer(spi), intent(in) | +mah2, | +
+ | + | integer(spi), intent(in) | +mirror2, | +
+ | + | real(sp), dimension(1-m1:0,m1-m2-mah1:m1-m2+mah2), intent(inout) | +a | +
+ | ) | ++ |
Incorporate operand antisymmetry and clip near end-2 of a band matrix.
+[in] | m1 | Number of rows of matrix A |
[in] | m2 | Number of columns of matrix A |
[in] | mah1 | Left semi-bandwidths (subdiagonals) of A. |
[in] | mah2 | Right semi-bandwidths (superdiagonals) of A. |
[in] | mirror2 | 2*location of symmetry axis relative to end-2 operand element. |
[in,out] | a | Input operator, output as antisymmetrized and clipped at end-2. |
subroutine pmat2::davco | +( | +integer(spi), intent(in) | +na, | +
+ | + | integer(spi), intent(in) | +nb, | +
+ | + | real(dp), dimension(na), intent(in) | +za, | +
+ | + | real(dp), dimension(nb), intent(in) | +zb, | +
+ | + | real(dp), intent(in) | +z0, | +
+ | + | real(dp), dimension(na), intent(out) | +a, | +
+ | + | real(dp), dimension(nb), intent(out) | +b | +
+ | ) | ++ |
Double precision version of subroutine avco for midpoint interpolation.
+[in] | na | number of target points involved in formula |
[in] | nb | number of source points involved in formula |
[in] | za | coordinates of target points |
[in] | zb | coordinates of source points |
[in] | z0 | nominal point of application of compact interpolation formula |
[out] | a | the coefficients A for this scheme |
[out] | b | the coefficients B for this scheme |
Definition at line 134 of file pmat2.f90.
+ +References pietc::u0, and pietc::u1.
+ +Referenced by tavco().
+ +subroutine pmat2::ddfco | +( | +integer(spi), intent(in) | +na, | +
+ | + | integer(spi), intent(in) | +nb, | +
+ | + | real(dp), dimension(na), intent(in) | +za, | +
+ | + | real(dp), dimension(nb), intent(in) | +zb, | +
+ | + | real(dp), intent(in) | +z0, | +
+ | + | real(dp), dimension(na), intent(out) | +a, | +
+ | + | real(dp), dimension(nb), intent(out) | +b | +
+ | ) | ++ |
Double precision version of dfco for compact differentiation coefficients.
+[in] | na | number of A coefficients multiplying derivatives |
[in] | nb | number of B coefficients multiplying cumulatives |
[in] | za | coordinates of the density (d) points |
[in] | zb | coordinates of the cumulative (c) points |
[in] | z0 | nominal point of application of the compact formula |
[in] | a | the A-coefficients for this scheme |
[in] | b | the B-coefficients for this scheme |
Definition at line 225 of file pmat2.f90.
+ +References pietc::u0, and pietc::u1.
+ +Referenced by tdfco().
+ +subroutine pmat2::ddfco2 | +( | +integer(spi), intent(in) | +na, | +
+ | + | integer(spi), intent(in) | +nb, | +
+ | + | real(dp), dimension(na), intent(in) | +za, | +
+ | + | real(dp), dimension(nb), intent(in) | +zb, | +
+ | + | real(dp), intent(in) | +z0, | +
+ | + | real(dp), dimension(na), intent(out) | +a, | +
+ | + | real(dp), dimension(nb), intent(out) | +b | +
+ | ) | ++ |
Double precision version of DFCO2 to get 2nd-derivative coefficients.
+[in] | na | number of 2nd-derivative (d) points in compact formula |
[in] | nb | number of source points (c) |
[in] | za | coordinates of 2nd-derivative points |
[in] | zb | coordinates of source points |
[in] | z0 | nominal coordinate of application |
[in] | a | coefficients A for derivative points |
[in] | b | coefficients B for source points |
Definition at line 318 of file pmat2.f90.
+ +References pietc::u0, and pietc::u1.
+ +Referenced by tdfco2().
+ +subroutine, public pmat2::dfco | +( | +integer(spi), intent(in) | +na, | +
+ | + | integer(spi), intent(in) | +nb, | +
+ | + | real(sp), dimension(na), intent(in) | +za, | +
+ | + | real(sp), dimension(nb), intent(in) | +zb, | +
+ | + | real(sp), intent(in) | +z0, | +
+ | + | real(sp), dimension(na), intent(out) | +a, | +
+ | + | real(sp), dimension(nb), intent(out) | +b | +
+ | ) | ++ |
Compute one row of the coefficients for either the compact differencing or quadrature scheme characterized by matrix equation of the form, A.d = B.c (*) In either case, d is the derivative (or density) of cumulative c.
+[in] | na | number of d-points operated on by this row of the A of (*) |
[in] | nb | number of c-points operated on by this row of the B of (*) |
[in] | za | coordinates of d-points used in this row of (*) |
[in] | zb | coordinates of c-points used in this row of (*) |
[in] | z0 | nominal point of application of this row of (*) |
[in] | A | the A-coefficients for this scheme |
[in] | B | the B-coefficients for this scheme |
subroutine, public pmat2::dfco2 | +( | +integer(spi), intent(in) | +na, | +
+ | + | integer(spi), intent(in) | +nb, | +
+ | + | real(sp), dimension(na), intent(in) | +za, | +
+ | + | real(sp), dimension(nb), intent(in) | +zb, | +
+ | + | real(sp), intent(in) | +z0, | +
+ | + | real(sp), dimension(na), intent(out) | +a, | +
+ | + | real(sp), dimension(nb), intent(out) | +b | +
+ | ) | ++ |
Compute one row of the coefficients for either the compact second- differencing scheme characterized by matrix equation of the form, A.d = B.c (*) Where d is the second-derivative of c.
+[in] | na | number of d-points operated on by this row of the A of (*) |
[in] | nb | number of c-points operated on by this row of the B of (*) |
[in] | za | coordinates of d-points used in this row of (*) |
[in] | zb | coordinates of c-points used in this row of (*) |
[in] | z0 | nominal point of application of this row of (*) |
[in] | a | the NA coefficients A for this scheme |
[in] | b | the NB coefficients B for this scheme |
subroutine pmat2::dl1ubb | +( | +integer(spi), intent(in) | +m, | +
+ | + | integer(spi), intent(in) | +mah1, | +
+ | + | integer(spi), intent(in) | +mah2, | +
+ | + | integer(spi), intent(in) | +mbh1, | +
+ | + | integer(spi), intent(in) | +mbh2, | +
+ | + | real(dp), dimension(m,-mah1:mah2), intent(inout) | +a, | +
+ | + | real(dp), dimension(m,-mbh1:mbh2), intent(inout) | +b | +
+ | ) | ++ |
Double precision version of L1UBB.
+[in] | m | Number of rows of A and B |
[in] | mah1 | left half-width of fortran array A |
[in] | mah2 | right half-width of fortran array A |
[in] | mbh1 | left half-width of fortran array B |
[in] | mbh2 | left half-width of fortran array B |
[in,out] | a | Input double precision band matrix A; output factors encoded as [D**-1 * L * D]+[U-I] |
[in,out] | b | Input double precision band matrix B; output [D**-1 B] |
subroutine pmat2::dl1ueb | +( | +integer(spi), intent(in) | +m, | +
+ | + | integer(spi), intent(in) | +mah1, | +
+ | + | integer(spi), intent(in) | +mah2, | +
+ | + | integer(spi), intent(in) | +mbh1, | +
+ | + | integer(spi), intent(in) | +mbh2, | +
+ | + | real(dp), dimension(0:,-mah1:), intent(inout) | +a, | +
+ | + | real(dp), dimension(:,-mbh1:), intent(inout) | +b | +
+ | ) | ++ |
Double precision version of L1UEB.
+[in] | m | number of rows of band matrices A and B |
[in] | mah1 | number of subdiagonals of A |
[in] | mah2 | number of superdiagonals of A |
[in] | mbh1 | number of subdiagonals of B |
[in] | mbh2 | number of superdiagonals of B |
[in,out] | a | Input matrix A; output encoded L, D, U, factors |
[in,out] | b | Input matrix B; output D**-1 * B |
subroutine pmat2::dldltb | +( | +integer(spi), intent(in) | +m, | +
+ | + | integer(spi), intent(in) | +mah1, | +
+ | + | real(dp), dimension(m,-mah1:0), intent(inout) | +a | +
+ | ) | ++ |
[L]*[D]*[L^T] factoring of symmetric matrix A (root-free Cholesky).
+[L] is lower triangular with unit main diagonal [D] is a diagonal matrix
[in] | m | size of symmetric matrix A |
[in] | mah1 | semi-bandwidth of matrix A |
[in,out] | a | input lower (left) part of symmetric A; output its factors encoded as [L-I]+[D**-1] |
subroutine pmat2::dldub | +( | +integer(spi), intent(in) | +m, | +
+ | + | integer(spi), intent(in) | +mah1, | +
+ | + | integer(spi), intent(in) | +mah2, | +
+ | + | real(dp), dimension(m,-mah1:mah2), intent(inout) | +a | +
+ | ) | ++ |
[L]*[D]*[U] factoring of double precision band-matrix.
+[L] is lower triangular with unit main diagonal [D] is a diagonal matrix [U] is upper triangular with unit main diagonal
[in] | m | The number of rows of array A |
[in] | mah1 | the left half-bandwidth of fortran array A |
[in] | mah2 | the right half-bandwidth of fortran array A |
[in,out] | a | input as the asymmetric band matrix, [A]. On output, it contains the factors in the encoding, [L-I]+[D**-1]+[U-I], I=identity. |
Definition at line 571 of file pmat2.f90.
+ +References pietc::u0, and pietc::u1.
+ +Referenced by dudlb().
+ +
+
|
+ +private | +
Like udlbv, except assuming a is the ltdl decomposition of a SYMMETRIC banded matrix, with only the non-upper part provided (to avoid redundancy)
+[in] | m | the number of rows assumed for A and for V |
[in] | mah1 | the left half-bandwidth of fortran array A |
[in,out] | a | encodes the (L)*(D**-1)*(U) factorization of the linear-system matrix, as supplied by subroutine LDUB |
[in,out] | v | input as right-hand-side vector, output as solution vector |
+
|
+ +private | +
[U]*[D]*[L] factoring of double precision band matrix A [U] is upper triangular with unit main diagonal [D] is a diagonal matrix [L] is lower triangular with unit main diagonal
+[in] | m | number of rows of A |
[in] | mah1 | number of subdiagonals of A |
[in] | mah2 | number of superdiagonals of A |
[in,out] | a | Input double precision band matrix A; output its factors encoded as [U-I]+[D**-1]+[L-I] |
Definition at line 704 of file pmat2.f90.
+ +References dldub().
+ +
+
|
+ +private | +
Back-substitution step of linear inversion involving banded LDU factored matrix and input vector, v.
+Output vector is [U**-1]*[D**-1]*[L**-1]*v
+[in] | m | the number of rows assumed for A and for V |
[in] | mah1 | the left half-bandwidth of fortran array A |
[in] | mah2 | the right half-bandwidth of fortran array A |
[in] | a | encodes the L*D*U factorization of the linear-system matrix, as supplied by subroutine LDUB, in double precision |
[in,out] | v | input as right-hand-side vector, output as solution vector |
subroutine, public pmat2::l1ubb | +( | +integer(spi), intent(in) | +m, | +
+ | + | integer(spi), intent(in) | +mah1, | +
+ | + | integer(spi), intent(in) | +mah2, | +
+ | + | integer(spi), intent(in) | +mbh1, | +
+ | + | integer(spi), intent(in) | +mbh2, | +
+ | + | real(sp), dimension(m,-mah1:mah2), intent(inout) | +a, | +
+ | + | real(sp), dimension(m,-mbh1:mbh2), intent(inout) | +b | +
+ | ) | ++ |
[L]*[D]*[U] factoring of band-matrix [A], modify [B] –> [D**-1]*[B] [L] lower triangular with unit main diagonal [D] diagonal matrix [U] upper triangular with unit main diagonal [B] associated band matrix with same number of rows as [A] lower triangular elements of [A] by [D**-1]*[L]*[D], the upper by [U], replace matrix [B] by [D**-1]*[B].
+[in] | m | Number of rows of A and B |
[in] | mah1 | number of subdiagonals of A |
[in] | mah2 | number of superdiagonals of A |
[in] | mbh1 | number of subdiagonals of B |
[in] | mbh2 | number of superdiagonals of B |
[in,out] | a | input as band matrix, output as lower and upper triangulars with 1s implicitly assumed to lie on the main diagonal. The product of these triangular matrices is [D**-1]*[A], where [D] is a diagonal matrix. |
[in,out] | b | Input single precision band matrix B; output [D**-1 B] |
subroutine, public pmat2::l1ueb | +( | +integer(spi), intent(in) | +m, | +
+ | + | integer(spi), intent(in) | +mah1, | +
+ | + | integer(spi), intent(in) | +mah2, | +
+ | + | integer(spi), intent(in) | +mbh1, | +
+ | + | integer(spi), intent(in) | +mbh2, | +
+ | + | real(sp), dimension(0:m,-mah1:mah2), intent(inout) | +a, | +
+ | + | real(sp), dimension(m,-mbh1:mbh2), intent(inout) | +b | +
+ | ) | ++ |
Form the [L]*[D]*[U] decomposition of asymmetric band-matrix [A] replace all but row zero of the lower triangular elements of [A] by [D**-1]*[L]*[D], the upper by [U], replace matrix [B] by [D**-1]*[B].
+This is a special adaptation of L1UBB used to process quadrature weights for QEDBV etc in which the initial quadrature value is provided as input instead of being implicitly assumed zero (which is the case for QZDBV etc).
+[in] | m | number of rows of B, one less than the rows of A (which has "row 0") |
[in] | mah1 | left half-width of fortran array A |
[in] | mah2 | right half-width of fortran array A |
[in] | mbh1 | left half-width of fortran array B |
[in] | mbh2 | right half-width of fortran array B |
[in,out] | a | input as band matrix, output as lower and upper triangulars with 1s implicitly assumed to lie on the main diagonal. The product of these triangular matrices is [D**-1]*[A], where [D] is a diagonal matrix. |
[in,out] | b | in as band matrix, out as same but premultiplied by diagonal [D**-1] |
subroutine, public pmat2::ldltb | +( | +integer(spi), intent(in) | +m, | +
+ | + | integer(spi), intent(in) | +mah1, | +
+ | + | real(sp), dimension(m,-mah1:0), intent(inout) | +a | +
+ | ) | ++ |
[L]*[D]*[L^T] factoring of symmetric band matrix A (root-free Cholesky).
+[L] is lower triangular with unit main diagonal [D] is a diagonal matrix.
+[in] | m | size of symmetric matrix A |
[in] | mah1 | semi-bandwidth of matrix A |
[in,out] | a | input lower (left) part of symmetric A; output its factors encoded as [L-I]+[D**-1] |
subroutine, public pmat2::ldub | +( | +integer(spi), intent(in) | +m, | +
+ | + | integer(spi), intent(in) | +mah1, | +
+ | + | integer(spi), intent(in) | +mah2, | +
+ | + | real(sp), dimension(m,-mah1:mah2), intent(inout) | +a | +
+ | ) | ++ |
[L]*[D]*[U] factoring of single precision band-matrix.
+[L] is lower triangular with unit main diagonal [D] is a diagonal matrix [U] is upper triangular with unit main diagonal
[in] | m | The number of rows of array A |
[in] | mah1 | the left half-bandwidth of fortran array A |
[in] | mah2 | the right half-bandwidth of fortran array A |
[in,out] | a | input as the asymmetric band matrix, [A]. On output, it contains the factors in the encoding, [L-I]+[D**-1]+[U-I], I=identity. |
subroutine, public pmat2::linbv | +( | +integer(spi), intent(in) | +m, | +
+ | + | integer(spi), intent(in) | +mah1, | +
+ | + | integer(spi), intent(in) | +mah2, | +
+ | + | real(sp), dimension(m,-mah1:mah2), intent(inout) | +a, | +
+ | + | real(sp), dimension(m), intent(inout) | +v | +
+ | ) | ++ |
Solve LINear system with square Banded-matrix and vector V.
+[in] | m | order of matrix A |
[in] | mah1 | left half-bandwidth of A |
[in] | mah2 | right half-bandwidth of A |
[in,out] | a | system matrix on input, its [L]*[D**-1]*[U] factorization on exit |
[in,out] | v | vector of right-hand-sides on input, solution vector on exit |
subroutine, public pmat2::ltdlbv | +( | +integer(spi), intent(in) | +m, | +
+ | + | integer(spi), intent(in) | +mah1, | +
+ | + | real(sp), dimension(m,-mah1:0), intent(in) | +a, | +
+ | + | real(sp), dimension(m), intent(inout) | +v | +
+ | ) | ++ |
Like udlbv, except assuming a is the ldlt decomposition of a SYMMETRIC banded matrix, with only the non-upper part provided (to avoid redundancy)
+[in] | m | the number of rows assumed for A and for V |
[in] | mah1 | the left half-bandwidth of fortran array A |
[in] | a | encodes the L*D*L^T factorization of the linear-system matrix, as supplied by subroutine LDLTB |
[in,out] | v | input as right-hand-side vector, output as solution vector |
subroutine pmat2::tavco | +( | +real(dp), dimension(:), intent(in) | +xa, | +
+ | + | real(dp), dimension(:), intent(in) | +xb, | +
+ | + | real(dp), dimension(:), intent(out) | +a, | +
+ | + | real(dp), dimension(:), intent(out) | +b | +
+ | ) | ++ |
Simplified computation of compact midpoint interpolation coefficients.
+[in] | xa | coordinates of target points relative to point of application |
[in] | xb | coordinates of source points relative to point of application |
[out] | a | the coefficients A for this scheme |
[out] | b | the coefficients B for this scheme |
subroutine pmat2::tdfco | +( | +real(dp), dimension(:), intent(in) | +xa, | +
+ | + | real(dp), dimension(:), intent(in) | +xb, | +
+ | + | real(dp), dimension(:), intent(out) | +a, | +
+ | + | real(dp), dimension(:), intent(out) | +b | +
+ | ) | ++ |
Simplified computation of compact differencing coefficients to get derivatives d from cumulatives c, or vice-versa.
+[in] | xa | coordinates, relative to point of application, of d values |
[in] | xb | coordinates, relatuve to point of application, of c values |
[in] | a | the coefficients, A, for this scheme |
[in] | b | the coefficients, B, for this scheme |
subroutine pmat2::tdfco2 | +( | +real(dp), dimension(:), intent(in) | +xa, | +
+ | + | real(dp), dimension(:), intent(in) | +xb, | +
+ | + | real(dp), dimension(:), intent(out) | +a, | +
+ | + | real(dp), dimension(:), intent(out) | +b | +
+ | ) | ++ |
Simplified computation of compact 2nd-derivative coefficients.
+[in] | xa | Relative coordinates of derivatives |
[in] | xb | Relative coordinates of source points |
[out] | a | coefficients A for the derivatives in compact scheme |
[out] | b | coefficients B for source values in the compact scheme |
subroutine, public pmat2::u1lbv | +( | +integer(spi), intent(in) | +m, | +
+ | + | integer(spi), intent(in) | +mah1, | +
+ | + | integer(spi), intent(in) | +mah2, | +
+ | + | real(sp), dimension(m,-mah1:mah2), intent(in) | +a, | +
+ | + | real(sp), dimension(m), intent(inout) | +v | +
+ | ) | ++ |
Back-substitution step ((U**-1)*(L**-1)) of linear inversion involving special Banded matrix and right-Vector.
+[in] | m | the number of rows assumed for A and for V |
[in] | mah1 | the left half-bandwidth of fortran array A |
[in] | mah2 | the right half-bandwidth of fortran array A |
[in] | a | encodes the [L]*[U] factorization of the linear-system matrix, as supplied by subroutine L1UBB |
[in,out] | v | input as right-hand-side vector, output as solution vector |
subroutine, public pmat2::u1lbx | +( | +integer(spi), intent(in) | +mx, | +
+ | + | integer(spi), intent(in) | +mah1, | +
+ | + | integer(spi), intent(in) | +mah2, | +
+ | + | integer(spi), intent(in) | +my, | +
+ | + | real(sp), dimension(mx,-mah1:mah2), intent(in) | +a, | +
+ | + | real(sp), dimension(mx,my), intent(inout) | +v | +
+ | ) | ++ |
Special back-substitution step of parallel linear inversion involving Banded matrix and X-right-Vectors.
+[in] | mx | the number of rows assumed for A and length of X-vectors stored in V |
[in] | mah1 | the left half-bandwidth of fortran array A |
[in] | mah2 | the right half-bandwidth of fortran array A |
[in] | my | number of parallel X-vectors inverted |
[in] | a | encodes the [L]*[U] factorization of the linear-system matrix, as supplied by subroutine L1UBB |
[in,out] | v | input as right-hand-side vectors, output as solution vectors |
subroutine, public pmat2::u1lby | +( | +integer(spi), intent(in) | +my, | +
+ | + | integer(spi), intent(in) | +mah1, | +
+ | + | integer(spi), intent(in) | +mah2, | +
+ | + | integer(spi), intent(in) | +mx, | +
+ | + | real(sp), dimension(my,-mah1:mah2), intent(in) | +a, | +
+ | + | real(sp), dimension(mx,my), intent(inout) | +v | +
+ | ) | ++ |
Special Back-substitution step of parallel linear inversion involving Banded matrix and Y-right-Vectors.
+[in] | my | the number of rows assumed for A and length of Y-vectors stored in V |
[in] | mah1 | the left half-bandwidth of fortran array A |
[in] | mah2 | the right half-bandwidth of fortran array A |
[in] | mx | number of parallel Y-vectors inverted |
[in] | a | encodes the [L]*[U] factorization of the linear-system matrix, as supplied by subroutine L1UBB |
[in,out] | v | input as right-hand-side vectors, output as solution vectors |
subroutine, public pmat2::u1lvb | +( | +integer(spi), intent(in) | +m, | +
+ | + | integer(spi), intent(in) | +mah1, | +
+ | + | integer(spi), intent(in) | +mah2, | +
+ | + | real(sp), dimension(m), intent(inout) | +v, | +
+ | + | real(sp), dimension(m,-mah1:mah2), intent(in) | +a | +
+ | ) | ++ |
Special Back-substitution step of linear inversion involving left-Vector and Banded matrix.
+[in] | m | the number of rows assumed for A and columns for V |
[in] | mah1 | the left half-bandwidth of fortran array A |
[in] | mah2 | the right half-bandwidth of fortran array A |
[in,out] | v | input as right-hand-side row-vector, output as solution vector |
[in] | a | encodes the special [L]*[U] factorization of the linear-system matrix, as supplied by subroutine L1UBB |
subroutine, public pmat2::u1lxb | +( | +integer(spi), intent(in) | +mx, | +
+ | + | integer(spi), intent(in) | +mah1, | +
+ | + | integer(spi), intent(in) | +mah2, | +
+ | + | integer(spi), intent(in) | +my, | +
+ | + | real(sp), dimension(mx,my), intent(inout) | +v, | +
+ | + | real(sp), dimension(mx,-mah1:mah2), intent(in) | +a | +
+ | ) | ++ |
Special Back-substitution step of parallel linear inversion involving Banded matrix and X-left-Vectors.
+[in] | mx | the number of rows assumed for A and length of X-vectors stored in V |
[in] | mah1 | the left half-bandwidth of fortran array A |
[in] | mah2 | the right half-bandwidth of fortran array A |
[in] | my | number of parallel X-vectors inverted |
[in] | v | input as right-hand-side vectors, output as solution vectors |
[in] | a | encodes the special [L]*[U] factorization of the linear-system matrix, as supplied by subroutine L1UBB |
subroutine, public pmat2::u1lyb | +( | +integer(spi), intent(in) | +my, | +
+ | + | integer(spi), intent(in) | +mah1, | +
+ | + | integer(spi), intent(in) | +mah2, | +
+ | + | integer(spi), intent(in) | +mx, | +
+ | + | real(sp), dimension(mx,my), intent(inout) | +v, | +
+ | + | real(sp), dimension(my,-mah1:mah2), intent(in) | +a | +
+ | ) | ++ |
Special Back-substitution step of parallel linear inversion involving special Banded matrix and Y-left-Vectors.
+[in] | my | the number of rows assumed for A and length of Y-vectors stored in V |
[in] | mah1 | the left half-bandwidth of fortran array A |
[in] | mah2 | the right half-bandwidth of fortran array A |
[in] | mx | number of parallel Y-vectors inverted |
[in,out] | v | input as right-hand-side vectors, output as solution vectors |
[in] | a | encodes the [L]*[U] factorization of the linear-system matrix, as supplied by subroutine L1UBB |
subroutine, public pmat2::udlb | +( | +integer(spi), intent(in) | +m, | +
+ | + | integer(spi), intent(in) | +mah1, | +
+ | + | integer(spi), intent(in) | +mah2, | +
+ | + | real(sp), dimension(m,-mah1:mah2), intent(inout) | +a | +
+ | ) | ++ |
[U]*[D]*[L] factoring of single precision band matrix A [U] is upper triangular with unit main diagonal [D] is a diagonal matrix [L] is lower triangular with unit main diagonal
+[in] | m | number of rows of A |
[in] | mah1 | number of subdiagonals of A |
[in] | mah2 | number of superdiagonals of A |
[in,out] | a | Input single precision band matrix A; output its factors encoded as [U-I]+[D**-1]+[L-I] |
subroutine, public pmat2::udlbv | +( | +integer(spi), intent(in) | +m, | +
+ | + | integer(spi), intent(in) | +mah1, | +
+ | + | integer(spi), intent(in) | +mah2, | +
+ | + | real(sp), dimension(m,-mah1:mah2), intent(in) | +a, | +
+ | + | real(sp), dimension(m), intent(inout) | +v | +
+ | ) | ++ |
Back-substitution step of linear inversion involving banded LDU factored matrix and input vector, v.
+Output vector is [U**-1]*[D**-1]*[L**-1]*v
+[in] | m | the number of rows assumed for A and for V |
[in] | mah1 | the left half-bandwidth of fortran array A |
[in] | mah2 | the right half-bandwidth of fortran array A |
[in] | a | encodes the L*D*U factorization of the linear-system matrix, as supplied by subroutine LDUB, in single precision |
[in,out] | v | input as right-hand-side vector, output as solution vector |
subroutine, public pmat2::udlbx | +( | +integer(spi), intent(in) | +mx, | +
+ | + | integer(spi), intent(in) | +mah1, | +
+ | + | integer(spi), intent(in) | +mah2, | +
+ | + | integer(spi), intent(in) | +my, | +
+ | + | real(sp), dimension(mx,-mah1:mah2), intent(in) | +a, | +
+ | + | real(sp), dimension(mx,my), intent(inout) | +v | +
+ | ) | ++ |
Back-substitution step of parallel linear inversion involving Banded matrix and X-Vectors.
+[in] | mx | the number of rows assumed for A and length of X-vectors stored in V |
[in] | mah1 | the left half-bandwidth of fortran array A |
[in] | mah2 | the right half-bandwidth of fortran array A |
[in] | my | number of parallel X-vectors inverted |
[in] | a | encodes the (L)*(D**-1)*(U) factorization of the linear-system matrix, as supplied by subroutine LDUB or, if N=NA, by LDUB |
[in,out] | v | input as right-hand-side vectors, output as solution vectors |
subroutine, public pmat2::udlby | +( | +integer(spi), intent(in) | +my, | +
+ | + | integer(spi), intent(in) | +mah1, | +
+ | + | integer(spi), intent(in) | +mah2, | +
+ | + | integer(spi), intent(in) | +mx, | +
+ | + | real(sp), dimension(my,-mah1:mah2), intent(in) | +a, | +
+ | + | real(sp), dimension(mx,my), intent(inout) | +v | +
+ | ) | ++ |
Back-substitution step of parallel linear inversion involving Banded matrix and Y-Vectors.
+[in] | my | the number of rows assumed for A and length of Y-vectors stored in V |
[in] | mah1 | the left half-bandwidth of fortran array A |
[in] | mah2 | the right half-bandwidth of fortran array A |
[in] | mx | number of parallel Y-vectors inverted |
[in] | a | encodes the (L)*(D**-1)*(U) factorization of the linear-system matrix, as supplied by subroutine LDUB or, if N=NA, by LDUB |
[in,out] | v | input as right-hand-side vectors, output as solution vectors |
subroutine, public pmat2::udlvb | +( | +integer(spi), intent(in) | +m, | +
+ | + | integer(spi), intent(in) | +mah1, | +
+ | + | integer(spi), intent(in) | +mah2, | +
+ | + | real(sp), dimension(m), intent(inout) | +v, | +
+ | + | real(sp), dimension(m,-mah1:mah2), intent(in) | +a | +
+ | ) | ++ |
Back-substitution step of linear inversion involving row-Vector and Banded matrix.
+[in] | m | the number of rows assumed for A and columns for V |
[in] | mah1 | the left half-bandwidth of fortran array A |
[in] | mah2 | the right half-bandwidth of fortran array A |
[in,out] | v | input as right-hand-side row-vector, output as solution vector |
[in] | a | encodes the (L)*(D**-1)*(U) factorization of the linear-system matrix, as supplied by subroutine LDUB |
subroutine, public pmat2::udlxb | +( | +integer(spi), intent(in) | +mx, | +
+ | + | integer(spi), intent(in) | +mah1, | +
+ | + | integer(spi), intent(in) | +mah2, | +
+ | + | integer(spi), intent(in) | +my, | +
+ | + | real(sp), dimension(mx,my), intent(inout) | +v, | +
+ | + | real(sp), dimension(mx,-mah1:mah2), intent(in) | +a | +
+ | ) | ++ |
Back-substitution step of parallel linear inversion involving Banded matrix and row-X-Vectors.
+[in] | mx | the number of rows assumed for A and length of X-vectors stored in V |
[in] | mah1 | the left half-bandwidth of fortran array A |
[in] | mah2 | the right half-bandwidth of fortran array A |
[in] | my | number of parallel X-vectors inverted |
[in,out] | v | input as right-hand-side vectors, output as solution vectors |
[in] | a | encodes the (L)*(D**-1)*(U) factorization of the linear-system matrix, as supplied by subroutine LDUB |
subroutine, public pmat2::udlyb | +( | +integer(spi), intent(in) | +my, | +
+ | + | integer(spi), intent(in) | +mah1, | +
+ | + | integer(spi), intent(in) | +mah2, | +
+ | + | integer(spi), intent(in) | +mx, | +
+ | + | real(sp), dimension(mx,my), intent(inout) | +v, | +
+ | + | real(sp), dimension(my,-mah1:mah2), intent(in) | +a | +
+ | ) | ++ |
BACk-substitution step of parallel linear inversion involving Banded matrix and row-Y-Vectors.
+[in] | my | the number of rows assumed for A and length of Y-vectors stored in V |
[in] | mah1 | the left half-bandwidth of fortran array A |
[in] | mah2 | the right half-bandwidth of fortran array A |
[in] | mx | number of parallel Y-vectors inverted |
[in,out] | v | input as right-hand-side vectors, output as solution vectors |
[in] | a | encodes the (L)*(D**-1)*(U) factorization of the linear-system matrix, as supplied by subroutine LDUB |
subroutine, public pmat2::wrtb | +( | +integer(spi), intent(in) | +m1, | +
+ | + | integer(spi), intent(in) | +m2, | +
+ | + | integer(spi), intent(in) | +mah1, | +
+ | + | integer(spi), intent(in) | +mah2, | +
+ | + | real(sp), dimension(m1,-mah1:mah2), intent(in) | +a | +
+ | ) | ++ |
Convenient routine for interactively writing out the real contents of a band matrix.
+[in] | m1 | number of rows of full matrix |
[in] | m2 | number of columns of full matrix |
[in] | mah1 | number of sub-diagonals |
[in] | mah2 | number of super-diagonals |
[in] | a | contents of single precision real band matrix. |
+ grid_tools
+ 1.13.0
+
+ |
+
Module for handy vector and matrix operations in Euclidean geometry. +More...
++Data Types | |
interface | absv |
interface | axial |
interface | axtoq |
interface | axtorot |
interface | corral |
interface | cross_product |
interface | ctoz |
interface | det |
interface | diag |
interface | dlltoxy |
interface | expmat |
interface | gram |
interface | hav |
interface | huarea |
interface | identity |
interface | mobius |
interface | mobiusi |
interface | mulqq |
interface | normalize |
interface | normalized |
interface | orthogonalized |
interface | outer_product |
interface | qtoax |
interface | qtorot |
interface | qtospin |
interface | rottoax |
interface | rottoq |
interface | rowops |
interface | sarea |
interface | setem |
interface | setmobius |
interface | spintoq |
interface | trace |
interface | triple_product |
interface | znfun |
interface | zntay |
interface | ztoc |
+Functions/Subroutines | |
real(dp) function | absv_d (a) |
Return the absolute magnitude of a double precision real vector. More... | |
real(sp) function | absv_s (a) |
Return the absolute magnitude of a single precision real vector. More... | |
real(dp) function, dimension(3) | axial33_d (b) |
Return the 3-vector corresponding to the given antisymmetric "axial vector" matrix, assuming a right-handed correspondence. More... | |
real(sp) function, dimension(3) | axial33_s (b) |
Return the 3-vector corresponding to the given antisymmetric "axial vector" matrix, assuming a right-handed correspondence. More... | |
real(dp) function, dimension(3, 3) | axial3_d (a) |
Return the axial "vector", as an antisymmetric matrix, corresponding to the given 3-vector assuming a right-handed correspondence. More... | |
real(sp) function, dimension(3, 3) | axial3_s (a) |
Return the axial "vector", as an antisymmetric matrix, corresponding to the given 3-vector assuming a right-handed correspondence. More... | |
subroutine, public | axtoq (v, q) |
Go from an axial 3-vector to its equivalent quaternion. More... | |
subroutine, public | axtorot (ax3, orth33) |
Construct the 3*3 orthogonal matrix, orth33, that corresponds to the proper rotation encoded by the 3-vector, ax3. More... | |
subroutine | cmobius (aa, bb, cc, dd, vz, vw) |
Perform a complex Mobius transformation from cartesian vz to cartesian vw where the transformation coefficients are the standard aa,bb,cc,dd. More... | |
subroutine, public | corral (m, n, mask, a, d, aa, e) |
Find positive diagonals D and E and a Lagrange multiplier F that minimize the row-sum +column-sum of masked terms, (D_i +log(|A_ij|) +E_j)^2 subject to the single constraint, sum_j E_j =0, where the mask permits only nonnegligible A_ij to participate in the quadratic quantities. More... | |
real(dp) function, dimension(3) | cross_product_d (a, b) |
Return the cross product of two double precision real 3-vectors. More... | |
real(sp) function, dimension(3) | cross_product_s (a, b) |
Return the cross product of two single precision real 3-vectors. More... | |
subroutine, public | ctoz (v, z, infz) |
Utility codes for various Mobius transformations. More... | |
real(dp) function | det_d (a) |
Return the determinant of a double precision matrix. More... | |
integer(spi) function | det_i (a) |
Return the determinant of a single precision integer matrix. More... | |
integer(dpi) function | det_id (a) |
Return the determinant of a double precision integer matrix. More... | |
real(sp) function | det_s (a) |
Return the determinant of a single precision matrix. More... | |
real(dp) function, dimension(size(a), size(a)) | diagn_d (a) |
Return the diagonal matrix whose elements are the given vector. More... | |
integer(spi) function, dimension(size(a), size(a)) | diagn_i (a) |
Return the diagonal matrix whose elements are the given vector. More... | |
real(sp) function, dimension(size(a), size(a)) | diagn_s (a) |
Return the diagonal matrix whose elements are the given vector. More... | |
real(dp) function, dimension(size(b, 1)) | diagnn_d (b) |
Return the vector whose elements are the diagonal ones of a given matrix. More... | |
integer(spi) function, dimension(size(b, 1)) | diagnn_i (b) |
Return the vector whose elements are the diagonal ones of a given matrix. More... | |
real(sp) function, dimension(size(b, 1)) | diagnn_s (b) |
Return the vector whose elements are the diagonal ones of a given matrix. More... | |
subroutine | dlltoxy_d (rlat, drlat, drlon, x2) |
From a reference latitude, and increments of latitude and longitude, return the local cartesian 2-vector corresponding to the projection of the increment onto the tangent plane of the reference point. More... | |
subroutine | dlltoxy_s (rlat, drlat, drlon, x2) |
From a reference latitude, and increments of latitude and longitude, return the local cartesian 2-vector corresponding to the projection of the increment onto the tangent plane of the reference point. More... | |
real(dp) function | dqarea_d (rlat, drlata, drlona, drlatb, drlonb, drlatc, drlonc) |
Compute the area of the spherical quadrilateral with a vertex at latitude rlat, and three other vertices at A, B, and C in turn, whose incremented latitudes and longitudes are drlata,drlona (for A), drlatb,drlonb (for B), and drlatc,drlonc (for C). More... | |
real(sp) function | dqarea_s (rlat, drlata, drlona, drlatb, drlonb, drlatc, drlonc) |
Compute the area of the spherical quadrilateral with a vertex at latitude rlat, and three other vertices at A, B, and C in turn, whose incremented latitudes and longitudes are drlata,drlona (for A), drlatb,drlonb (for B), and drlatc,drlonc (for C). More... | |
real(dp) function | dtarea_d (rlat, drlata, drlona, drlatb, drlonb) |
Compute the area of the spherical triangle with a vertex at latitude rlat, and two other vertices, A and B, whose incremented latitudes and longitudes are drlata,drlona (for A) and drlatb,drlonb (for B). More... | |
real(sp) function | dtarea_s (rlat, drlata, drlona, drlatb, drlonb) |
Compute the area of the spherical triangle with a vertex at latitude rlat, and two other vertices, A and B, whose incremented latitudes and longitudes are drlata,drlona (for A) and drlatb,drlonb (for B). More... | |
subroutine, public | expmat (n, a, b, detb) |
Evaluate the exponential, B, of a matrix, A, of degree n. More... | |
subroutine | expmatd (n, a, b, bd, detb, detbd) |
Like expmat, but for the 1st derivatives also. More... | |
subroutine | expmatdd (n, a, b, bd, bdd, detb, detbd, detbdd) |
Like expmat, but for the 1st and 2nd derivatives also. More... | |
subroutine | gram_d (as, b, nrank, det) |
Apply a form of Gram-Schmidt orthogonalization process to return as many normalized orthogonal basis column vectors in matrix B as possible in the space spanned by the columns of matrix A. More... | |
subroutine | gram_s (as, b, nrank, det) |
Apply a form of Gram-Schmidt orthogonalization process to return as many normalized orthogonal basis column vectors in matrix B as possible in the space spanned by the columns of matrix A. More... | |
subroutine | graml_d (as, b, nrank, detsign, ldet) |
A version of gram_d where the determinant information is returned in logarithmic form (to avoid overflows for large matrices). More... | |
real(dp) function | hav_d (t) |
Haversine function in double precision. More... | |
real(sp) function | hav_s (t) |
Haversine function in single precision. More... | |
real(dp) function | huarea_d (sa, sb) |
Spherical area of right-angle triangle whose orthogonal sides have orthographic projection dimensions, sa and sb, sphere of unit radius. More... | |
real(sp) function | huarea_s (sa, sb) |
Spherical area of right-angle triangle whose orthogonal sides have orthographic projection dimensions, sa and sb, sphere of unit radius. More... | |
integer(spi) function, dimension(3, 3) | identity3_i () |
Return the 3-dimensional integer identity matrix. More... | |
integer(spi) function, dimension(n, n) | identity_i (n) |
Return the integer identity matrix for a given dimensionality. More... | |
real(dp) function, dimension(0:3), public | mulqq (a, b) |
Multiply quaternions, a*b, assuming operation performed from right to left. More... | |
subroutine | normalize_d (v) |
Normalize the given double precision real vector. More... | |
subroutine | normalize_s (v) |
Normalize the given single precision real vector. More... | |
real(dp) function, dimension(size(a)) | normalized_d (a) |
Return the normalized version of a double precision real vector. More... | |
real(sp) function, dimension(size(a)) | normalized_s (a) |
Return the normalized version of a single precision real vector. More... | |
real(dp) function, dimension(size(u)) | orthogonalized_d (u, a) |
Return the part of vector a that is orthogonal to unit vector u. More... | |
real(sp) function, dimension(size(u)) | orthogonalized_s (u, a) |
Return the part of vector a that is orthogonal to unit vector u. More... | |
real(dp) function, dimension(size(a), size(b)) | outer_product_d (a, b) |
Return the outer product matrix of two double precision real vectors. More... | |
integer(spi) function, dimension(size(a), size(b)) | outer_product_i (a, b) |
Return the outer product matrix of two integer vectors. More... | |
real(sp) function, dimension(size(a), size(b)) | outer_product_s (a, b) |
Return the outer product matrix of two single precision real vectors. More... | |
subroutine | plaingram_d (b, nrank) |
A "plain" (unpivoted) version of Gram-Schmidt, for square matrices only. More... | |
subroutine | plaingram_s (b, nrank) |
A "plain" (unpivoted) version of Gram-Schmidt, for square matrices only. More... | |
subroutine, public | qtoax (q, v) |
Go from quaternion to axial 3-vector. More... | |
subroutine, public | qtorot (q, rot) |
Go from quaternion to rotation matrix representations. More... | |
subroutine, public | qtospin (q, cspin) |
Go from the unit quaternion to the complex spinor representation. More... | |
subroutine, public | rottoax (orth33, ax3) |
Assuming that given orth33 is a 3*3 proper rotation matrix, derive an axial 3-vector, ax3, such that orth33 is implied by ax3 when the latter is interpreted as encoding a rotation (as in subroutine axtorot). More... | |
subroutine, public | rottoq (rot, q) |
Go from rotation matrix to a corresponding unit quaternion representation. More... | |
subroutine | rowgram (m, n, a, ipiv, tt, b, rank) |
Without changing (tall) rectangular input matrix a, perform pivoted gram- Schmidt operations to orthogonalize the rows, until rows that remain become negligible. More... | |
subroutine, public | rowops (m, n, ipiv, tt, v, vv) |
Apply the row-operations, implied by ipiv and tt returned by rowgram, to the single column vector, v, to produce the transformed vector vv. More... | |
real(dp) function | sarea_d (v1, v2, v3) |
Compute the area of the spherical triangle, {v1,v2,v3}. More... | |
real(sp) function | sarea_s (v1, v2, v3) |
Compute the area of the spherical triangle, {v1,v2,v3}, measured in the right-handed sense, by dropping a perpendicular to u0 on the longest side so that the area becomes the sum of areas of the two simpler right-angled triangles. More... | |
subroutine | setem (c, d, e, g, r) |
Given the 4 components of a unit quaternion, return the associated 3*3 rotation matrix. More... | |
subroutine, public | setmobius (xc0, xc1, xc2, aa, bb, cc, dd) |
Find the Mobius transformation complex coefficients, aa,bb,cc,dd, with aa*dd-bb*cc=1, for a standard (north-)polar stereographic transformation that takes cartesian point, xc0 to the north pole, xc1 to (lat=0,lon=0), xc2 to the south pole (=complex infinity). More... | |
subroutine, public | spintoq (cspin, q) |
Go from the complex spinor matrix to the unit quaternion representation. More... | |
real(dp) function | trace_d (b) |
Return the trace of a given double precision real matrix. More... | |
integer(spi) function | trace_i (b) |
Return the trace of a given integer matrix. More... | |
real(sp) function | trace_s (b) |
Return the trace of a given single precision real matrix. More... | |
real(dp) function, dimension(4) | triple_cross_product_d (u, v, w) |
Return the triple_cross_product for 4-vectors. More... | |
real(sp) function, dimension(4) | triple_cross_product_s (u, v, w) |
Deliver the triple-cross-product, x, of the three 4-vectors, u, v, w, with the sign convention that ordered, {u,v,w,x} form a right-handed quartet in the generic case (determinant >= 0). More... | |
real(dp) function | triple_product_d (a, b, c) |
Return the triple product of three double precision real 3-vectors. More... | |
real(sp) function | triple_product_s (a, b, c) |
Return the triple product of three single precision real 3-vectors. More... | |
subroutine | zmobius (aa, bb, cc, dd, z, infz, w, infw) |
Perform a complex Mobius transformation from (z,infz) to (w,infw) where the transformation coefficients are the standard aa,bb,cc,dd. More... | |
subroutine | zmobiusi (aa, bb, cc, dd, zz, infz, zw, infw) |
Perform the inverse of the mobius transformation with coefficients, {aa,bb,cc,dd}. More... | |
subroutine, public | znfun (n, z, zn, znd, zndd, znddd) |
For a given nonnegative integer n and real argument z, evaluate the nth,...,(n+3)th derivatives, wrt z, of the function C(z) = cosh(sqrt(2z)) or, equivalently, of C(z) = cos(sqrt(-2z)), according to the sign of z. More... | |
subroutine, public | zntay (n, z, zn) |
Evaluate, by Taylor-Maclaurin expansion, the nth-derivative of the function, C(z)=cosh(sqrt(2z)), or equiavlently, of C(z)=cos(sqrt(-2z)). More... | |
subroutine | zsetmobius (z0, infz0, z1, infz1, z2, infz2, aa, bb, cc, dd) |
Find the Mobius transformation complex coefficients, aa,bb,cc,dd, with aa*dd-bb*cc=1, that takes polar stereographic point, z0 to the north pole, z1 to (lat=0,lon=0), z2 to the south pole (=complex infinity). More... | |
subroutine, public | ztoc (z, infz, v) |
Given a complex z, return the equivalent cartesian unit 3-vector associated by the polar stereographic projection. More... | |
subroutine | ztocd (z, infz, v, vd) |
The convention adopted for the complex derivative is that, for a complex infinitesimal map displacement, delta_z, the corresponding infinitesimal change of cartesian vector position is delta_v given by: delta_v = Real(vd*delta_z). More... | |
Module for handy vector and matrix operations in Euclidean geometry.
+This package is primarily intended for 3D operations and three of the functions (Cross_product, Triple_product and Axial) do not possess simple generalizations to a generic number N of dimensions. The others, while admitting such N-dimensional generalizations, have not all been provided with such generic forms here at the time of writing, though some of these may be added at a future date.
+May 2017: Added routines to facilitate manipulation of 3D rotations, their representations by axial vectors, and routines to compute the exponentials of matrices (without resort to eigen methods). Also added Quaternion and spinor representations of 3D rotations, and their conversion routines. FUNCTION:
Gram: Right-handed orthogonal basis and rank, nrank. The first nrank basis vectors span the column range of matrix given, OR ("plain" version) simple unpivoted Gram-Schmidt of a square matrix.
+In addition, we include routines that relate to stereographic projections and some associated mobius transformation utilities, since these complex operations have a strong geometrical flavor.
+ +
+
|
+ +private | +
Return the absolute magnitude of a double precision real vector.
+[in] | a | real type input vector |
Definition at line 131 of file pmat4.f90.
+ +Referenced by normalized_d().
+ +
+
|
+ +private | +
Return the absolute magnitude of a single precision real vector.
+[in] | a | real type input vector |
Definition at line 119 of file pmat4.f90.
+ +Referenced by normalized_s().
+ +real(dp) function, dimension(3) pmat4::axial33_d | +( | +real(dp), dimension(3,3), intent(in) | +b | ) | ++ |
Return the 3-vector corresponding to the given antisymmetric "axial vector" matrix, assuming a right-handed correspondence.
+[in] | b | real type input antisymmetric matrix "axial vector" B |
Definition at line 462 of file pmat4.f90.
+ +References pietc::o2.
+ +real(sp) function, dimension(3) pmat4::axial33_s | +( | +real(sp), dimension(3,3), intent(in) | +b | ) | ++ |
Return the 3-vector corresponding to the given antisymmetric "axial vector" matrix, assuming a right-handed correspondence.
+[in] | b | real type input antisymmetric matrix "axial vector" B |
real(dp) function, dimension(3,3) pmat4::axial3_d | +( | +real(dp), dimension(3), intent(in) | +a | ) | ++ |
Return the axial "vector", as an antisymmetric matrix, corresponding to the given 3-vector assuming a right-handed correspondence.
+[in] | a | real type input 3-vector A |
Definition at line 434 of file pmat4.f90.
+ +References pietc::u0.
+ +real(sp) function, dimension(3,3) pmat4::axial3_s | +( | +real(sp), dimension(3), intent(in) | +a | ) | ++ |
Return the axial "vector", as an antisymmetric matrix, corresponding to the given 3-vector assuming a right-handed correspondence.
+[in] | a | real type input 3-vector A |
subroutine, public pmat4::axtoq | +( | +real(dp), dimension(3), intent(in) | +v, | +
+ | + | real(dp), dimension(0:3), intent(out) | +q | +
+ | ) | ++ |
subroutine, public pmat4::axtorot | +( | +real(dp), dimension(3), intent(in) | +ax3, | +
+ | + | real(dp), dimension(3,3), intent(out) | +orth33 | +
+ | ) | ++ |
Construct the 3*3 orthogonal matrix, orth33, that corresponds to the proper rotation encoded by the 3-vector, ax3.
+The antisymmetric matrix ax33 equivalent to the axial vector ax3 is exponentiated to obtain orth33.
+[in] | ax3 | axial 3-vector |
[out] | orth33 | 3*3 orthogonal matrix |
+
|
+ +private | +
Perform a complex Mobius transformation from cartesian vz to cartesian vw where the transformation coefficients are the standard aa,bb,cc,dd.
+[in] | aa | Mobius transformation coefficient |
[in] | bb | Mobius transformation coefficient |
[in] | cc | Mobius transformation coefficient |
[in] | dd | Mobius transformation coefficient |
[in] | vz | Cartesian unit 3-vector representation of input argument |
[out] | vw | Cartesian unit 3-vector representation of output |
Definition at line 2312 of file pmat4.f90.
+ +References zmobius().
+ +subroutine, public pmat4::corral | +( | +integer(spi), intent(in) | +m, | +
+ | + | integer(spi), intent(in) | +n, | +
+ | + | logical, dimension(m,n), intent(in) | +mask, | +
+ | + | real(dp), dimension(m,n), intent(in) | +a, | +
+ | + | real(dp), dimension(m ), intent(out) | +d, | +
+ | + | real(dp), dimension(m,n), intent(out) | +aa, | +
+ | + | real(dp), dimension( n), intent(out) | +e | +
+ | ) | ++ |
Find positive diagonals D and E and a Lagrange multiplier F that minimize the row-sum +column-sum of masked terms, (D_i +log(|A_ij|) +E_j)^2 subject to the single constraint, sum_j E_j =0, where the mask permits only nonnegligible A_ij to participate in the quadratic quantities.
+Once a solution for D and E is found, return their exponentials, d and e, together with the rescaled matrix aa such that a = d.aa.e when d and e are interpreted as diagonal matrices.
+[in] | m | number of rows of A |
[in] | n | number of columns of A |
[in] | mask | logical mask |
[in] | a | real rectangular matrix A |
[out] | d | positive diagonal matrix of dimension m |
[in] | aa | rescaled version of A |
[out] | e | positive diagonal matrix of dimension n |
+
|
+ +private | +
+
|
+ +private | +
subroutine, public pmat4::ctoz | +( | +real(dp), dimension(3), intent(in) | +v, | +
+ | + | complex(dpc), intent(out) | +z, | +
+ | + | logical, intent(out) | +infz | +
+ | ) | ++ |
Utility codes for various Mobius transformations.
+If aa1,bb1,cc1,dd1 are the coefficients for one transformation, and aa2,bb2,cc2,dd2 are the coefficients for a second one, then the coefficients for the mapping of a test point, zz, by aa1 etc to zw, followed by a mapping of zw, by aa2 etc to zv, is equivalent to a single mapping zz–>zv by the transformatn with coefficients aa3,bb3,cc3,dd3, such that, as 2*2 complex matrices:
++ [ aa3, bb3 ] [ aa2, bb2 ] [ aa1, bb1 ] + [ ] = [ ] * [ ] + [ cc3, dd3 ] [ cc2, dd2 ] [ cc1, dd1 ] . +
Note that the determinant of these matrices is always +1. Given a cartesian 3-vector representation of a point on the Riemann unit sphere, return the stereographically equivalent complex number.
+[in] | v | cartesian 3-vector representation of point on Riemann sphere |
[out] | z | complex point stereographically equivalent to v |
[out] | infz | logical indicator for z being the point at infinity |
Definition at line 2027 of file pmat4.f90.
+ +References pkind::dpc, pietc::u0, and pietc::u1.
+ +real(dp) function pmat4::det_d | +( | +real(dp), dimension(:,:), intent(in) | +a | ) | ++ |
integer(spi) function pmat4::det_i | +( | +integer(spi), dimension(:,:), intent(in) | +a | ) | ++ |
+
|
+ +private | +
Return the determinant of a double precision integer matrix.
+[in] | a | integer type input matrix A |
Definition at line 404 of file pmat4.f90.
+ +References pkind::dp, and pkind::dpi.
+ +
+
|
+ +private | +
real(dp) function, dimension(size(a),size(a)) pmat4::diagn_d | +( | +real(dp), dimension(:), intent(in) | +a | ) | ++ |
Return the diagonal matrix whose elements are the given vector.
+Double precision version
+[in] | a | real type input vector A listing the diagonal elements |
Definition at line 492 of file pmat4.f90.
+ +References pietc::u0.
+ +integer(spi) function, dimension(size(a),size(a)) pmat4::diagn_i | +( | +integer(spi), dimension(:), intent(in) | +a | ) | ++ |
real(sp) function, dimension(size(a),size(a)) pmat4::diagn_s | +( | +real(sp), dimension(:), intent(in) | +a | ) | ++ |
Return the diagonal matrix whose elements are the given vector.
+Single precision version.
+[in] | a | real type input vector A listing the diagonal elements |
Definition at line 476 of file pmat4.f90.
+ +References pietc::u0.
+ +
+
|
+ +private | +
+
|
+ +private | +
+
|
+ +private | +
subroutine pmat4::dlltoxy_d | +( | +real(dp), intent(in) | +rlat, | +
+ | + | real(dp), intent(in) | +drlat, | +
+ | + | real(dp), intent(in) | +drlon, | +
+ | + | real(dp), dimension(2), intent(out) | +x2 | +
+ | ) | ++ |
From a reference latitude, and increments of latitude and longitude, return the local cartesian 2-vector corresponding to the projection of the increment onto the tangent plane of the reference point.
+Double precision version.
+[in] | rlat | latitude |
[in] | drlat | latitude |
[in] | drlon | longitudes |
[out] | x2 | output |
Definition at line 936 of file pmat4.f90.
+ +References pietc::u2.
+ +
+
|
+ +private | +
From a reference latitude, and increments of latitude and longitude, return the local cartesian 2-vector corresponding to the projection of the increment onto the tangent plane of the reference point.
+Single precision version.
+[in] | rlat | latitude |
[in] | drlat | latitude |
[in] | drlon | longitudes |
[out] | x2 | output |
+
|
+ +private | +
Compute the area of the spherical quadrilateral with a vertex at latitude rlat, and three other vertices at A, B, and C in turn, whose incremented latitudes and longitudes are drlata,drlona (for A), drlatb,drlonb (for B), and drlatc,drlonc (for C).
+The computations are designed to give a proportionately accurate area estimate even when the quadrilateral is very small, provided the diagonal making the B-increment is not disproportionately small compared to the characteristic size of the quadrilateral. Double precision version.
+[in] | rlat | latitude of reference point |
[in] | drlata | incremental latitude of point A |
[in] | drlona | incremental longitude of point A |
[in] | drlatb | incremental latitude of point B |
[in] | drlonb | incremental longitude of point B |
[in] | drlatc | incremental latitude of point C |
[in] | drlonc | incremental longitude of point C |
real(sp) function pmat4::dqarea_s | +( | +real(sp), intent(in) | +rlat, | +
+ | + | real(sp), intent(in) | +drlata, | +
+ | + | real(sp), intent(in) | +drlona, | +
+ | + | real(sp), intent(in) | +drlatb, | +
+ | + | real(sp), intent(in) | +drlonb, | +
+ | + | real(sp), intent(in) | +drlatc, | +
+ | + | real(sp), intent(in) | +drlonc | +
+ | ) | ++ |
Compute the area of the spherical quadrilateral with a vertex at latitude rlat, and three other vertices at A, B, and C in turn, whose incremented latitudes and longitudes are drlata,drlona (for A), drlatb,drlonb (for B), and drlatc,drlonc (for C).
+The computations are designed to give a proportionately accurate area estimate even when the quadrilateral is very small, provided the diagonal making the B-increment is not disproportionately small compared to the characteristic size of the quadrilateral. Single precision version.
+[in] | rlat | latitude of reference point |
[in] | drlata | incremental latitude of point A |
[in] | drlona | incremental longitude of point A |
[in] | drlatb | incremental latitude of point B |
[in] | drlonb | incremental longitude of point B |
[in] | drlatc | incremental latitude of point C |
[in] | drlonc | incremental longitude of point C |
real(dp) function pmat4::dtarea_d | +( | +real(dp), intent(in) | +rlat, | +
+ | + | real(dp), intent(in) | +drlata, | +
+ | + | real(dp), intent(in) | +drlona, | +
+ | + | real(dp), intent(in) | +drlatb, | +
+ | + | real(dp), intent(in) | +drlonb | +
+ | ) | ++ |
Compute the area of the spherical triangle with a vertex at latitude rlat, and two other vertices, A and B, whose incremented latitudes and longitudes are drlata,drlona (for A) and drlatb,drlonb (for B).
+The computations are designed to give a proportionately accurate area estimate even when the triangle is very small, provided the B-increment is not disproportionately small compared to the other two sides. Double precision version.
+[in] | rlat | latitude of reference point |
[in] | drlata | incremental latitude of A |
[in] | drlona | incremental longitude of A |
[in] | drlatb | incremental latitude of B |
[in] | drlonb | incremental longitude of B |
+
|
+ +private | +
Compute the area of the spherical triangle with a vertex at latitude rlat, and two other vertices, A and B, whose incremented latitudes and longitudes are drlata,drlona (for A) and drlatb,drlonb (for B).
+The computations are designed to give a proportionately accurate area estimate even when the triangle is very small, provided the B-increment is not disproportionately small compared to the other two sides. Single precision version.
+[in] | rlat | latitude of reference point |
[in] | drlata | incremental latitude of A |
[in] | drlona | incremental longitude of A |
[in] | drlatb | incremental latitude of B |
[in] | drlonb | incremental longitude of B |
subroutine, public pmat4::expmat | +( | +integer(spi), intent(in) | +n, | +
+ | + | real(dp), dimension(n,n), intent(in) | +a, | +
+ | + | real(dp), dimension(n,n), intent(out) | +b, | +
+ | + | real(dp), intent(out) | +detb | +
+ | ) | ++ |
Evaluate the exponential, B, of a matrix, A, of degree n.
+Apply the iterated squaring method, m times, to the approximation to exp(A/(2**m)) obtained as a Taylor expansion of degree L See Fung, T. C., 2004, Int. J. Numer. Meth. Engng, 59, 1273–1286.
+[in] | n | order of square matrix A |
[in] | a | input matrix A |
[out] | b | matrix B, the exponential of matrix A |
[out] | detb | determinant of matrix B |
subroutine pmat4::expmatd | +( | +integer(spi), intent(in) | +n, | +
+ | + | real(dp), dimension(n,n), intent(in) | +a, | +
+ | + | real(dp), dimension(n,n), intent(out) | +b, | +
+ | + | real(dp), dimension(n,n,(n*(n+1))/2), intent(out) | +bd, | +
+ | + | real(dp), intent(out) | +detb, | +
+ | + | real(dp), dimension((n*(n+1))/2), intent(out) | +detbd | +
+ | ) | ++ |
Like expmat, but for the 1st derivatives also.
+[in] | n | order of square matrix A |
[in] | a | input matrix A |
[out] | b | matrix B, the exponential of matrix A |
[out] | bd | derivative of B wrt elements of A |
[out] | detb | determinant of matrix B |
[out] | detbd | derivative of detb wrt elements of A |
subroutine pmat4::expmatdd | +( | +integer(spi), intent(in) | +n, | +
+ | + | real(dp), dimension(n,n), intent(in) | +a, | +
+ | + | real(dp), dimension(n,n), intent(out) | +b, | +
+ | + | real(dp), dimension(n,n,(n*(n+1))/2), intent(out) | +bd, | +
+ | + | real(dp), dimension(n,n,(n*(n+1))/2,(n*(n+1))/2), intent(out) | +bdd, | +
+ | + | real(dp), intent(out) | +detb, | +
+ | + | real(dp), dimension((n*(n+1))/2), intent(out) | +detbd, | +
+ | + | real(dp), dimension((n*(n+1))/2,(n*(n+1))/2), intent(out) | +detbdd | +
+ | ) | ++ |
Like expmat, but for the 1st and 2nd derivatives also.
+[in] | n | order of the matrix A |
[in] | a | input matrix A |
[out] | b | matrix B, exponential of matrix A |
[out] | bd | derivative of B wrt elements of A |
[out] | bdd | 2nd derivative of B wrt elements of A |
[out] | detb | determinant of matrix B |
[out] | detbd | derivative of detb wrt elements of A |
[out] | detbdd | 2nd derivative of detb wrt elements of A |
subroutine pmat4::gram_d | +( | +real(dp), dimension(:,:), intent(in) | +as, | +
+ | + | real(dp), dimension(:,:), intent(out) | +b, | +
+ | + | integer(spi), intent(out) | +nrank, | +
+ | + | real(dp), intent(out) | +det | +
+ | ) | ++ |
Apply a form of Gram-Schmidt orthogonalization process to return as many normalized orthogonal basis column vectors in matrix B as possible in the space spanned by the columns of matrix A.
+The number of columns returned is the rank, nrank, of A, and the determinant of the projection of A into the subspace of B is returned as det.
+[in] | as | given matrix A |
[out] | b | matrix B containing nrank orthonormal column vectors |
[out] | nrank | rank of A |
[out] | det | determinant of projection of A into subspace of B |
subroutine pmat4::gram_s | +( | +real(sp), dimension(:,:), intent(in) | +as, | +
+ | + | real(sp), dimension(:,:), intent(out) | +b, | +
+ | + | integer(spi), intent(out) | +nrank, | +
+ | + | real(sp), intent(out) | +det | +
+ | ) | ++ |
Apply a form of Gram-Schmidt orthogonalization process to return as many normalized orthogonal basis column vectors in matrix B as possible in the space spanned by the columns of matrix A.
+The number of columns returned is the rank, nrank, of A, and the determinant of the projection of A into the subspace of B is returned as det.
+[in] | as | given matrix A |
[out] | b | matrix B containing nrank orthonormal column vectors |
[out] | nrank | rank of A |
[out] | det | determinant of projection of A into subspace of B |
subroutine pmat4::graml_d | +( | +real(dp), dimension(:,:), intent(in) | +as, | +
+ | + | real(dp), dimension(:,:), intent(out) | +b, | +
+ | + | integer(spi), intent(out) | +nrank, | +
+ | + | integer(spi), intent(out) | +detsign, | +
+ | + | real(dp), intent(out) | +ldet | +
+ | ) | ++ |
A version of gram_d where the determinant information is returned in logarithmic form (to avoid overflows for large matrices).
+When the matrix is singular, the "sign" of the determinant, detsign, is returned as zero (instead of either +1 or -1) and ldet is then just the log of the nonzero factors found by the process.
+[in] | as | given matrix A |
[out] | b | matrix B of orthonormal columns |
[out] | nrank | rank of A |
[out] | detsign | sign of determinant |
[out] | ldet | logarithm of absolute value of determinant |
Definition at line 1150 of file pmat4.f90.
+ +References pietc::u0.
+ +real(dp) function pmat4::hav_d | +( | +real(dp), intent(in) | +t | ) | ++ |
real(sp) function pmat4::hav_s | +( | +real(sp), intent(in) | +t | ) | ++ |
+
|
+ +private | +
Spherical area of right-angle triangle whose orthogonal sides have orthographic projection dimensions, sa and sb, sphere of unit radius.
+Double precision version.
+[in] | sa | orthographic projection of triangle's side A |
[in] | sb | orthographic projection of triangle's side B |
+
|
+ +private | +
Spherical area of right-angle triangle whose orthogonal sides have orthographic projection dimensions, sa and sb, sphere of unit radius.
+Single precision version.
+[in] | sa | orthographic projection of triangle's side A |
[in] | sb | orthographic projection of triangle's side B |
+
|
+ +private | +
+
|
+ +private | +
real(dp) function, dimension(0:3), public pmat4::mulqq | +( | +real(dp), dimension(0:3), intent(in) | +a, | +
+ | + | real(dp), dimension(0:3), intent(in) | +b | +
+ | ) | ++ |
subroutine pmat4::normalize_d | +( | +real(dp), dimension(:), intent(inout) | +v | ) | ++ |
subroutine pmat4::normalize_s | +( | +real(sp), dimension(:), intent(inout) | +v | ) | ++ |
real(dp) function, dimension(size(a)) pmat4::normalized_d | +( | +real(dp), dimension(:), intent(in) | +a | ) | ++ |
+
|
+ +private | +
+
|
+ +private | +
real(sp) function, dimension(size(u)) pmat4::orthogonalized_s | +( | +real(sp), dimension(:), intent(in) | +u, | +
+ | + | real(sp), dimension(:), intent(in) | +a | +
+ | ) | ++ |
+
|
+ +private | +
+
|
+ +private | +
+
|
+ +private | +
subroutine pmat4::plaingram_d | +( | +real(dp), dimension(:,:), intent(inout) | +b, | +
+ | + | integer(spi), intent(out) | +nrank | +
+ | ) | ++ |
A "plain" (unpivoted) version of Gram-Schmidt, for square matrices only.
+Double precision version.
+[in,out] | b | input as given matrix, output as orthogonalized vectors |
[out] | nrank | effective rank of given matrix |
Definition at line 1263 of file pmat4.f90.
+ +References pietc::u0.
+ +subroutine pmat4::plaingram_s | +( | +real(sp), dimension(:,:), intent(inout) | +b, | +
+ | + | integer(spi), intent(out) | +nrank | +
+ | ) | ++ |
subroutine, public pmat4::qtoax | +( | +real(dp), dimension(0:3), intent(in) | +q, | +
+ | + | real(dp), dimension(3), intent(out) | +v | +
+ | ) | ++ |
subroutine, public pmat4::qtorot | +( | +real(dp), dimension(0:3), intent(in) | +q, | +
+ | + | real(dp), dimension(3,3), intent(out) | +rot | +
+ | ) | ++ |
subroutine, public pmat4::qtospin | +( | +real(dp), dimension(0:3), intent(in) | +q, | +
+ | + | complex(dpc), dimension(2,2), intent(out) | +cspin | +
+ | ) | ++ |
subroutine, public pmat4::rottoax | +( | +real(dp), dimension(3,3), intent(in) | +orth33, | +
+ | + | real(dp), dimension(3), intent(out) | +ax3 | +
+ | ) | ++ |
Assuming that given orth33 is a 3*3 proper rotation matrix, derive an axial 3-vector, ax3, such that orth33 is implied by ax3 when the latter is interpreted as encoding a rotation (as in subroutine axtorot).
+Note that such ax3 are not unique – adding any multiple of 2*pi times the parallel unit vector leads to the same orth33.
+[in] | orth33 | 3*3 proper rotation matrix |
[out] | ax3 | axial 3-vector |
subroutine, public pmat4::rottoq | +( | +real(dp), dimension(3,3), intent(in) | +rot, | +
+ | + | real(dp), dimension(0:3), intent(out) | +q | +
+ | ) | ++ |
subroutine pmat4::rowgram | +( | +integer(spi), intent(in) | +m, | +
+ | + | integer(spi), intent(in) | +n, | +
+ | + | real(dp), dimension(m,n), intent(in) | +a, | +
+ | + | integer(spi), dimension(n), intent(out) | +ipiv, | +
+ | + | real(dp), dimension(m,n), intent(out) | +tt, | +
+ | + | real(dp), dimension(n,n), intent(out) | +b, | +
+ | + | integer(spi), intent(out) | +rank | +
+ | ) | ++ |
Without changing (tall) rectangular input matrix a, perform pivoted gram- Schmidt operations to orthogonalize the rows, until rows that remain become negligible.
+Record the pivoting sequence in ipiv, and the row-normalization in tt(j,j) and the row-orthogonalization in tt(i,j), for i>j. Note that tt(i,j)=0 for i<j (tt is truncated lower triangular). The orthonormalized rows are returned in square array b, which is complete even when the effective rank < n. The recorded row operations can be repeated on independent column vectors through the use of subroutine ROWOPS (in this module). It is recommended to rescale the original matrix A via a call to CORRAL (in this module) because the negligibility criterion depends upon an "epsilon" value that is fixed (10**(-13)) and assumes elements of a are never too different in magnitude from unity, unless they are actually zero.
+[in] | m | number of rows of A |
[in] | n | number of columns of A |
[in] | a | rectangular input matrix A |
[out] | ipiv | pivoting sequence |
[out] | tt | row-normalization |
[out] | b | orthonormalized rows |
[in] | rank | effective rank of A |
subroutine, public pmat4::rowops | +( | +integer(spi), intent(in) | +m, | +
+ | + | integer(spi), intent(in) | +n, | +
+ | + | integer(spi), dimension(n), intent(in) | +ipiv, | +
+ | + | real(dp), dimension(m,n), intent(in) | +tt, | +
+ | + | real(dp), dimension(m), intent(in) | +v, | +
+ | + | real(dp), dimension(m), intent(out) | +vv | +
+ | ) | ++ |
Apply the row-operations, implied by ipiv and tt returned by rowgram, to the single column vector, v, to produce the transformed vector vv.
+[in] | m | number of rows of matrix tt, dimension of vectors V and VV |
[in] | n | number of columns of matrix tt |
[in] | ipiv | integer vector encoding the pivoting sequence |
[in] | tt | row-normalized matrix provided by subroutine rowgram |
[in] | v | input single column vector |
[out] | vv | output column vector vector |
+
|
+ +private | +
Compute the area of the spherical triangle, {v1,v2,v3}.
+[in] | v1 | unit-3-vector vertex of the spherical triangle |
[in] | v2 | unit-3-vector vertex of the spherical triangle |
[in] | v3 | unit-3-vector vertex of the spherical triangle |
+
|
+ +private | +
Compute the area of the spherical triangle, {v1,v2,v3}, measured in the right-handed sense, by dropping a perpendicular to u0 on the longest side so that the area becomes the sum of areas of the two simpler right-angled triangles.
+[in] | v1 | area of the spherical triangle |
[in] | v2 | area of the spherical triangle |
[in] | v3 | area of the spherical triangle |
Definition at line 668 of file pmat4.f90.
+ +References cyclic().
+ +
+
|
+ +private | +
Given the 4 components of a unit quaternion, return the associated 3*3 rotation matrix.
+[in] | c | 0th component of given quaternion |
[in] | d | 1st component of given quaternion |
[in] | e | 2nd component of given quaternion |
[in] | g | 3rd component of given quaternion |
[in] | r | output 3*3 real rotation matrix |
subroutine, public pmat4::setmobius | +( | +real(dp), dimension(3), intent(in) | +xc0, | +
+ | + | real(dp), dimension(3), intent(in) | +xc1, | +
+ | + | real(dp), dimension(3), intent(in) | +xc2, | +
+ | + | complex(dpc), intent(out) | +aa, | +
+ | + | complex(dpc), intent(out) | +bb, | +
+ | + | complex(dpc), intent(out) | +cc, | +
+ | + | complex(dpc), intent(out) | +dd | +
+ | ) | ++ |
Find the Mobius transformation complex coefficients, aa,bb,cc,dd, with aa*dd-bb*cc=1, for a standard (north-)polar stereographic transformation that takes cartesian point, xc0 to the north pole, xc1 to (lat=0,lon=0), xc2 to the south pole (=complex infinity).
+[in] | xc0 | cartesian point that will map to (0,0,1) |
[in] | xc1 | cartesian point that will map to (1,0,0) |
[in] | xc2 | cartesian point that will map to (0,0,-1) |
[out] | aa | Mobius transformation complex coefficient |
[out] | bb | Mobius transformation complex coefficient |
[out] | cc | Mobius transformation complex coefficient |
[out] | dd | Mobius transformation complex coefficient |
subroutine, public pmat4::spintoq | +( | +complex(dpc), dimension(2,2), intent(in) | +cspin, | +
+ | + | real(dp), dimension(0:3), intent(out) | +q | +
+ | ) | ++ |
+
|
+ +private | +
+
|
+ +private | +
+
|
+ +private | +
+
|
+ +private | +
+
|
+ +private | +
Deliver the triple-cross-product, x, of the three 4-vectors, u, v, w, with the sign convention that ordered, {u,v,w,x} form a right-handed quartet in the generic case (determinant >= 0).
+[in] | u | real type input 4-vector |
[in] | v | real type input 4-vector |
[in] | w | real type input 4-vector |
+
|
+ +private | +
+
|
+ +private | +
+
|
+ +private | +
Perform a complex Mobius transformation from (z,infz) to (w,infw) where the transformation coefficients are the standard aa,bb,cc,dd.
+Infz is .TRUE. only when z is at complex infinity; likewise infw and w. For these infinite cases, it is important that numerical z==(0,0).
+[in] | aa | Mobius transformation complex coefficient |
[in] | bb | Mobius transformation complex coefficient |
[in] | cc | Mobius transformation complex coefficient |
[in] | dd | Mobius transformation complex coefficient |
[in] | z | complex input argument of the Mobius transformation |
[in] | infz | logical indicator for z being a point at infinity |
[out] | w | complex output of the Mobius transformation |
[out] | infw | logical indicator for w being a point at infinity |
Definition at line 2277 of file pmat4.f90.
+ +Referenced by cmobius(), and zmobiusi().
+ +
+
|
+ +private | +
Perform the inverse of the mobius transformation with coefficients, {aa,bb,cc,dd}.
+[in] | aa | inverse Mobius transformation coefficient |
[in] | bb | inverse Mobius transformation coefficient |
[in] | cc | inverse Mobius transformation coefficient |
[in] | dd | inverse Mobius transformation coefficient |
[in] | zz | complex input argument |
[in] | infz | logical indicator for zz the point at infinity |
[out] | zw | complex output argument |
[out] | infw | logical indicator for zw the point at infinity |
Definition at line 2336 of file pmat4.f90.
+ +References zmobius().
+ +subroutine, public pmat4::znfun | +( | +integer(spi), intent(in) | +n, | +
+ | + | real(dp), intent(in) | +z, | +
+ | + | real(dp), intent(out) | +zn, | +
+ | + | real(dp), intent(out) | +znd, | +
+ | + | real(dp), intent(out) | +zndd, | +
+ | + | real(dp), intent(out) | +znddd | +
+ | ) | ++ |
For a given nonnegative integer n and real argument z, evaluate the nth,...,(n+3)th derivatives, wrt z, of the function C(z) = cosh(sqrt(2z)) or, equivalently, of C(z) = cos(sqrt(-2z)), according to the sign of z.
+[in] | n | integer order of the first of the returned derivatives of C. |
[in] | z | real input argument in the function C(z) |
[out] | zn | nth-derivative of C(z) |
[out] | znd | (n+1)th-derivative of C(z) |
[out] | zndd | (n+2)th-derivative of C(z) |
[out] | znddd | (n+3)th-derivative of C(z) |
subroutine, public pmat4::zntay | +( | +integer(spi), intent(in) | +n, | +
+ | + | real(dp), intent(in) | +z, | +
+ | + | real(dp), intent(out) | +zn | +
+ | ) | ++ |
Evaluate, by Taylor-Maclaurin expansion, the nth-derivative of the function, C(z)=cosh(sqrt(2z)), or equiavlently, of C(z)=cos(sqrt(-2z)).
+[in] | n | integer order of the derivative |
[in] | z | real argument |
[in] | zn | returned value of the nth derivative |
Definition at line 1921 of file pmat4.f90.
+ +References pietc::u2.
+ +
+
|
+ +private | +
Find the Mobius transformation complex coefficients, aa,bb,cc,dd, with aa*dd-bb*cc=1, that takes polar stereographic point, z0 to the north pole, z1 to (lat=0,lon=0), z2 to the south pole (=complex infinity).
+Should any one of z0,z1,z2 be itself the "point at infinity" its corresponding infz will be set "true" (and the z value itself not used). This routine is like setmobius, except the three fixed points defining the mapping are given in standard complex stereographic form, together with the logical codes "infzn" that are TRUE if that point is itself the projection pole (i.e., the South Pole for a north polar stereographic).
+[in] | z0 | complex input point that will map to (0,0) |
[in] | infz0 | logical indicator that z0 is the point at infinity |
[in] | z1 | complex input point that will map to (1,0) |
[in] | infz1 | logical indicator that z1 is the point at infinity |
[in] | z2 | complex input point that will map to infinity |
[in] | infz2 | logical indicator that z2 is the point at infinity |
[out] | aa | Mobius transformation complex coefficient |
[out] | bb | Mobius transformation complex coefficient |
[out] | cc | Mobius transformation complex coefficient |
[out] | dd | Mobius transformation complex coefficient |
subroutine, public pmat4::ztoc | +( | +complex(dpc), intent(in) | +z, | +
+ | + | logical, intent(in) | +infz, | +
+ | + | real(dp), dimension(3), intent(out) | +v | +
+ | ) | ++ |
Given a complex z, return the equivalent cartesian unit 3-vector associated by the polar stereographic projection.
+[in] | z | complex input argument |
[in] | infz | logical indicator for z being the point at infinity |
[out] | v | cartesian unit 3-vector position equivalent to z |
+
|
+ +private | +
The convention adopted for the complex derivative is that, for a complex infinitesimal map displacement, delta_z, the corresponding infinitesimal change of cartesian vector position is delta_v given by: delta_v = Real(vd*delta_z).
+Thus, by a kind of Cauchy-Riemann relation, Imag(vd)=v CROSS Real(vd).
+[in] | z | complex input argument |
[in] | infz | logical indicator for z being the point at infinity |
[out] | v | cartesian unit 3-vector position equivalent to z |
[out] | vd | derivative of cartesian v wrt z |
Definition at line 2083 of file pmat4.f90.
+ +References pkind::dpc.
+ +
+ grid_tools
+ 1.13.0
+
+ |
+
Utility routines for orienting the globe and basic geographical mappings. +More...
++Data Types | |
interface | ctoc_schm |
interface | ctog |
interface | ctogr |
interface | frametwist |
interface | grtoc |
interface | gtoc |
interface | gtoframe |
interface | ininmap |
interface | inivmap |
interface | paraframe |
interface | plctoc |
interface | plrot |
interface | plroti |
+Functions/Subroutines | |
subroutine | dctoc (s, xc1, xc2) |
Evaluate Schmidt transformation, xc1 –> xc2, with scaling parameter s. More... | |
subroutine | dctocd (s, xc1, xc2, dxc2) |
Evaluate Schmidt transformation, xc1 –> xc2, with scaling parameter s, and its jacobian, dxc2. More... | |
subroutine | dctocdd (s, xc1, xc2, dxc2, ddxc2) |
Evaluate Schmidt transformation, xc1 –> xc2, with scaling parameter s, its jacobian, dxc2, and its 2nd derivative, ddxc2. More... | |
subroutine | dctog (xe, dlat, dlon) |
Transform "Cartesian" to "Geographical" coordinates, where the geographical coordinates refer to latitude and longitude (degrees) and cartesian coordinates are standard earth-centered cartesian coordinates: xe(3) pointing north, xe(1) pointing to the 0-meridian. More... | |
subroutine | dctogr (xe, rlat, rlon) |
Transform "Cartesian" to "Geographical" coordinates, where the geographical coordinates refer to latitude and longitude (radians) and cartesian coordinates are standard earth-centered cartesian coordinates: xe(3) pointing north, xe(1) pointing to the 0-meridian. More... | |
subroutine | dgrtoc (rlat, rlon, xe) |
Transform "Geographical" to "Cartesian" coordinates. More... | |
subroutine | dgrtocd (rlat, rlon, xe, dxedlat, dxedlon) |
Transform "Geographical" to "Cartesian" coordinates, together with the partial derivatives of cartesians wrt latitude and longitude. More... | |
subroutine | dgrtocdd (rlat, rlon, xe, dxedlat, dxedlon, ddxedlatdlat, ddxedlatdlon, ddxedlondlon) |
Transform "Geographical" to "Cartesian" coordinates, together with the 1st and 2nd partial derivatives of cartesians wrt latitude and longitude. More... | |
subroutine | dgtoc (dlat, dlon, xe) |
Transform "Geographical" to "Cartesian" coordinates, where the geographical coordinates refer to latitude and longitude (degrees) and cartesian coordinates are standard earth-centered cartesian coordinates: xe(3) pointing north, xe(1) pointing to the 0-meridian. More... | |
subroutine | dgtocd (dlat, dlon, xe, dxedlat, dxedlon) |
Transform "Geographical" to "Cartesian" coordinates, where the geographical coordinates refer to latitude and longitude (degrees) and cartesian coordinates are standard earth-centered cartesian coordinates: xe(3) pointing north, xe(1) pointing to the 0-meridian. More... | |
subroutine | dgtocdd (dlat, dlon, xe, dxedlat, dxedlon, ddxedlatdlat, ddxedlatdlon, ddxedlondlon) |
Transform "Geographical" to "Cartesian" coordinates, where the geographical coordinates refer to latitude and longitude (degrees) and cartesian coordinates are standard earth-centered cartesian coordinates: xe(3) pointing north, xe(1) pointing to the 0-meridian. More... | |
subroutine | dininmap (alon0, alat0, rot3) |
Initialize the rotation matrix ROT3 needed to transform standard earth-centered cartesian components to the alternative cartesian frame oriented so as to put geographical point (ALAT0,ALON0) on the projection axis. More... | |
subroutine | dinivmap (alon0, alat0, rot3) |
Initialize the rotation matrix ROT3 needed to transform standard earth-centered cartesian components to the alternative cartesian frame oriented so as to put geographical point (ALAT0,ALON0) at the viewing nadir. More... | |
subroutine | dplrot (rot3, n, x, y, z) |
Apply a constant rotation to a three dimensional polyline. More... | |
subroutine | dplroti (rot3, n, x, y, z) |
Invert the rotation of a three-dimensional polyline. More... | |
subroutine, public | frametwist (xp, yp, zp, xv, yv, zv, twist) |
Given a principal cartesian orthonormal frame, {xp,yp,zp} (i.e., at P with Earth-centered cartesians, zp), and another similar frame {xv,yv,zv} at V with Earth-centered cartesians zv, find the relative rotation angle, "twist" by which the frame at V is rotated in the counterclockwise sense relative to the parallel-transportation of P's frame to V. More... | |
subroutine | gtoframem (plat, plon, orth) |
From the degree lat and lon (plat and plon) return the standard orthogonal 3D frame at this location as an orthonormal matrix, orth. More... | |
subroutine | gtoframev (plat, plon, xp, yp, zp) |
Given a geographical point by its degrees lat and lon, plat and plon, return its standard orthogonal cartesian frame, {xp,yp,zp} in earth-centered coordinates. More... | |
subroutine, public | paraframe (xp, yp, zp, xv, yv, zv) |
Take a principal reference orthonormal frame, {xp,yp,zp} and a dependent point defined by unit vector, zv, and complete the V-frame cartesian components, {xv,yv}, that are the result of parallel-transport of {xp,yp} along the geodesic between P and V. More... | |
subroutine, public | plctoc (s, n, x, y, z) |
Perform Schmidt transformation with scaling parameter s to a polyline. More... | |
subroutine, public | plrot (rot3, n, x, y, z) |
Apply a constant rotation to a three dimensional polyline. More... | |
subroutine, public | plroti (rot3, n, x, y, z) |
Invert the rotation of a three-dimensional polyline. More... | |
subroutine | sctoc (s, xc1, xc2) |
Evaluate Schmidt transformation, xc1 –> xc2, with scaling parameter s. More... | |
subroutine | sctocd (s, xc1, xc2, dxc2) |
Evaluate Schmidt transformation, xc1 –> xc2, with scaling parameter s, and its jacobian, dxc2. More... | |
subroutine | sctocdd (s, xc1, xc2, dxc2, ddxc2) |
Evaluate Schmidt transformation, xc1 –> xc2, with scaling parameter s, its jacobian, dxc2, and its 2nd derivative, ddxc2. More... | |
subroutine | sctog (xe, dlat, dlon) |
Transform "Cartesian" to "Geographical" coordinates, where the geographical coordinates refer to latitude and longitude (degrees) and cartesian coordinates are standard earth-centered cartesian coordinates: xe(3) pointing north, xe(1) pointing to the 0-meridian. More... | |
subroutine | sctogr (xe, rlat, rlon) |
Transform "Cartesian" to "Geographical" coordinates, where the geographical coordinates refer to latitude and longitude (radians) and cartesian coordinates are standard earth-centered cartesian coordinates: xe(3) pointing north, xe(1) pointing to the 0-meridian. More... | |
subroutine | sframetwist (sxp, syp, szp, sxv, syv, szv, stwist) |
Given a principal cartesian orthonormal frame, {xp,yp,zp} (i.e., at P with Earth-centered cartesians, zp), and another similar frame {xv,yv,zv} at V with Earth-centered cartesians zv, find the relative rotation angle, "twist" by which the frame at V is rotated in the counterclockwise sense relative to the parallel-transportation of P's frame to V. More... | |
subroutine | sgrtoc (rlat, rlon, xe) |
Transform "Geographical" to "Cartesian" coordinates. More... | |
subroutine | sgrtocd (rlat, rlon, xe, dxedlat, dxedlon) |
Transform "Geographical" to "Cartesian" coordinates, together with the partial derivatives of cartesians wrt latitude and longitude. More... | |
subroutine | sgrtocdd (rlat, rlon, xe, dxedlat, dxedlon, ddxedlatdlat, ddxedlatdlon, ddxedlondlon) |
Transform "Geographical" to "Cartesian" coordinates, together with the 1st and 2nd partial derivatives of cartesians wrt latitude and longitude. More... | |
subroutine | sgtoc (dlat, dlon, xe) |
Transform "Geographical" to "Cartesian" coordinates, where the geographical coordinates refer to latitude and longitude (degrees) and cartesian coordinates are standard earth-centered cartesian coordinates: xe(3) pointing north, xe(1) pointing to the 0-meridian. More... | |
subroutine | sgtocd (dlat, dlon, xe, dxedlat, dxedlon) |
Transform "Geographical" to "Cartesian" coordinates, where the geographical coordinates refer to latitude and longitude (degrees) and cartesian coordinates are standard earth-centered cartesian coordinates: xe(3) pointing north, xe(1) pointing to the 0-meridian. More... | |
subroutine | sgtocdd (dlat, dlon, xe, dxedlat, dxedlon, ddxedlatdlat, ddxedlatdlon, ddxedlondlon) |
Transform "Geographical" to "Cartesian" coordinates, where the geographical coordinates refer to latitude and longitude (degrees) and cartesian coordinates are standard earth-centered cartesian coordinates: xe(3) pointing north, xe(1) pointing to the 0-meridian. More... | |
subroutine | sgtoframem (splat, splon, sorth) |
From the degree lat and lon (plat and plon) return the standard orthogonal 3D frame at this location as an orthonormal matrix, orth. More... | |
subroutine | sgtoframev (splat, splon, sxp, syp, szp) |
Given a geographical point by its degrees lat and lon, plat and plon, return its standard orthogonal cartesian frame, {xp,yp,zp} in earth-centered coordinates. More... | |
subroutine | sininmap (alon0, alat0, rot3) |
Initialize the rotation matrix ROT3 needed to transform standard earth-centered cartesian components to the alternative cartesian frame oriented so as to put geographical point (ALAT0,ALON0) on the projection axis. More... | |
subroutine | sinivmap (alon0, alat0, rot3) |
Initialize the rotation matrix ROT3 needed to transform standard earth-centered cartesian components to the alternative cartesian frame oriented so as to put geographical point (ALAT0,ALON0) at the viewing nadir. More... | |
subroutine | sparaframe (sxp, syp, szp, sxv, syv, szv) |
Take a principal reference orthonormal frame, {xp,yp,zp} and a dependent point defined by unit vector, zv, and complete the V-frame cartesian components, {xv,yv}, that are the result of parallel-transport of {xp,yp} along the geodesic between P and V. More... | |
Utility routines for orienting the globe and basic geographical mappings.
+ +subroutine pmat5::dctoc | +( | +real(dp), intent(in) | +s, | +
+ | + | real(dp), dimension(3), intent(inout) | +xc1, | +
+ | + | real(dp), dimension(3), intent(inout) | +xc2 | +
+ | ) | ++ |
subroutine pmat5::dctocd | +( | +real(dp), intent(in) | +s, | +
+ | + | real(dp), dimension(3), intent(inout) | +xc1, | +
+ | + | real(dp), dimension(3), intent(inout) | +xc2, | +
+ | + | real(dp), dimension(3,3), intent(out) | +dxc2 | +
+ | ) | ++ |
Evaluate Schmidt transformation, xc1 –> xc2, with scaling parameter s, and its jacobian, dxc2.
+[in] | s | Schmidt scaling parameter. |
[in,out] | xc1 | input cartesian 3-vector. |
[in,out] | xc2 | output cartesian unit 3-vector. |
[out] | dxc2 | jacobian 1st derivative, d(xc2)/d(xc1). |
subroutine pmat5::dctocdd | +( | +real(dp), intent(in) | +s, | +
+ | + | real(dp), dimension(3), intent(inout) | +xc1, | +
+ | + | real(dp), dimension(3), intent(inout) | +xc2, | +
+ | + | real(dp), dimension(3,3), intent(out) | +dxc2, | +
+ | + | real(dp), dimension(3,3,3), intent(out) | +ddxc2 | +
+ | ) | ++ |
Evaluate Schmidt transformation, xc1 –> xc2, with scaling parameter s, its jacobian, dxc2, and its 2nd derivative, ddxc2.
+[in] | s | Schmidt scaling parameter. |
[in,out] | xc1 | input cartesian 3-vector. |
[in,out] | xc2 | output cartesian unit 3-vector. |
[out] | dxc2 | jacobian 1st derivative, d(xc2)/d(xc1). |
[out] | ddxc2 | 2nd derivative, d^2(xc2)/(d(xc1)d(xc1)). |
subroutine pmat5::dctog | +( | +real(dp), dimension(3), intent(in) | +xe, | +
+ | + | real(dp), intent(out) | +dlat, | +
+ | + | real(dp), intent(out) | +dlon | +
+ | ) | ++ |
Transform "Cartesian" to "Geographical" coordinates, where the geographical coordinates refer to latitude and longitude (degrees) and cartesian coordinates are standard earth-centered cartesian coordinates: xe(3) pointing north, xe(1) pointing to the 0-meridian.
+Double precision version.
+[in] | xe | Earth-centered cartesian unit 3-vector. |
[out] | dlat | degrees latitude. |
[out] | dlon | degrees longitude. |
Definition at line 398 of file pmat5.f90.
+ +References pietc::rtod, and pietc::u0.
+ +subroutine pmat5::dctogr | +( | +real(dp), dimension(3), intent(in) | +xe, | +
+ | + | real(dp), intent(out) | +rlat, | +
+ | + | real(dp), intent(out) | +rlon | +
+ | ) | ++ |
Transform "Cartesian" to "Geographical" coordinates, where the geographical coordinates refer to latitude and longitude (radians) and cartesian coordinates are standard earth-centered cartesian coordinates: xe(3) pointing north, xe(1) pointing to the 0-meridian.
+Double precision version.
+[in] | xe | Earth-centered cartesian unit 3-vector. |
[out] | rlat | radians latitude. |
[out] | rlon | radians longitude. |
Definition at line 198 of file pmat5.f90.
+ +References pietc::u0.
+ +
+
|
+ +private | +
+
|
+ +private | +
Transform "Geographical" to "Cartesian" coordinates, together with the partial derivatives of cartesians wrt latitude and longitude.
+Double precision version.
+[in] | rlat | Latitude (radians) of point. |
[in] | rlon | Longitude (radians) of point. |
[out] | xe | Earth-centered cartesian unit 3-vector of point. |
[out] | dxedlat | Derivative, d(xe)/d(rlat). |
[out] | dxedlon | Derivative, d(xe)/d(rlon). |
Definition at line 280 of file pmat5.f90.
+ +References pietc::u0.
+ +Referenced by sgrtocd().
+ +
+
|
+ +private | +
Transform "Geographical" to "Cartesian" coordinates, together with the 1st and 2nd partial derivatives of cartesians wrt latitude and longitude.
+Double precision version.
+[in] | rlat | Latitude (radians) of point. |
[in] | rlon | Longitude (radians) of point. |
[out] | xe | Earth-centered cartesian unit 3-vector of point. |
[out] | dxedlat | Derivative, d(xe)/d(rlat). |
[out] | dxedlon | Derivative, d(xe)/d(rlon). |
[out] | ddxedlatdlat | Derivative, d^2(xe)/(d(rlat)d(rlat)). |
[out] | ddxedlatdlon | Derivative, d^2(xe)/(d(rlat)d(rlon)). |
[out] | ddxedlondlon | Derivative, d^2(xe)/(d(rlon)d(rlon)). |
Definition at line 340 of file pmat5.f90.
+ +References pietc::u0.
+ +subroutine pmat5::dgtoc | +( | +real(dp), intent(in) | +dlat, | +
+ | + | real(dp), intent(in) | +dlon, | +
+ | + | real(dp), dimension(3), intent(out) | +xe | +
+ | ) | ++ |
Transform "Geographical" to "Cartesian" coordinates, where the geographical coordinates refer to latitude and longitude (degrees) and cartesian coordinates are standard earth-centered cartesian coordinates: xe(3) pointing north, xe(1) pointing to the 0-meridian.
+Double precision version.
+[in] | dlat | degrees latitude. |
[in] | dlon | degrees longitude. |
[out] | xe | cartesian unit 3-vector. |
Definition at line 445 of file pmat5.f90.
+ +References pietc::dtor.
+ +
+
|
+ +private | +
Transform "Geographical" to "Cartesian" coordinates, where the geographical coordinates refer to latitude and longitude (degrees) and cartesian coordinates are standard earth-centered cartesian coordinates: xe(3) pointing north, xe(1) pointing to the 0-meridian.
+Also, return the partial derivatives of xe wrt latitude and longitude. Double precision version.
+[in] | dlat | degrees latitude. |
[in] | dlon | degrees longitude. |
[out] | xe | cartesian unit 3-vector. |
[out] | dxedlat | derivative, d(xe)/d(dlat). |
[out] | dxedlon | derivative, d(xe)/d(dlon). |
Definition at line 496 of file pmat5.f90.
+ +References pietc::dtor, and pietc::u0.
+ +Referenced by sgtocd().
+ +
+
|
+ +private | +
Transform "Geographical" to "Cartesian" coordinates, where the geographical coordinates refer to latitude and longitude (degrees) and cartesian coordinates are standard earth-centered cartesian coordinates: xe(3) pointing north, xe(1) pointing to the 0-meridian.
+Also, return the 1st and 2nd partial derivatives of xe wrt latitude and longitude. Double precision version.
+[in] | dlat | degrees latitude. |
[in] | dlon | degrees longitude. |
[out] | xe | cartesian unit 3-vector. |
[out] | dxedlat | d(xe)/d(dlat). |
[out] | dxedlon | d(xe)/d(dlon). |
[out] | ddxedlatdlat | derivative, d^2(xe)/(d(dlat)d(dlat)). |
[out] | ddxedlatdlon | derivative, d^2(xe)/(d(dlat)d(dlon)). |
[out] | ddxedlondlon | derivative, d^2(xe)/(d(dlon)d(dlon)). |
Definition at line 565 of file pmat5.f90.
+ +References pietc::dtor, and pietc::u0.
+ +Referenced by sgrtocdd(), and sgtocdd().
+ +subroutine pmat5::dininmap | +( | +real(dp), intent(in) | +alon0, | +
+ | + | real(dp), intent(in) | +alat0, | +
+ | + | real(dp), dimension(3,3), intent(out) | +rot3 | +
+ | ) | ++ |
Initialize the rotation matrix ROT3 needed to transform standard earth-centered cartesian components to the alternative cartesian frame oriented so as to put geographical point (ALAT0,ALON0) on the projection axis.
+Double precision version.
+[in] | alon0 | geographical longitude (degrees) of projection center. |
[in] | alat0 | geographical latitude (degrees) of projection center. |
[out] | rot3 | rotation matrix. |
Definition at line 86 of file pmat5.f90.
+ +References pietc::dtor, and pietc::u0.
+ +subroutine pmat5::dinivmap | +( | +real(dp), intent(in) | +alon0, | +
+ | + | real(dp), intent(in) | +alat0, | +
+ | + | real(dp), dimension(3,3), intent(out) | +rot3 | +
+ | ) | ++ |
Initialize the rotation matrix ROT3 needed to transform standard earth-centered cartesian components to the alternative cartesian frame oriented so as to put geographical point (ALAT0,ALON0) at the viewing nadir.
+Double precision version.
+[in] | alon0 | geographical longitude (degrees) of viewing nadir. |
[in] | alat0 | geographical latitude (degrees) of viewing nadir. |
[out] | rot3 | rotation matrix. |
Definition at line 140 of file pmat5.f90.
+ +References pietc::dtor, and pietc::u0.
+ +
+
|
+ +private | +
Apply a constant rotation to a three dimensional polyline.
+[in] | rot3 | rotation matrix. |
[in] | n | number of points in the polyline. |
[in,out] | x | cartesian components of the three dimensional polyline. |
[in,out] | y | cartesian components of the three dimensional polyline. |
[in,out] | z | cartesian components of the three dimensional polyline. |
+
|
+ +private | +
Invert the rotation of a three-dimensional polyline.
+[in] | rot3 | rotation to be inverted. |
[in] | n | number of points in the polyline. |
[in,out] | x | cartesian components of the three dimensional polyline. |
[in,out] | y | cartesian components of the three dimensional polyline. |
[in,out] | z | cartesian components of the three dimensional polyline. |
subroutine, public pmat5::frametwist | +( | +real(dp), dimension(3), intent(in) | +xp, | +
+ | + | real(dp), dimension(3), intent(in) | +yp, | +
+ | + | real(dp), dimension(3), intent(in) | +zp, | +
+ | + | real(dp), dimension(3), intent(in) | +xv, | +
+ | + | real(dp), dimension(3), intent(in) | +yv, | +
+ | + | real(dp), dimension(3), intent(in) | +zv, | +
+ | + | real(dp), intent(out) | +twist | +
+ | ) | ++ |
Given a principal cartesian orthonormal frame, {xp,yp,zp} (i.e., at P with Earth-centered cartesians, zp), and another similar frame {xv,yv,zv} at V with Earth-centered cartesians zv, find the relative rotation angle, "twist" by which the frame at V is rotated in the counterclockwise sense relative to the parallel-transportation of P's frame to V.
+Note that, by symmetry, transposing P and V leads to the opposite twist. Double precision version.
+[in] | xp | P-frame cartesian X-vector. |
[in] | yp | P-frame cartesian Y-vector. |
[in] | zp | P-frame cartesian Z-vector. |
[in] | xv | V-frame cartesian X-vector. |
[in] | yv | V-frame cartesian Y-vector. |
[in] | zv | V-frame cartesian Z-vector. |
[out] | twist | relative rotation angle (radians) of frames. |
+
|
+ +private | +
From the degree lat and lon (plat and plon) return the standard orthogonal 3D frame at this location as an orthonormal matrix, orth.
+Double precision version.
+[in] | plat | latitude (degrees) of point. |
[in] | plon | longitude (degrees) of point. |
[out] | orth | orthonormal matrix. |
Definition at line 617 of file pmat5.f90.
+ +References gtoframev().
+ +Referenced by sgtoframem().
+ +
+
|
+ +private | +
Given a geographical point by its degrees lat and lon, plat and plon, return its standard orthogonal cartesian frame, {xp,yp,zp} in earth-centered coordinates.
+Double precision version.
+[in] | plat | latitude (degrees) of point. |
[in] | plon | longitude (degrees) of point. |
[out] | xp | unit X-basis vector of cartesian frame. |
[out] | yp | unit Y-basis vector of cartesian frame. |
[out] | zp | unit Z-basis vector of cartesian frame. |
Definition at line 662 of file pmat5.f90.
+ +References pietc::u0, and pietc::u1.
+ +Referenced by gtoframem(), and sgtoframev().
+ +subroutine, public pmat5::paraframe | +( | +real(dp), dimension(3), intent(in) | +xp, | +
+ | + | real(dp), dimension(3), intent(in) | +yp, | +
+ | + | real(dp), dimension(3), intent(in) | +zp, | +
+ | + | real(dp), dimension(3), intent(out) | +xv, | +
+ | + | real(dp), dimension(3), intent(out) | +yv, | +
+ | + | real(dp), dimension(3), intent(in) | +zv | +
+ | ) | ++ |
Take a principal reference orthonormal frame, {xp,yp,zp} and a dependent point defined by unit vector, zv, and complete the V-frame cartesian components, {xv,yv}, that are the result of parallel-transport of {xp,yp} along the geodesic between P and V.
+Double precision version.
+[in] | xp | reference orthonormal P-frame cartesian X-vector. |
[in] | yp | reference orthonormal P-frame cartesian Y-vector. |
[in] | zp | reference orthonormal P-frame cartesian Z-vector. |
[out] | xv | V-frame cartesian X-vector. |
[out] | yv | V-frame cartesian Y-vector. |
[in] | zv | dependent point zenith, V-frame cartesian Z-vector. |
subroutine, public pmat5::plctoc | +( | +real(sp), intent(in) | +s, | +
+ | + | integer, intent(in) | +n, | +
+ | + | real(sp), dimension(n), intent(inout) | +x, | +
+ | + | real(sp), dimension(n), intent(inout) | +y, | +
+ | + | real(sp), dimension(n), intent(inout) | +z | +
+ | ) | ++ |
Perform Schmidt transformation with scaling parameter s to a polyline.
+[in] | s | Schmidt scaling parameter. |
[in] | n | number of points in the polyline. |
[in,out] | x | cartesian components of the three dimensional polyline. |
[in,out] | y | cartesian components of the three dimensional polyline. |
[in,out] | z | cartesian components of the three dimensional polyline. |
subroutine, public pmat5::plrot | +( | +real(sp), dimension(3,3), intent(in) | +rot3, | +
+ | + | integer, intent(in) | +n, | +
+ | + | real(sp), dimension(n), intent(inout) | +x, | +
+ | + | real(sp), dimension(n), intent(inout) | +y, | +
+ | + | real(sp), dimension(n), intent(inout) | +z | +
+ | ) | ++ |
Apply a constant rotation to a three dimensional polyline.
+[in] | rot3 | rotation matrix. |
[in] | n | number of points in the polyline. |
[in,out] | x | cartesian components of the three dimensional polyline. |
[in,out] | y | cartesian components of the three dimensional polyline. |
[in,out] | z | cartesian components of the three dimensional polyline. |
Definition at line 1040 of file pmat5.f90.
+ +References pietc::t.
+ +subroutine, public pmat5::plroti | +( | +real(sp), dimension(3,3), intent(in) | +rot3, | +
+ | + | integer, intent(in) | +n, | +
+ | + | real(sp), dimension(n), intent(inout) | +x, | +
+ | + | real(sp), dimension(n), intent(inout) | +y, | +
+ | + | real(sp), dimension(n), intent(inout) | +z | +
+ | ) | ++ |
Invert the rotation of a three-dimensional polyline.
+[in] | rot3 | rotation to be inverted. |
[in] | n | number of points in the polyline. |
[in,out] | x | cartesian components of the three dimensional polyline. |
[in,out] | y | cartesian components of the three dimensional polyline. |
[in,out] | z | cartesian components of the three dimensional polyline. |
Definition at line 1062 of file pmat5.f90.
+ +References pietc::t.
+ +
+
|
+ +private | +
subroutine pmat5::sctocd | +( | +real(sp), intent(in) | +s, | +
+ | + | real(sp), dimension(3), intent(inout) | +xc1, | +
+ | + | real(sp), dimension(3), intent(inout) | +xc2, | +
+ | + | real(sp), dimension(3,3), intent(out) | +dxc2 | +
+ | ) | ++ |
Evaluate Schmidt transformation, xc1 –> xc2, with scaling parameter s, and its jacobian, dxc2.
+[in] | s | Schmidt scaling parameter. |
[in,out] | xc1 | input cartesian 3-vector. |
[in,out] | xc2 | output cartesian unit 3-vector. |
[out] | dxc2 | jacobian 1st derivative, d(xc2)/d(xc1). |
subroutine pmat5::sctocdd | +( | +real(sp), intent(in) | +s, | +
+ | + | real(sp), dimension(3), intent(inout) | +xc1, | +
+ | + | real(sp), dimension(3), intent(inout) | +xc2, | +
+ | + | real(sp), dimension(3,3), intent(out) | +dxc2, | +
+ | + | real(sp), dimension(3,3,3), intent(out) | +ddxc2 | +
+ | ) | ++ |
Evaluate Schmidt transformation, xc1 –> xc2, with scaling parameter s, its jacobian, dxc2, and its 2nd derivative, ddxc2.
+[in] | s | Schmidt scaling parameter. |
[in] | xc1 | input cartesian 3-vector. |
[in] | xc2 | output cartesian unit 3-vector. |
[out] | dxc2 | jacobian 1st derivative, d(xc2)/d(xc1). |
[out] | ddxc2 | 2nd derivative, d^2(xc2)/(d(xc1)d(xc1)). |
subroutine pmat5::sctog | +( | +real(sp), dimension(3), intent(in) | +xe, | +
+ | + | real(sp), intent(out) | +dlat, | +
+ | + | real(sp), intent(out) | +dlon | +
+ | ) | ++ |
Transform "Cartesian" to "Geographical" coordinates, where the geographical coordinates refer to latitude and longitude (degrees) and cartesian coordinates are standard earth-centered cartesian coordinates: xe(3) pointing north, xe(1) pointing to the 0-meridian.
+Single precision version.
+[in] | xe | Earth-centered cartesian unit 3-vector. |
[out] | dlat | degrees latitude. |
[out] | dlon | degrees longitude. |
subroutine pmat5::sctogr | +( | +real(sp), dimension(3), intent(in) | +xe, | +
+ | + | real(sp), intent(out) | +rlat, | +
+ | + | real(sp), intent(out) | +rlon | +
+ | ) | ++ |
Transform "Cartesian" to "Geographical" coordinates, where the geographical coordinates refer to latitude and longitude (radians) and cartesian coordinates are standard earth-centered cartesian coordinates: xe(3) pointing north, xe(1) pointing to the 0-meridian.
+Single precision version.
+[in] | xe | Earth-centered cartesian unit 3-vector. |
[out] | rlat | radians latitude. |
[out] | rlon | radians longitude. |
subroutine pmat5::sframetwist | +( | +real(sp), dimension(3), intent(in) | +sxp, | +
+ | + | real(sp), dimension(3), intent(in) | +syp, | +
+ | + | real(sp), dimension(3), intent(in) | +szp, | +
+ | + | real(sp), dimension(3), intent(in) | +sxv, | +
+ | + | real(sp), dimension(3), intent(in) | +syv, | +
+ | + | real(sp), dimension(3), intent(in) | +szv, | +
+ | + | real(sp), intent(out) | +stwist | +
+ | ) | ++ |
Given a principal cartesian orthonormal frame, {xp,yp,zp} (i.e., at P with Earth-centered cartesians, zp), and another similar frame {xv,yv,zv} at V with Earth-centered cartesians zv, find the relative rotation angle, "twist" by which the frame at V is rotated in the counterclockwise sense relative to the parallel-transportation of P's frame to V.
+Note that, by symmetry, transposing P and V leads to the opposite twist. Single precision version.
+[in] | sxp | P-frame cartesian X-vector. |
[in] | syp | P-frame cartesian Y-vector. |
[in] | szp | P-frame cartesian Z-vector. |
[in] | sxv | V-frame cartesian X-vector. |
[in] | syv | V-frame cartesian Y-vector. |
[in] | szv | V-frame cartesian Z-vector. |
[out] | stwist | relative rotation angle (radians) of frames. |
subroutine pmat5::sgrtoc | +( | +real(sp), intent(in) | +rlat, | +
+ | + | real(sp), intent(in) | +rlon, | +
+ | + | real(sp), dimension(3), intent(out) | +xe | +
+ | ) | ++ |
+
|
+ +private | +
Transform "Geographical" to "Cartesian" coordinates, together with the partial derivatives of cartesians wrt latitude and longitude.
+Single precision version.
+[in] | rlat | Latitude (radians) of point. |
[in] | rlon | Longitude (radians) of point. |
[out] | xe | Earth-centered cartesian unit 3-vector of point. |
[out] | dxedlat | Derivative, d(xe)/d(rlat). |
[out] | dxedlon | Derivative, d(xe)/d(rlon). |
Definition at line 257 of file pmat5.f90.
+ +References dgrtocd().
+ +subroutine pmat5::sgrtocdd | +( | +real(sp), intent(in) | +rlat, | +
+ | + | real(sp), intent(in) | +rlon, | +
+ | + | real(sp), dimension(3), intent(out) | +xe, | +
+ | + | real(sp), dimension(3), intent(out) | +dxedlat, | +
+ | + | real(sp), dimension(3), intent(out) | +dxedlon, | +
+ | + | real(sp), dimension(3), intent(out) | +ddxedlatdlat, | +
+ | + | real(sp), dimension(3), intent(out) | +ddxedlatdlon, | +
+ | + | real(sp), dimension(3), intent(out) | +ddxedlondlon | +
+ | ) | ++ |
Transform "Geographical" to "Cartesian" coordinates, together with the 1st and 2nd partial derivatives of cartesians wrt latitude and longitude.
+Single precision version.
+[in] | rlat | Latitude (radians) of point. |
[in] | rlon | Longitude (radians) of point. |
[out] | xe | Earth-centered cartesian unit 3-vector of point. |
[out] | dxedlat | Derivative, d(xe)/d(rlat). |
[out] | dxedlon | Derivative, d(xe)/d(rlon). |
[out] | ddxedlatdlat | Derivative, d^2(xe)/(d(rlat)d(rlat)). |
[out] | ddxedlatdlon | Derivative, d^2(xe)/(d(rlat)d(rlon)). |
[out] | ddxedlondlon | Derivative, d^2(xe)/(d(rlon)d(rlon)). |
Definition at line 307 of file pmat5.f90.
+ +References dgtocdd().
+ +subroutine pmat5::sgtoc | +( | +real(sp), intent(in) | +dlat, | +
+ | + | real(sp), intent(in) | +dlon, | +
+ | + | real(sp), dimension(3), intent(out) | +xe | +
+ | ) | ++ |
Transform "Geographical" to "Cartesian" coordinates, where the geographical coordinates refer to latitude and longitude (degrees) and cartesian coordinates are standard earth-centered cartesian coordinates: xe(3) pointing north, xe(1) pointing to the 0-meridian.
+Single precision version.
+[in] | dlat | degrees latitude. |
[in] | dlon | degrees longitude. |
[out] | xe | Earth-centered cartesian unit 3-vector. |
subroutine pmat5::sgtocd | +( | +real(sp), intent(in) | +dlat, | +
+ | + | real(sp), intent(in) | +dlon, | +
+ | + | real(sp), dimension(3), intent(out) | +xe, | +
+ | + | real(sp), dimension(3), intent(out) | +dxedlat, | +
+ | + | real(sp), dimension(3), intent(out) | +dxedlon | +
+ | ) | ++ |
Transform "Geographical" to "Cartesian" coordinates, where the geographical coordinates refer to latitude and longitude (degrees) and cartesian coordinates are standard earth-centered cartesian coordinates: xe(3) pointing north, xe(1) pointing to the 0-meridian.
+Also, return the partial derivatives of xe wrt latitude and longitude. Single precision version.
+[in] | dlat | degrees latitude. |
[in] | dlon | degrees longitude. |
[out] | xe | cartesian unit 3-vector. |
[out] | dxedlat | derivative, d(xe)/d(dlat). |
[out] | dxedlon | derivative, d(xe)/d(dlon). |
Definition at line 470 of file pmat5.f90.
+ +References dgtocd().
+ +subroutine pmat5::sgtocdd | +( | +real(sp), intent(in) | +dlat, | +
+ | + | real(sp), intent(in) | +dlon, | +
+ | + | real(sp), dimension(3), intent(out) | +xe, | +
+ | + | real(sp), dimension(3), intent(out) | +dxedlat, | +
+ | + | real(sp), dimension(3), intent(out) | +dxedlon, | +
+ | + | real(sp), dimension(3), intent(out) | +ddxedlatdlat, | +
+ | + | real(sp), dimension(3), intent(out) | +ddxedlatdlon, | +
+ | + | real(sp), dimension(3), intent(out) | +ddxedlondlon | +
+ | ) | ++ |
Transform "Geographical" to "Cartesian" coordinates, where the geographical coordinates refer to latitude and longitude (degrees) and cartesian coordinates are standard earth-centered cartesian coordinates: xe(3) pointing north, xe(1) pointing to the 0-meridian.
+Also, return the 1st and 2nd partial derivatives of xe wrt latitude and longitude. Single precision version.
+[in] | dlat | degrees latitude. |
[in] | dlon | degrees longitude. |
[out] | xe | cartesian unit 3-vector. |
[out] | dxedlat | derivative, d(xe)/d(dlat). |
[out] | dxedlon | derivative, d(xe)/d(dlon). |
[out] | ddxedlatdlat | derivative, d^2(xe)/(d(dlat)d(dlat)). |
[out] | ddxedlatdlon | derivative, d^2(xe)/(d(dlat)d(dlon)). |
[out] | ddxedlondlon | derivative, d^2(xe)/(d(dlon)d(dlon)). |
Definition at line 528 of file pmat5.f90.
+ +References dgtocdd().
+ +subroutine pmat5::sgtoframem | +( | +real(sp), intent(in) | +splat, | +
+ | + | real(sp), intent(in) | +splon, | +
+ | + | real(sp), dimension(3,3), intent(out) | +sorth | +
+ | ) | ++ |
From the degree lat and lon (plat and plon) return the standard orthogonal 3D frame at this location as an orthonormal matrix, orth.
+Single precision version.
+[in] | splat | latitude (degrees) of point. |
[in] | splon | longitude (degrees) of point. |
[out] | sorth | orthonormal matrix. |
Definition at line 600 of file pmat5.f90.
+ +References gtoframem().
+ +
+
|
+ +private | +
Given a geographical point by its degrees lat and lon, plat and plon, return its standard orthogonal cartesian frame, {xp,yp,zp} in earth-centered coordinates.
+Single precision version.
+[in] | splat | latitude (degrees) of point. |
[in] | splon | longitude (degrees) of point. |
[out] | sxp | xp unit X-basis vector of cartesian frame. |
[out] | syp | yp unit Y-basis vector of cartesian frame. |
[out] | szp | zp unit Z-basis vector of cartesian frame. |
Definition at line 637 of file pmat5.f90.
+ +References gtoframev().
+ +
+
|
+ +private | +
Initialize the rotation matrix ROT3 needed to transform standard earth-centered cartesian components to the alternative cartesian frame oriented so as to put geographical point (ALAT0,ALON0) on the projection axis.
+Single precision version.
+[in] | alon0 | geographical longitude (degrees) of projection center. |
[in] | alat0 | geographical latitude (degrees) of projection center. |
[out] | rot3 | rotation matrix. |
subroutine pmat5::sinivmap | +( | +real(sp), intent(in) | +alon0, | +
+ | + | real(sp), intent(in) | +alat0, | +
+ | + | real(sp), dimension(3,3), intent(out) | +rot3 | +
+ | ) | ++ |
Initialize the rotation matrix ROT3 needed to transform standard earth-centered cartesian components to the alternative cartesian frame oriented so as to put geographical point (ALAT0,ALON0) at the viewing nadir.
+Single precision version.
+[in] | alon0 | geographical longitude (degrees) of viewing nadir. |
[in] | alat0 | geographical latitude (degrees) of viewing nadir. |
[out] | rot3 | rotation matrix. |
subroutine pmat5::sparaframe | +( | +real(sp), dimension(3), intent(in) | +sxp, | +
+ | + | real(sp), dimension(3), intent(in) | +syp, | +
+ | + | real(sp), dimension(3), intent(in) | +szp, | +
+ | + | real(sp), dimension(3), intent(out) | +sxv, | +
+ | + | real(sp), dimension(3), intent(out) | +syv, | +
+ | + | real(sp), dimension(3), intent(in) | +szv | +
+ | ) | ++ |
Take a principal reference orthonormal frame, {xp,yp,zp} and a dependent point defined by unit vector, zv, and complete the V-frame cartesian components, {xv,yv}, that are the result of parallel-transport of {xp,yp} along the geodesic between P and V.
+Single precision version.
+[in] | sxp | reference orthonormal P-frame cartesian X-vector. |
[in] | syp | reference orthonormal P-frame cartesian Y-vector. |
[in] | szp | reference orthonormal P-frame cartesian Z-vector. |
[out] | sxv | V-frame cartesian X-vector. |
[out] | syv | V-frame cartesian Y-vector. |
[in] | szv | dependent point zenith, V-frame cartesian Z-vector. |
+ grid_tools
+ 1.13.0
+
+ |
+
A suite of routines to perform the eigen-decomposition of symmetric 2*2 matrices and to deliver basic analytic functions, and the derivatives of these functions, of such matrices. +More...
++Data Types | |
interface | chol2 |
interface | eigensym2 |
interface | expsym2 |
interface | expsym2d_e |
interface | expsym2d_t |
interface | id2222 |
interface | invsym2 |
interface | logsym2 |
interface | sqrtsym2 |
interface | sqrtsym2d_e |
interface | sqrtsym2d_t |
+Functions/Subroutines | |
subroutine, public | chol2 (s, c, ff) |
Return the cholesky lower triangular factor, C, of the 2X2 symmetric matrix, S, or raise the failure flag, FF, if S is not positive-definite. More... | |
subroutine, public | eigensym2 (em, vv, oo) |
Get the orthogonal eigenvectors, vv, and diagonal matrix of eigenvalues, oo, of the symmetric 2*2 matrix, em. More... | |
subroutine | eigensym2d (em, vv, oo, vvd, ood, ff) |
For a symmetric 2*2 matrix, em, return the normalized eigenvectors, vv, and the diagonal matrix of eigenvalues, oo. More... | |
subroutine, public | expsym2 (em, expem) |
Get the exp of a symmetric 2*2 matrix. More... | |
subroutine | expsym2d (x, z, zd) |
Get the exp of a symmetric 2*2 matrix, and its symmetric derivative. More... | |
subroutine | expsym2d_e (x, z, zd) |
Get the exponential and its symmetric derivative for a symmetric 2*2 matrix using eigen-decomposition. More... | |
subroutine | expsym2d_t (x, z, zd) |
Use the Taylor-series method (eigenvalues both fairly close to zero). More... | |
subroutine, public | id2222 (em) |
General routine for a symmetrized 4th-rank tensor that acts as an effective identity for operations on symmetric matrices. More... | |
subroutine, public | invsym2 (em, z) |
Get the inverse of a 2*2 matrix (need not be symmetric in this case). More... | |
subroutine | invsym2d (em, z, zd) |
Get the inverse, z,of a 2*2 symmetric matrix, em, and its derivative, zd, with respect to symmetric variations of its components. More... | |
subroutine, public | logsym2 (em, logem) |
Get the log of a symmetric positive-definite 2*2 matrix. More... | |
subroutine | logsym2d (x, z, zd) |
General routine to evaluate the logarithm, z=log(x), and the symmetric derivative, zd = dz/dx, where x is a symmetric 2*2 positive-definite matrix. More... | |
subroutine, public | sqrtsym2 (em, z) |
Get the sqrt of a symmetric positive-definite 2*2 matrix. More... | |
subroutine | sqrtsym2d (x, z, zd) |
General routine to evaluate z=sqrt(x), and the symmetric derivative, zd = dz/dx, where x is a symmetric 2*2 positive-definite matrix. More... | |
subroutine | sqrtsym2d_e (x, z, zd) |
Eigen-method. More... | |
subroutine | sqrtsym2d_t (x, z, zd) |
Use the Taylor-series method (eigenvalues both fairly close to unity). More... | |
+Variables | |
real(dp), dimension(2, 2, 2, 2) | id |
ID. More... | |
A suite of routines to perform the eigen-decomposition of symmetric 2*2 matrices and to deliver basic analytic functions, and the derivatives of these functions, of such matrices.
+In addition, we include a simple cholesky routine.
+ +subroutine, public psym2::chol2 | +( | +real(dp), dimension(2,2), intent(in) | +s, | +
+ | + | real(dp), dimension(2,2), intent(out) | +c, | +
+ | + | logical, intent(out) | +ff | +
+ | ) | ++ |
Return the cholesky lower triangular factor, C, of the 2X2 symmetric matrix, S, or raise the failure flag, FF, if S is not positive-definite.
+[in] | s | 2X2 symmetric matrix |
[out] | c | cholesky lower triangular factor |
[out] | ff | raise the failure flag |
Definition at line 458 of file psym2.f90.
+ +References pietc::u0.
+ +subroutine, public psym2::eigensym2 | +( | +real(dp), dimension(2,2), intent(in) | +em, | +
+ | + | real(dp), dimension(2,2), intent(out) | +vv, | +
+ | + | real(dp), dimension(2,2), intent(out) | +oo | +
+ | ) | ++ |
+
|
+ +private | +
For a symmetric 2*2 matrix, em, return the normalized eigenvectors, vv, and the diagonal matrix of eigenvalues, oo.
+If the two eigenvalues are equal, proceed no further and raise the logical failure flag, ff, to .true.; otherwise, return with vvd=d(vv)/d(em) and ood=d(oo)/d(em) and ff=.false., and maintain the symmetries between the last two of the indices of these derivatives.
+[in] | em | symmetric 2*2 matrix |
[out] | vv | normalized eigenvectors |
[out] | oo | diagonal matrix of eigenvalues |
[out] | vvd | vvd=d(vv)/d(em) |
[out] | ood | ood=d(oo)/d(em) |
[out] | ff | logical failure flag |
subroutine, public psym2::expsym2 | +( | +real(dp), dimension(2,2), intent(in) | +em, | +
+ | + | real(dp), dimension(2,2), intent(out) | +expem | +
+ | ) | ++ |
+
|
+ +private | +
+
|
+ +private | +
Get the exponential and its symmetric derivative for a symmetric 2*2 matrix using eigen-decomposition.
+[in] | x | symmetric 2*2 positive-definite matrix |
[out] | z | exp of symmetrix matrix x |
[out] | zd | symmetric derivative of z wrt x |
Definition at line 317 of file psym2.f90.
+ +References pietc::u0.
+ +
+
|
+ +private | +
Use the Taylor-series method (eigenvalues both fairly close to zero).
+For a 2*2 symmetric matrix x, try to get both the z=exp(x) and dz/dx using the Taylor series expansion method.
+[in] | x | symmetric 2*2 positive-definite matrix |
[out] | z | Taylor series expansion method exp(x) |
[out] | zd | symmetric derivative |
subroutine, public psym2::id2222 | +( | +real(dp), dimension(2,2,2,2), intent(out) | +em | ) | ++ |
subroutine, public psym2::invsym2 | +( | +real(dp), dimension(2,2), intent(in) | +em, | +
+ | + | real(dp), dimension(2,2), intent(out) | +z | +
+ | ) | ++ |
+
|
+ +private | +
Get the inverse, z,of a 2*2 symmetric matrix, em, and its derivative, zd, with respect to symmetric variations of its components.
+I.e., for a symmetric infinitesimal change, delta_em, in em, the resulting infinitesimal change in z would be:
delta_z(i,j) = matmul(zd(i,j,:,:),delta_em)
[in] | em | 2*2 symmetric matrix |
[out] | z | inverse of a 2*2 symmetric matrix |
[out] | zd | derivative of the 2*2 symmetric matrix |
subroutine, public psym2::logsym2 | +( | +real(dp), dimension(2,2), intent(in) | +em, | +
+ | + | real(dp), dimension(2,2), intent(out) | +logem | +
+ | ) | ++ |
+
|
+ +private | +
General routine to evaluate the logarithm, z=log(x), and the symmetric derivative, zd = dz/dx, where x is a symmetric 2*2 positive-definite matrix.
+[in] | zd | the symmetric derivative |
[out] | x | a symmetric 2*2 positive-definite matrix |
[out] | z | evaluate the logarithm log(x) |
subroutine, public psym2::sqrtsym2 | +( | +real(dp), dimension(2,2), intent(in) | +em, | +
+ | + | real(dp), dimension(2,2), intent(out) | +z | +
+ | ) | ++ |
+
|
+ +private | +
General routine to evaluate z=sqrt(x), and the symmetric derivative, zd = dz/dx, where x is a symmetric 2*2 positive-definite matrix.
+If the eigenvalues are very close together, extract their geometric mean for "preconditioning" a scaled version, px, of x, whose sqrt, and hence its derivative, can be easily obtained by the series expansion method. Otherwise, use the eigen-method (which entails dividing by the difference in the eignevalues to get zd, and which therefore fails when the eigenvalues become too similar).
+[in] | x | symmetric 2*2 positive-definite matrix |
[out] | z | sqrt(x) result |
[out] | zd | symmetric derivative |
Definition at line 177 of file psym2.f90.
+ +References pietc::u1.
+ +
+
|
+ +private | +
+
|
+ +private | +
Use the Taylor-series method (eigenvalues both fairly close to unity).
+For a 2*2 positive definite symmetric matrix x, try to get both the z=sqrt(x) and dz/dx using the binomial-expansion method applied to the intermediate matrix,
r = (x-1). ie z=sqrt(x) = (1+r)^{1/2} = I + (1/2)*r -(1/8)*r^2 ... + + [(-)^n *(2n)!/{(n+1)! * n! *2^{2*n-1}} ]*r^{n+1}
[in] | x | symmetric 2*2 positive-definite matrix |
[out] | z | sqrt(x) result |
[out] | zd | symmetric derivative |
+
|
+ +private | +
ID.
+ +Definition at line 18 of file psym2.f90.
+ +Referenced by expsym2d_t(), id2222(), and sqrtsym2d_t().
+ +
+ grid_tools
+ 1.13.0
+
+ |
+
Ncstgeo | Constants for orientation and stretching of map |
Ndcstgeo | Constants for orientation and stretching of map |
Npesg | Suite of routines to perform the 2-parameter family of Extended Schmidt Gnomonic (ESG) regional grid mappings, and to optimize the the two parameters, A and K, of those mappings for a given rectangular domain's principal (median) semi-arcs with respect to a domain-averaged measure of distortion |
Npfun | This module is for evaluating several useful real-valued functions that are not always available in Fortran compilers |
Npietc | Some of the commonly used constants (pi etc) mainly for double-precision subroutines |
Npkind | Standard integer, real, and complex single and double precision kinds |
Npmat2 | Routines dealing with the operations of banded matrices |
Npmat4 | Module for handy vector and matrix operations in Euclidean geometry |
Npmat5 | Utility routines for orienting the globe and basic geographical mappings |
Npsym2 | A suite of routines to perform the eigen-decomposition of symmetric 2*2 matrices and to deliver basic analytic functions, and the derivatives of these functions, of such matrices |
Nutils | Module that contains general utility routines |
+ grid_tools
+ 1.13.0
+
+ |
+
Module that contains general utility routines. +More...
++Functions/Subroutines | |
subroutine | fill_regional_halo (data, halo) |
This routine extrapolate geolat_c and geolon_c halo points for the regional standalone grid. More... | |
subroutine | handle_err (status, string) |
Prints an error message to standard output, then halts program execution with a bad status. More... | |
subroutine | read_namelist |
Read the program namelist file. More... | |
+Variables | |
character(len=512) | grid_file = "atmos_mosaic.nc" |
Path/name of the grid mosaic file. More... | |
integer | grid_type = 0 |
Grid type. More... | |
character(len=128) | mask_field = "slmsk" |
NetCDF record name of the land/sea mask. More... | |
logical | nested = .false. |
If true, process a global grid with a nest. More... | |
logical | regional = .false. |
If true, process a stand-alone regional grid. More... | |
real | res = 48. |
The 'CRES' resolution. More... | |
real | stretch_fac = 1.0 |
Grid stretching factor. More... | |
character(len=128) | topo_field = "orog_filt" |
NetCDF record name of the filtered topography (or orography). More... | |
character(len=512) | topo_file = "orog" |
Path/name of the topography (or orography) file. More... | |
logical | zero_ocean = .true. |
If true, no diffusive flux into water/ocean area (preserve islands). More... | |
Module that contains general utility routines.
+ +subroutine utils::fill_regional_halo | +( | +real, dimension(1-halo:,1-halo:,:), intent(inout) | +data, | +
+ | + | integer, intent(in) | +halo | +
+ | ) | ++ |
This routine extrapolate geolat_c and geolon_c halo points for the regional standalone grid.
+Halo points are needed for dxc and dyc calculation.
+[in,out] | data | - field to be extrapolated |
[in] | halo | - number of halo rows/columns |
Definition at line 71 of file utils.F90.
+ +Referenced by read_grid_file().
+ +subroutine utils::handle_err | +( | +integer, intent(in) | +status, | +
+ | + | character(len=*), intent(in) | +string | +
+ | ) | ++ |
Prints an error message to standard output, then halts program execution with a bad status.
+[in] | status | Error status code. |
[in] | string | Error message. |
Definition at line 107 of file utils.F90.
+ +Referenced by read_grid_file(), and read_namelist().
+ +subroutine utils::read_namelist | +( | +) | ++ |
Read the program namelist file.
+Then, write the namelist variables to standard output.
+ + +Definition at line 37 of file utils.F90.
+ +References grid_file, grid_type, handle_err(), mask_field, nested, regional, res, stretch_fac, topo_field, topo_file, and zero_ocean.
+ +Referenced by filter_topo().
+ +character(len=512) utils::grid_file = "atmos_mosaic.nc" | +
Path/name of the grid mosaic file.
+ +Definition at line 18 of file utils.F90.
+ +Referenced by read_grid_file(), and read_namelist().
+ +integer utils::grid_type = 0 | +
Grid type.
+0 for a gnomonic grid.
+ +Definition at line 25 of file utils.F90.
+ +Referenced by filter_topo(), and read_namelist().
+ +character(len=128) utils::mask_field = "slmsk" | +
NetCDF record name of the land/sea mask.
+ +Definition at line 17 of file utils.F90.
+ +Referenced by read_namelist().
+ +logical utils::nested = .false. | +
If true, process a global grid with a nest.
+ +Definition at line 22 of file utils.F90.
+ +Referenced by filter_topo(), read_grid_file(), and read_namelist().
+ +logical utils::regional = .false. | +
If true, process a stand-alone regional grid.
+ +Definition at line 23 of file utils.F90.
+ +Referenced by filter_topo(), read_grid_file(), and read_namelist().
+ +real utils::res = 48. | +
The 'CRES' resolution.
+ +Definition at line 28 of file utils.F90.
+ +Referenced by read_namelist().
+ +real utils::stretch_fac = 1.0 | +
Grid stretching factor.
+ +Definition at line 27 of file utils.F90.
+ +Referenced by filter_topo(), and read_namelist().
+ +character(len=128) utils::topo_field = "orog_filt" | +
NetCDF record name of the filtered topography (or orography).
+ +Definition at line 15 of file utils.F90.
+ +Referenced by read_namelist().
+ +character(len=512) utils::topo_file = "orog" | +
Path/name of the topography (or orography) file.
+ +Definition at line 14 of file utils.F90.
+ +Referenced by read_namelist().
+ +logical utils::zero_ocean = .true. | +
If true, no diffusive flux into water/ocean area (preserve islands).
+ +Definition at line 20 of file utils.F90.
+ +Referenced by read_namelist().
+ +
+ noah
+ 1.13.0
+
+ |
+
+ noah
+ 1.13.0
+
+ |
+
+ noah
+ 1.13.0
+
+ |
+
Nset_soilveg_snippet_mod | Below was extracted from namelist_soilveg.f and set_soilveg.f (couldn't get above to compile for doxygen) |
+ noah
+ 1.13.0
+
+ |
+
Below was extracted from namelist_soilveg.f and set_soilveg.f (couldn't get above to compile for doxygen) +More...
++Functions/Subroutines | |
subroutine, public | set_soilveg_noah (isot, ivet, maxsmc, bb, satpsi, iret) |
This subroutine initializes soil and vegetation parameters needed in global_cycle/land_increment.f90. More... | |
subroutine, public | set_soilveg_noahmp (isot, ivet, maxsmc, bb, satpsi, iret) |
This subroutine initializes soil and vegetation parameters needed in global_cycle/land_increment.f90 for noah-mp. More... | |
Below was extracted from namelist_soilveg.f and set_soilveg.f (couldn't get above to compile for doxygen)
+Add Noah-MP LSM soil and veg params needed for global_cycle Noah-MP related parameters were extracted from noahmp_table.f isot (soil type) = 1: STATSGO must be selected if NoahMP is used ivet (vegetation type) = 1: IBGP is used by UFS offline Land DA for Noah-MP as of 07/13/2023
+subroutine, public set_soilveg_snippet_mod::set_soilveg_noah | +( | +integer, intent(in) | +isot, | +
+ | + | integer, intent(in) | +ivet, | +
+ | + | real, dimension(30), intent(out) | +maxsmc, | +
+ | + | real, dimension(30), intent(out) | +bb, | +
+ | + | real, dimension(30), intent(out) | +satpsi, | +
+ | + | integer, intent(out) | +iret | +
+ | ) | ++ |
This subroutine initializes soil and vegetation parameters needed in global_cycle/land_increment.f90.
+[in] | isot | Soil type |
[in] | ivet | Vegetation type |
[out] | maxsmc | Maximum soil moisture for each soil type |
[out] | bb | B exponent for each soil type |
[out] | satpsi | Saturated matric potential for each soil type |
[out] | iret | Return integer |
Definition at line 35 of file set_soilveg_snippet.f90.
+ +subroutine, public set_soilveg_snippet_mod::set_soilveg_noahmp | +( | +integer, intent(in) | +isot, | +
+ | + | integer, intent(in) | +ivet, | +
+ | + | real, dimension(30), intent(out) | +maxsmc, | +
+ | + | real, dimension(30), intent(out) | +bb, | +
+ | + | real, dimension(30), intent(out) | +satpsi, | +
+ | + | integer, intent(out) | +iret | +
+ | ) | ++ |
This subroutine initializes soil and vegetation parameters needed in global_cycle/land_increment.f90 for noah-mp.
+[in] | isot | Soil type |
[in] | ivet | Vegetation type |
[out] | maxsmc | Maximum soil moisture for each soil type |
[out] | bb | B exponent for each soil type |
[out] | satpsi | Saturated matric potential for each soil type |
[out] | iret | Return integer |
Definition at line 107 of file set_soilveg_snippet.f90.
+ +
+ ocnice_prep
+ 1.13.0
+
+ |
+
+ ocnice_prep
+ 1.13.0
+
+ |
+
▼Ninit_mod | |
Cvardefs | |
▼Nutils_esmf_mod | |
Cremaprh | |
Crotremap | |
▼Nutils_mod | |
Cdumpnc | |
Cgetfield | |
Cgetvecpair | |
Cpackarrays | |
Cremap |
+ ocnice_prep
+ 1.13.0
+
+ |
+
Define arrays, dimensions and types. +More...
+ +Go to the source code of this file.
++Functions/Subroutines | |
subroutine, public | arrays_mod::setup_packing (nvalid, vars) |
Count numbers of fields to be remapped for each mapping type and allocate the packed arrays. More... | |
+Variables | |
type(vardefs), dimension(:), allocatable | arrays_mod::b2d |
variable metadata for 2D source fields bilinear remap More... | |
type(vardefs), dimension(:), allocatable | arrays_mod::b3d |
variable metadata for 3D source fields bilinear remap More... | |
real(kind=8), dimension(:,:), allocatable | arrays_mod::bilin2d |
packed 2D source fields for bilinear remap More... | |
real(kind=8), dimension(:,:,:), allocatable | arrays_mod::bilin3d |
packed 3D source fields for bilinear remap More... | |
type(vardefs), dimension(:), allocatable | arrays_mod::c2d |
variable metadata for 2D source fields conservative remap More... | |
real(kind=8), dimension(:,:), allocatable | arrays_mod::consd2d |
packed 2D source fields for conservative remap More... | |
real(kind=8), dimension(:,:), allocatable | arrays_mod::eta |
the interface heights (eta) on the source grid More... | |
real(kind=8), parameter | arrays_mod::hmin = 1.0d-3 |
minimum layer thickness for the ocean More... | |
real(kind=8), dimension(:,:), allocatable | arrays_mod::mask3d |
the 3D mask of the source fields on Ct grid points More... | |
real(kind=8), parameter | arrays_mod::maskspval = 9.9692099683868690d+36 |
spval for RH mask values More... | |
integer | arrays_mod::nbilin2d |
the number of 2D fields mapped bilinearly More... | |
integer | arrays_mod::nbilin3d |
the number of 3D fields mapped bilinearly More... | |
integer | arrays_mod::nconsd2d |
the number of 2D fields mapped conservatively More... | |
real(kind=8), dimension(:,:), allocatable | arrays_mod::rgb2d |
packed 2D fields with bilinear remap More... | |
real(kind=8), dimension(:,:,:), allocatable | arrays_mod::rgb3d |
packed 3D fields with bilinear remap More... | |
real(kind=8), dimension(:,:), allocatable | arrays_mod::rgc2d |
packed 2D fields with conservative remap More... | |
Define arrays, dimensions and types.
+ +This module contains arrays and types
+ +Definition in file arrays_mod.F90.
+subroutine, public arrays_mod::setup_packing | +( | +integer, intent(in) | +nvalid, | +
+ | + | type(vardefs), dimension(:), intent(inout) | +vars | +
+ | ) | ++ |
Count numbers of fields to be remapped for each mapping type and allocate the packed arrays.
+[in,out] | vars | a structure describing the variable metadata |
[in] | nvalid | the number of variables provided in the ocean or ice csv file |
Definition at line 53 of file arrays_mod.F90.
+ +type(vardefs), dimension(:), allocatable arrays_mod::b2d | +
variable metadata for 2D source fields bilinear remap
+ +Definition at line 28 of file arrays_mod.F90.
+ +type(vardefs), dimension(:), allocatable arrays_mod::b3d | +
variable metadata for 3D source fields bilinear remap
+ +Definition at line 30 of file arrays_mod.F90.
+ +real(kind=8), dimension(:,:), allocatable arrays_mod::bilin2d | +
packed 2D source fields for bilinear remap
+ +Definition at line 23 of file arrays_mod.F90.
+ +real(kind=8), dimension(:,:,:), allocatable arrays_mod::bilin3d | +
packed 3D source fields for bilinear remap
+ +Definition at line 25 of file arrays_mod.F90.
+ +type(vardefs), dimension(:), allocatable arrays_mod::c2d | +
variable metadata for 2D source fields conservative remap
+ +Definition at line 29 of file arrays_mod.F90.
+ +real(kind=8), dimension(:,:), allocatable arrays_mod::consd2d | +
packed 2D source fields for conservative remap
+ +Definition at line 24 of file arrays_mod.F90.
+ +real(kind=8), dimension(:,:), allocatable arrays_mod::eta | +
the interface heights (eta) on the source grid
+ +Definition at line 41 of file arrays_mod.F90.
+ +real(kind=8), parameter arrays_mod::hmin = 1.0d-3 | +
minimum layer thickness for the ocean
+ +Definition at line 16 of file arrays_mod.F90.
+ +real(kind=8), dimension(:,:), allocatable arrays_mod::mask3d | +
the 3D mask of the source fields on Ct grid points
+ +Definition at line 38 of file arrays_mod.F90.
+ +real(kind=8), parameter arrays_mod::maskspval = 9.9692099683868690d+36 | +
spval for RH mask values
+ +Definition at line 15 of file arrays_mod.F90.
+ +integer arrays_mod::nbilin2d | +
the number of 2D fields mapped bilinearly
+ +Definition at line 18 of file arrays_mod.F90.
+ +integer arrays_mod::nbilin3d | +
the number of 3D fields mapped bilinearly
+ +Definition at line 19 of file arrays_mod.F90.
+ +integer arrays_mod::nconsd2d | +
the number of 2D fields mapped conservatively
+ +Definition at line 20 of file arrays_mod.F90.
+ +real(kind=8), dimension(:,:), allocatable arrays_mod::rgb2d | +
packed 2D fields with bilinear remap
+ +Definition at line 33 of file arrays_mod.F90.
+ +real(kind=8), dimension(:,:,:), allocatable arrays_mod::rgb3d | +
packed 3D fields with bilinear remap
+ +Definition at line 35 of file arrays_mod.F90.
+ +real(kind=8), dimension(:,:), allocatable arrays_mod::rgc2d | +
packed 2D fields with conservative remap
+ +Definition at line 34 of file arrays_mod.F90.
+ +
+ ocnice_prep
+ 1.13.0
+
+ |
+
+ ocnice_prep
+ 1.13.0
+
+ |
+
+ ocnice_prep
+ 1.13.0
+
+ |
+
+Files | |
file | arrays_mod.F90 [code] |
Define arrays, dimensions and types. | |
file | init_mod.F90 [code] |
Define the input namelist variables. | |
file | ocncalc_mod.F90 [code] |
Perform calculations needed when using an ocean file. | |
file | ocniceprep.F90 [code] |
Generate warmstart files for ocean or ice by mapping a restart file from 1/4deg to a desired tripole resolution. | |
file | restarts_mod.F90 [code] |
Setup the new restart files for ocean and ice. | |
file | utils_esmf_mod.F90 [code] |
Define a set of utilty procedures which use ESMF. | |
file | utils_mod.F90 [code] |
Define utility procedures. | |
+ ocnice_prep
+ 1.13.0
+
+ |
+
+ ocnice_prep
+ 1.13.0
+
+ |
+
▼ sorc | |
▼ ocnice_prep.fd | |
arrays_mod.F90 | Define arrays, dimensions and types |
init_mod.F90 | Define the input namelist variables |
ocncalc_mod.F90 | Perform calculations needed when using an ocean file |
ocniceprep.F90 | Generate warmstart files for ocean or ice by mapping a restart file from 1/4deg to a desired tripole resolution |
restarts_mod.F90 | Setup the new restart files for ocean and ice |
utils_esmf_mod.F90 | Define a set of utilty procedures which use ESMF |
utils_mod.F90 | Define utility procedures |
+ ocnice_prep
+ 1.13.0
+
+ |
+
+ ocnice_prep
+ 1.13.0
+
+ |
+
+ ocnice_prep
+ 1.13.0
+
+ |
+
+ ocnice_prep
+ 1.13.0
+
+ |
+
+ ocnice_prep
+ 1.13.0
+
+ |
+
+ ocnice_prep
+ 1.13.0
+
+ |
+
The ocnice_prep program will downscale a MOM6 or CICE6 1/4deg tripole restart file to a desired lower resolution tripole warm-start file using ESMF regridding.
+This document is part of the UFS_UTILS documentation.
+The ocnice_prep program is part of the UFS_UTILS project.
+A warmstart file can be created from an existing restart file (at higher resolution) by using ESMF Regridding to map fields to a destination grid. For MOM6, the procedure produces a warm-start file (composed of T,S,U,V and Interface Height), where the utility creates the interface heights (eta
) using the sea surface height (sfc
) and the interface thickness (h
) in the MOM6 restart. A full restart file is not generated because MOM6 has resolution dependent parameterizations, so that restart files for different resolutions might contain different fields. For CICE6, a file consisting of all the restart fields is produced. While in the form of a "true" restart, it is also more appropriately considered to be a warm-start file.
Both MOM6 and CICE6 restarts contain fields which include a dimension in addition to the 2 spatial dimensions. For MOM6, this is the vertical dimension (ocean depth) while for CICE6 it is the number of ice thickness categories. In this utility, both are referred to as the nlevs
dimension. MOM6 restarts also contain metadata (e.g. units
) while CICE6 restarts contain no metadata. Metadata, if any, is written to the new warm start files.
Fields in the restart files for both MOM6 and CICE6 are defined at locations on the Arakawa C-grid. Similar to the cpld_gridgen
utility, these are referred to here as the Ct
, Cu
, Cv
and Bu
locations. Vectors in MOM6 are natively located at the north and east faces (Cv
and Cu
) while CICE vectors are located at Bu
locations. NOTE: The CICE-C grid is not currently supported.
Because the required fields for MOM6 are located in two separate restart files, a single file containing all the necessary fields must be generated for the ocean
case. This is done using NetCDF operators (NCO) with the following commands, assuming that the two required MOM6 restart files are available locally and are named MOM.res.nc
and MOM.res_1.nc
.
For MOM6, the following MOM_input settings can then be used with the warm-start file (e.g. ocean.mx100.nc
):
For CICE6, the warm-start file (e.g. ice.mx100.nc
) can be used directly in the ice_in
namelist:
Remapping is done using an ESMF remapping via a RouteHandle, where the both the source and destination mask values are 0
. This ensures that only water points are mapped between the grids. Extrapolation is used to map destination points which are unmapped because the source grid was not a water point. Since for the ocean, the required mapping varies with depth, the utility makes use of dynamic masking if required. This allows the same RouteHandle to be used for all depths, with masking at each depth done on the fly. This is not required for CICE6, since in that case all nlevs
have the same land mask value.
Mapping for MOM6 is done using bilinear
mapping, whereas for CICE6 it is done using nearest-source-to-destination
mapping. For CICE6, this ensures that the thermodynamic fields in the CICE6 restart, which are for each vertical layer (typically 7) and each thickness category (typically 5), are consistent when mapped.
The general procedure, for either MOM6 or CICE6 is as follows:
+Ct
grid location. For vector fields, the vectors are rotated from their orientation along model dimensions (IJ) to eastward-northward (EN) directions.The rotation angle retrieved from the master grid file is anglet
, which is defined in the same sense as used MOM6. This is the opposite sense to the use in CICE6. The rotation formulas implement rotation in the same sense as MOM6. Since -sin(-angle) == sin(angle)
, no sign change of the angle is required for rotation of the CICE6 vectors. This is in contrast to the ocnpost
routine, where the angle used is retrieved from CICE6's own history file and requires a sign change prior to use in the rotation formulas.
The following files are required.
+cpld_gridgen
utility.Ct
grid locations on both the souce and destination grids. These are also available as products of the cpld_gridgen
utility.ocean
or ice
) and the locations of the needed weights.
+ ocnice_prep
+ 1.13.0
+
+ |
+
Define the input namelist variables. +More...
+ +Go to the source code of this file.
++Data Types | |
type | init_mod::vardefs |
+Functions/Subroutines | |
subroutine | init_mod::readcsv (fname, errmsg, rc, nvalid) |
Read the input csv file and fill the vardefs type. More... | |
subroutine | init_mod::readnml (fname, errmsg, rc) |
Read input namelist file. More... | |
+Variables | |
logical | init_mod::debug |
If true, print debug messages and intermediate files. More... | |
logical | init_mod::do_ocnprep |
If true, the source file is ocean, otherwise ice. More... | |
character(len=10) | init_mod::fdst |
A character string for the destination grid. More... | |
character(len=10) | init_mod::fsrc |
A character string for tripole grid. More... | |
character(len=10) | init_mod::ftype |
The type of tripole grid (ocean or ice) More... | |
character(len=120) | init_mod::griddir |
The directory containing the master tripole grid file. More... | |
character(len=20) | init_mod::input_file |
The input file name. More... | |
integer | init_mod::logunit |
The log unit. More... | |
character(len=10) | init_mod::maskvar = 'h' |
The variable in the ocean source file used to create the interpolation mask with dynamic masking. More... | |
integer, parameter | init_mod::maxvars = 60 |
The maximum number of fields expected in a source file. More... | |
integer | init_mod::nlevs |
The vertical or category dimension of the source tripole grid. More... | |
integer | init_mod::nxr |
The x-dimension of the destination tripole grid. More... | |
integer | init_mod::nxt |
The x-dimension of the source tripole grid. More... | |
integer | init_mod::nyr |
The y-dimension of the destination tripole grid. More... | |
integer | init_mod::nyt |
The y-dimension of the source tripole grid. More... | |
type(vardefs), dimension(maxvars) | init_mod::outvars |
An empty structure filled by reading a csv file describing the fields. More... | |
character(len=120) | init_mod::wgtsdir |
The directory containing the regridding weights. More... | |
Define the input namelist variables.
+ +This module contains the namelist variables
+ +Definition in file init_mod.F90.
+subroutine init_mod::readcsv | +( | +character(len=*), intent(in) | +fname, | +
+ | + | character(len=*), intent(out) | +errmsg, | +
+ | + | integer, intent(out) | +rc, | +
+ | + | integer, intent(out) | +nvalid | +
+ | ) | ++ |
Read the input csv file and fill the vardefs type.
+[in] | fname | input csv file |
[out] | errmsg | return error message |
[out] | rc | return error code |
[out] | nvalid | the number of variables in the csv file |
Definition at line 162 of file init_mod.F90.
+ +subroutine init_mod::readnml | +( | +character(len=*), intent(in) | +fname, | +
+ | + | character(len=*), intent(out) | +errmsg, | +
+ | + | integer, intent(out) | +rc | +
+ | ) | ++ |
Read input namelist file.
+[in] | fname | namelist file |
[out] | errmsg | return error message |
[out] | rc | return error code |
Definition at line 57 of file init_mod.F90.
+ +logical init_mod::debug | +
If true, print debug messages and intermediate files.
+ +Definition at line 45 of file init_mod.F90.
+ +logical init_mod::do_ocnprep | +
If true, the source file is ocean, otherwise ice.
+ +Definition at line 46 of file init_mod.F90.
+ +character(len=10) init_mod::fdst | +
A character string for the destination grid.
+ +Definition at line 32 of file init_mod.F90.
+ +character(len=10) init_mod::fsrc | +
A character string for tripole grid.
+ +Definition at line 31 of file init_mod.F90.
+ +character(len=10) init_mod::ftype | +
The type of tripole grid (ocean or ice)
+ +Definition at line 30 of file init_mod.F90.
+ +character(len=120) init_mod::griddir | +
The directory containing the master tripole grid file.
+ +Definition at line 34 of file init_mod.F90.
+ +character(len=20) init_mod::input_file | +
The input file name.
+ +Definition at line 35 of file init_mod.F90.
+ +integer init_mod::logunit | +
The log unit.
+ +Definition at line 44 of file init_mod.F90.
+ +character(len=10) init_mod::maskvar = 'h' | +
The variable in the ocean source file used to create the interpolation mask with dynamic masking.
+ +Definition at line 14 of file init_mod.F90.
+ +integer, parameter init_mod::maxvars = 60 | +
The maximum number of fields expected in a source file.
+ +Definition at line 13 of file init_mod.F90.
+ +integer init_mod::nlevs | +
The vertical or category dimension of the source tripole grid.
+ +Definition at line 39 of file init_mod.F90.
+ +integer init_mod::nxr | +
The x-dimension of the destination tripole grid.
+ +Definition at line 41 of file init_mod.F90.
+ +integer init_mod::nxt | +
The x-dimension of the source tripole grid.
+ +Definition at line 37 of file init_mod.F90.
+ +integer init_mod::nyr | +
The y-dimension of the destination tripole grid.
+ +Definition at line 42 of file init_mod.F90.
+ +integer init_mod::nyt | +
The y-dimension of the source tripole grid.
+ +Definition at line 38 of file init_mod.F90.
+ +type(vardefs), dimension(maxvars) init_mod::outvars | +
An empty structure filled by reading a csv file describing the fields.
+ +Definition at line 27 of file init_mod.F90.
+ +character(len=120) init_mod::wgtsdir | +
The directory containing the regridding weights.
+ +Definition at line 33 of file init_mod.F90.
+ +
+ ocnice_prep
+ 1.13.0
+
+ |
+
+ ocnice_prep
+ 1.13.0
+
+ |
+
+Private Member Functions | |
subroutine | remaprh1d (kk, src_field, dst_field, rc) |
Remap a field of nlen via ESMF RH. More... | |
subroutine | remaprh1ddyn (kk, src_field, dst_field, hmask, rc) |
Remap a field of nlen via ESMF RH with dynamic masking. More... | |
subroutine | remaprh2d (src_field, dst_field, rc) |
Remap a packed field of nflds,nlen via ESMF RH. More... | |
subroutine | remaprh2ddyn (kk, src_field, dst_field, hmask, rc) |
Remap a packed field of nflds,nlen via ESMF RH with dyanmic masking. More... | |
Definition at line 26 of file utils_esmf_mod.F90.
+
+
|
+ +private | +
Remap a field of nlen via ESMF RH.
+[in] | kk | the vertical or category index |
[in] | src_field | the field on the source grid |
[out] | dst_field | the field on the destination grid |
[out] | rc | an error return code |
Definition at line 129 of file utils_esmf_mod.F90.
+ +
+
|
+ +private | +
Remap a field of nlen via ESMF RH with dynamic masking.
+[in] | kk | the vertical or category index |
[in] | src_field | the field on the source grid |
[in] | hmask | the mask field to use with dynamic masking |
[out] | dst_field | the field on the destination grid |
[out] | rc | an error return code |
Definition at line 228 of file utils_esmf_mod.F90.
+ +
+
|
+ +private | +
Remap a packed field of nflds,nlen via ESMF RH.
+[in] | src_field | the field on the source grid |
[out] | dst_field | the field on the destination grid |
[out] | rc | an error return code |
Definition at line 176 of file utils_esmf_mod.F90.
+ +
+
|
+ +private | +
Remap a packed field of nflds,nlen via ESMF RH with dyanmic masking.
+[in] | kk | the vertical or category index |
[in] | src_field | the field on the source grid |
[in] | hmask | the mask field to use with dynamic masking |
[out] | dst_field | the field on the destination grid |
[out] | rc | an error return code |
Definition at line 281 of file utils_esmf_mod.F90.
+ +
+ ocnice_prep
+ 1.13.0
+
+ |
+
+Private Member Functions | |
subroutine | rotremap2d (wdir, vars, cosrot, sinrot, dims, nflds, fields) |
Rotate 2D vectors from EN->IJ and map back to native staggers. More... | |
subroutine | rotremap3d (wdir, vars, cosrot, sinrot, dims, nflds, fields) |
Rotate 3D vectors on nlevs from EN->IJ and map back to native staggers. More... | |
Definition at line 33 of file utils_esmf_mod.F90.
+
+
|
+ +private | +
Rotate 2D vectors from EN->IJ and map back to native staggers.
+[in] | wdir | the path to the required ESMF regridding weights |
[in] | cosrot | the cosine of the rotation angle |
[in] | sinrot | the sine of the rotation angle |
[in] | vars | a structure describing the variable metadata |
[in] | dims | the dimensions of the fields |
[in] | nflds | the number of fields in the packed array |
[out] | fields | the rotated and mapped fields |
Definition at line 344 of file utils_esmf_mod.F90.
+ +
+
|
+ +private | +
Rotate 3D vectors on nlevs from EN->IJ and map back to native staggers.
+[in] | wdir | the path to the required ESMF regridding weights |
[in] | cosrot | the cosine of the rotation angle |
[in] | sinrot | the sine of the rotation angle |
[in] | vars | a structure describing the variable metadata |
[in] | dims | the dimensions of the fields |
[in] | nflds | the number of fields in the packed array |
[out] | fields | the rotated and mapped fields |
Definition at line 401 of file utils_esmf_mod.F90.
+ +
+ ocnice_prep
+ 1.13.0
+
+ |
+
+Private Member Functions | |
subroutine | dumpnc1d (fname, vname, dims, field) |
Write a bare netcdf file of a unpacked 2D field. More... | |
subroutine | dumpnc2d (fname, vname, dims, nflds, field) |
Write a bare netcdf file of a 2D packed field. More... | |
subroutine | dumpnc3d (fname, vname, dims, nk, nflds, field) |
Write a bare netcdf file of a packed 3D field. More... | |
subroutine | dumpnc3dk (fname, vname, dims, field) |
Write a bare netcdf file of an unpacked 3D field. More... | |
Definition at line 38 of file utils_mod.F90.
+
+
|
+ +private | +
Write a bare netcdf file of a unpacked 2D field.
+[in] | fname | the file containing ESMF regridding weights |
[in] | vname | the name of the variable |
[in] | dims | the variable spatial dimensions |
[in] | field | the field to write |
Definition at line 673 of file utils_mod.F90.
+ +
+
|
+ +private | +
Write a bare netcdf file of a 2D packed field.
+[in] | fname | the file containing ESMF regridding weights |
[in] | vname | the name of the variable |
[in] | dims | the variable spatial dimensions |
[in] | nflds | the number of fields |
[in] | field | the field to write |
Definition at line 545 of file utils_mod.F90.
+ +
+
|
+ +private | +
Write a bare netcdf file of a packed 3D field.
+[in] | fname | the file containing ESMF regridding weights |
[in] | vname | the name of the variable |
[in] | dims | the variable spatial dimensions |
[in] | nk | the number of levels |
[in] | nflds | the number of fields |
[in] | field | the field to write |
Definition at line 588 of file utils_mod.F90.
+ +
+
|
+ +private | +
Write a bare netcdf file of an unpacked 3D field.
+[in] | fname | the file containing ESMF regridding weights |
[in] | vname | the name of the variable |
[in] | dims | the variable spatial dimensions |
[in] | field | the field to write |
Definition at line 632 of file utils_mod.F90.
+ +
+ ocnice_prep
+ 1.13.0
+
+ |
+
+Private Member Functions | |
subroutine | getfield2d (fname, vname, dims, field, wgts) |
Obtain a 2D field and return a 1-D vector array. More... | |
subroutine | getfield3d (fname, vname, dims, field, wgts) |
Obtain a 3D field and return a 2-D vector array. More... | |
Definition at line 17 of file utils_mod.F90.
+
+
|
+ +private | +
Obtain a 2D field and return a 1-D vector array.
+[in] | fname | the file containing the fields to retrieve |
[in] | vname | the variable to retrieve |
[in] | dims | the dimensions of the fields |
[out] | field | the field |
[in] | wgts | the optional ESMF regridding weights |
Definition at line 286 of file utils_mod.F90.
+ +
+
|
+ +private | +
Obtain a 3D field and return a 2-D vector array.
+[in] | fname | the file containing the fields to retrieve |
[in] | vname | the variable to retrieve |
[in] | dims | the dimensions of the fields |
[out] | field | the field |
[in] | wgts | the optional ESMF regridding weights |
Definition at line 331 of file utils_mod.F90.
+ +
+ ocnice_prep
+ 1.13.0
+
+ |
+
+Private Member Functions | |
subroutine | getvecpair2d (fname, wdir, cosrot, sinrot, vname1, vgrid1, vname2, vgrid2, dims, vecpair) |
Obtain 2D vector pairs mapped to Ct and rotated to EN. More... | |
subroutine | getvecpair3d (fname, wdir, cosrot, sinrot, vname1, vgrid1, vname2, vgrid2, dims, vecpair) |
Obtain 3D vector pairs mapped to Ct and rotated to EN. More... | |
Definition at line 33 of file utils_mod.F90.
+
+
|
+ +private | +
Obtain 2D vector pairs mapped to Ct and rotated to EN.
+[in] | fname | the file containing the fields to retrieve |
[in] | wdir | the path to the required ESMF regridding weights |
[in] | cosrot | the cosine of the rotation angle |
[in] | sinrot | the sine of the rotation angle |
[in] | vname1 | the variable name of the first vector |
[in] | vgrid1 | the grid location of the first vector |
[in] | vname2 | the variable name of the second vector |
[in] | vgrid2 | the grid location of the second vector |
[in] | dims | the dimensions of the fields |
[out] | vecpair | the vector pair array |
Definition at line 191 of file utils_mod.F90.
+ +
+
|
+ +private | +
Obtain 3D vector pairs mapped to Ct and rotated to EN.
+[in] | fname | the file containing the fields to retrieve |
[in] | wdir | the path to the required ESMF regridding weights |
[in] | cosrot | the cosine of the rotation angle |
[in] | sinrot | the sine of the rotation angle |
[in] | vname1 | the variable name of the first vector |
[in] | vgrid1 | the grid location of the first vector |
[in] | vname2 | the variable name of the second vector |
[in] | vgrid2 | the grid location of the second vector |
[in] | dims | the dimensions of the fields |
[out] | vecpair | the vector pair array |
Definition at line 241 of file utils_mod.F90.
+ +
+ ocnice_prep
+ 1.13.0
+
+ |
+
+Private Member Functions | |
subroutine | packarrays2d (filesrc, wgtsdir, cosrot, sinrot, vars, dims, nflds, fields) |
Pack 2D fields into arrays by mapping type. More... | |
subroutine | packarrays3d (filesrc, wgtsdir, cosrot, sinrot, vars, dims, nflds, fields) |
Pack 3D fields into arrays by mapping type. More... | |
Definition at line 22 of file utils_mod.F90.
+
+
|
+ +private | +
Pack 2D fields into arrays by mapping type.
+[in] | filesrc | the file containing the fields to retrieve |
[in] | wgtsdir | the path to the required ESMF regridding weights |
[in] | cosrot | the cosine of the rotation angle |
[in] | sinrot | the sine of the rotation angle |
[in] | vars | the typedefs for this packed array |
[in] | dims | the dimensions of the fields in the packed array |
[in] | nflds | the number of fields in the packed array |
[out] | fields | the packed array |
Definition at line 65 of file utils_mod.F90.
+ +
+
|
+ +private | +
Pack 3D fields into arrays by mapping type.
+[in] | filesrc | the file containing the fields to retrieve |
[in] | wgtsdir | the path to the required ESMF regridding weights |
[in] | cosrot | the cosine of the rotation angle |
[in] | sinrot | the sine of the rotation angle |
[in] | vars | the typedefs for this packed array |
[in] | dims | the dimensions of the fields in the packed array |
[in] | nflds | the number of fields in the packed array |
[out] | fields | the packed array |
Definition at line 127 of file utils_mod.F90.
+ +
+ ocnice_prep
+ 1.13.0
+
+ |
+
+Private Member Functions | |
subroutine | remap1d (fname, src_field, dst_field) |
Remap a 1-D vector array from source to destination. More... | |
subroutine | remap2d (fname, dim2, src_field, dst_field) |
Remap a 2-D vector array of nflds or nlevs from source to destination. More... | |
subroutine | remap3d (fname, nk, nflds, src_field, dst_field) |
Remap a field packed array of nk levels and nflds fields. More... | |
Definition at line 27 of file utils_mod.F90.
+
+
|
+ +private | +
Remap a 1-D vector array from source to destination.
+[in] | fname | the file containing ESMF regridding weights |
[in] | src_field | the source field |
[out] | dst_field | the destination field |
Definition at line 376 of file utils_mod.F90.
+ +
+
|
+ +private | +
Remap a 2-D vector array of nflds or nlevs from source to destination.
+[in] | fname | the file containing ESMF regridding weights |
[in] | dim2 | the number of fields or levels |
[in] | src_field | the source field |
[out] | dst_field | the destination field |
Definition at line 431 of file utils_mod.F90.
+ +
+
|
+ +private | +
Remap a field packed array of nk levels and nflds fields.
+[in] | fname | the file containing ESMF regridding weights |
[in] | nk | the number of levels |
[in] | nflds | the number of fields |
[in] | src_field | the source field |
[out] | dst_field | the destination field |
Definition at line 488 of file utils_mod.F90.
+ +t |